软工重点第三版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“软件危机”的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。

主要表现在两个方面:(1)软件产品质量低劣,甚至在开发过程中就夭折。

(2)软件生产率低,不能满足需要。

软件工程三要素:方法,工具和过程
软件是程序以及开发使用和维护程序所需的所有文档
软件生存周期:1.可行性研究和项目开发计划 2.需求分析3.概要设计4.详细设计5.编码6.测试7.维护
软件工程过程是指在软件工具的支持下所进行的一系列软件工程活动
软件过程模型:瀑布模型,增量模型,螺旋模型,喷泉模型,智能模型
1)瀑布模型:以文档作为驱动,适合于需求明确的软件项目开发,简单易用,消除非结构化的特征,降低软件的复杂性,促进软件开发工程化,会导致开发的软件不符合用户的需求而夭折。

2)增量模型:基于瀑布模型的渐增模型和基于原型的快速原型模型,适用于用户需求不明确,设计方案有风险的项目,非整体化开发模型。

3)螺旋模型:加入风险分析+瀑布+增量
4)喷泉模型:面向对象技术,支持软件重用,迭代性,无间隙性。

5)智能模型:降低问题复杂性
将软件生存周期中所使用的一整套技术的集合成为方法学或范型
面向过程:结构化(瀑布模型)原型化功能的分解与抽象自顶向下逐步求精
面向对象=对象+类+继承+消息
OOA:对象模型(信息)状态模型(动态)处理模型(函数)OOD:概要设计详细设计
OOD的5个层次由四类部件构成:5层次,主题层,类与对象层,结构层,属性层,服务层。

4部件:PDC问题域部件,HIC人机交互部件,TMC任务管理部件,DMC数据管理部件。

软件设计就是根据所表示的信息域的软件需求以及功能和性能需求进行数据设计系统结构设计过程设计界面设计
构造一个高内聚,低耦合的软件模型
概要设计:将软件需求转化为数据结构和软件的系统结构,划分出组成系统的物理元素:程序,数据库,过程,文件,类等
详细设计:通过对结构表示进行细化,等到软件详细的数据结构和算法理解,抑郁测试和挑事,因而也有助于提高软件的可靠型
模块间关系:层次结构,网状结构
模块独立化:耦合性(数据耦合)内聚性(功能型内聚)
确定类之间关系:聚合关系,泛化关系
实现模型由构件图和配置图组成
RUP统一过程横轴为时间轴,纵轴为核心工作流
需求工程:1.获取需求2.需求分析与建模3.需求规格说明4.确认需求5.需求管理
需求获取方法:1.面谈法2.问卷法3.会议讨论法4.原型法5.面向用例的方法
需求分析方法:1。

功能分析方法2.结构化分析方法,数据流图,DFD 3.信息建模法.E-R图4.面向对象的分析方法:对象,动态,功能
结构化的分析方法是面向数据流的需求分析法
一.面向对象的方法的主要特点:
1)按照人类习惯的思维方法,对软件开发过程所有阶段进行综合考虑
2)软件生存周期各阶段所使用的方法,技术具有高度的连序性
3)软件开发各个阶段有机集成,有利于系统的稳定性
4)具有良好的重用性
二、提高可维护性的方法有哪些?
答:(1)建立明确的软件质量目标。

(2)使用先进的软件开发技术和工具。

(3)建立明确的质量保证。

(4)选择可维护性的程序设计语言。

(5)改进程序的文档。

在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。

1.在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。

在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。

2、在软件设计的复审中,应从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。

3、在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。

4、在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。

5、在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。

3.动态模型4类图的功能?
三、比较面向对象方法与结构化方法的特点,说明面向对象
更加优越。

答:结构化方法是以数据流和数据封闭性为基础的,由SA、
SD和 SP三部分构成。

该方法:①无法实现从问题空间到解空间的直接映射。

②无法实现高效的软件复用。

③开发方法难以实现从分析到设计的直接过渡,从SA到SD要经过一系列复杂的变换。

而面向对象的方法以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题:①使问题空间与解空间具有一致性,便于对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量。

②软件开发各个阶段有机集成,有利于系统的稳定性。

③具有良好的重用性。

综上,显然面向对象方法比结构化方法更加优越。

四、动态模型4类图的功能
动态模型包括4类图:状态图、活动图、顺序图、协作图。

状态图:描述某个对象,子系统,系统的生存周期。

活动图:描述操作实现中完成的工作以及用例实例或对象中的活动,活动图是状态图的一个变种。

顺序图:是一种交互图,描述对象之间的动态合作关系以及合作过程中的行为次序,常用来描述一个用例的行为。

协作图:用于描述相互合作的对象间的交互关系,它描述的交互关系是对象间的消息连接关系。

四、OOA概念模型的5个层次分别是:
5层次,类与对象层,结构层,属性层,服务层,主题层,
(1)发现类及对象。

描述如何发现类及对象。

(2)识别结构。

该阶段分为两个步骤。

第一,识别“一般-特殊”结构,第二,识别“整体-部分”结构。

(3)定义属性。

其中包括定义类的实例(对象)之间的实例连接。

(4)定义服务。

其中包括定义对象之间的消息连接。

(5)定义主题。

主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,以便于理解。

六、建立对象模型的5个层次
1.确定类与对象类和对象是在问题域中可观存在的,系统分析员的主要任务就是通过分析找出这些类和对象。

2.确定关联。

两个或多个对象之间的相互依赖、相互作用的关系就是关联,分析确定关联,要考虑问题域的边缘情况。

3.划分主题将大型、复杂系统进一步划分成为不同的主题,以降低系统的复杂性
4.确定属性。

属性是对象的性质,一般确定属性包括分析和选择两个步骤。

5.识别继承关系。

确定了类中应该定义的属性之后,就可以利用继承机制共享公共性质,并对系统中众多的类加以组织。

一般可使用自低向上和自顶向下两种方式建立继承关系。

应用题
1.建立用例模型(例题)
2.数据流图图书馆(例题)
3下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?
(2)设计一个等价的结构化程序。

(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序
(1)通常所说的结构化程序,是按照狭义的结构程序
的定义衡量,符合定义规定的程序。

图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。

(2)使用附加的标志变量flag,至少有两种方法可以
把该程序改造为等价的结构化程序,图示盒图描绘了等价的结构化程序。

(3)不使用flag把该程序改造为等价的结构化程序的方法如图所示。

相关文档
最新文档