软件工程SE复习填充完整版.docx
- 文档编号:28637350
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:69
- 大小:4.41MB
软件工程SE复习填充完整版.docx
《软件工程SE复习填充完整版.docx》由会员分享,可在线阅读,更多相关《软件工程SE复习填充完整版.docx(69页珍藏版)》请在冰豆网上搜索。
软件工程SE复习填充完整版
一软件工程概念:
1.软件工程是什么,软件工程三要素?
P9
软件工程的方法,工具和过程构成了软件工程的三要素
2.软件工程原则是什么P11。
抽象,信息隐藏,模块化,局部化,一致化,完整性,和可验证性
3.软件生存周期的十个阶段是什么?
p12
可行性研究需求分析概要设计详细设计实现组装测试使用维护退役
4.各个软件过程模型的特点,瀑布模型、原型模型、螺旋模型的原理和特点。
P18-20
瀑布模型:
根据软件生存周期各个阶段的任务,瀑布模型从可行性研究(或称系统分析)开始,逐步进行阶段性变换,直至通过确认测试并得到用户确认的软件产品为止。
特点:
为了保障软件开发的正确性,每一阶段任务完成后,都必须对它的阶段性产品进行评审,确认之后再转入下一阶段。
原型模型:
软件开发人员根据客户提出的软件定义,快速的开发一个原型,它向客户展示了待开发软件系统的全部或部分功能和性能,在征求客户对原型意见的过程中,进一步修改、完善、确认软件系统的需求并达到一致的理解。
特点:
由于原型是客户和软件开发人员共同设计和评审的,因此利用原型能同意客户和软件开发人员对软件项目需求的理解,有助于需求的定义和确认。
螺旋模型:
结构如图。
它由四个部分组成:
1、需求定义。
2、风险实现。
3、工程实现。
4、评审。
螺旋模型是由上面4个部分组成的迭代模型。
软件开发过程每迭代一次,螺旋线就增加一周,软件开发又前进一个层次,系统又生成一个新版本,而软件开发的时间和成本又有了新的投入。
特点:
螺旋模型的每一周前都包括需求定义、风险分析、工程实现和评审四个阶段,这是对典型生存周期模型的发展。
二、软件项目管理
1软件度量
度量:
是软件产品、软件开发过程或资源简单属性的定量描述。
度量具有数字特征。
测量:
涉及测量的方法、过程、工具和数值结果。
用于事后或实时状态。
估算:
对软件产品、过程、资源进行预测。
可采用经验公式或历史资料。
软件工程的产品、过程、资源具有外部属性(与环境的关系)和内部属性(本身属性)。
内部属性决定外部属性,通过内部属性的度量解决外部属性的度量问题。
软件工程度量系统的软件度量分:
面向规模的度量、面向功能的度量和面向有的度量;生产率度量、质量度量和技术度量两类。
软件测量:
直接(简单属性)、间接(涉及多个属性)
面向规模的度量KLOC的计算:
生产率:
p1=L/E(L是代码行数。
E工作量);每行代码平均成本:
C1=S/L(S是总开销);文档与代码比:
D1=Pd/L(Pd文档页数;D1每千行代码的平均文档页数);代码出错率:
EQR1=Ne/L(Ne代码错误数)
如:
下表提供一个国外典型的软件项目记录
P1=12.1kLOC/24PM=504LOC/PM
C1=168000美元/12.1kLOC=13.88美元/LOC
D1=365Pd/12.4kLOC=30.16Pd/kLOC
EQR1=29个/12.1kLOC=2.4个/kLOC
●代码行或功能点期望值:
(代码行技术)
e=(a+4m+b)/6
a、b是最大值最小值(乐观与悲观),m一般值。
面向功能的度量
功能点FP,间接度量方式。
生产率:
Pf=FP/E(Pf每人月完成功能点数)平均成本:
Cf=S/FP(Cf每功能点的平均成本)文档与功能点比:
Df=Pd/FP(Df每功能点平均具有文档页数)
代码出错率:
EQRf=Ne/FP(EQRf生个功能点的平均错误个数)
●FP=CT[0.65+0.01∑Fi]
2什么是COCOMO模型,它的公式和原理P38
构造性成本模型(CocoMo)是在静态、单变量基础上构造出来的。
●基本模型:
E=a(kLOC)bD=cEd
E工作量(PM),D开发时间(月),L代码行估计值(千行代码)
●中间模型:
E=a(LOC)bEAF
L目标代码行数。
如:
计算3人和5人开发一个程序的通信开销。
3人和5人开发一程序相互通信和交换意见的关系如图
Ec(3)=u*3*(3-1);Ec(5)=u*5*(5-1)
●人数增加、生产率下降
3Putnam模型
putnam提出大型软件项目工作量估算模型。
动态多变量。
L=CkE1/3td4/3
L:
源程序代码行数;td开发时间;Ck技术状态常数;E工作量。
●软件交付时工作量最大,参与人员最多
●工作量与交货时间的4次方成反比,提前10%的时间要增加52%的工作量。
●工作量随时间的增加不呈线性增长趋势,参加开发的人数不应该一成不变。
●该模型揭示了工作量、开发时间、代码长度间的关系,没有反映软件产品属性、项目属性、人员属性、硬件资源属性等。
●软件可靠性:
在某个给定时间间隔内,程序按照规格说明成功运行的概率。
R(t)=1-∫0tf(t)dt
(t表示程序发生故障的时刻,f(t)表示t的概率密度函数)
运行时间越长、故障次数越多、可靠性越小。
4错误植入模型:
残留错误数的计算——错误植入模型:
N=(n/nt)Nt要求:
残留错误随机、均匀出现
5软件风险的两个特性:
不确定性、损失
风险识别
三类:
项目风险、技术风险、商业风险
风险估算:
从影响因素和损失两方面度量
风险估算值、项目风险估算P58
风险评价和管理
风险描述:
三元组[ri,li,xi]
风险参考量:
成本、进度、性能
管理:
避免、监控、补救计划;定期评估更新风险表
5进度计划的Gantt图使用,关键路径是什么?
关键路径:
完成关键智能卡所有任务时间的总和,即项目开发所需要的最短时间。
质量保证SQA
1、满足软件需求定义的功能和性能;2、文档符合事先确定的软件开发标准;3、软件的特点和属性遵循软件工程的目标和原则。
SQA包括:
a、在需求分析阶段对软件质量提出需求,并自顶向下逐步分解为可以度量、可以控制的质量要素;b、研究并选用软件开发的方法和工具;c、对软件工程各个阶段进行正式技术评审(FTR);d、制定并执行软件测试策略和测试计划;e、生成软件文档并对文档的改变进行控制;f、保证软件开发过程与选用的软件开发标准相一致;g、建立软件质量要素的测量机制;h、记录SQA活动并生成各种SQA报告。
6CMM和关键过程域概念和每个级别的特点:
P71
软件能力成熟工模型(CMM)是概念模型,模型框架和表示是刚性的,不能随意改变,但模型的解释和实现有一定弹性。
源于大型软件开发实践,反映软件过程评估和软件过程改进的需要,有效的大型软件开发、维护过程模型。
涵盖软件开发和维护过程的全部关键和环节。
组织、项目、软件过程、组织的标准软件过程、项目的软件过程、组织的软件过程资产。
关键过程域:
描述软件过程的属性,通过完成一组相互关联的活动,实现一组对建立过程能力至关重要的目标,是SEI标识的,帮助确定软件开发组织的软件过程能力,评估软件成熟度的基本单元。
关键过程域的目标(goals)指导和评估组织或组织的项目有效实践关键过程域的指南,是关键过程域应完成的任务和进行关键实践的概括描述。
关键实践(keypractices)指对关键过程域的有效制度化起重要作用的设施和活动。
L1初始级:
软件开发过程几乎无管理、不稳定
L2可重复级:
建立了基本的项目管理体系、制定了基本的软件过程管理和控制措施,软件开发组织能够重复以前开发类似软件项目取得的成功。
L3已定义级:
将管理和工程两方面的软件过程标准化、文档化和制度化。
L4已管理级:
度量。
定量的过程、质量管理。
L5优化级:
利用反馈定量控制软件过程和质量,改进和提高软件过程能力。
四需求分析基础
需求分析的主要任务P107
以需求模型为基础,考虑到问题的软件可解性,生成需求规格说明和初步的用户手册。
需求获取技术108-109
1、访谈与会议2.、观察用户工作流程3、用户和开发人员共同组成联合小组4、实例分析
五面向数据流的分析方法、
5.1构化需求分析
学会根据需求画出数据流图,数据流图的各个元素,什么是数据字典?
120-121
数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能);实体—关系图(ERD)描述数据对象及数据对象之间的关系;状态—迁移图(STD)描述系统对外部事件如何响应,如何动作。
ERD用于数据建模。
DFD用于功能建模。
STD用于行为建模。
数据流图:
根据DeMarco的论述,功能模型使用了数据流图来表达系统内数据的运动情况,而数据流的变换则用结构化语言、判定表与判定树来描述。
主要图形元素:
数据加工(数据处理、数据变换、转换)用圆表示;数据源点或终点(外部实体)矩形;数据流:
箭头;数据存储文件:
其他。
如图:
测试工作流程图
需求阶段流程图
单元/集成测试阶段流程图
系统测试阶段流程图:
压力测试流程图:
压力测试为模拟用户正常使用时,系统正常工作的最小时间。
性能测试流程图:
测试系统的崩溃极限(最多使用人数和数据库的极限容量)。
数据字典(Datadictionary)一种用户可访问的记录数据库和应用程序元数据的目录。
数据字典中的每一数据条目包含以下内容:
1、在数据流图中表示数据流、数据源或外部实体的名称与列表
2、数据类型;
3、所有以它作为输入流或输出流的转换的列表
4如何使用该数据条目的简要说明;
5、数据条目的解释性说明;
6、其他补充说明,例如取值范围与缺省值,有关的设计约束等;
六面向对象需求
UML的概念和特点?
147
UML,统一建模语言,是用来对软件密集系统进行可视化建模的一种语言。
它是主要以Booch方法、OMT方法和OOSE方法为基础,同时也吸收了其他面向对象的建模方法的优点,形成了一种概念清晰、表达能力丰富、适用范围广泛的面向对象的标准建模语言。
6.2UML各种图形符号?
他们的语义是什么?
用例图类图顺序图协作图状态图的画法和基本规则
类图:
类以及类之间的相互关系
对象图:
对象以及对象之间相互关系
构件图:
构件及其相互依赖关系部署图:
构件在各节点上的部署顺序图:
强调时间顺序的交互图协作图:
强调对象协作的交互图状态图:
类所经历的各种状态活动图:
对工作流建模用例图:
从外部用户的角度描述系统的功能,并指出功能的执行者。
静态建模(用例视图、类图、对象图、组件图、配置图、包图等)
动态建模(、时序图、协作图、状态图、活动图)
用例图(usecasediagram)从角度描述系统的功能,并指出功能的执行者。
类图(classdiagram)是描述类、接口、协作、以及它们之间关系的图。
类图包含一组类、接口以及他们之间的关联、依赖和泛化等关系。
顺序图描述对象之间的动态交互关系,着重体现对象间消息传递的时间顺序。
顺序图的基本要素:
对象:
对象、对象的生命线、激活的对象和对象的删除。
消息:
简单消息、同步消息、异步消息、返回消息。
条件、注释体和注释连接。
协作图(CollaborationDiagram)是用来描述系统、角色以及对象间的关联和交互的。
强调的是空间特性。
协作图的关联描述了对象间的连接关系。
协作图中的对象使用方框表示,其名称需要带下划线。
关联使用直线表示。
在连接上可以增加消息箭头,指明消息传送的方向,并通过标签定义消息的序列号。
协作图的运行从整个交互或协作关系的初始化消息开始。
协作图中的消息需要特别的序列号和形式加以说明。
状态图描述系统对象的动态行为,一般描述一个特定对象在其生命周期中的所有可能状态以及由于各种事件的发生而引起状态的转移条件。
状态图的基本要素:
实例:
订单对象的状态图;状态语法和转移语法;状态的转移条件;转移条件的互斥性;状态图的基状态表示法;并发状态图。
6.3基于UML的需求分析
1)开发场景包括什么内容153-154
场景名称、执行者实例、前置条件、事件流、后置条件。
2)用例说明的描述格式155
以“传感器监测”为例说明用例的一半描述格式。
用例名称:
传感器监测。
参与执行者:
各类传感器、警报器、报警电话和显示器。
前置条件:
系统已开机。
主事件流:
1、传感器向目标软件系统上报其监测数据,系统判别监测数据是否正常。
2、如果不正常,系统启动警报器,拨报警电话号码。
3、报警电话接通后,软件系统播出语音,报告异常事件发生的时间、地点和事件的性质。
4、系统在控制面板的显示器上显示报警时间及当前状态(报警)。
辅事件流:
1、如果报警电话无人接听,则按照重拨延迟反复拨号,直至电话接通,再转入主事件流的步骤3
2、如果重拨次数达到系统预设的最大次数,电话仍无人接听,则跳过主事件流的步骤3,转入步骤4。
后置条件:
如果已发现异常的检测数据,系统处于“报警”状态;否则,系统处于正常的“监测”状态。
3)ATM活动图的画法156
4)家庭保安系统用例图158
挨靠者与用例间的关系有:
触发自毁长城与信息交换,两者能兼具两种关系,如家庭保安系统中,用户在触发用例命令响应的同时,还要向用例传送命令信息。
UML用例间存在两种关系:
1、使用(use)关系。
如果有一个公共的动作序列存在于多个用例中,为避免重复,并使需求模型更简洁,可以将公共动作序列抽出出来构成新的独立用例。
这样,原来的多个用例与新的用例间便通过使用关系来连接。
2、扩展(extend)关系。
如果一个用例的动作序列完全包含另一个用例的动作序列,且前者含有后者所不具备的一些特殊情况下的处理动作,则称前者扩展后者。
5)UML包图159
包是UML对类进行分组的一种机制。
包间存在责任经:
依赖和构成。
如果对类A的修改将导致类B的改变,则称B依赖于A。
如:
订单依赖于客户。
构成:
包是可以嵌套的,即包中不仅可包含类,还可包含子包。
如:
领域由订单和客户构成。
6)软件顶层架构的设计图(各种模型图)160-161
7)领域概念模型与类图162-163
UML类图是表示领域模型的适当机制。
用类表示概念,用类图表示领域概念模型。
类包含:
类的名称、属性列表和方法列表。
关系有:
继承、聚集和关联和依赖。
类间的聚集关系是对现实世界中部分-整体直接模拟。
UL将聚集细分为普通聚集和构成关系。
普通聚集关系中,一个部件类对象可同时参与多个整体旬,构成关系则限定一个部件类在任意时刻只能参与一个整体类对象,部件类对象与整体类对象共存亡。
依赖关系是关联的弱化,表示被依赖的类的变化会影响到依赖类。
依赖关系的起因为:
依赖类的对象需要向被依赖类的对象传递渻被依赖类作为依赖类的操作的形参类型。
前一种情况不仅可用依赖关系实现,也可用关联关系及其强化形式(聚合和构成)业实现。
区别:
依赖关系仅表示一种临时性的消息传递通道,一旦依赖类对象的操作完成,该通道立即消失;关系及其强化形式则表示消息传递通道在整个对象的生命周期中稳定存在。
领域概念模型的建立:
关键概念的来源包括:
1、业务需求描述和用例说明;2、业务领域中的相关规范、标准和术语定义;3、反映业务领域知识的既往经验。
七面向数据的分析方法
1)warnier图、JACKson图的标记171-172
warnier图:
是一种表示信息层次结构的紧致机制。
图元表示:
花括号内的信息条目构成顺序关系;
花括号从左至右排列表示树型层次结构;
符号“⊕”表示不可兼具的选择关系;
“ ̄”表示“非”。
圆括号内的数字表示重复次数:
(1,n)表示重复结构,
(1)或不标次数表示顺序结构,
(0,1)表示选择结构。
基于DSSD需求分析方法的主要步骤是:
1)标识与应用问题有关的实体。
2)创建一种类似于数据流图的信息‑过程图。
3)创建Warnier‑Orr原型图。
Jackson系统开发方法
其核心思想是:
根据作用于数据的行为序列的结构(顺序、选择、重复),建立目标软件系统的模型,然后在软件设计阶段将模型转换为相应的程序结构。
主要步骤是:
(1)标识实体与行为。
(2)生成实体结构图。
(3)创建软件系统模型。
实体结构图的图形记号:
实体结构是指实体在时间坐标系中的行为序列。
这种序列以顺序、选择和重复三种结构进行复合。
创建目标软件系统模型的第一步,用图所示的图形记号建立系统规格说明图(SystemSpecificationDiagram)。
“数据流”(DataStream)记号——表示现实世界中的过程或装置不断地向目标软件系统中的相应过程发送数据,后者以先进先出方式消费数据。
两者之间的缓冲区容量是无限的。
“状态向量”(StateVector)记号——表示在两者之间存在状态向量,发送方设置状态向量,接收方读取状态向量。
站内按钮和目标软件中的按钮处理过程之间以“数据流”方式连接,交通车和交通车控制过程之间则应以“状态向量”方式连接。
见图
第二步是利用给出的“结构正文”(StructureText)将实体结构图和系统规格说明图综合起来,并针对目标软件系统中的每一过程用正文方式给出更为精确、更为详尽的描述。
按钮按键PUSH处理过程的结构正文:
(循环结构,以数据流连接)
BUUTTON_1
ReadButtonDown信号
PUSH_BODYitrwhileButtonDown/*循环结构*/
PUSH/*按键处理*/
ReadButtonDown信号
PUSH_BODYend
BOTTON_1end
交通车离站、接人、到站处理过程的结构正文:
(顺序结构,以状态向量连接)
SHUTTLE_1seq/*顺序结构*/
Read状态向量
WAIT_BODY1itrwhileWait
(1)/*如果状态向量中等待标志置位,则循环等待*/
Read状态向量
WAIT_BODY1end
TRANSIT_BODY1itrwhileTransit
(1)/*如果状态向量中运行标志置位,则一直运行*/
Read状态向量
TRANSIT_BODY1end
Leave
(1)/*控制交通车离开站1*/
SHUTTLE_BODYitr/*往返重复运行*/
STATIONseq
Arrive(i)/*控制交通车减速,准备停靠站i*/
WAIT_BODYitrwhileWait(i)/*如果状态向量中在站i的等待标志置位,则循环等待*/
Read状态向量
WAIT_BODYend
Leave(i)
TRANSIT_BODYitrwhileTransit(i)
Read状态向量
TRANSIT_BODYend
STATIONend
SHUTTLE_BODYend
Arrive
(1)SHUTTLE_1end
结构图:
八软件设计基础
1)模块化与信息隐藏
软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。
这些模块可以被组装起来以满足整个问题的需求。
由parnas方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。
也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。
耦合和内聚的意思,耦合和内聚的各种类型的强度190-191
耦合是模块之间的互相连接的紧密程度的度量
内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。
非直接耦合(NondirectCoupling)两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
非直接耦合的模块独立性最强。
数据耦合(DataCoupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。
标记耦合(StampCoupling)一组模块通过参数表传递记录信息,就是标记耦合。
这个记录是某一数据结构的子结构,而不是简单变量。
控制耦合(ControlCoupling)如果一个模块通过传送开关、字、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
外部耦合(ExternalCoupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
公共耦合(CommonCoupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
内容耦合(ContentCoupling)一模块直接访问另一模块的内部信息(程序代码或数据)。
如果发生下列情形,两个模块之间就发生了内容耦合
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);(4)一个模块有多个入口。
功能内聚(FunctionalCohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。
则称该模块为功能内聚模块。
信息内聚(InformationalCohesion)这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。
这个模块将根据不同的要求,确定该执行哪一个功能。
由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。
通信内聚(CommunicationCohesion)
如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。
通常,通信内聚模块是通过数据流图来定义的
过程内聚(ProceduralCohesion)
使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。
例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。
时间内聚(ClassicalCohesion)又称为经典内聚。
大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。
例如初始化模块和终止模块。
逻辑内聚(LogicalCohesion)这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。
巧合内聚(CoincidentalCohesion)偶然内聚。
当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。
2)N-S图(盒图)198
N-S图也叫做盒图。
五种基本控制结构由五种图形构件表示。
示例:
N-S图的嵌套定义形式
N-S图特点
(1)功能域(即某一个特定控制结构的作用域)有明确的规定,并且可以很直观地从N-S图上看出来;
(2)它的控制转移不能任意规定,必须遵守结构化程序设计的要求;(3)很容易确定局部数据和全局数据的作用域;(4)很容易表现嵌套关系,也可以表示模块的层次结构。
2)判定表199
判定表用于表示程序的静态逻辑;在判定表中的条件部分给出所有的两分支判断的列表,动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 SE 复习 填充 完整版