全国计算机技术与软件专业技术资格(水平)考试,简称“软考”,其中中级资格的软件设计师是面向软件工程开发领域的重要认证。该考试旨在评估考生是否具备扎实的软件工程基础理论、系统化的分析设计能力和规范的开发实践知识。考试分为上午的基础知识和下午的应用技术两个科目。
一、上午考试:基础知识(选择题)
考试形式为75道单项选择题,涵盖知识面广,要求考生对软件工程有全面的理解。主要知识点包括:
- 计算机系统知识:计算机组成、体系结构(如Flynn分类法)、存储系统、可靠性计算、校验码等。
- 程序语言与语言处理程序基础:编译与解释、文法、正规式、有限自动机、语法和语义分析。
- 数据结构与算法:重点与难点。包括线性表、栈、队列、树与二叉树、图、查找(哈希表等)、排序(各类排序算法的复杂度与稳定性)以及算法设计与分析(分治、动态规划、贪心、回溯等)。
- 操作系统:进程管理(PV操作、死锁)、存储管理、文件管理、设备管理。
- 软件工程基础:核心内容。软件过程模型(瀑布、迭代、增量、敏捷等)、需求分析、系统设计(结构化设计与面向对象设计)、软件测试(方法、用例、阶段)、软件维护、软件质量保证、软件项目管理(估算、进度、风险)。
- 面向对象技术:核心内容。面向对象基本概念、UML各类图(用例图、类图、序列图、状态图、活动图等)、设计模式(23种经典模式的意图与结构)。
- 数据库系统:E-R模型、关系代数、规范化理论(键与范式)、SQL语言、并发控制。
- 计算机网络:OSI/RM与TCP/IP体系结构、网络设备、IP地址、常用协议(HTTP, FTP, DNS等)、网络安全基础。
- 信息安全与标准化:加密解密技术、数字签名、访问控制、常见攻击方式、软件能力成熟度模型(CMM/CMMI)、知识产权保护。
- 多媒体基础与数学:多媒体基本概念、计算问题相关的离散数学、程序设计语言基础。
二、下午考试:应用技术(问答题)
考试形式为6道大题(通常为4道必答题+2道选答题),侧重考查分析和设计能力。主要题型与知识点包括:
- 数据流图(DFD)设计与分析:补充外部实体、数据存储、数据流,指出设计错误。考查结构化分析方法。
- 数据库设计:补充E-R图、关系模式,指出逻辑结构设计问题,编写SQL查询。
- UML建模:重中之重。通常给出一个系统描述,要求补充用例图、类图、状态图、序列图等中的元素,或识别设计模式。
- 算法设计与C语言实现:阅读算法说明和C代码,填空(补充关键代码段)。常考经典算法,如动态规划、回溯、贪心、查找排序的变种等。
- 面向对象程序设计(Java/C++选考):二选一。阅读程序说明和代码,填空补充设计模式实现、类定义、方法体等,考查面向对象编程和设计模式的应用。
备考建议
- 紧扣大纲:以上内容均基于官方考试大纲,备考时应以最新大纲为准。
- 均衡发力:上午题需广泛涉猎,理解记忆;下午题需深度练习,掌握解题套路,尤其是数据流图、UML和算法题。
- 真题为王:历年真题是最好的复习资料,通过反复练习真题可以熟悉题型、把握重点和出题思路。
- 注重实践:对于设计模式和算法,在理解理论的基础上,尝试动手编写代码,能加深印象。
软件设计师考试是对软件工程理论知识与实践能力的综合考察,系统性地学习和持续的练习是通过考试的关键。