02333软件工程.docx
- 文档编号:29301839
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:35
- 大小:628.86KB
02333软件工程.docx
《02333软件工程.docx》由会员分享,可在线阅读,更多相关《02333软件工程.docx(35页珍藏版)》请在冰豆网上搜索。
02333软件工程
02333软件工程
试卷的主要分值分布在第3章和第6章,这两章几乎占到50分左右,第1章和第8章的考核知识点相对较少。
本课程的考试题型为:
单项选择题、填空题、简答题、综合应用题
速度:
软件的发展水平远远滞后于硬件的发展水平,生产率低下,软件制造仍然是一种人工集约生产方式
质量:
软件的质量低下,不能满足用户的需求、适应性差
成本:
软件开发成本居高不下
软件开发的速度、软件制品的质量、软件开发成本是软件工程的三个核心问题。
软件复用技术:
构件技术、平台技术、需求工程技术、领域分析技术、应用集成技术等。
软件开发的本质:
“映射”,即实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。
系统建模运用所掌握的知识,通过抽象,给出系统的一个结构。
模型:
模型是一个抽象。
模型是在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对该系统边界的描述、对系统内各模型元素以及它们之间关系的语义描述。
系统模型的类型
概念模型:
描述软件是什么
软件模型:
实现概念模型的软件解决方案。
包括设计模型、实现模型和部署模型。
需求:
一个需求是有关一个“要予构造”的陈述,描述了待开发产品/系统功能能力、性能参数或其它性质。
需求的基本性质:
必要的;无歧义的;可测的;可跟踪的;可测量的
★需求的分类:
1、功能需求,是整个需求的主体。
2、非功能需求:
性能需求、外部接口需求、设计约束和质量属性需求。
要求能够区分哪些是功能需求,哪些是性能需求。
接口需求的类别:
用户接口;硬件接口;软件接口;通信接口
设计约束需求:
法规政策;硬件限制;与其它应用的接口;并发操作;审计能力;控制功能;高级语言要求;握手协议;应用的关键程度;安全和保密
质量属性:
可靠性;存活性;可维护性;用户友好性
需求发现的技术:
自悟;交谈;观察;小组会;提炼
★需求规约的定义:
是一个软件/产品/系统所有需求陈述的正式文档,它表达了一个软件/产品/系统的概念模型。
★需求规约的基本性质:
1重要性和稳定性程度:
对需求进行分级2可修改的3完整的:
没有被遗漏的需求4一致的:
不存在互斥的需求
需求规约(规格说明书)的表达:
非形式化的需求规约;半形式化的需求规约;形式化的需求规约
★需求规约的作用:
1.需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现;2.需求规约是一个管理控制点;3对于产品/系统的而设计,需求规约是一个正式的、受控的起始点;4需求规约是创建产品验收计划和用户指南的基础。
本章是整个课程的重点内容,其基本思想、基本原理和基本方法是软件工程理论体系中最经典的内容,考核题型涉及单项选择题、填空题、简答题、综合应用题所有题目类型,占分值25%左右。
建议考生在牢记基本概念、基本原理的基础上,对综合应用题多下工夫,多做练习。
需求分析面临的挑战:
问题空间理解;人与人之间的通信,“有效沟通”;需求的变化性
结构化分析中的基本术语及表示方法:
1.数据流
2.加工
3.数据存储
4.数据源和数据潭
★★数据流图DFD图(要会画DFD图):
用于建立系统功能模型。
是一种描述数据变换的图形化工具,其中包含的元素可以是数据流、数据存储、加工、数据源和数据潭等。
建模过程(绘制流程图的过程):
自顶向下、功能分解1、建立系统环境图;2、0层图:
从0层图开始对流程图中的要素编号;3、1层图;4、……
要注意的问题:
①黑洞(blackhole),即只有输入而没有输出。
②只有输出而没有输入。
③灰洞(grayhole),即输入不足以产生输出。
灰洞是经常也是不易被察觉的错误。
④加工处理只用来表示数据的处理和变化,避免将计算机命令作为处理。
⑤数据流必须起于且/或止于处理,即每一个数据流必须有一个处理与之有关,数据流不能起于数据存贮且止于一个数据源/数据潭或另一个数据存贮;也不能起于某个实体且止于另一个数据源/数据潭或数据存贮。
定义数据流程图中所有数据流和数据存储的数据结构:
顺序结构:
选择结构:
|重复结构:
{};子界:
m..n
★判定表也称为决策表,是一个二维表,它说明了每一种条件组合所产生的结果。
该表分为四个象限(quadrants)。
①左上限代表所有的条件②左下限代表可能的结果③右上限代表每一种条件的取值(用Y和N来表示)④右下限用X表示所对应的条件组合所产生的结果
★判定树(DecisionTree)也称为决策树,是用来描述在一组不同的条件下,决策的行动是根据不同条件及其取值来选择的处理过程。
业务规则的描述通常可以使用判断树这一过程描述工具。
需求验证:
1.验证每一个需求满足5个性质;2.验证需求规格说明书满足4个性质
结构化设计分为总体设计和详细设计。
总体设计的任务:
把系统的功能需求分配到一个特定的软件体系结构中。
表达软件体系结构的工具:
(1)模块结构图
(2)层次图(3)HIPO图
★模块结构图(StructureChart)是对软件总体结构的一种图形描述,它显示了软件的层次结构、组织和通讯。
也就是说,在结构图中,显示了软件是由哪些模块组成的,这些模块按照什么样的层次结构组织在一起以及模块之间通过什么接口联系在一起。
结构图也称之为控制结构图、模块结构图或系统结构图。
(1)模块符号
(2)模块调用关系(3)模块间的数据传递(4)模块间的控制信息传递(5)循环调用结构(6)选择调用结构(7)数据存储
层次图:
层次图中一个矩形框代表一个模块,框间的连线表示调用关系(位于上方的矩形框所代表的模块调用位于下方的矩形框所代表的模块)。
HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。
为了使HIPO图具有可追踪性,在H图(即层次图)里除了顶层的方框之外,每个方框都加了编号。
H图+IPO图总体设计步骤
将DFD图映射为设计层面的模块及模块调用。
变换流(TransformFlow)。
基于变换流的数据流程图是一个线性的顺序结构,由输入臂、输出臂和变换中心三部分组成。
其中变换中心使系统数据发生本质的变化,输入臂将物理输入变换成逻辑输入,而输出臂则将逻辑输出变换成物理输出。
事务流(TransactionFlow)。
事务流的数据流程图中有一个事务处理中心,它将输入分为许多相互平行的加工路径,然后根据输入的属性,选择某一加工路径。
业务中心完成以下任务:
⑴接收事务(即输入数据);⑵分析每个事务并确定它的类型;⑶根据事务的类型选取一条活动通路。
任何处理都可以划分为两种转换类型之一:
以转换为中心的分解和以业务为中心结构的分解。
模块:
执行一个特殊任务的一个过程以及相关的数据结构。
模块通常由两部分组成:
模块接口和模块体。
模块化:
把一个待开发的软件分解成若干个简单的、具有高内聚低耦合的模块,这一过程称为模块化。
模块化是系统设计基本原理/原则之一。
内聚(Cohesion)是指一个模块内部个成分之间相互关联程度的度量。
也就是说,凝聚是对模块内各处理动作组合强度的一种度量。
很显然,一个模块的内聚越大越好。
(1)偶然凝聚,可维护性最差
(2)逻辑凝聚(3)时间凝聚(4)过程内聚(5)通信内聚(6)顺序凝聚(7)功能凝聚,可维护性最好
耦合(coupling)是对两个模块之间联接程度的一种度量。
模块间的依赖程度越大,则其耦合程度也就越大;反之,模块间的依赖程度越小,则其耦合程度也就越小。
为了使软件具有较好的可维护性和可修改性,模块间的关联程度即耦合程度应越小越好。
因为耦合程度越小,表明模块间的独立程度越大,这样在修改一个模块时,对其它模块的影响程度就越小,从而使模块的修改工作局限于一个最小范围之内。
(1)内容耦合
(2)公共耦合(3)数据耦合(4)控制耦合(5)标记耦合。
原则是:
尽量用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。
启发式规则:
高内聚、低耦合。
(1)改进软件结构,提高软件独立性。
模块分解
(2)模块规模适中(3)力求深度、宽度、扇出、扇入适中。
深度:
表示其控制的层数。
宽度:
同一层次上模块总数的最大值。
扇出:
一个模块直接控制的下级模块的数目。
扇入:
有多少个上级模块直接调用它。
原则:
(1)顶层模块扇出比较大,中间层模块扇出较小,底层模块具有较大的扇入。
(2)尽量使模块的作用域在其控制域内。
(3)尽力降低模块接口的复杂度(4)力求模块功能可以预测
模块的控制域:
这个模块本身以及所有直接或间接从属它的模块的集合。
模块的作用域:
受该模块内一个判断所影响的所有模块的集合。
详细设计:
具体描述模块结构图中的每一模块,即给出实现模块功能的实施机制,包括一组例程和数据结构。
结构化程序设计方法:
一种基于结构的编程方法,即采用顺序结构、选择结构和重复结构进行编程,其中每一结构只允许一个入口和一个出口。
图1.三种控制结构图2.PAD图基本符号
三种基本的控制结构:
(a)顺序结构,先执行A再执行B;(b)IF-THEN-ELSE型选择(分支)结构;(c)DO-WHILE型循环结构
程序流程图:
又称为程序框图,它是历史最悠久使用最广泛的描述过程设计的方法,然而它也是用得最混乱的一种方法。
盒图(N-S图):
出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。
(a)顺序;(b)IF-THEN-ELSE型分支;(c)CASE型多分支;(d)循环;(e)调用子程序A
PAD图:
是问题分析图(ProblemAnalysisDiagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。
它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。
下图给出PAD图的基本符号。
类程序设计语言PDL也称为伪码,它是用正文形式表示数据和处理过程的设计工具。
PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。
PDL是一种“混杂”语言,它使用一种语言(通常是某种自然语言)的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。
可以作为注释工具直接插在源程序中间。
设计规约完整准确地描述满足需求规约所要求的所有功能模块,以及伴随功能模块而出现的非功能机制。
设计规约包括概要设计规约和详细设计规约。
概要设计规约指明高层软件体系结构。
(1)系统环境
(2)软件模块的结构(3)模块描述(4)文件结构和全局数据文件的逻辑结构(5)测试需求。
详细设计规约各处理过程的算法算法所涉及的全部数据结构的描述。
统一建模语言(UnifiedModelingLanguage,UML)UML是目前流行的建模语言,特别是在网站开发中广泛应用。
UML涉及很多的图,每一种图都有不同的图形符号、作用,在什么情况下用何种图来描述是本章的重点内容。
考核题目类型包括单项选择题、填空题、简答题,分值在10%~15%之间。
需要考生掌握各种UML图的作用。
面向对象建模过程的步骤:
(1)需求获取:
建立用况(usecase)模型和用况场景;
(2)需求分析:
(a)建立活动图和状态图(b)类图(建立域模型);(c)顺序图(实现用况)(3)编写需求规格说明书(4)需求验证
对象(object)是系统中用来描述客观事物的一个实体。
一个对象由一组属性和对这组属性进行操作的一组方法组成。
对象只描述客观事物本质的与系统目标有关的特征。
对象之间通过消息通信,一个对象通过向另一个对象发送消息激活某一个功能。
类(Class)是具有相同属性、操作、关系和语义的一组对象的集合,它为属于该类的全部对象提供了同一的抽象描述,其内部包括属性和服务两个主要部分。
类有超类(Superclass)和子类(Subclass)之分。
对象与类的关系犹如程序设计语言中变量和类型的关系。
对象是类的实例(Instance)。
类在类图上使用包含三个部分的矩形来描述,如下图所示。
最上面的部分显示类的名称,中间部分包含类的属性,最下面的部分包含类的操作(或者说"方法")。
类图中的示例类对象
属性对象或类的属性(attributes)描述了对象的具体特征。
属性有属性名和属性值(或称属性状态)。
每条属性可以包括属性的可见性、属性名称、类型、缺省值和约束特性。
UML规定类的属性的语法为:
可见性 属性名:
类型=缺省值 {性质串}
可见性:
public(+)、protected(#)、private(-)、包内的(~)
类的操作通常也被称为功能,但是它们被约束在类的内部,只能作用到该类的对象上。
操作名、返回类型和参数表组成操作界面。
UML规定类的操作的语法为:
可见性操作名(参数表):
返回类型{性质串}
例如:
+取客户地址(客户名:
字符串):
字符串
接口是操作的一个集合,其中每个操作描述了类、构件或子系统的一个服务。
(1)采用具有分栏和关键字
(2)采用小圆圈和半圆圈来表示
协作是一个交互,涉及交互的三要素:
交互各方、交互方式以及交互内容。
用况(usecase)/用况:
对一组动作序列的描述,系统执行这些动作应产生对特定参与者有值的、可观察的结果。
主动类:
至少具有一个进程或线程的类。
能够启动系统的控制活动,并且其对象的行为通常与其它元素行为并发的。
表示方法:
两条竖线。
构件系统设计中的一种模块化部件,通过外部接口隐藏了它的内部实现。
制品:
系统中包含物理信息的、可替代的物理部件。
节点是在运行时存在的物理元素,通常表示一种具有记忆能力和处理能力的计算机资源。
关联(Association)反映了类和类之间的静态关系。
关联在模型中,特别是在永久业务对象模型中是最基本的关系。
链(link)是对象之间具有特定语义关系的抽象。
(1)关联名
(2)导航(3)角色(4)可见性(5)多重性:
多重性(Multiplicity)定义了与一个对象/类相联系的对象/类出现一次,该对象/类可能出现的最小和最大的数目。
(6)限定符(7)聚合:
一个类是另一类的一部分。
(8)组合:
是聚合的一种特殊形式(9)关联类(10)约束
泛化/继承:
继承:
特殊类(子类)的对象拥有其一般类(超类)的全部属性与服务,称作特殊类对一般类的继承(Inheritance)。
利用继承(inheritance),子类可以继承父类的属性和方法。
子类/父类也可分别叫做特殊类/一般类、子类/超类、派生类/基类等。
继承反映了类之间的一种联系或结构:
一般-特殊结构,也称分类结构(ClassificationStructure),是由一组具有继承关系的类所组成的结构。
仅由一些单继承关系的类形成的结构又称作层次结构(HierarchyStructure);由一些存在多继承关系的类形成的结构又称作网格结构(LatticeStructure)。
多态性(Polymorphism)是指一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
这使得同一属性或服务名在一般类及其各个特殊类中具有不同的语义。
多态是指用同一界面形式表示不同对象类中的不同实现的能力。
多态性的实现基于两个基本原理:
封装和泛化。
多态性实现的方法:
(1)泛化
(2)定义一个抽象类——接口类
细化是类目之间的语义关系,其中一个类目规约了保证另一类目执行的契约。
用空心三角形的虚线表示。
依赖是一种使用关系,用于描述一个类目使用另一类目的信息和服务。
用有向虚线段表示。
包是模型元素的一个分组,一个包本身可以被嵌套在其它包中,并且可以含有子包和其它类型的模型元素。
图的类别:
(一)结构图
(1)对象结构建模—类图和对象图
(2)应用结构建模—包图、构件图、部署图、组合结构图
(二)行为图:
对象交互建模—顺序图、协作图(通信图、交互综述图、定时图)、状态图(状态机)
对象行为建模—用况图、活动图
任何系统都需要从两方面进行描述:
结构信息和行为信息。
系统的组成表达了系统各组成要素之间的联系,称为结构;这些组成要素的执行逻辑称为行为。
在面向对象方法中,系统的结构信息是通过类图(classdiagram)来描述的;而系统行为信息则通过用况图、交互图(包括顺序图和协作图)和状态图来描述的。
前者说明了系统的组成部分是什么,而后者则说明了系统做什么。
类图(classdiagram)表达了系统的静态结构信息,即系统是由哪些类组成的,这些类之间的关系是什么。
类图显示系统各个部分以及怎样将它们组装起来;但却不能模拟组装后系统的工作情况。
构造类图的三个关键问题是:
(1)系统中有哪些需要关心的类?
(2)这些类是如何描述的?
(3)这些类之间的联系是什么?
创建一个系统的类图,要涉及4方面的工作:
(1)模型化待建系统中的概念,形成类图中基本元素
(2)模型化待建系统中的各种关系,形成该系统的初始关系。
(3)模型化系统中的协作,给出该系统的最终类图。
(4)模型化逻辑数据库模式
用况是对一个参与者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述序列。
用况是系统、子系统或类与外部的参与者(actor)交互的动作序列的说明,包括可选的动作序列和会出现异常的动作序列。
用况图(UseCaseDiagram)是指反映活动者,系统边界所封闭的用况,及活动者与用况之间,用况与用况之间关系的一种图。
6个模型元素:
(1)主题
(2)用况(3)参与者:
系统用户:
是最常见的一种角色。
是直接使用系统的人。
另一个系统:
如DSS可作为MIS的一个活动者。
补货系统可作为定单处理系统的活动者。
时间:
当经过一定时间触发系统中的某个事件时,时间就成了角色。
例如定期的某些业务处理工作。
(4)关联(5)泛化(6)依赖
对象或者类的整体行为的某些规则所能适应的对象或类的状况、情况、条件、形式或生存周期。
仅当对象的行为规则不同时,才称对象处于不同的状态。
在由对象的全部属性的属性值集合所构成的笛卡儿乘积中的每一个等价集合(即,使对象的服务呈现相同行为规则的属性值的集合)称之为对象的一种状态。
①对象的初始状态是图中任何事件都未对该对象起作用时的状态。
②状态代表对象生命周期中的某一瞬间。
③转换表明作为对事件的响应结果,对象将从一种状态转换到另一种状态并执行某个动作。
④触发状态转换的事件在状态转换字符串中命名。
双击一个状态转换,除事件签名以外,还可用字符串为其加注临界条件、动作表达式等标签。
顺序图(sequencediagram)表示了对象之间传送消息的时间顺序,也就是对象之间的交互顺序,这些交互是指在场景或用况的事件流中发生的。
每一个对象(类)用一条生命线来表示——即用垂直线代表整个交互过程中对象的生命期。
生命线之间的箭头连线代表消息。
顺序图中的基本元素包括:
①活动者,指用况中的活动者。
②对象,指在用况中的内部对象。
③生命线:
在顺序图中的一个对象下面的竖线,用以显示这个对象的生命期。
时间从上到下流过。
生命线实际上显示了消息的顺序,在生命线之上的消息比在它之下的消息先发生。
在生命线中的棒形方框表示的是活动生命线,用以强调一个对象只有在一个场景的部分中处于活动状态。
④消息,指场景内由事件流定义的内部事件成为在对象和活动者或其他对象之间的消息。
同步消息——返回消息。
同步消息假定有一个返回消息。
同步消息用有实心的箭头表示;返回消息用虚线、箭头也不是实心来表示。
反身消息——消息的发送方和接收方是同一个对象。
异步消息——没有返回值的消息。
用非实心箭头表示。
定时消息——对消息附加时间约束条件,包括:
发送时间、接收时间、已用时间等。
RUP(RationalUnifiedProcess,统一软件开发过程)。
掌握RUP在解决下列三个问题的基本方法:
(1)表达基本信息的术语;
(2)用于组织基本信息的表达格式(3)在不同抽象层之间进行“映射”的过程指导。
迭代式开发:
在软件开发的早期阶段就想完全、准确的捕获用户的需求几乎是不可能的。
实际上,我们经常遇到的问题是需求在整个软件开发工程中经常会改变。
迭代式开发允许在每次迭代过程中需求可能有变化,通过不断细化来加深对问题的理解。
迭代式开发不仅可以降低项目的风险,而且每个迭代过程都可以执行版本结束,可以鼓舞开发人员。
管理需求:
确定系统的需求是一个连续的过程,开发人员在开发系统之前不可能完全详细的说明一个系统的真正需求。
RUP描述了如何提取、组织系统的功能和约束条件并将其文档化,用况和脚本的使用已被证明是捕获功能性需求的有效方法。
体系结构:
组件使重用成为可能,系统可以由组件组成。
基于独立的、可替换的、模块化组件的体系结构有助于降低管理复杂性,提高重用率。
RUP描述了如何设计一个有弹性的、能适应变化的、易于理解的、有助于重用的软件体系结构。
可视化建模:
RUP往往和UML联系在一起,对软件系统建立可视化模型帮助人们提供管理软件复杂性的能力。
RUP告诉我们如何可视化的对软件系统建模,获取有关体系结构于组件的结构和行为信息。
验证软件质量:
在RUP中软件质量评估不再是事后进行或单独小组进行的分离活动,而是内建于过程中的所有活动,这样可以及早发现软件中的缺陷。
控制软件变更:
迭代式开发中如果没有严格的控制和协调,整个软件开发过程很快就陷入混乱之中,RUP描述了如何控制、跟踪、监控、修改以确保成功的迭代开发。
RUP通过软件开发过程中的制品,隔离来自其他工作空间的变更,以此为每个开发人员建立安全的工作空间。
用况驱动:
(1)用况是能够向用户提供有价值结果的系统中的一种功能
(2)用况获取的是功能需求
在系统的生存周期中,以用况作为基础,驱动系统有关人员对所要建立系统的功能需求进行交流,驱动系统分析、设计、实现和测试等活动,包括制定计划、分配任务、监控执行和进行测试等,并将它们有机地组织在一起,使各个阶段中都可以回溯到用户的实际需求。
系统体系结构:
是对系统语义的概括描述,对所有项目有关人员都是可以理解的。
迭代与增量
(1)迭代是重复的部分
(2)增量是增加的部分
一个迭代是一个完整的开发循环,产生一个可执行的产品版本,是最终产品的一个子集,它增量式地发展,从一个迭代过程到另一个迭代过程到成为最终的系统。
RUP迭代模型
二维开发模型:
RUP软件开发生命周期是一个二维的软件开发模型。
横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)。
如图1:
RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:
初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition)。
每个阶段结束于一个主要的里程碑(MajorMilestones);每个阶段本质上是两个里程碑之间的时间跨度。
在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。
如果评估结果令人满意的话,可以允许项目进入下一个阶段。
RUP二维开发模型
初始阶段的目标是为系统建立商业案例并确定项目的边界。
为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。
本阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。
对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。
初始阶段结束时是第一个重要的里程碑:
生命周期目标(Lifecycle
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 02333 软件工程