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