导图社区 软件工程
关于软件工程一些常用知识点的总结,软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。
编辑于2022-01-02 13:02:41软件工程
软件生存周期与软件过程
软件生存周期
概念
一个软件从开始立项起,到废弃不用止,统称为软件的生存周期
三个时期
计划
开发
运行
六个阶段
需求分析
用户需求
功能需求
性能需求
软件分析
在系统需求模型的基础上
UML图
软件设计
将软件分析模型转变为考虑具体实现技术和平台的软件设计模型
编码
软件测试
确认测试
系统测试
运行维护
软件模型
传统的软件过程
瀑布模型
基于软件生存周期的线性开发模型
顺序性
只有等前一阶段的工作完成之后,后一阶段的工作才能开始
依赖性
只有当前一阶段有正确的输出时,后一阶段才能获得正确的结果
推迟实现
质量保证
问题:所得非需
快速原型模型
过程
先建立一个能够反映用户主要需求的原型
让用户实际看一看未来系统的概貌,以便判断哪些功能是符合需要的,哪些还需要改变
然后将原型反复改进,最终建立完全符合用户要求的新系统
特点
更好地满足用户的需求
短时间构造出原型系统和快速响应用户提出的修改器,难度较大
改变了 把生存周期等同于过程模型 的习惯性思维
软件演化模型
增量模型
第一个增量通常是软件的核心部分
优点
有利于控制技术风险
难度较大或要使用新硬件的部分可以放在较后的增量中开发,避免用户长久等待
不同增量可以配备不同数量的开发人员,增加灵活性
缺点
由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏 已构造好的系统部分,这需要软件具备开放式的体系结构
螺旋模型
瀑布模型和快速原型模型结合起来
子主题
每一螺旋的四个步骤
制定计划
风险评估
实施工程
用户评价
风险分析
降低了开发风险,任何一次迭代中均可采用原型方法
总体开发框架保留瀑布模型的系统性,顺序性和边开发、边评审的特点
过多的迭代周期增加开发成本和时间
风险评估的主观性过强
构建集成模型
类似于计算机的组装,主要适用于面向对象的软件开发
形式化方法模型
转换模型
过程
需求规格说明
程序变化
目标程序
优点
精确严密
缺点
形式化非常困难
费时、昂贵
形式化的需求规格说明书,自动的程序变换系统
净室模型
形式化的增量开发模型,在洁净状态下实现软件制作
统一过程
初始
所设立的项目是否可行
焦点是需求和分析工作流
细化
识别出剩余的大多数用例
焦点是需求、分析和设计工作流
构造
识别出剩余用例
焦点是实现工作流
迁移
完成最后的软件产品和验收测试
焦点是实现和测试工作流
软件可行性研究
经济可行性
技术可行性
运行可行性
法律可行性
风险分析
风险识别
风险预测
风险的驾驭和监控(风险管理)
结构化分析与设计
SA模型
数据字典DD
判定表
判定树
数据流图DFD
组成符号
类型
变换型结构
事务性结构
状态变换图STD
覆盖模型
信息模型
功能模型
行为模型
SD模型
SC图使用的模块符号
传入
传出
变换
源
漏
控制
模块设计
原则与方法
清晰第一,效率第二
结构化控制结构
面向对象与UML
对象和类
对象
面向对象技术的核心
客观世界中实际或抽象的事物
类
一组相似对象的共性抽象,是创建对象的有效模板
类与对象的关系
对象是类的实例,是类的具体事物
类是各个实例的综合抽象
一个类可以对应多个对象
面向对象的基本特征
抽象
封装
继承
多态
UML的组成
UML的模型元素
关联
对于两个相对独立的对象,当一个对象的实例与另一个对象的一 些特定实例存在固定的对应关系时,这两个对象之间为关联关系
实箭线
依赖
所谓依赖关系,就是构造这个类的时候,需要依赖其 他的类
虚箭线
泛化(继承)
它指定了子类如何特化父类的所有特征和 行为
空心三角形实线
鸟是动物的一种,企鹅、鸭、大雁是鸟的一种。
实现
空心三角形虚线
聚合
空心菱形实线
部分对象的生命周期并不由整体对象来管理
一只大雁脱离了雁群,依然是可以继续存活的
组合
实心菱形实线
在组合中,部分与整体生命期一致,部分与组合同时创 建并同时消亡
鸟与翅膀的关系
泛化=实现>组合>聚合>关联>依赖
图
静态图
用例图
基本组成部件
用例
参与者
系统
组成符号
系统边界
用例
参与者
关联
包含include
表示一个用例使用另一个用例
拓展extend
通过向被拓展的用例添加动作来拓展用例
类图
类图由系统中使用的类以及它们之间的关系组成,是描述 系统的一种图式
类图是构建其它图的基础
访问修饰符
+ public
-private
# protected
三个格子
类名称
接口用实体
类的特性
一般是类的字段和属性
可以没有
类的操作
一般是类的方法和行为
可以没有
1代表一个,0..*代表零到无限个
对象图
对象是对象类的实例,用对象图来描述
构件图
部署图
动态图
状态图
时序图
协作图
活动图
需求工程与需求分析
软件需求
一个系统必须遵循的条件或具备的能力
需求模型
面向对象分析
OOA
基本步骤
标识类
定义属性和方法
刻画类的层次
表示对象以及对象与对象之间的关系
为对象的行为建模
模型
类/对象模型
对象—关系模型
对象—行为模型
优点
分析模型的一般特点
全面覆盖软件的功能需求
分析模型与软件的实现无关
分析模型的表述方法与所采用的分析技术有关
五层次模型
建立类/对象层
建立属性层
建立服务层
建立结构层
建立主体层
面向对象的软件开发过程
面向对象分析OOA
面向对象设计OOD
面向对象编程OOP
面向对象测试OOT
面向对象分析建模
分析类
边界类
参与者或外部系统交互协议的接口
边界类将系统和外界的变化的变化隔离开,使外界环境的变化不会直接影响系统内部元素
控制类
封装一个或几个用例所特有的流程控制行为
分离了边界类对象和实体类对象
将用例所特有的行为与实体类对象分开
实体类
应用领域中的核心类
查找分析类
为每对参与者/用例确定一个边界类
为每个用例设置一个控制类
确定相关的各个实体
面向对象设计
内聚
从功能的角度对模块内部聚合能力的度量
耦合
对软件内部块间联系的度量
编码与测试
编程语言
基础编程语言
FORTRAN
COBOL
BASIC
结构化编程语言
PASCAL
C
ADA
面向对象语言
C++
JAVA
C#
测试
概念
软件测试是动态查找程序代码中的各类错误和问题的过程
目的
定位和纠正错误
特性
挑剔性
复杂性
不彻底性
经济性
分类
静态分析(程序不执行)
静态分析器分析
代码评审
代码会审
走查
办公桌检查
动态测试(程序执行)
黑盒测试
测功能
等价分类法
把输入数据的可能值划分为若干等价类
有效等价类
无效等价类
边界值分析法
边界容易出错的值
错误猜测法
白盒测试
测性能
逻辑覆盖测试
判定框
路径测试
测试文档
测试计划
测试报告
绪论
软件
软件≠程序
软件=程序(包含数据)+文档
软件危机
概念
软件危机是指落后的软件生产方式无法满足 迅速增长的计算机软件需求,从而导致软件 开发与维护过程中出现一系列严重问题的现象
原因
软件维护费用急剧上升,直接威胁计算机应用的扩大
软件生产技术进步缓慢,是加剧软件危机的重要原因
软件工程概念的提出是由于软件危机
软件工程
传统软件工程
面向对象软件工程
基于构建软件工程
软件工程学
采用工程化的原理与方法对软件进行计划,开发和维护