软件工程
2023-03-21 23:31:20 45 举报
AI智能生成
软件工程是一门研究如何有效地开发和维护大型软件系统的学科。它涵盖了从需求分析、设计、编码、测试到部署的整个软件开发生命周期。软件工程师使用各种工程原则和技术,如面向对象编程、模块化设计和版本控制等,来提高软件的质量和可靠性。此外,他们还需要与项目经理和其他团队成员密切合作,以确保项目按时按预算完成。软件工程的目标是创建高质量、可维护和可扩展的软件系统,以满足用户的需求并适应不断变化的市场环境。
作者其他创作
大纲/内容
软件工程概述
什么是软件工程
软件工程是指导计算机软件开发和维护的一门工程系学科
典型定义
1968年
NATO会议,为了经济的获得可靠的且能在实际机器上有效运行的软件
1993年
IEEE,2研究1中提到的途径
软件工程七条基本原理
用分阶段的生命周期严格规划
坚持进行阶段评审
实施严格的产品控制
采用现代程序设计技术
结果应能清楚的审查
人少而精
承认不断改进软件工程实践的必要性
软件危机
开发成本高
不可维护
质量不可靠
软件工程方法学三要素
方法
工具
过程
软件的生命周期
软件定义
问题定义
可行性研究
需求分析
软件开发
系统设计
概述设计
详细设计
系统实现
编码和单元测试
综合测试
软件维护
运行维护
软件过程模型
瀑布模型
结构化模型
分工明确,要求严格,时间把控好
适合需求明确大型工程
二次开发
主要缺点:由文档驱动
快速原型模型
解决需求难以把控即需求不明确而提出的
抛弃式模型,需求一旦明确就会被抛弃
不适合大型项目
增量模型
递增式设计
管理成本低
每完成一步就交给顾客审视
模块划分难
螺旋模型
强调风险分析
主要用于大型项目
喷泉模型
面向对象
分析,设计,编码界限不明确
可大
RUP 统一过程
最佳实践
迭代式开发
管理需求
使用基于构件的体系结构
可视化建模
验证软件质量
控制软件变更
敏捷开发和极限编程
思考
为什么要对软件划分生命周期
子主题
传统的软件工程方法学
问题定义
任务
在向用户调查的基础上,编写《关于系统规模和目标的报告书》
可行性研究
任务
目的
确定问题是否值得去解决
用最小的代价在尽可能短的时间内确定问题能否解决
可行性,至少从三方面
技术可行性
经济可行性
操作可行性
法律可行性
运行可行性
可行性研究过程
复查系统规模和目标
研究目前正在使用的系统
导出新系统的高层逻辑模型
进一步定义问题
导出和评价供选择的解法
推荐行动方针
草拟开发计划书
结构化分析
需求分析的任务
确定对系统的综合要求
分析系统的数据要求
导出系统的逻辑模型
修正系统开发计划
结构化思想
自顶向下,逐步求精,模块化
获取需求的方法
访谈
面向数据流自顶向下求精
简易的应用规格说明技术
快速建立软件原型
SA 三大模型
数据模型
E-R图
必须理解并描述问题的信息域
功能模型
DFD图(数据流图)
必需定义软件应完成的功能
数据字典
数据流
数据流分量
数据存储
处理
行为模型
状态转换图
初态 实心圆。终态 同心圆,内为实心圆。中间状态用圆角矩形表示
需求分析阶段其他可能用到的图
层次方框图
Warnier 图
IPO图
结构化设计
软件设计基本原理
模块化
抽象
逐步求精
信息隐藏和局部化
模块独立
耦合
尽量使用数据耦合
少使用控制耦合和特征耦合
不使用内容耦合
内聚
高内聚:功能内聚
高内聚,低耦合
模块的作用域应该在控制域内
软件设计过程
系统设计阶段(确定系统的具体实现方案)
设想供选择的方案
选取合理的方案
结构设计阶段(确定软件结构)
概要设计方法和工具
描述软件结构工具
结构层次图
HIPO 图
圆圈加箭头表方向
方法
面向数据流的设计方法
变换流 变换分析
事务流 事务分析
一输入多输出
详细设计
控制结构
选择
顺序
循环
过程设计工具
程序流程图
盒图
PAD 图
判定表
判定树
过程设计语言
面向数据结构的设计方法
Jackson 方法
Warnier 方法
程序复杂性度量
McCabe 方法
流图
V(G)=m-n+2 m为边数 n为节点数
Halstead 方法
面向对象软件工程方法学基础
面向对象方法学引论
基本概念
对象
类
多态性
继承
消息
方法
重载
属性
三大模型
对象模型
描述系统的静态结构
UML 类图
动态模型
规定了对象模型中的对象的合法变化序列,瞬时的行为上的系统的“控制”特征
状态图,顺序图
功能模型
变化系统的功能性质
用例图(要会画),IPO图
关系
扩展
包含
OOA(面向对象分析)和OOD(面向对象设计)
系统实现
编码
系统测试
测试目标与规则
目标
测试是为了发现软件中的错误
成功的测试是发现至今为止未发现的错误
准则
所有测试因围绕着用户需求
测试前制定测试计划
从小规模到大规模
穷举测试是不可能的
由独立的第三方测试
常用测试方法
白盒测试(结构测试)
黑盒测试(功能测试)
测试步骤
单元测试
白盒测试,辅之以黑盒测试
接口测试,路径测试
子系统测试
白盒测试,黑盒测试
接口测试,路径测试,功能测试,性能测试
集成测试
黑盒测试
功能测试,健壮性测试,性能测试,用户界面测试,安全性测试,压力测试,可靠性测试,安装/反安装测试
确认测试
黑盒测试
平行运行
白盒测试用例设计技术
逻辑覆盖
语句覆盖
每一条语句都要进行测试(覆盖率最低)
判定覆盖
所有判断的真假分支都要测试一遍,只顾真假
条件覆盖
对判断条件的真假性进行测试,即每个判定条件都要测试
判定/条件覆盖
条件组合覆盖
点覆盖
边覆盖
通常与判定覆盖一致
路径覆盖
有多少条路径就测试多少条,与环形复杂度相等,m-n+2
控制结构测试
基本路径测试
有多少条路径就测试多少条,与环形复杂度相等,m-n+2
条件测试
循环测试
黑盒测试用例设计技术
等价划分
边界值分析
错误推测
经验
软件维护
维护的定义和种类
改正性维护
用户发现bug,我改正
适应性维护
版本更迭问题
完善性维护
不足,但不是bug
预防性维护
主动,其他都是被动
可能问题预防
软件的可维护性
可理解性
可测试性
可修改性
可靠性
可移植性
可使用性
效率
软件项目管理
基本内容
项目管理基本概念
通过计划,组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程
软件规模度量
代码行技术
代码行数LOC
功能点技术
工作量估算
静态单变量模型
动态多变量模型
COCOMO2 模型
进度计划
估算开发时间
Walston_Felix模型
原始COCOMO 模型
COCOMO2 模型
Putnam 模型
Gantt 图
优点
简洁明了
缺点
不能显示的看出依赖关系
难看出依赖路径
工程网络图
优点
显示的描述出依赖关系
关键路径
机动时间
0 条评论
下一页