代码改变世界
2025-10-17 09:41
tlnshuju
阅读(5)
评论()
收藏
举报

5.1 软件工程的定义
- 软件工程组成:(1)方法:技术手段(2)工具(3)过程:贯穿各个环节
5.2 软件需求
- 需求阶段:解决“做什么”
- 软件需求:待解决问题的特性的描述,需求必须可验证,多层次(1)业务需求:对系统高层次的目标需求(2)用户需求:用户的具体目标(3)系统需求:系统角度——功能需求、非机制需求、设计约束
- 质量功能部署QFD:将用户要求转换成软件需求,(1)常规需求:认为应该有,越多越满意(2)期望需求:想当然认为,无法正确描述(3)意外需求:兴奋需求,要求范围外
- 需求获取:确定和理解不同的项目干系人对系统的需求和约束的过程
- 需求分析:结构化分析方法——建模核心【数据字典】,三层次模型——(1)数据模型:实体联系图E-R图(2)功能模型:数据流图DFD(3)行为模型:状态转换图STD
- 需求规格说明书SRS:项目干系人与开发团队对需求达成共识,包括:范围、引用文件、需求、合格性规定、需求可追踪性、尚未解决问题、注解、附录
- 需求变更过程:识别问题——>问题分析和变更描述——>变更分析——>成本计算——>变更实现——>修改后的需求
- 需求变更策略:遵循过程、未批准不达成、CCB决定、项目风险承担者了解、不可修改删除原始文档、跟踪经核准的变更请求
- 变更控制委员会CCB:项目所有者权益代表,决策机构,非作业机构,不提出变更方案
- 需求跟踪:提供了由需求到产品构建整个过程范围的明确查阅的能力,不可省略(1)正向跟踪:需求是否在产品中有对应(2)逆向跟踪:工作成果是否在需求记录中有出处(3)双向跟踪:正+逆
5.3 软件设计
- 软件设计:处理“怎么做”,分为(1)结构化设计(2)面向对象设计

5.4 软件建立
- 软件配置管理(SCM)核心:(1)版本控制:追踪文档的变更和并行开发(2)变更控制:活动×6——计划、标识、控制、状态记录、审计、发布管理与交付(软件库)关联15章节
- 软件测试:确保软件质量,贯穿整个构建和维护过程
- 测试方法:(1)静态测试:未运行,文档(检查单)+代码(桌前检查、代码走查、代码审查)(2)动态测试:实际运行,黑盒测试 / 白盒测试
- 白盒测试:结构测试,用于单元测试,知结构和算法
- 黑盒测试:功能测试,用于集成测试,不知内部结构和算法
- 测试类型:(1)单元测试:模块测试,依据软件详细设计说明书(2)集成测试:模块间,模块和已集成的软件之间的关系(3)确认测试:验证特性是否与用户需求一致(4)系统测试(5)配置项测试:配置项与SRS的一致性(6)回归测试否引入新错误就是:修改代码后,测试
- 确认测试:(1)内部确认测试(2)Alpha测试:用户在开发环境下测试(3)Beta测试:用户在实际使用环境下测试(4)验收测试:真实的用户工作环境下测试
- 软件调试:测试成果的标志是发现了错误
5.5 部署交付
- 软件系统部署的管理代价占到整个软件管理开销的大部分
- 软件部署:(1)面向单机软件的部署模式(2)集中式服务器应用部署(3)基于微服务的分布式部署
- 持续交付:业务研发完成后一键部署
- 交付能力评估指标(1)核心指标:仅涉及一行代码的改动得多少时间部署上线(2)是否在以一种可重复、可靠的方式执行软件交付
- 持续部署方案:最流行——容器技术,优点:上手简单、轻量级、集合型好、易打包发布
- 蓝绿部署:部署准备新旧版本,凭借域名解析切换,新版本出疑问快速切换至旧版本
- 金丝雀部署:少量用户采用新版本,正常后适配给所有用户(测试服、体验服、抢先服)
5.6 软件质量管理
- 软件质量:软件与明确地和隐含地定义的需求相一致的程度
- 影响软件质量的因素:(1)产品运行(2)产品修改(3)产品转移
- 软件质量保证SQA:重要任务(1)审计与评审(2)报告(3)处理不合格问题
5.7软件过程能力成熟度
- CSMM软件过程能力成熟度模型:4能力域——治理、研发与交付、管理与支撑、组织管理;20能力子域;161能力
- 成熟度等级——P231
