软件设计师考试大纲
一、考试说明
1.考试要求:
(1)掌握数据表示、算术和逻辑运算;
(2)掌握相关的应用数学、离散数学的基础知识;
(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理;
(4)掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;
(5)熟练掌握常用数据结构和常用算法;
(6)熟悉数据库、网络和多媒体的基础知识;
(7)掌握C程序设计语言,以及C++、Java、Visual Basic、Visual C++其中一种程序设计语言;
(8)熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;
(9)熟练掌握软件设计的方法和技术;
(10)掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识;
(11)了解信息化、计算机应用的基础知识;
(12)正确阅读和理解计算机领域的英文资料。
2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件,具有工程师的实际工作能力和业务水平。
3.本考试设置的科目包括:
(1)计算机与软件工程知识,考试时间为150分钟,笔试;
(2)软件设计,考试时间为150分钟,笔试。
二、考试范围
考试科目1:计算机与软件工程知识
1. 计算机科学基础
1.1 数制及其转换
?二进制、十进制和十六进制等常用数制及其相互转换
1.2 数据的表示
?数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)
?非数值表示(字符和汉字表示、声音表示、图像表示)
?校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)
1.3 算术运算和逻辑运算
?计算机中的二进制数运算方法
?逻辑代数的基本运算和逻辑表达式的化简
1.4数学基础知识
?命题逻辑、谓词逻辑、形式逻辑的基础知识
?常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分)
?排列组合、概率论应用、应用统计(数据的统计分析)
?运筹基本方法(预测与决策、线性规划、网络图、模拟)
1.5 常用数据结构
?数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、堆)、图等的定义、存储和操作
?Hash(存储地址计算,冲突处理)
1.6 常用算法
?排序算法、查找算法、数值计算方法、字符串处理方法、数据压缩算法、递归算法、图的相关算法
?算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表),算法的复杂性
2. 计算机系统知识
2.1 硬件知识
2.1.1 计算机系统的组成、体系结构分类及特性
?CPU和存储器的组成、性能和基本工作原理
?常用I/O设备、通信设备的性能,以及基本工作原理
?I/O接口的功能、类型和特性
?I/O控制方式(中断系统、DMA、I/O处理机方式)
?CISC/RISC,流水线操作,多处理机,并行处理
2.1.2 存储系统
?主存-Cache存储系统的工作原理
?虚拟存储器基本工作原理,多级存储体系的性能价格
?RAID类型和特性
2.1.3 安全性、可靠性与系统性能评测基础知识
?诊断与容错
?系统可靠性分析评价
?计算机系统性能评测方法
2.2 软件知识
2.2.1 操作系统知识
?操作系统的内核(中断控制)、进程、线程概念
?处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)
?存储管理(主存保护、动态连接分配、分段、分页、虚存)
?设备管理(I/O控制、假脱机)
?文件管理(目录、文件组织、存取方法、存取控制、恢复处理)
?作业管理(作业调度,作业控制语言(JCL),多道程序设计)
?汉字处理,多媒体处理,人机界面
?网络操作系统和嵌入式操作系统基础知识
?操作系统的配置
2.2.2 程序设计语言和语言处理程序的知识
?汇编、编译、解释系统的基础知识和基本工作原理
?程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用
?各类程序设计语言主要特点和适用情况
2.3 计算机网络知识
?网络体系结构(网络拓扑,OSI,基本的网络协议)
?传输介质、传输技术、传输方法、传输控制
?常用网络设备和各类通信设备
?Client/Server结构、Browser/Server结构
?LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接
?Internet基础知识以及应用
?网络软件
?网络管理
?网络性能分析
2.4 数据库知识
?数据库管理系统的功能和特征
?数据库模型(概念模式、外模式、内模式)
?数据模型,ER图,第一范式、第二范式、第三范式
?数据操作(集合运算和关系运算)
?数据库语言(SQL)
?数据库的控制功能(并发控制,恢复,安全性,完整性)
?数据仓库和分布式数据库基础知识
2.5 多媒体知识
?多媒体系统基础知识,多媒体设备的性能特性,常用多媒体文件格式
?简单图形的绘制,图像文件的处理方法
?音频和视频信息的应用
?多媒体应用开发过程
2.6 系统性能知识
?性能指标(响应时间、吞吐量、周转时间)和性能设计
?性能测试和性能评估
?可靠性指标及计算、可靠性设计
?可靠性测试和可靠性评估
2.7 计算机应用基础知识
?信息管理、数据处理、辅助设计、自动控制、科学计算、人工智能等基础知识
?远程通信服务基础知识
?常用应用系统
3. 系统开发和运行知识
3.1 软件工程、软件过程改进和软件开发项目管理知识
?软件工程知识
?软件开发生命周期各阶段的目标和任务
?软件开发项目管理基础知识(时间管理、成本管理、质量管理、人力资源管理、风险管理等)及其常用管理工具
?主要的软件开发方法(生命周期法、原型法、面向对象法、CASE)
?软件开发工具与环境知识
?软件过程改进知识
?软件质量管理知识
?软件开发过程评估、软件能力成熟度评估基础知识
3.2 系统分析基础知识
?系统分析的目的和任务
?结构化分析方法(数据流图(DFD)和数据词典(DD)、实体关系图(ERD)、描述加工处理的结构化语言)
?统一建模语言(UML)
?系统规格说明书
3.3 系统设计知识
?系统设计的目的和任务
?结构化设计方法和工具(系统流程图、HIPO图、控制流程图)
?系统总体结构设计(总体布局、设计原则、模块结构设计、数据存储设计、系统配置方案)
?系统详细设计(代码设计、数据库设计、用户界面设计、处理过程设计)
?系统设计说明书
3.4系统实施知识
?系统实施的主要任务
?结构化程序设计、面向对象程序设计、可视化程序设计
?程序设计风格
?程序设计语言的选择
?系统测试的目的、类型,系统测试方法(黑盒测试、白盒测试、灰盒测试)
?测试设计和管理(错误曲线、错误排除、收敛、注入故障、测试用例设计、系统测试报告)
?系统转换基础知识
3.5 系统运行和维护知识
?系统运行管理基础知识
?系统维护基础知识