2018 软件建模与分析复习要点 –个人汇总版

8255并行接口
2018年5月25日
Tomcat Server in Eclipse unable to start within 45 seconds问题解决
2018年6月2日

Zhangjiajie National Forest Park in Hunan Province, China

文章更新进度 81%

题型:

填空题               每空1分  10分

选择题 15题         每题2分  30分

判断题 5题          每题2分  10分

问答题 2题          每题5分  共10分

  

建模与应用题   

类图,

状态图(状态模式),

三种设计模式(单一实例、迭代器、适配器),

用例图(用例分析题),

活动图,顺序图(图书借阅系统)    40分

此部分只需理解。

(书本)指的是抽取系统中的基本特性而忽略非基本的特性,以便更充分地注意与当前目标有关的方面。

忽略一个主题中与当前目标无关的东西,专注的注意与当前目标有关的方面.(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口).抽象并不打算了解全部问题,而是选择其中的一部分,暂时不用部分细节.

对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),原始类称为新类的基类(父类).派生类可以从它的父类哪里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要.因此可以说,继承为了重用父类代码,同时为实现多态性作准备.

 

(书本)多态就是有多种形态的意思,在面向对象技术中,多态指的是一个实体在不同上下文条件下具有不同意义或用法的能力。

②多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。

(书本)封装就是把对象的属性和方法结合成一个独立的系统单位,并尽可能地隐蔽对象的内部细节。

②封装就是把过程和数据包围起来,对数据的访问只能通过特定的界面.

此部分只需理解

(书本)类是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。

创建的所有 class 都是类,是一个抽象的概念,类中包含了数据(在类中叫属性或成员变量)与对数据的操作(在类中叫做方法)。例如人是一个类,他有姓名、年龄等数据属性、好友吃饭、睡觉、娱乐、和工作等动作。

对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。

描述了一个类的一组外部可用的操作(方法)集合。体现了“接口与实现的分离”的思想,即“信息隐藏”。

消息是向对象发出的服务请求。它包含了提供服务的对象标识、服务(方法)标识、输入信息和回答信息等。

UML的定义

①UML(Unified Modeling Language统一建模语言)是对软件密集型系统中的制品进行可视化、详述、构造和文档化的语言。制品是指软件开发过程中产生的各种各样的产物,如模型、源代码、测试用例等。

UML的组成(基本构造块)

②UML由基本构造块、规则、公共机制三部分组成。

其中基本构造快包括:事物、关系、图三部分。

扩展机制(含义及作用)

③(理解)为了避免UML语言整体的复杂性,UML没有吸收所以的面向对象的建模机制和技术而是设计了扩展机制,通过扩展机制用户可以定义使用自己的元素。在前边介绍UML构成的时候,提到了UML的扩展机制(extensibility mechanism):版型(stereotype)、标记值(tagged value)和约束(constraint)。

 

 

UML4+1视图

 

  • 用例视图用于表示系统的功能性需求
  • 逻辑视图用于表示系统的概念设计和子系统结构等
  • 实现视图用于说明代码的结构
  • 进程视图用于说明系统中并发执行和同步的情况
  • 部署试图用于定义硬件节点的物理结构
  • 软件开发过程  参见教材179页

 
  • RUP二维模型(4个阶段,9个科目)  教材183页

(来源于网络)RUP(rational unified process)是一个面向对象且基于网络的程序开发方法论。它是以面向对象方法为基础的方法,RUP坚持以用例驱动,以架构为中心,迭代和增量的开发方法。

下面以思维导图为依据简单介绍一下RUP:

1.六大经验

1)迭代式开发

RUP中的每一个阶段可进一步分解为迭代,一个迭代是一个完整的开发循环,每一次循环都可以产生一个执行文件,每一次循环都是一次增量开发直到形成最终产品。迭代式开发允许在每次迭代过程中需求发生变化,通过不断细化对问题加深理解。迭代式开发不仅可以降低风险,而且每次迭代过程都可以执行版本结束,一次鼓舞团队士气。

2)管理需求

RUP描述了如何提取、组织系统的功能和约束条件并将其文档化,用例和脚本的使用证明了是捕获需求的有效方法。

3)基于组件的体系结构

基于独立的、可替代的、模块化组件的体系结构有助于管理复杂性,提高使用率。RUP描述了如何设计一个有弹性的、能适应变化的、易于理解的、有助于复用的软件体系结构。

4)可视化建模

RUP往往和UML联系在一起,对软件系统建立可视化模型帮助人们提高管理软件复杂性的能力。RUP告诉我们如何可视化的对软件系统建模,获取有关体系结构于组件的结构和行为信息。

5)验证软件质量

在RUP中软件质量评估不再是事后进行或单独小组进行的分离活动,而是内建于过程中的所有活动,这样可以及早发现软件中的缺陷,提高软件质量节约软件成本。

6)控制软件变更

迭代式开发中如果没有严格的控制和协调,整个软件开发过程很快就陷入混乱之中,RUP描述了如何控制、跟踪、监控、修改以??品,隔离来自其他工作空间的变更,以此为每个开发人员建立安全的工作空间。

2.二维开发模型

RUP软件开发生命周期是一个二维的软件开发模型。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期、阶段、迭代里程碑;纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动、产物、工作者和工作流。如图:

3.核心概念

RUP中定义的核心概念主要有角色、活动和工作:

角色:描述某个人或者一个小组的行为与职责。RUP预先定义了很多角色。
活动:是一个有明确目的的独立工作单元。
工件:是活动生成、创建或修改的一段信息。

4.裁剪

RUP是一个通用的过程模板,包含了很多开发指南、制品、开发过程所涉及到的角色说明,由于它非常庞大所以对具体的开发机构和项目,用RUP时还要做裁剪,也就是要对RUP进行配置。RUP就像一个元过程,通过对RUP进行裁剪可以得到很多不同的开发过程,这些软件开发过程可以看作RUP的具体实例。RUP裁剪可以分为五步:

1) 确定本项目需要哪些工作流

2) 确定每个工作流需要哪些制品。

3) 确定4个阶段之间如何演进。确定阶段间演进要以风险控制为原则,决定每个阶段要哪些工作流,每个工作流执行到什么程度,制品有哪些,每个制品完成到什么程度。

4) 确定每个阶段内的迭代计划。规划RUP的4个阶段中每次迭代开发的内容。

5) 规划工作流内部结构。工作流涉及角色、活动及制品,他的复杂程度与项目规模即角色多少有关。最后规划工作流的内部结构,通常用活动图的形式给出。

5.开发过程

RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段、细化阶段、构造阶段和交付阶段。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。

1)初始阶段

初始阶段的目标是为系统建立商业案例并确定项目的边界。为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。本阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。

2)细化阶段

细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目的,必须在理解整个系统的基础上,对体系结构作出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。

3)构造阶段

在构建阶段,所有剩余的构件应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。

4)交付阶段

交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。在生命周期的这一点上,用户反馈应主要集中在产品调整,设置、安装和可用性问题,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。

6.核心工作流

RUP中有9个核心工作流,分为6个核心过程工作流和3个核心支持工作流。这些工作流在整个生命周期中被多次访问。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。

1)商业建模

商业建模工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。

2)需求

需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。

3)分析和设计

分析和设计工作流需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的设计包和设计子系统,而描述则体现了类的对象如何协同工作实现用例的功能。设计活动以体系结构设计为中心,体系结构由若干结构视图来表达,结构视图是整个设计的抽象和简化,该视图中省略了一些细节,使重要的特点体现得更加清晰。体系结构不仅仅是良好设计模型的承载媒介,而且在系统的开发中能提高被创建模型的质量。

4)实现

实现工作流的目的包括以层次化的子系统形式定义代码的组织结构,以组件的形式实现类和对象,将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。

5)测试

测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。RUP提出了迭代的方法,意味着在整个项目中进行测试,从而尽可能早地发现缺陷,从根本上降低了修改缺陷的成本。测试类似于三维模型,分别从可靠性、功能性和系统性能来进行。

6)部署

部署工作流的目的是成功的生成版本并将软件分发给最终用户。部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。

7)配置和变更管理

配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。工作流描述了如何管理并行开发、分布式开发、如何自动化创建工程。同时也阐述了对产品修改原因、时间、人员保持审计记录。

8)项目管理

软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。

9)环境

环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。环境工作流集中于配置项目过程中所需要的活动,同样也支持开发项目规范的活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。

(6)需求分析(FURPS+)及其产生的文档

Vision,SRS (补充规格说明书中含功能列表) 参见PPT

 

What is requirement?

*需求是系统(更广泛地说是项目)必须遵循的能力和条件。[JBR99]。

要求的目的是:

*为系统开发人员提供对系统需求的更好理解。

-定义的边界(划划界)系统。

-为设计迭代的技术内容提供依据。

-为系统开发的成本和时间的估算提供依据。

-为系统定义用户界面,关注用户的需求和目标。

Types of Requirements – FURPS+

*功能

特性,功能,安全。

*可用性

人为因素,帮助文档。

*可靠性

故障频率、可恢复性、可预测性。

*性能

响应时间、吞吐量、准确性、可用性、资源使用。

*可支持性

适应性、可维护性、国际化、可配置性。

 

“+”FURPS +显示辅助(辅助的)和sub-factors,如:

–实现

资源限制,语言和工具,硬件,…

–接口

与外部系统交互所带来的限制。

–包装

–法律

许可等等。

 

*需求被分类为功能性(行为)或非功能性(其他一切);

*功能需求

功能需求被探索和记录在

-用例模型

-该系统具有视觉工件列表。

*非功能性需求

-其他的需求可以记录在与之相关的用例中,或者在补充的规范工件中。

 

Requirement  Documents

vision

*愿景工件概括了这些其他文档中详细阐述的高级需求。

*愿景是对核心项目的需求的总体设想,并为更详细的技术需求提供了合同基础。

*包括:

  • 问题陈述
  • 用户或利益相关者的描述
  • 产品概述
  • 特性
  • 约束

SRS(软件需求规范)

*功能需求

用例模型

*非功能性需求

补充规范

*术语表

记录并澄清需求中使用的术语。

还包含数据字典的概念,它记录与数据相关的需求,如验证规则、可接受值等

*用户界面原型

原型是一种明确什么是需要的或可能的机制。

 

用例模型 (Use-case model) (含用例描述)

补充规约 (Supplementary specification)

术语表 (Glossary)

用户界面原型 (User Interface Prototype)

 

(7)面向对象分析及面向对象设计及主要工作内容

领域模型 (与需求相关关键名词短语)  描述类

设计模式及其作用(单一实例、迭代器、适配器)   参见PPT

富有经验的面向对象专家(或其它软件开发人员)设计的作为通用原则和惯用法的解决方案 ,用于指导软件设计。如果将它们按问题和解决方案描述的结构形式编篡,然后起一个名字。这就是设计模式.

三、关于UML图形的认知:参见教材和PPT

*四种关系的表示  关联  依赖  泛化  实现  ppt第五章p29

 

*关联与依赖的区别和联系

(来自网络)我用锤子修了一下桌子,我和锤子之间就是一种依赖,我和我的同事就是一种关联。依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系,而不是必然的关系。关联是类之间的一种关系,例如老师教学生,老公和老婆这种关系是非常明显的。依赖是比较陌生,关联是我们已经认识熟悉了。

*接口的表示   ppt第五章p67

*用例图的构成要素及其作用, 用例之间的关系、表示方法,参与者与用例之间的关系   ppt第三章

*顺序图的构成要素及其表示、作用;消息的类型(同步、异步、返回)   ppt交互图p7

*协作图的构成要素(对象、生命线、控制焦点);ppt交互图p28

*类图的构成要素  关联(整体与部分),角色,多重性,限定关联,修饰符(+,-,#);   ppt第五章p70

*三种分析类(实体类、边界类、控制类)  ppt第五章p21


实体类通过事件流和交互图发现, 采用目标领域术语命名.

通常实体类对应数据库中的表, 其属性对应表的字段, 但实体类与数据库中的表不一定是一一对应关系.存在多对多的可能.

 

类图具有不同的抽象层次  概念层,说明层,实现层

对象图(链),要能根据对象图画出类图      ppt第五章p75

状态图的构成要素:开始状态,结束状态    ppt状态图及活动图

状态,事件,动作,活动,转移,组合状态,历史状态;作用

状态模式,注意动作(action)和活动(activity)的区别

活动图的构成要素及作用,泳道,分叉与汇合,控制流,对象流;  活动的表示

Ppt 7构建图、部署图、包图

构件图和部署图:  构件的表示及其定义,结点        作用

包图的表示, 设计原则,包之间的依赖关系,层layer,  子系统—版型Subsystem      作用

四、实例:图书借阅系统   ppt图书借阅系统

10个用例的实现,分析类图,设计类图,关联类的实现(1:n,n:m)

参考教材:

面向对象技术UML教程   王少峰   北京:清华大学出版社.2004.2

发表评论

电子邮件地址不会被公开。 必填项已用*标注