一、软件工程概述
-
软件工程的定义
- 软件工程是应用系统化、规范化、可量化的方法开发、运行和维护软件。
-
软件工程的目标
- 提高软件质量、降低开发成本、缩短开发周期。
-
软件生命周期
- 瀑布模型:需求分析→设计→编码→测试→维护。
- 迭代模型:分阶段迭代开发。
- 敏捷开发:快速响应需求变化,强调团队协作。
二、需求工程
-
需求获取
- 方法:访谈、问卷调查、观察、原型法。
-
需求分析
- 功能需求:系统应实现的功能。
- 非功能需求:性能、安全性、可用性等。
-
需求规格说明书(SRS)
- 描述系统需求,作为设计和开发的依据。
-
需求验证
- 方法:评审、原型测试。
三、软件设计
-
设计原则
- 模块化:将系统分解为独立模块。
- 高内聚低耦合:模块内部紧密相关,模块之间依赖少。
- 抽象:隐藏细节,关注核心问题。
-
设计方法
- 结构化设计:自顶向下分解系统。
- 面向对象设计(OOD):基于对象、类、继承、多态等概念。
-
设计模式
- 创建型模式:工厂模式、单例模式。
- 结构型模式:适配器模式、装饰器模式。
- 行为型模式:观察者模式、策略模式。
-
架构设计
- 分层架构:表现层、业务逻辑层、数据访问层。
- MVC架构:模型(Model)、视图(View)、控制器(Controller)。
- 微服务架构:将系统拆分为多个独立服务。
四、软件实现
-
编程语言选择
- 根据需求选择适合的语言,如Java、Python、C++等。
-
编码规范
- 命名规范、注释规范、代码风格。
-
代码复用
- 使用库、框架、设计模式提高代码复用性。
-
版本控制
- 工具:Git、SVN。
五、软件测试
-
测试类型
- 单元测试:测试单个模块。
- 集成测试:测试模块之间的交互。
- 系统测试:测试整个系统。
- 验收测试:用户验证系统是否符合需求。
-
测试方法
- 黑盒测试:关注输入输出,不关注内部实现。
- 白盒测试:关注内部逻辑和代码结构。
-
测试工具
- JUnit(单元测试)、Selenium(自动化测试)、LoadRunner(性能测试)。
六、软件维护
-
维护类型
- 纠错性维护:修复软件中的错误。
- 适应性维护:适应环境变化。
- 完善性维护:增加新功能。
- 预防性维护:防止未来可能出现的问题。
-
维护过程
- 问题报告→问题分析→修改→测试→发布。
七、软件项目管理
-
项目计划
- 制定项目目标、进度、资源分配。
-
进度管理
- 工具:甘特图、关键路径法(CPM)。
-
风险管理
- 识别风险、评估风险、制定应对策略。
-
质量管理
- 质量标准、质量保证、质量控制。
-
配置管理
- 管理软件版本、变更和发布。
八、软件工程标准与文档
-
标准
- ISO/IEC 12207(软件生命周期过程)。
- CMMI(能力成熟度模型集成)。
-
文档
- 需求文档:需求规格说明书。
- 设计文档:系统设计说明书。
- 测试文档:测试计划、测试用例。
- 用户手册:帮助用户使用系统。
九、常见考点与题型
- 选择题:
- 考察基本概念,如软件生命周期、设计原则。
- 设计题:
- 设计系统架构或模块。
- 分析题:
- 分析项目风险、测试用例。
十、备考建议
- 掌握核心概念:
- 理解软件工程的基本原理和方法。
- 熟悉设计模式:
- 掌握常见设计模式的应用场景。
- 结合实际案例:
- 通过实际项目理解软件工程的应用。
- 多做真题:
- 通过历年真题熟悉考试题型和难度。