5.1软件工程
从软件架构中可以知道构件及其之间的关系
软件架构五大模式从小到大分为:数据流风格(批处理、管道)、调用/返回风格(主/子函数、面向对象、层次)
、独立构件风格(事件、通信)、虚拟机风格(解析器、规则)、仓库风格(数据库、黑板、超文本)
软件架构评估方式三种方式(从外到内):基于调查问卷(检查表)方式、基于场景的方式和基于度量的方式。(常用基于场景的方式)
基于场景的方式:架构权衡分析法(ATAM)、软件架构分析法(SAAM)、成本效益分析法(CBAM).主要考察场景三个方面(刺激 环境 响应)
软件需求描述的是系统相关的各方面需求:业务需求(高层次需求) 用户需求(具体需求) 系统需求(方案需求)
质量功能部署(QFD):将用户需求功能分配给系统,转换成系统技术需求,将软件需求分三类:常规需求(基本需求) 期望需求 意外需求(兴奋需求)
需求过程:需求获取 需求分析 需求规格说明和编制(需求定义) 需求验证与确认
需求获取方式:用户访谈\问卷调查\采样\情节串联板\联合需求计划
需求分析:需求分析模型:行为模型(状态转换图STD)\功能模型(数据流图DFD)\数据模型(E-R图)
需求规格说明和编制(SRS)
需求验证与确认(评审SRS)
统一建模语言UML(构造块\规则\公共机制)
事物也为建模元素:结构事物(静态)\行为事物(动态)\分组事物\注释事物
UML关系:
依赖:事物之间的关系
关联:一组事物之间的关系
泛化:一般和特殊化
实现:类之间的关系
类图:类接口 写作和它们之间的关系
对象图:对象及它们之间的关系
构件图:构件和连接件构成的内部结构
组合结构图:结构化类的内部结构
用例图:用例 参与者和它们间的关系
顺序图:交互图 一组对象或参与者以及它们之间可能发送的消息构成
通信图:交互图 收发消息的对象和参与者的结构组织
定时图:交互图 消息跨越不同对象或参与者的实际时间
状态图:状态机 状态\事件\转移\活动
部署图:运行时的处理节点及在其中生存的构件的配置
活动图:控制流和数据流
制品图:物理结构
包图:组织单元\以及它们之间的依赖关系
交互概览图:是活动图和顺序图的混合物
4+1
逻辑视图(设计视图) 进程视图 实现视图 部署视图 用例视图
用例模型:
识别参与者 合并需求获得用例\细化用例描述\调整用例模型:包含关系扩展关系泛化关系
分析模型CRC建模:定义概念类 确定类之间的关系 为类添加职责 建立交互图
类之间的关系:关联 依赖 泛化 聚合(生命周期可以不相同) 组合(生命周期相同)和实现
结构化软件设计SD:面向数据流,以结构化分析为基础,从顶自下逐步求精,高内聚低耦合的分析方法
面向对象分析OOD:从面向对象分析OOA而来。包括封装抽象可扩展性,有继承多态的特性
OOD的原则有:
单职原则--单一类,属于高内聚原则
开闭原则--可以扩展,不准修改
李氏替换原则--子代父
依赖倒置原则--找出共性,关注接口编程
接口隔离原则------使用多个单一的接口来替换一个总接口
组合重用原则------能用组合的地方就不要用继承
迪米特原则(最少知识法则)------对象之间尽可能的少接触
设计模型分:创建型模式\结构型模式和行为型模式
创建型(创建对象)----工厂方法\抽象工厂\原型\单例\建造者
结构型(类或对象的组合)-----适配器\桥接\组合\装饰\外观\亨元\代理
行为型(类或对象的交互以及职责的分配)----责任链\命令\解释器\迭代器\中介者\备忘录\观察者\状态\策略\模板方法\访问者
软件配置管理:软件配置管理计划(明确控制任务)
\软件配置标识(建立基线)
\软件配置控制(管理软件生命周期中的变更)
\软件配置状态记录(配置状态信息)
\软件配置审计(独立评价)\软件发布管理与交付(交付版本)
软件编码: 程序设计语言,程序设计风格(源程序文档化,数据说明,语句结构和输入输出方法,程序复杂性度量,编码效率:程序效率\算法效率\存储效率\I/O效率
软件测试可以发现程序的缺陷,从而进行改善
软件测试方法:静态测试(人工检测和计算机辅助静态分析):桌前检查\代码走查\代码审查
和动态测试(在计算机上实际运行程序):白盒测试和黑盒测试
白合测试方法有:控制流 数据流 程序变异测试
白盒测试方法中常用的技术:逻辑覆盖 (语句覆盖 判定覆盖 条件覆盖 条件判定覆盖 条件组合覆盖 修正的条件判定覆盖 和路径覆盖)
黑盒测试也称为功能测试(根据SRS所规定的功能来设计测试用例),用于集成测试\确认测试\系统测试 (等价类划分\边界值分析\判定表\因果图\状态图\随机测试\猜错法\正交试验法)
软件部署与交付
持续交付
持续部署方案:kubemutes+Docker和Matrix
部署原则:整体部署由运维人员执行,部署方式:蓝绿部署或金丝雀部署
部署层次:Build-Ship-Run(完成的镜像部署)
不可变服务器:指除了更新和安装补丁程序外,不对服务器做任何更改
蓝绿部署(当新版本出现问题时,可以切换到旧版本)
金丝雀部署(让少量用户来使用新版本来测试)
部署与交付的新趋势:持续集成\持续交付和持续部署
工作职责和人员分工的转变:开发人员使用自动化开发工具进行持续集成,也对交付和部署进行扩展,运维人员以开发自动化部署脚本,也将并入开发行列
部署和交付的新趋势:
大数据和云计算基础设施的普及进步给部署带来新的飞跃
研发运维的融合,减轻运维的压力,把运维和研发融合在一起
软件过程能力基于软件过程 技术 资源 人员能力达成业务目标的综合能力(治理能力 开发与交付能力 管理与支持能力 组织管理能力)
CSMM(软件过程能力成熟度模型)吸收了软件工程\项目管理\产品管理\组织治理\质量管理\卓越绩效管理\精益软件开发
CSMM模型由4个能力域\20个能力子域\161个能力要求组成
治理:包括战略与治理\目标管理能力子域
开发与交付:包括需求 设计 开发 测试 部署 服务 开源应用能力子域
管理与支持:项目策划 项目监控 项目结项 质量保证 风险管理 配置管理 供应商管理能力子域
组织管理:过程管理 人员能力管理 组织资源管理 过程能力管理能力子域
CSMM定了5个等级(初始级 项目规范级 组织改进级 量化提升级 创新引领级
软件架构 分析 设计 实现 测试 交付部署 管理
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性