"该考试大纲涵盖了软件工程学科的专业基础,包括软件工程、计算机系统基础两大部分,旨在考察学生对软件开发全过程的理解和实践能力。"
第一部分 软件工程
这部分主要涉及软件过程、软件需求、软件设计与构造、以及软件测试四个核心领域。
1. 软件过程:
- 软件过程是指从需求获取到软件维护等一系列活动的总称。
- 瀑布模型、增量模型、演化模型、统一过程模型是经典的软件开发过程模型,各有其特点和适用场景。
- 过程评估与CMM/CMMI是评估软件开发成熟度的标准。
- 敏捷宣言强调了灵活性和快速响应变化,敏捷过程则体现了这一思想,如Scrum和XP。
2. 软件需求:
- 软件需求是软件开发的基础,包括功能需求、非功能需求等。
- 需求工程包括需求获取、分析、规格说明、验证等步骤。
- 分层数据流模型有助于理解系统功能。
- UML(统一建模语言)用于建模,如用例图、活动图、泳道图、顺序图、类图等,用于表示需求和行为。
- 数据模型和行为模型建模进一步细化需求,如状态机图和类图。
3. 软件设计与构造:
- 软件体系结构和风格决定了系统的总体结构。
- 设计模式提供了解决常见设计问题的标准解决方案。
- 模块化设计包括抽象、分解、模块化、封装、信息隐藏和功能独立等原则。
- 软件重构是为了改善代码结构和质量。
- UML用于体系结构建模,如包图、类图、构件图、顺序图和部署图。
- 接口是不同组件之间交互的关键,面向对象设计原则如开闭原则、Liskov替换原则等。
- 内聚和耦合衡量模块的质量,高内聚低耦合是理想设计目标。
4. 软件测试:
- 测试用例是验证软件功能正确性的具体输入和预期输出。
- 单元测试、集成测试、确认测试、系统测试和回归测试构成了完整的测试生命周期。
- 调试是找出并修复错误的过程,与测试密切相关。
- 测试覆盖度衡量测试的充分性,如语句覆盖、分支覆盖等。
- 白盒测试关注代码结构,黑盒测试关注功能行为。
- 代码圈复杂度是评估代码复杂度的指标,基本路径测试和等价类划分是常用的测试方法。
第二部分 计算机系统基础
这部分涵盖处理器体系结构、优化程序性能、存储器结构、并发编程和系统级I/O等多个方面。
1. 处理器体系结构:
- 时序电路、单周期处理器、流水线处理器涉及处理器内部工作原理。
- Data Hazard是流水线处理中的挑战,需要解决数据冲突。
- 其他流水线设计问题可能涉及指令预取、分支预测等。
2. 优化程序性能:
- 优化编译器可提高程序执行效率,但也有限制。
- 性能优化关注程序运行时间、资源利用率等指标。
- 识别和消除性能瓶颈是关键。
3. 存储器结构及虚拟存储器:
- 局部性原理解释了高速缓存的必要性。
- 存储器层次结构包括寄存器、高速缓存、主存和磁盘等。
- 高速缓存工作原理、影响性能的因素及地址映射机制。
- 虚拟存储器通过页面管理和映射实现大内存访问。
4. 链接、进程及并发编程:
- 静态链接和动态链接处理程序的构建和运行时依赖。
- 进程控制、信号、进程间通信和同步(如信号量)是并发编程的基础。
- 线程同步和共享变量管理是多线程编程的核心。
5. 系统级I/O和网络编程:
- I/O模型包括同步I/O、异步I/O和中断驱动I/O等。
- 网络编程涉及套接字、协议、网络数据传输等。
这个大纲全面覆盖了软件工程和计算机系统基础的重要概念,是准备相关考试或深入学习这些领域的宝贵资料。