新版软件工程自学笔记Word文档格式.docx
- 文档编号:20933442
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:33
- 大小:315.03KB
新版软件工程自学笔记Word文档格式.docx
《新版软件工程自学笔记Word文档格式.docx》由会员分享,可在线阅读,更多相关《新版软件工程自学笔记Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
在使用以上技术时,还都可以辅以诸如原型构造等其它方法;
在实际使用中,往往组合地使用以上技术;
执行需求发现这项活动的人,其技能水平对这项活动的成功具有重大影响;
2.需求规约:
(1).需求规约的定义:
需求规约是一个软件项/产品/系统所有需求陈述的正式文档,它表达了一个产品/系统的概念模型;
(2).需求规约的性质:
重要性和稳定性程度;
可修改的;
完整的;
一致的;
(3).需求规约的作用:
需求规约是软件开发小组同用户之间一份事实上的技术合同书,是产品功能和环境的体现;
对产品/系统开发,需求规约是一个正式的受控的起始点;
对于项目的其余大多数工作,需求规约是一个管理控制点;
需求规约是创建产品验收测试计划和用户指南的基础;
(4).需求规约的表达方式:
非形式化的需求规约;
半形式化的需求规约;
形式化的需求规约;
三.
结构化方法
基本思想:
一切信息系统都是由信息流构成的,每一信息流都有自己的起点信息源,有自己的归宿信息潭,有驱动信息流动的加工,所谓信息处理主要体现为信息的流动;
缺点是:
依然没有摆脱冯诺依曼体系结构的影响,所捕获的数据和功能恰恰是客观事物的异变性质,由此所构建的系统结构很难与客观实际系统的结构保持一致;
内部联系:
1.主体为上面图所示,基本术语,过程指导,系统模型;
2.由基本术语联系到过程指导,因为过程指导要涉及到基本术语中的元素,如:
建立系统环境图,确定系统语境,则对应基本术语中的数据源,数据流,加工,和数据潭;
建立系统的层次数据流图,主要对应基本术语中的数据流,数据存储和加工;
定义数据字典,对应基本术语中的数据流和数据存储;
描述加工,则对应基本术语中的加工;
3.结构分析与结构设计的联系,
设计准备,确定边界,对应确定系统边界;
第一次,第二层分解,对应建立系统的层次数据流图;
精化设计,对应定义数据字典;
详细设计,对应描述加工;
1.结构化分析
(1).基本术语:
支持表达分析中所要使用的说明;
●数据流:
用于表达分析中所要使用的,用于表达客体的信息;
●加工:
用于表达分析中所要使用的,用于表达计算的信息;
●数据存储;
用于表达分析中所要使用的,用于表达结构化客体的信息;
●数据源和数据潭:
用于表达分析中所要使用的,用于表达系统边界的信息;
(2).数据流图DFD:
表达系统模型的工具,支持表达系统功能;
●数据流起着连接其它实体的作用;
●处理之间可以包含多个数据流;
●对于一个大型的系统,往往需要采用多层次的数据流图;
(3).建模过程:
给出过程指导,支持如何系统的使用相关信息来构造系统模型;
建立系统环境图,确定系统语境;
自顶向下,逐步求精,建立系统的层次数据流图;
●将父图中的每一个加工按照功能分解为若干个子加工;
●将父图中的输入流和输出流分派到相关的子加工上;
●在子加工之间建立合适的联系,必要时引入数据存储,使之形成一个有机的整体;
定义数据字典,依据系统的数据流图,定义其中包含的数据流和数据存储的数据结构,知道给出构成以上数据的数据项的基本数据类型;
数据结构定义符:
顺序结构+,选择结构|,重复结构{},定义=;
数据流条目,数据存储条目,数据项条目;
描述加工,依据系统的数据流图,给出加工的小说明,一般式最底层的加工的输入/输出数据流之间的关系;
●结构化自然语言(外层控制结构+内层自然语言);
●判定表;
●判定树;
2.结构设计
定义满足需求所需要的结构
(1).总体设计
任务是将系统的功能需求放入一个特定的软件体系结构中;
目标是给出系统的模块结构;
初始设计:
A.系统数据流图的分类:
变换型数据流图:
分为输入,变换,输出;
事务型数据流图:
分为输入,分析并确定,选择一条分支;
B.设计步骤:
设计准备,复审并精化系统模型;
确定输入,变换,输出的边界;
/确定事务处理中心;
第一级分解,系统模块结构图的顶层和第一层的设计;
主模块,输入,变换,输出模块;
第二级分解,从顶向下,逐步求精;
精化设计,模块化和启发式规则
C.模块化
把待建的软件分解为若干简单的高内聚低耦合的模块,这一过程称为模块化;
D.内聚与耦合
内聚是指模块内部各成分之间相互关联程度的度量:
主要有偶然,时间,顺序,通信,逻辑,过程,功能等类型;
耦合是指不同模块之间相互依赖程度的度量;
主要有内容,公共,数据,控制,标记等类型;
E.启发式规则
改进软件设计,提高软件的独立性;
力求模块规模适中;
力求深度,宽度,扇入,善出适中;
尽力使模块的作用域在控制域之内;
力求模块功能可以预测;
尽力降低模块接口的复杂性;
(2).详细设计
目标是给出系统模块结构中各个模块的内部描述过程,即模块内部的算法设计;
详细设计的表格有:
●程序流程图;
●盒图N-S图;
●PAD图;
●类程序设计语言;
结构图:
四.
面向对象设计UML
基于的理论是:
世界是由客体组成的,客体都有自己的属性和习惯操作。
客体之间的相互依赖和相互作用构成了世界的各个系统。
面向对象设计是根据客体之间的相互关系来建立系统模型的系统工具。
1.表达客观事务的术语
类和对象
A.类,对象;
B.类是一组具有相同属性,操作,关系和语义的对象的描述。
对象是类的实例。
C.图示:
●名称:
类:
中间对齐,黑体字/斜体字,首字母大写;
属性:
左对其,正常/下划线,首字母小写;
操作:
左对齐,正常/斜体字/下划线,首字母小写,大写;
●格式:
类域:
:
类;
对象:
±
Name:
[]={}
Name():
{},(in/outName:
=)
●图示:
●可见性:
+:
public,公有的;
#:
protect,保护的;
-:
private,私有的;
~:
包内的;
D.作用:
模型化问题域中的概念;
建立系统的职责分布模型;
模型化建模中使用的基本类型;
主动类
E.主动类:
ActiveClass;
F.主动类是一种至少具有一个进程或线程的类;
G.图例:
H.模型化系统中的并发行为;
包
I.包,
J.定义
K.图例:
L.作用:
控制信息组织复杂性;
接口
M.接口,Interface;
N.接口是操作的一个集合,其中每个操作描述了类,构件,子系统所提供的一个服务;
O.图例:
P.模型化系统/产品中的接缝;
协作
Q.协作
R.协作是一个交互,包括交互各方、交互内容和交互方式;
S.
图列:
T.
U.
V.用于表达由一组特定元素参与的具有特定行为的结构,抽象协作性行为;
用况
W.用况,UseCase
X.用况是对一组动作序列的描述,系统执行这些动作应产生对特定参与者有值的可观察的结果;
Y.图例:
ZZ.模型化系统中的并发行为;
构件
AA.构件,Component;
BB.构件是系统/产品设计中的一种模块化部件,通过外部接口隐藏了内部实现;
CC.
图例:
DD.表达解空间中可独立标识的成分;
制品
EE.制品,Artifact
FF.制品是包含物理信息的可替代的物理部件;
GG.图例:
HH.通常用于表达有关源代码信息或运行时信息的一个物理打包,抽象工作产品;
节点
II.节点,Node
JJ.节点是运行时存在的物理元素;
KK.
LL.通常用于表达一种具有处理能力或存储能力的计算机资源,抽象计算单元;
2.用于表达关系的术语
关联
A.关联(Association);
B.对具有相同语义,结构的关系的描述;
C.
►
D.抽象结构关系;
E.其它:
依赖
F.依赖(Dependency)
G.;
H.
;
I.抽象使用关系;
访问
J.访问(Access);
K.;
L.
M.抽象包之间信息的访问关系;
引入
N.引入(Import);
O.;
P.
Q.抽象包之间的使用关系;
泛化
R.泛化(Generalization);
S.;
U.抽象一般特殊关系;
细化
V.细化(Realization)
W.;
X.
Y.抽象细化关系;
3.建模工具
表达系统静态结构模型,说明信息;
类图,构建图,部署图等;
行为图:
表达系统动态结构模型,行为信息;
状态图模型化生命周期,用况图模型化功能,顺序图模型化交互等;
类图
A.类图是可视化表达系统静态结构模型的工具;
B.主要由类,接口,关联,依赖,泛化关系等组成;
C.建造过程:
●模型化待建系统中的概念,形成类图中的各个元素;
●模型化待建系统中的各种关系,形成系统的初始类图;
●模型化系统中的交互,给出系统的最终类图;
●模型化逻辑数据库模式;
状态图
D.状态图是显示一个状态机的图,其中主要强调从一个状态到另一个状态的控制流;
E.组成元素及其图形表示:
●状态:
被延迟事件,进入/退出效应,do动作或活动;
●事件:
信号,调用,时间,变化事件;
●状态转换:
源状态,目标状态,转换触发器,监护条件,效应;
F.主要用于:
●创建一个系统的动态模型;
●创建一个场景的模型;
用况图
G.表达系统功能模型的图形化工具;
H.组成元素及其图形表示:
●参与者
●用况
●主题,用大矩形表示;
●关联,泛化,依赖;
I.建造过程:
●语境的模型化:
得到参与者,主题;
将参与者分类,泛化,与用况建立关联;
●需求的模型化:
得到用况;
并将用况泛化泛化,包含,扩展;
顺序图
J.顺序图是一种交互图,即包含一组对象和按时序组织的对象之间的关系,还包含对象之间发送的消息;
K.组成元素及其图形表示:
●对象生命线;
用于表达一个对象在一个时间段内的存在;
●聚焦控制;
用于表达执行一个动作的时间段;
●消息;
用于表达交互内容的术语;
●控制控制子:
选择(Opt),条件(alt),迭代(loop),并发(par)执行操作子;
五.
RUP
RUP的特点:
以用况为驱动,以体系结构为中心,迭代,增量式开发;
其中每一个特点中都包含需求,分析,设计,实现,测试阶段;
迭代中分为初始阶段,精化阶段,构造阶段,移交阶段;
1.
基本模型
2.每个阶段的大概轮廓,包括横向三项,每项又纵向3层
3.所有活动的规律的整理:
对获取阶段,主要表现为需求的收集,精化和结构化;
在分析阶段,把用况分成大块并表示大块之间的关系,再细分成小块,详细描述小块;
在设计阶段,把大块转化成子系统,并层次化成软件体系,之间的关系转化为接口;
小块进一步细化,方向上是从上层和左边进化,即依照上层中同列的用况进化,按照左边大块中的情况进化;
4.详细的过程:
如需求获取包括:
详细每个表格参看课本;
RUP使用用况技术来获取需求;
其目的是使用UML中的用况,参与者以及依赖等术语来抽象客观实际问题,创建系统需求获取模型,以及在该模型下的体系结构描述。
用况模型是系统的一种概念模型,是对系统功能的抽象,包括系统参与者,系统用况以及他们之间的关系。
阶段
产生制品
1.列出候选需求
特征列表
2.理解系统语境
领域模型和业务模型
3.捕获系统功能需求
用况模型
4.捕获非功能需求
其它需求或针对特定需求的用况
其中捕获系统需求阶段的活动又可分为:
输入
活动
人员
输出
特征表,领域模型和业务模型,补充需求
1.发现和描述参与者
系统分析人员
用况模型[概述],术语表
2.发现和描述用况
用况模型[概述],术语表,补充需求
3.确定用况优先级
体系设计者
体系结构描述[用况模型视角]
4.精化用况
用况描述者
用况[精化]
用况[精化],用况模型[概述],术语表,补充需求
5.构造用户界面原型
人机接口设计者
人机接口
6.用况模型的结构化
系统分析员
用况模型[精化]
六.
软件测试
1.软件测试
软件测试:
按照特定规程发现软件错误的过程;
软件测试过程模型:
2.软件测试技术;
路径测试技术;
A.控制流程图;
过程块,判定,节点,链;
B.测试策略;
语句覆盖(P1)≤分支覆盖(P2)≤条件和条件组合覆盖≤路径覆盖(PX);
C.路径选择和用例设计;
●选择最简单的、具有一定功能含义的入口、出口路径;
●在已选择的基础上,选择没有循环的路径,选择短路径,简单路径;
●选择没有明显功能含义的路径,并考虑这样的路径为什么能够存在,为什么没有通过功能上合理的路径得到覆盖;
事务流测试技术;
D.事务流程图;
操作,分支,节点,链;
E.与控制流程图的区别:
●基本模型元素所表达的语义不同;
●一个事务不同于路径测试中的一个路径;
●事务流程图中的分支和节点可能是一个更加复杂的过程:
分支,汇集;
并生,吸收;
丝分裂,结合;
F.测试步骤:
●获得事务流程图;
●浏览、复审;
●用例设计;
●测试执行;
等价类划分;
G.划分等价类;
有效对无效:
一对一,一对多,多对一;
H.设计测试用例:
●为每一个等价类规定一个唯一的编号;
●设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步直到所有等价类都被覆盖;
●设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,知道所有无效等价类都被覆盖;
3.软件测试过程;
A.单元测试;
●关注单个模块的结构和功能,还要建立驱动模块和承接模块;
●模块接口:
测试穿过模块接口的控制流;
●局部数据结构:
执行数据结构测试;
●重要的执行路径:
执行执行路径选择测试;
●错误的执行路径:
边界测试;
B.集成测试;
●从顶向下的集成测试,需要编制承接模块;
●从底向上的集成测试,直到放上最后一个模块程序才成为一个对立的整体;
C.有效性测试;
●发现软件实现的功能与需求规格说明书不一致的错误;
D.系统测试;
七.
软件生存周期
1.ISO/IEC12207-2008系统/软件工程-软件生存周期模型
背景
ISO/IEC12207-1995:
最早的软件生存周期模型,过程分为基本过程,支持过程,组织过程;
ISO/IEC15288:
系统生存周期模型;
ISO/IEC12207-2008,系统/软件工程-软件生存周期模型,由上两种结合而来;
过程分类及其内在关系:
驱动,支持:
保障:
对项目的执行提供基本保障;
特殊化为:
支持:
提升能力:
过程描述:
●软件实现过程:
活动:
软件实现策略
任务1:
选择并建立适合项目的生存周期模型;
任务2:
建立输入文档并置于配置管理过程之下,按配置管理的过程执行变更;
任务3:
选择,裁剪和使用组织为执行或支持此过程而建立的标准、方法、工具或计算机编程语言;
任务4:
计划该活动过程;
任务5:
确保交付的软件产品的运行和维护不依赖非交付项;
●软件需求分析过程
软件需求分析;
建立软件需求和文档;
评估软件需求,并建立相应的评估结果文档;
按软件评审过程评审软件需求;
●软件体系结构设计
软件体系结构设计;
将软件项的需求转化为一种体系结构,描述其顶层构架并表示其中的软件构件,建立相应的文档;
为软件项的外部接口和软件构件之间的接口开发顶层设计,并建立相关的文档;
为数据库开发顶层设计,并建立相关的文档;
开发用户文档的初始版本;
定义初始测试需求和系统集成进度,并建立相关的文档;
任务6:
评估软件项的体系机构设计,接口设计,数据库设计,并建立相关的文档;
任务7:
按评审过程进行评审;
●软件验证过程
活动1:
过程实现;
任务1.1:
确定项目是否需要一项验证过程以及独立程度;
任务1.2:
如果项目承当验证过程,则应为验证软件产品建立相关的验证过程;
任务1.3:
如果项目需要独立的验证过程,则应选择一个有资格的组织执行验证;
任务1.4:
确定需要验证的生存周期活动和软件产品,并选择合适的验证过程和任务以及执行这些任务相关的方法,技术和工具;
任务1.5:
计划验证过程,并建立相关的文档;
任务1.6:
实现验证过程;
活动2:
验证过程;
任务2.1:
需求验证;
任务2.2:
设计验证;
任务2.3:
代码验证;
任务2.4:
集成验证;
任务2.5:
文档验证;
●软件确认活动
确定项目是否需要一项确认工作以及独立程度;
如果项目承担确认工作,则应为确认软件产品建立相应的确认过程,并定义确认任务以及相关联的方法、技术和工具;
如果项目需要独立的确认工作,则应选择一个有资格的组织负责该工作;
开发确认计划,并建立相应的文档;
实现确认计划;
确认;
编制选择的测试需求、测试案例和测试规格说明,以分析测试结果;
确保这些测试需求、测试案例和测试规格说明反映特定期望所使用的特殊需求;
按照任务1和2执行测试;
确定软件产品是否满足所期望的使用;
测试软件产品是否适合所选择的目标环境;
●剪裁过程
标识并记录剪裁可能造成的影响;
考虑与系统关键特征相关的维度和生存周期结构;
从剪裁过程所影响的所有各方获得输入;
按照决策管理过程做出剪裁决定;
任务5;
选择生存周期过程,剪裁并删除所选择的结果、活动和任务;
2.软件生存周期模型
●瀑布模型:
把软件生存周期各项活动规定为按固定顺序连接的若干阶段工作,形成瀑布流水,最终得到软件产品;
系统需求,软件需求,需求分析,设计,编码,测试,运行;
对支持结构化开发,控制软件开发的复杂性,促进软件开发的工程化起着重要的作用;
●增量模型:
将需求分组,形成一个个增量,对每一个增量实施瀑布式开发;
前提是需求可结构化;
●演化模型:
基于核心需求开发核心系统,根据用户反馈实施开发的迭代过程;
主要用于事先不能完整定义需求的软件开发;
●螺旋模型:
制定计划,风险分析,实施工程,客户评估;
在瀑布模型和演化模型的基础上,增加了他们所忽略的风险分析;
●喷泉模型:
体现了软件创建所固有的迭代和无间隙的特征;
主要用于支持面向对象技术的软件开发;
3.过程规划和管理;
在组织上项目使能过程组中有过程创建,过程评估,过程改进等过程,强调了PDCA,即过程规划,过程执行,过程检测,过程调整;
关于过程创建;
A.选择软件生存周期模型:
第一步:
标识项目可用的SLCM;
第二步:
在预期的最终系统或开发环境中,标识影响选择SLCM的属性;
第三步:
标识所有为选择SLCM而需要的约束;
第四步:
基于以往的经验和组织能力,评估第一步中所标识的SLCM;
第五步:
选择最能满足项目属性和约束的SLCM;
B.细化所选择的软件生存周期模型:
依据所选择的软件生存周期模型的需求和项目的需求,执行剪裁过程,表示需要的活动和不需要的活动;
C.为每一个各活动或任务表示合适的实例数目;
D.确定活动的时序关系,并检查信息流;
关于软件生存周期监控过程
E.软件生存周期监控过程;
●进度和进展的跟踪;
●质量数据趋势的检查;
●设计、编码和测试计划的复审记录和动作的检查;
●变更要求和测试异常报告趋势的检查;
●关键资源的有效使用;
●与项目组成员的交谈;
F.软件生存周期活动变更的影响的评估;
考虑的因素:
●所要求的返工;
●资源需求;
●实施时间;
●对项目和用户的益处;
●员工情绪;
可采用的动作;
●什么都不做;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新版 软件工程 自学 笔记