软件工程自我总结
2021/10/14 23:44:38
本文主要是介绍软件工程自我总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
软件过程
- 软件描述->软件开发->软件有效性验证->软件进化
- 基本要素:方法、工具、过程
正式技术评审的目标:发现软件中的错误
模块类型
- 传入:下属模块数据传给上级模块
- 传出:上级模块数据传给下属模块
- 变换:上级模块的数据转换形式后再传回给上级模块
- 协调:对所有下属模块协调和管理
注意区分上级模块和下属模块
成熟度
CMM 5个:
- 初始:制度缺乏,无序
- 可重复:基本管理制度,可跟踪,可重复同类项目
- 已定义:文档化、标准化、可按需改进
- 已管理:详细度量标准,有定量的理解和控制
- 优化:持续改进
CMMI 6个:(0-5)
0.未完成:未执行
1.已执行:可标识的输入输出,关注于过程域的特定目标
2.已管理:过程制度化,监控,控制,评审
3.已定义:关注过程的组织和部署
4.量化:定量管理
5.优化:优化,持续得到改进
软件过程模型
- 瀑布:
- 优点:易理解,管理成本低
- 缺点:必须需求明确,不适合大型软件,风控弱,已延期和超出预算
- 增量:瀑布+原型,优先满足核心需求及功能,再在基本需求上不断优化、完善及补充,确定性比原型高
- 演化:(迭代,需求缺乏准确认知)
- 原型:(规模不大,不太复杂)
- 快速构造部分需求
- 水平:导航,主要用在界面上
- 垂直:主要用在算法上
- 抛弃式:解决需求不确定、不完整
- 演化式:增量式,易于升级和优化,适合Web
- :(规模庞大,复杂,高风险)
- 瀑布+演化
- 制定计划+风险分析+实施工程+客户评估
- 强调风险分析
- 原型:(规模不大,不太复杂)
- 喷泉:
- 迭代+无间隙
- 不利于项目管理和审核
- UP模型(统一过程)
- 用例和风险驱动,架构为中心
- 迭代+增量
- 4个阶段:起始、精华、构建、移交
- 5个工作流:需求、分析、设计、实现、测试
敏捷方法
- 极限编程:
- 轻量、高效、低风险、柔性、可预测、科学
- 4大价值观+5个原则+12个最佳实践+行为
- 4大价值观:沟通、简单、反馈、勇气
- 5个原则:快速反馈、简单假设、逐步修改、提倡更改、优质工作
- 12个最佳实践:计划游戏、小型发布、隐喻、简单设计、重构、结队编程、集体代码所有制、持续集成、每周40小时、现场客户、编码标准
- 水晶法:不同项目不同策略、约定和方法论
- 并列争球法:迭代+冲刺
- 自适应软件开发:猜测+合作+学习
- 开放式:虚拟团队,开发不在同一处
- FDD驱动:开发人员分类。指挥者+类程序员
需求分析->系统设计->系统测试->运行和维护
需求分析
- 获取
- 分析与协商:超纲、优先级、冲突
- 系统建模:结构化分析(SA):数据流图(DFD)、数据字典(DD),面向对象分析(OOA)
- 规约:分析任务的最终产物
- 引言
- 信息描述
- 功能描述
- 行为描述
- 检验标准
- 参考书目
- 附录
- 验证:
- 复查:正确性+完整性+清晰性
- 评审:目标一致、资料齐全、数据重组、主要功能在范围内、符合约束条件、技术风险、检验标准
- 管理:
- 建立跟踪:正向+逆向
- 确保用户需求
系统设计
- 设计方法:结构化设计(SD)面向对象设计(OOD)
- 概要设计:
- 总体结构
- 数据结构与数据库:概念->逻辑->物理
- 编写设计文档
- 评审
- 详细设计:
- 模块和算法
- 模块内数据结构
- 代码+输入输出格式+界面
- 详细设计说明书
- 评审
数据库设计过程
- 需求分析:数据+功能+性能
- 概念结构设计:ER图
- 逻辑结构设计:ER图转换成表
- 物理设计:存储结构+存取路径
- 实施:编程+测试+试运行
- 运行与维护:运行+日常维护
系统测试
原则:
- 尽早开始
- 避免开发或小组承担(单元测试除外)
- 不能穷举
- 重视群集
- 严格按计划,避免随意
对象:程序+文档+数据,不包括开发人员
过程:计划->大纲->用例+说明文档->实施->报告
策略:单元测试->集成测试->确认测试->系统测试
单元测试
- 模块接口
- 局部数据结构
- 模块内路劲
- 边界条件
- 错误处理
集成测试
把所有模块组装成一个系统测试
- 非渐增式:先单元,再完整
- 渐增式
- 自顶向下:先上层模块,再下层模块,需要桩模块,不需要驱动模块
- 自底向上:先下层模块,再上层模块,需要驱动模块,不需要桩模块
- 驱动模块:主程序,装模块:模拟需要调用的模块
- 回归测试:重新执行已测试过的子集,只包括主要程序功能
- 冒烟测试:暴露影响构建的错误
确认测试
- 进一步检查软件功能和性能
- Alphea测试(开发者场所)和Beta测试(用户场所)
- 退化测试是用来防止改动产生的新错误
系统测试
- 恢复
- 安全
- 压力
- 性能
- 部署
白盒测试
- 语句覆盖:每个语句至少执行1次
- 判定覆盖:每种结果(分支)至少1次
- 条件覆盖:每个条件至少一次(不同的条件可能出相同的分支结果)
- 判定/条件覆盖:同时满足判定覆盖和条件覆盖
- 路径覆盖:每条执行到的路径至少1次
使用判定表看出条件取值的组合
调试
- 测试之后,开发人员进行
- 方法:试探、回溯、对分查找、归纳、演绎
运行和维护(生命周期最长)
新旧转换
- 直接转换
- 并行准换
- 分段转换
- 运行新系统过程:初始->推广->控制->集成->管理
维护
- 指标:可理解、可测试、可修改
- 文档:用户文档、系统文档
- 类型:硬件、软件
- 内容:
- 软件:正确性、适应性、完善性(在使用或运行中添加的需求)、预防性
- 数据:安全性、完整性、并发性
- 代码
- 管理:提出修改->领导审查答复->领导分配任务->验收+登记
- 工具:
- 版本控制
- 文档分析
- 开发信息库
- 逆向工程
- 再工程
评价
- 立项:规划阶段
- 中期:实施过程中,里程碑式
- 结项:正式运行后
- 内容:
- 需求:目标
- 规格说明:所有分析和测量,表示软件部件
- 记录:执行计划时详细记载
- 报告:执行测量和分析的结果,能重复及重新评价
项目管理
范围(4P)
- 人员:项目管理、高级管理、开发、客户、用户
- 产品:环境、目标、功能+性能
- 过程
- 项目
- 输入:
- 项目章程
- 项目范围管理计划
- 组织过程资产
- 批准的变更申请
估算模型
COCOMO(静态)
- 基本:静态单变量,只有LOC(源代码行数)
- 中级:基本+产品、硬件、人员项目等因素
- 详细:中级+分析、设计各步骤的影响
- COCOMO II:对象点、功能点、代码行
Putnam(动态)
进度
- 基本原则:划分、相互依赖、实践分配、工作量确认、确定责任、明确输出、里程碑
- 安排:Gantt图、Pert图
- Pert图不能描述并行关系
- Gant图不能描述依赖关系
组织
- 基本原则:尽早落实、减少交流接口、责权均衡
- 模式:项目划分、职能划分(专项组)、矩阵(项目+职能)
配置管理(SCM)
基线、配置项、版本控制、变更控制
配置项
- 产品组成部分的工作成果:需求文档、设计文档、源码、测试用例
- 项目管理和机构支撑过程产生的文档:工作计划、项目质量报告、项目跟踪报告
设备清单不属于配置项
风险管理
- 识别:性能、成本、支持、进度
- 预测:建立标准->描述后果->估算影响->标注精度
- 评估:RE=P x C,P:发生概率,C:成本
- 控制:避免、监控、RMMM计划
软件质量
- 内部、外部、使用
- 满足规定或潜在用户需求的能力
工具
特征:
- 覆盖整个软件周期
- 为项目调度提供多种手段
- 估算模型进行估算
- 支持多项目和子项目管理
- 确定关键路径、松弛时间、超前实践、滞后时间
- 成语与任务间的通信辅助
- 资源平衡
- 跟踪资源使用
- 生成固定格式的报表和报告
不具备指导性作用
补充
冗余附加技术:
- 备份程序的存储及调用(不是关键程序)
- 纠错检测及恢复
- 容错固化
环路复杂性(McCabe)
V(G)=E-N+2,E:边数,N:节点数
开发方法
- 原型法:需求不清晰+多变
- 结构化法:规模不大+不复杂+不多变
- Jackson法:以数据结构驱动+规模小
------------------------------------------------------------------------------------------
模块划分原则:
- 大小适中
- 扇入扇出合理
- 扇出大=复杂度高,扇入大=复用度高
- 顶层扇出大,中间删除较少,底层扇入大
- 一般扇入扇出系数在3或4,不超过7
- 深度宽度合理
完善模块不能改进设计质量
体系结构风格
- 仓库风格:
- 优点:多方法、可更改、可维护、可重用、支持容错和健壮
- 缺点:测试困难、选择太多、效率低、成本高、缺少并行支持
- 包括:数据库系统、黑板系统、超文本系统
数据仓库
- OLAP:针对联机数据访问与分析,通过多维的方式对数据进行分析、查询和报表
UML图
- 用例图:描述参与者必须要完成的任务
- 类图:类名、接口、属性、操作、关系:依赖,泛化,关联
- 对象图:对象:类型
- 状态图:状态词(动名词)+动作
- 包图:文件夹
- 活动图:有开始有结束
- 构件图:接口+依赖
- 制品图:系统的物理结构,常与部署图一起使用
- 组合结构图:描述类的内部结构
- 部署图:立方体+<<artifact>>
- 交互图:
- 序列图:生命线+控制焦点(像川字)
- 通信图:路劲+顺序号
- 交互概览图:活动图+顺序图
- 计时图:任务对象的生命线,强调消息实际时间以及相对顺序
这篇关于软件工程自我总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器