5.1 软件工程

  1. 软件架构模式:(1)数据流风格:包括批处理序列和管道/过滤器两种 风格;(2)调用/返回风格:包括主程序/子程序、数据抽象和面向对象,以及层次结构;(3)独立构件风格:包括进程通信和事件驱动的系统;(4)虚拟机风格:包括解释器和基于规则的系统;(5)仓库风格:包括数据库系统、黑板系统和超文本系统。
  2. 软件架构评估技术三类评估方式:基于调查问卷(或检查表) 的方式、 基于场景的方式(最常用)、基于度量的方式。基于场景的方式主要包括:架构权衡分析法(ATAM)、软件架构分析法(SAAM)、成本效益分析法 (CBAM)。在架构评估中,一般采用刺激、环境、响应三方面来对场景进行描述。刺激是场景中解释或描述项目干系人怎样引发与系统的交互部分,环境描述的是刺激发生时的情况,响应是指系统是如何通过架构对刺激做出反应的。
  3. 软件需求:就是系统必须完成的事以及必须具备的品质。需求是多层次的, 包括业务需求、用户需求、系统需求,这三个不同层次从目标到具体,从整体到局部,从概念到细节。
  4. 质量功能部署:(QFD)是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。分为:常规需求、期望需求、意外需求。
  5. 需求过程主要包括:需求获取→需求分析→需求规格说明书编制→需求验证与确认。(1)需求获取:常见的需求获取方法包括用户访谈、问卷调查、采样、情节串联板、联合需求计划等。(2)需求分析模型:数据模型、功能模型、行为模型(状态模型)。实体关系图(E-R 图)表示数据模型,数据流图(DFD)表示功能模型,状态转换图(STD)表示行为模型。(3)需求验证与确认:一般通过需求评审和需求测试工作来对需求进行验证。需求评审就是对 SRS 进行技术评审。
  6. 统一建模语言(UML) :建模语言。(1)UML 中的事物:结构事物(静态)、行为事物(动态)、分组事物(组织部分)和注释事物(解释部分);(2)UML 中的关系:依赖:是两个事物之间的语义关系。关联:描述一组对象之间连接的结构关系。泛化:是一般化和特殊化的关系。实现:是类之间的语义关系。(3)UML 视图:逻辑视图(设计视图):它表示了设计模型中在架构方面具有垂直意义的部分,它是类、子系统、包和用例实现的子集。进程视图:是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例。实现视图:对组成基于系统的物理代码的文件和构件进行建模。部署视图:把构件部署到一个物理节点上,表示软件到硬件的映射分布结构。用例视图:是最基本的需求分析模型。(4)用例模型:识别参与者→合并需求获得用例→细化用例描述→调整用例摸型(包含关系、扩展关系、泛化关系)。(记忆:注意排序,识别需求-细化调整)。(5)分析模型(CRC 建模):定义概念类→确定类之间的关系→为类添加职责→建立交互图。(记忆:注意排序,定义确定-添加建立)
  7. 结构化设计:(SD)是一种面向数据流的方法,它以 SRS 和 SA 阶段所产生的 DFD 和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。在 SD 中,需要遵循一个基本的原则:高内聚,低耦合。
  8. 面向对象设计:(OOD)是 OOA 方法的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。【2023 上】
  9. 软件设计模式:创建型模式(用于创建对象)、结构型模式(用于处理类或对象的组合)、行为型模式(用于描述类或对象的交互以及职责的分配)。
  10. 软件配置管理活动:(1)软件配置管理计划的制订需要了解组织结构环境和组织单元之间的联系,明确软件配置控制任务。(2)软件配置标识活动识别要控制的配置项,并为这些配置项及其版本建立基线。(3)软件配置控制关注的是管理软件生命周期中的变更。(4)软件配置状态记录标识、收集、维护并报告配置管理的配置状态信息。(5)软件配置审计是独立评价软件产品和过程是否遵从已有的规则、标准、指南、计划和流程而进行的活动。(6)软件发布管理和交付通常需要创建特定的交付版本,完成此任务的关键是软件库。
  11. 软件测试:是在将软件交付给客户之前所必须完成的重要步骤,是发现软件错误(缺陷)的主要手段。(1)软件测试方法:①静态测试是指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态测试包括对文档的静态测试和对代码的静态测试。对文档的静态测试主要以检查单的形式进行,而对代码的静态测试一般采用桌前检查、代码走查和代码审查。②动态测试是指在计算机上实际运行程序进行软件测试,一般采用白盒测试和黑盒测试方法。白盒测试也称为结构测试,主要用于软件单元测试中。它的主要思想是,将程序看作是一个透明的白盒,测试人员完全清楚程序的结构和处理算法,按照程序内部逻辑结构设计测试用例,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试方法主要有控制流测试、数据流测试和程序变异测试等。另外,使用静态测试的方法也可以实现白盒测试。黑盒测试也称为功能测试,主要用于集成测试、确认测试和系统测试中。黑盒测试将程序看作是一个不透明的黑盒,完全不考虑(或不了解)程序的内部结构和处理算法,而只检查程序功能是否能按照 SRS 的要求正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性等。
  12. 持续部署:(1)部署原则:整体部署由运维人员执行;部署方式采用蓝绿部署或金丝雀部署。(2)部署层次:完整的镜像部署包括 Build-Ship-Run三个环节,Build 跟传统的编译类似,将软件编译形成 RPM 包或者 Jar 包;Ship 则是将所需的第三方依赖和第三方插件安装到环境中;Run 就是在不同的地方启动整套环境。(3)蓝绿部署和金丝雀部署:蓝绿部署是指在部署的时候准备新旧两个部署版本,通过域名解析切换的方式将用户使用环境切换到新版本中,当出现问题的时候,可以快速地将用户环境切回旧版本,并对新版本进行修复和调整。金丝雀部署是指当有新版本发布的时候,先让少量用户使用新版本**,并且观察新版本是否存在问题。【2023 下】
  13. CSMM 模型四个能力域:治理(战略与治理、目标管理)、开发与交付(需求、设计、开发、测试、部署、服务、开源应用)、管理与支持(项目策划、项目监控、项目结项、质量保证、风险管理、配置管理、供应商管理)、组织管理(过程管理、人员能力管理、组织资源管理、过程能力管理)。(记忆:战略与治理、人员能力管理、过程能力管理三个能力子域对照 5 级-创新引领级)
  14. CSMM5 个等级:(1)1 级-初始级:软件过程和结果具有不确定性;(2)2 级-项目规范级:项目基本可按计划实现预期的结果;(3)3 级-组织改进级:在组织范围内能够稳定地实现预期的项目目标;(4)4 级-量化提升级:在组织范围内能够量化地管理和实现预期的组织和项目目标;(5)5 级-创新引领级:通过技术和管理的创新,实现组织业务目标的持续提升,引领行业发展。
Last Updated:
Contributors: nh4u