代码改变世界

详细介绍:5、软件工程

2025-10-17 09:41  tlnshuju  阅读(5)  评论(0)    收藏  举报

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