系统集成 第五章 软件工程 速记
软件需求
定义由组成部分、方法、工具、过程构成。
需求层次
业务需求:高层次目标要求
用户需求:用户的具体目标
系统需求
功能需求:通过系统特性的描述,必须实现的
非功能需求:系统展现给用户的行为,必须具备的
约束:限制,含设计约束、过程约束
质量功能部署QFD
常规需求:应做到的,越多越满意
期望需求:应具备的,没有实现会不满意
意外需求(兴奋需求):不实现不影响决策
需求获取
方法:访谈、问卷调查、采样、会议讨论、界面原型法等
需求分析
结构化分析SA
数据字典:建立模型的核心,是数据和目录,分析阶段工具;包括:数据项、数据结构、数据流、数据存储、处理过程
模型
行为模型:状态转换图(STD)
数据模型:实体联系图(E-R图)
功能模型:数据流(DFD)
(行态S、属实R、能流F)
SA步骤(前导新标确选需求)
反映当前物理模型
推导等价的逻辑模型
设计新的逻辑系统
提出目标系统物理模型
确定各种方案
选择一种方案
建立完整的需求规约
面向对象分析OOA
基本原则
抽象:抽取共同的、本质性的特征
过程抽象:单一的实体
数据抽象:核心原则,数据(属性)和操作(服务)结合,知做什么,不知如何做
封装:尽可能隐藏对象的内部细节
继承:在特殊类中不再重复地定义一般类中已定义的内容;简练、清晰
分类:具有相同属性和服务的对象划分为一类
聚合:组装体
关联:一个事物联想到另外的事物
消息通信:只能通过消息通信,由封装原则引起,动态联系
粒度控制:考虑全局时不考虑具体的细节,考虑部分的细节时则暂时撇开其余部分
行为分析:行为是复杂的,相互依赖,相互交织
OOA步骤:确定对象和类;确定结构;确定主题;确定属性;确定方法(对接住书房/对结主属方)
规格说明书SRS
需求分析阶段需要完成的文档
内容包括:范围、引用文件、需求、合格性规定、需求可追踪性、尚未解决的问题、注解和附录
需求变更过程:识别问题、问题分析、变更分析、变更实现、修改后需求
需求跟踪
正向跟踪:需求→成果
逆向跟踪:成果→需求
软件设计
特点:自顶向下、逐层分解、逐步求精和模块化的过程
结构化设计SD
模块设计
信息隐藏与抽象:采用封装技术,应设计成“黑盒”
模块化:具有功能(做什么)、逻辑(怎么做)和状态(使用时的环境)
耦合:模块之间联系,从低到高(飞书记致信宫内)
内聚:模块内部各代码成分之间联系,从高到低(恭顺通过失落哦)
好的设计标准:高内聚,低耦合
系统结构图SC:概要设计阶段的工具
详细设计表示工具
图形工具:业务流程图(业务关系)、程序流程图(清晰易修改,只能描述执行过程)、问题分析图PAD(改进,更清晰,自顶向下)、NS流程图(功能域明确,嵌套关系)
表格工具:一张表来描述过程的细节
语言工具:伪码或PDL,外层语法(确定),内层语法(不确定)
面向对象设计OOD
基本思想:抽象、封装、可扩展性(继承/多态)
主要任务:类和对象
设计原则
单职原则:仅有一个引起它变化的原因,否则被拆分
开闭原则:对扩展开放,对修改封闭
里氏替换原则:子类可替换父类,子类可扩展,不能改变父类
依赖倒置原则:依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
接口隔离原则:使用多个专门的接口
组合重用原则:要尽量使用组合,而不是继承关系达到重用
迪米特原则(最少知识法则):对其他对象有尽可能少的了解,降低耦合度,提高独立性
类的3种类型
实体类:一定有属性,但不一定有操作
控制类:没有属性,但一定有方法
边界类:既有属性也有方法
统一建模语言UML
定义:UML,建模语言
关系:依赖~影响;关联~连接;泛化~替换;实现~保证
UML2.0 的14种图
静态图:类图、对象图、构件图、组合结构图、用例图、部署图、制品图、包图
动态图🙁状态图\交互图\活动图(交通顺时,太互动)
交互图
通信图(协作图):收发消息
顺序图(序列图):发送的消息构成
定时图(计时图):消息跨越不同对象的实际时间
交互概览图
视图
逻辑视图(设计视图)(子集)
进程视图(执行)
用例视图(需求)
实现视图(构件)
部署视图(分布)
设计模式
按处理范围不同:类(静态关系)、对象(动态性)(静类动象)
按目的用途不同:
创建型:创建对象(创建例行工厂)
结构型:处理类或对象的组合(结构想外装,适合接待)
行为型:描述类或对象的交互以及职责分配
软件配置管理SCM
核心内容:版本控制和变更控制
活动(计时制状态审计不符/计识制状态审计布付)
配置管理计划:了解环境和组织单元联系
配置标识:识别配置项,建立基线
配置控制:变更
配置状态记录:配置状态信息
配置审计:独立评价
发布管理与交付:交付版本,软件库
软件测试–软件测试方法:
静态测试(静查代文)
文档:检查单
代码:桌前检查、代码走查和代码审查
动态测试(白结单,全流异)
白盒测试(结构测试):透明白盒,完全了解程序,用于单元测试;方法包括控制流测试、数据流测试、程序变异测试;静态测试的方法也可实现白盒测试
黑盒测试(功能测试):不透明黑盒,不了解不清楚结构,用于集成测试、确认测试和系统测试中
调试测试:原因排除法、回溯法、蛮力法(除回力)
面向对象测试:特征为多态性、继承性、封装性(态继封)
软件实现–软件测试-测试类型:
单元测试:模块测试,依据详细设计说明书(单详)
集成测试:组装起来的模块同时测试,依据概要设计文档(集概)
确认测试:是否与用户需求一致
系统测试:最重要测试:功能/性能
配置项测试:对象是软件配置项,依据 SRS 需求规格说明书
回归测试:软件变更之后,软件原有的要求的不损害性
部署交付
部署模式
面向单机软件
集中式服务器:访问量小(500人以下)硬件环境要求不高
微服务的分布式:访问量大、并发性要求高,容器和DevOps
持续交付优势
缩短;自动地、快速地;整个生命周期内;简化;可靠的、可预期的,可视的
部署技术
容器技术:最流行的技术;上手简单,体积小;打包复制和发布
原则:统一、相同、阶梯式晋级、运维人员执行,仅通过流水线,不可变服务器
镜像部署:Build搭建 (包);Ship发送 (安装);Run运行(启动)
蓝绿部署:新/旧两个部署版本
金丝雀部署:少量→所有
软件质量管理
影响软件质量:产品修改、产品转移、产品运行(改转行)
主要目标:事前预防;引入缺陷时即将其捕获;作用于过程;贯穿于所有的活动
软件质量保证SQA
SQA审计与评审:产品、工具、设备
SQA报告:直接沟通;必给软件工作组,不必给项目管理人员;关心软件质量的人发布(审报布)
处理不合格问题
软件过程能力成熟度CSMM
成熟度模型
治理:战略与治理、目标管理(治标)
开发与交付:开源应用、开发需求、设计、测试、部署、服务(开求计测部服)
组织管理:组织资源、过程能力、过程、人员能力(组过人)
管理与支持:策划、监控、结项、质量保证、风险管理、配置管理、供应商管理
成熟度等级(出轨改良心/初规改量新)
1 级初始级:具有不确定性
2 级项目规范级:可按计划实现预期的结果
3 级组织改进级:能够稳定地实现预期的项目目标
4 级量化提升级:量化地管理和实现项目目标
5 级创新引领级:创新,引领行业发展
夜雨聆风