软件工程概论

软件工程概论
软件工程概论

第13章软件重用技术

13.1 典型问题分析和解答

【例1】实施软件重用的目的是要使软件开发工作进行得( A )。软件重用的实际效益除了( B )之外,在企业的经营管理方面也渴望达到理想的效益。

新的应用软件开发技术和工具是以( C )作为关键,重用大粒度的( D ),为的是快速开发应用软件。这些新技术包括微软的( E )、( F )、(G ),SUN公司的Java,OMG公司的CORBA、IDL等。

供选择的答案:

A. ①更简捷②更方便③更快、更好、更省④更丰富

B. ①重用率②功能扩充③效率④空间利用率

C, D. ①软件②固件③构件④属性

⑤对象⑥事物⑦数据⑧代码

E~G. ①office ②Visual Basic ③Active X ④Photoshop

⑤OLE ⑥Fortran ⑦COBOL ⑧Delphi

答案:A. ③, B. ①, C. ③, D. ⑤, E. ②, F. ③, G. ⑤。其中,E、F、G的答案顺序可互换。

分析:实施软件重用的目的是要使软件开发工作进行得是更快、更好、更省。“更快”是指在市场竞争环境中,软件开发工作能满足市场上时间方面的要求(即在提供软件产品的时间方面能赛过竞争对手);“更好”是指开发出来的软件在未来的运行中失效可能性小;“更省”是指在开发和维护期间所花费的开销少。

日美一些大公司的资料表明,软件重用率最高可望达到90 %,而且软件重用使得企业在及时满足市场、软件质量、软件开发和维护费用等方面都得到显著的改进。

除了重用率之外,在企业的经营管理方面也可望达到理想的效益。例如,上市时间可缩短2 ~ 5倍;软件产品的缺陷密度可减少5 ~ 10倍;软件产品的维护费用可减少5 ~ 10倍;软件开发总费用可减少15% ~ 75%,其中,75%是针对长期项目,包括开发可重用构件及支持重用的负担。

新的应用软件开发技术和工具是以“构件”作为关键,重用大粒度的“对象”,为的是快速开发应用软件。这些新技术包括微软的Visual Basic、Active X、OLE(对象链接与嵌入),SUN公司的Java,OMG公司的CORBA(公用对象请求代理程序体系结构)、IDL(接口定义语言)等。非面向对象语言(如COBOL和Fortran)在重用实践中已经相当的成功。这些非面向对象程序设计语言构件技术的成功实践说明了实现软件重用并不限于面向对象语言构件或类库。

【例2】以往的软件工程技术不能满足重用的需要,体现在工程、( A )、( B )、经营业务等4个方面。“工程”指软件开发工程,表现在缺乏( C )手段,缺乏( D )构件,缺乏对潜在可重用的( E ),缺乏实施重用的工具。

供选择的答案:

A, B. ①需求②过程③环境④组织管理

C ~ E. ①重用②可靠性③灵活性④界定

⑤工具⑥互连性

答案:A. ②, B. ④, C. ④, D. ①, E. ③。其中,A、B的答案的顺序可互换。

分析:以往的软件工程技术不能满足重用的需要,体现在工程、过程、组织管理、经营业务等4个方面。这里所说的“工程”是指软件开发工程,其技术和方法面对重用的需要已显得低效,主要表现在:

?缺乏界定手段:为了软件重用,需要循软件开发流程的各个阶段,通过分析它们的描述模型,明确界定出潜在可重用的部分,被界定出的部分,可能是可被重用的部分,也可能是可被可重用构件代用的部分。而以往的软件工程缺乏这种界定手段。

?缺乏可重用的构件:这反映在许多方面。例如,不能有效地挑选出可重用构件并对它们进行强化;缺乏对构件打包、文档化、分类、界定的技术;缺乏有效方法进行(构件)库的设计和实现;缺乏良好的构件库存取方法。

?缺乏对潜在可重用构件的灵活性:如果一个构件很死板,那么它被重用的机会就很少。而过去的软件工程方法在设计灵活的、分层的软件体系结构方面一直没有成熟的办法。过去的方法是对构件进行调节使之满足新的需求,或者使对新的体系结构进行限制。

?缺乏实施重用的工具:为了实施重用,需要一系列新的工具,并把它们集成到面向重用的软件工程环境中去。而过去的工程缺乏这方面的工具。

【例3】论域工程过程要在选定的应用论域中界定出( A )和( B ),要为多个应用和构件定义一个( C ),并开发一系列可适度扩展的( D )。创建可重用构件既困难又昂贵。所以,应当帮助软件人员进行界定工作,以及按重要性对各项( E )进行优先性排队。在一定程度上,这项工作要依赖于( F )。

供选择的答案:

A, B, E, F:①共性②特性③可变性④属性

⑤灵活性⑥可靠性⑦健壮性⑧适用性

C, D:①固件②构件③体系结构④组件

⑤总体框图⑥数据结构

答案:A. ①, B. ③, C. ③, D. ②, E. ②, F. ⑥。其中,A、B的答案顺序可互换。

分析:论域工程过程要在选定的应用论域中界定出共性和可变性,要为多个应用和构件定义一个体系结构,并开发一系列可适度扩展的构件。创建可重用构件既困难又昂贵。所以,应当帮助软件人员进行界定工作,以及按重要性对各项“特性”进行优先性排队。在一定程度上,这项工作要依赖于预测的可靠性(预测需要哪些应用层的可靠性和构件层的可靠性),这也关系到我们要冒多大的风险。

【例4】软件体系设计的一个中心问题是能否( A ),以及采用何种软件体系结构风格。有原则地使用体系结构风格可带来一些实际的好处:

(1)它促进了对设计的( B );

(2)它可以带来显著的( C )(体系结构风格的不变部分使它们可以共享同一个实现代码);

(3)只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构;

(4) 对标准或规范风格的使用也支持了( D ),例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;

(5)在限制了设计空间的情况下体系结构风格通常允许进行特殊的与风格有关的分析;

(6)通常可以对特定的风格提供( E )手段。

供选择的答案:

A C. ①使用特定的体系模式②使用重复的体系模式

③重用④专用⑤代码重用⑥结构重用

D ~ E. ①可视化②构件③互操作性④可移植性

⑤可调度性⑥框架

答案:A. ②, B. ③, C. ⑤, D. ③, E. ①。

分析:软件体系设计的一个中心问题是能否使用重复的体系模式,以及采用何种软件体系结构风格。例如可以采用通用的基于层次或数据流的系统体系结构,或者采用特殊的系统组织(如经典的编译器分解方式),OSI七层协议,MVC用户界面语义图等。有原则地使用体系结构风格可带来一系列实际的好处。

(1)它促进了对设计的重用。一些经过实践证实的解决方案可以拿来可靠地解决新问题。

(2)它可以带来显著的代码重用。体系结构风格的不变部分使它们可以共享同一个实现代码。

(3)只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构。例如,如果某人把系统描述为“客户机∕服务器”模式,则不必给出细节,人们立刻就会明白它们是如何一部分一部分地组织起来,并在脑海中清晰地得到这个图像。

(4) 对标准或规范风格的使用也支持了互操作性,例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;

(5)在限制了设计空间的情况下,体系结构风格通常允许进行特殊的与风格有关的分析。例如,分析管道过滤器系统的可调度性(吞吐量、延时、死锁的解决)是可行的,但对于任意的、或用其它方法构造的架构来说,这种分析可能毫无意义。

(6) 通常可以对特定的风格提供可视化的手段。例如,可以对与客户的专业领域有关的设计作出图解或文字说明。

对于应用软件体系结构风格来说,由于视点的不同,软件人员有很大的选择空间。要为系统选择或设计某一个体系结构风格,必须根据特定项目的具体特点,进行分析比较后再确定。体系结构风格的使用几乎完全是特化的。

【例5】分层系统采用层次化的组织方法,每一层向其( A )提供服务,并利用( B )的服务。在一些分层系统中,( C )全部被隐藏起来,只有( D )和一部分精心选择的功能可以被系统外部看到。在这种系统中,( E )是实现在层次结构中的一些虚拟机,( F )是层次与层次之间交互的协议,(G )包括对层次之间交互的限制。分层系统中有许多可取的属性。首先,它支持( H )的系统设计,这使得设计者可以把一个复杂的系统按递增的步骤分解开来;其次,它支持(I ),像管道结构的系统一样,因为每一层至多和相邻的上下层交互,因此,功能的改变最多只影响相邻的上下层。另外,它能支持(J ),和抽象数据类型一样,只要提供的服务接口定义不变,同一层的不同实现可以交换使用。

供选择的答案:

A ~ D. ①下层②内部层次③外部层次④上层

⑤中间件⑥接口

E ~ G. ①接口定义②软件部件③连接④拓扑约束

⑤规范定义⑥推理机制⑦系统结构

H ~ J. ①基于抽象程度递增②基于具体细节递增

③重用④可视化⑤互操作⑥功能增强

⑦效率提高⑧结构化

答案:A. ④, B. ①, C. ②, D. ③, E. ②, F. ③, G. ④, H. ①, I. ⑥, J. ③。

r t L L t r L L R )C /C 1(1C r n n --t t E L n n

E L R )C /C (1C r n n -t r n n L )E /E (1E -分析:对于分层系统:

(1) 基本结构:分层系统采用层次化的组织方法,每一层向其上层提供服务,并利用其下层的服务。在一些分层系统

中,内部层次全部被隐藏起来,只有外部层次及一部分精心选择的功能可以被系统外部所见。在这种系统中,软件部件

是实现在层次结构中的一些虚拟机,连接是层次与层次之间

交互的协议,拓扑约束包括对层次之间交互的限制。如图所示。

(2) 应用:这种系统最广泛的应用是分层通信协议。在这一应用论域中,每一层提供一级抽象的功能,作为上层通

信的基础。较低的层次定义低层的交互,最低层通常只定义硬件物理连接。其它应用论域有数据库系统、操作系统等。

(3) 分层系统中有许多可取的属性。首先,它支持基于抽象程度递增的系统设计,这使得设计者可以把一个复杂的系统按递增的步骤分解开来;其次,它支持功能增强,像管道结构的系统一样,因为每一层至多和相邻的上下层交互,因此,功能的改变最多只影响相邻的上下层。另外,它能支持重用,和抽象数据类型一样,只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,并允许有各种不同的实现方法(典型的例子是ISO OSI 参考模型和某些Windows 的系统协议)。

【例6】软件重用可分为以下三个层次:

( A ),例如软件工程知识的重用。

( B ),例如面向对象方法或国家制定的软件开发规范的重用。

软件成分的重用。软件成分的重用又可进一步划分为( C ),如剪贴;( D ),如重用设计模型;( E ),更高级别重用。

为了研究软件重用程度与软件生产率之间的关系,我们引进:生产率P = ( F )和重用率R = ( G )的公式,以及两者之间的关系P = ( H )。其中,用L t 代表程序总长度,L n 和L r 分别为新编代码和重用代码的长度。令E t 、E n 和E r 分别代表开发该程序的总工作量、新编程序的工作量和重用已有软件构件的工作量,C n 和C r 分别代表开发新代码和重用已有软件构件的生产率。

供选择的答案:

A ~ E. ① 知识重用 ② 分析结果重用 ③ 代码重用

④ 方法与标准重用 ⑤ 设计结果重用 ⑥ 软件成分重用

F ~ H. ① ② ③

④ ⑤ ⑥

答案:A. ①, B. ④, C. ③, D. ⑤, E. ②, F. ④, G . ②, H. ③。

分析:广义来讲,软件重用可分为以下三个层次:

(1) 知识重用(如软件工程知识的重用);

(2) 方法和标准的重用(如面向对象方法或国家制定的软件开发规范的重用);

R )C /C 1(1C P r n n --= (3) 软件成分的重用。软件成分的重用又可进一步划分为三个级别:① 代码重用(源代码剪贴、源代码包含、继承);② 设计结果重用;③ 分析结果重用(这是一种更高级别的重用,即重用某个系统的分析模型)。

为实现软件重用需要付出额外代价,如投资、时间和可重用构件库。

即使不考虑上述的额外代价,软件重用也不是必然能提高软件生产率。为研究软件重用程度与软件生产率的关系,我们首先引入下列两个量:

生产率P = 程序总长度∕开发该程序所用人时数

重用率R = 重用代码长度∕程序总长度

令L t 为程序总长度(目标代码条数),L n 和L r 分别为新编代码和重用代码的长度(都用目标代码条数来度量)。再令E t 、E n 和E r 分别代表开发该程序的总工作量、新编程序的工作量和重用已有软件构件的工作量,则有以下等式成立:

L t = L n + L r , E t = E n + E r , P = L t ∕E t , R = L r ∕L t .

此外,用符号C n 和C r 分别代表开发新代码和重用已有软件构件的生产率,则有:

C n = L n ∕E n , C r = L r ∕E r .

从上述6个等式出发,可以推导出下列的生产率与重用率之间的关系:

从上式可知,重用率R 越高,生产率不一定就越高。只有当软件开发人员使用已有的软件构件构造应用系统时,其工作效率比重新从底层编写程序的效率高时,重用率的提高才会导致生产率提高。可见,通过软件重用来提高软件生产率,并不是一件轻而易举的事情。构件的实用程度和使用方便程度,以及软件人员的素质、开发环境等因素,都直接影响软件重用的效果。

13.2 习 题

1. 软件重用的含义是什么?软件重用的范围有哪些方面?

2. 比较横向重用和纵向重用的异同及优劣。

3. 当今大多数软件重用过程中,都涉及创建过程的一个重要活动,即界定潜在的可重用的资源。在这个活动中需要一整套的界定方法,并需要一个能确保可重用资源被重用的体系结构。这个活动就叫做( A )。而应用软件的开发过程或重用过程则称为( B )。系统地软件重用的实质是:( C )先投资,即界定并仔细地创建出可重用的资源,从而可以使得( D )能够又快又省地开发应用软件。

供选择的答案:

A, B. ① 应用系统工程 ② 软件工程 ③ 论域工程 ④ 需求工程

C, D. ① 用户 ② 创建者 ③ 重用者 ④ 投资者 ⑤ 管理者

4. 所谓一个“构件”,可以是一个类型、类或其它的工作成品。对于构件,应当按可重用的要求( A )、( B )、打包、编写文档。构件是( C ),并具有相当稳定的公开的( D )。这里的构件是基于( E )技术的。( E )技术中的封装、多态等特性,可简化构件的开发工作。而( E )技术中的( F )机制则有使开发简化、维护复杂的两面性。

供选择的答案:

A, B. ① 实现 ② 运行 ③ 设计 ④ 计划

C, D. ① 外联的 ② 内聚的 ③ 公开的 ④ 私有的

⑤外设⑥接口⑦输出

E, F. ①面向数据②面向对象③封装④继承⑤重用

5. 软件开发人员必须用各种抽象化手段来开发代码级构件。典型的抽象方法有3种。( A )、( B )、( C )。( A )使构件的( D )仅由接口说明确定,而把实现细节对构件的使用者隐藏起来;( B )在( A )的基础上进一步隐藏除接口参数外的所有数据。面向对象程序设计语言中的“类”是一种典型的基于( B )的构件。( C )则在( B )的基础上进一步实现在同一构件上并发执行的多个( E )的无关性。构件提供端口,以便为多个( F )同时访问构件中的资源进行(G )控制。

供选择的答案:

A ~ B.①数据抽象②需求抽象③设计抽象④过程抽象

⑤功能抽象⑥实例抽象

D ~ G.①异步②程序③线程④用户

⑤功能⑥同步

6. 回答下列问题。

(1)简述关键词分类法、多面分类法和超文本分类法等组织方法的概要。

(2)简述相应的检索方法。

7. 试简述基于软件重用的软件项目管理机构的组织和工作职责。

习题参考答案

1. 软件重用就是指利用某些早先开发的对建立新软件系统有用的软件元素来生产新系统。软件重用的范围有以下十个方面:

①项目计划:软件项目计划的基本结构和许多内容都可以跨项目重用。

②成本估计:由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的情况下,重用对该功能的成本估计。

③体系结构:即便应用论域千差万别,但程序和数据体系结构大同小异。因此,可以创建一组类属的体系结构模板,将这些模板作为可重用的涉及框架。

④需求模型和规格说明:类和对象的模型和规格说明显然可以重用。此外,用传统软件工程方法开发的分析模型也可以重用。

⑤设计:用传统方法开发的体系结构、数据、接口和过程化设计,以及用面向对象方法开发的系统和对象的设计都可以重用。

⑥源程序代码:验证过的程序构件可以拿来重用的。

⑦用户文档和技术文档:即便特定的应用不同,但也经常有可能重用用户文档和技术文档中的大部分内容。

⑧用户界面:这可能是最广泛被重用的软件元素。如经常重用GUI的软件构件。

⑨数据结构:经常被重用的数据结构包括:内部表、列表和记录结构,以及文件和完整的数据库。

⑩测试用例:只要将设计或代码构件定义成可重用构件,相关的测试用例就应当成为这些构件

的“从属品”。

2. 软件重用可以区分为横向重用和纵向重用。横向重用是重用不同应用论域中的软件元素,例如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的横向重用机制。纵向重用是在一类具有较多公共性的应用论域之间重用软件构件。

横向重用是在几个截然不同的应用论域之间进行软件重用,可重用的资源有限,潜力不大。纵向重用的应用范围较大,从系统软件到特定论域的软件及应用软件,还有软件工程过程方面,许多计算机软件厂商开发了大量可重用的构件或软件包,在软件工程实践中取得显著的效益,因此受到广泛关注。

3. A. ③, B. ①, C. ②, D. ③

4. A. ③, B. ①, C. ②, D. ⑥, E. ②, F. ④。

5. A. ⑤, B. ①, C. ④, D. ⑤, E. ③, F. ④, G. ⑥。

6. (1) 软件构件的分类方法和相应的构件库结构对构件的检索和理解有极为深刻的影响,就是说,可重用构件库的组织应当便于构件的存储和检索。

① 关键词分类法。此方法的基本思想是:根据论域分析的结果,将应用论域(族)的概念按照从抽象到具体的顺序,逐步分解树形结构或有向无回路图结构。每个概念用一个描述性的关键词表示。不可再分解的原子层的包含隶属于它的某些软件构件。下图给出了可重用构件库的关键词分类结构,它支持图形用户界面设计。

当加入新的构件时,库管理员应对构件的功能或行为进行分析,浏览上述关键词分类结构,将构件置于最合适的原子层关键词下。如果无法找到构件应从属的关键词,可以扩充关键词分类结构,引进新的关键词。但必须保证新关键词有相应的论域分析的结果作为支持。

② 多面分类法。此方法由3部分构成:多面分类机制、同义词库和概念距离图。

ⅰ)多面分类机制:分析论域范围并定义若干用于描述一个构件特征的“面”,每个“面”包含若干“概念”,它们表述构件在“面”上的基本特征。这些特征根据它们的重要性排队。“面”可以描述构件执行的功能、被操作的数据、构件应用的上下文以及任何其它特征。描述某一构件的“面”的集合称为面描述子。

ⅱ)同义词库:意义相同或相近的若干词汇组成同义词库。所有词汇按照隶属于“面”的“概念”分组,在任一时刻点,每个“概念”可用组内的某一同义词汇作为标识载体。

ⅲ)概念距离图:用于度量每个“面”中“概念”的相似性程度。属于每个“面”的一般化概念与其中的两个或多个“概念”以加权边相连接,两个“概念”的相似性由它们之间的最短加权路径上

C

的加权距离确定,附加于边上的权值体现了“概念”之间的差异程度。

采用多面分类法进行可重用构件库的组织,必须在存储软件构件的同时,表示并存储多面分类机制、同义词库和概念距离图。多面分类法的所有语法构件(“面”、“概念”、同义词、一般化概念、差异性权值)均取材于论域分析的结果。当需要在可重用构件库中加入新的构件时,库管理源必须对构件的功能、行为进行深入分析,利用现有的多面分类结构确定构件的描述子,对每个“面”选取合适的“概念”作为特征描述。必要时可以考虑增加新的“概念”,此时必须根据新“概念”完善同义词库和概念距离图。

③超文本组织法。此方法的基本思想是:所有构件都必须辅以详细的功能或行为说明文档,说明中出现的概念和构件以网状链接方式互相连接。检索者在阅读文档的过程中可任意跳转到包含相关概念或软件构件的文档中去。全文检索系统将用户给出的关键词与说明文档中的文字进行匹配,实现软件构件的浏览式检索。

超文本方法以结点为基本单位,链作为结点之间的联想式关联。一般地,结点是一个信息块。对于可重用构件库而言,结点可以是论域的概念、功能或行为名称、构件名称等,在图形用户界面上,结点可以是字符串,也可以是图像、声音、动画等。

(2) 可重用构件库的检索方法与库的组织方式密切相关。

①基于关键词的检索:这种检索方法的基本思想是:系统(CASE工具)在图形用户界面上将可重用构件库的关键词树直观地展示给用户,用户通过在树上的逐级浏览寻找需要的关键词并提取相应的构件。当然,用户也可以直接给出关键词(其中可含有通配符),由系统自动地给出合适的候选构件清单。这种方法的优点是简单,易于实现。缺点是对库的浏览容易使用户迷失方向。

②多面检索:这种检索方法基于多面分类法。步骤如下:

?构造查询:用户提供待查构件在每个“面”上的特征,生成构件描述子。此时,用户可以从可重用构件库已有的“概念”中挑选,也可以将某些特征值置为空。系统在库中检索时将忽略特征值为空的“面”。在构造查询的过程中,可以利用同义词库和概念距离图来帮助用户正确选择特征值。

?检索构件:实现多面分类法的CASE工具利用同义词库和概念距离图,在可重用构件库中寻找相同的或相近的构件描述子及相应的构件。

?对构件进行排序:按照相似程度对被检索出来的构件进行排序,还可以按照与重用有关的度量信息(如构件的复杂性、可重用性、成功重用的次数等)进行排序。

这种方法的优点是易于实现相似构件的查找,但用户构造查询比较麻烦。

③超文本检索:这种检索方法的步骤是:用户首先给出一个或若干个关键词,系统在构件的说明文档中做精确的或模糊的语法匹配。匹配成功后,向用户提供相应的构件说明。这些构件说明是含有许多超文本结点的正文。用户在阅读这些正文时可实现多个构件说明文档之间的自由跳转,最终选择合适的构件。为了避免用户在跳转过程中迷失方向,系统可以通过图形用户界面显示浏览历史图,允许将特定画面定义为有名“书签”并可随时跳转到“书签”。此外,还可以帮助用户逆着跳转路径逐步返回。

这种方法的优点是用户界面友好,但在某些情况下用户难以在超文本浏览过程中正确选择软件构件。

④其它检索方法:上述检索方法都是基于语法匹配,要求用户对可重用构件库中的出现的众多词汇有较全面的把握,较精确的理解。理论上,理想的检索方法是语义匹配:可重用构件库的用户以形式化的手段描述所需要的构件的功能或行为的语义,系统通过定理证明或基于知识的推理过程寻找语义上等价的或相近的构件。但这种基于语义的检索方法涉及许多人工智能的难题,目前难于支持大

型构件库的工程实现。

7. 基于重用的软件项目组织与传统的软件开发项目组织不同,它必须有两个职能,并由两个部门分别承担这两个职能。一个职能是创建,相应的部门是创建者或论域工程部门;另一个职能是重用,相应的部门是重用者或应用工程部门。而具有重用经验的单位,往往还需要第三个职能,即支持,相应的部门是支持者或支持部门。创建、重用和支持这三个平行的部门之上,还有一个高层经理,他关注的是总目标。

①重用者负责传统的软件开发任务。同时,在各开发阶段,软件人员可查询构件库,从中检索可重用构件,进行适应性修改后将其合成到当前的目标软件中来。此外,对于同类(或同族)应用的首次开发,重用者还需在做需求分析之前进行论域分析,以便为系统地构造软件构件提供依据。

②创建者负责从重用者手中接受构件的设计规格说明,进行构件的设计、实现和质量控制,重点考虑因素是构件的可重用性。在构件库的积累初期,开发可重用构件的工作量较大,需要设立专门的软件构件开发组。但随着构件库的不断丰富,可以考虑将构件开发组并入系统开发组。

③高层经理负责管理、组织和协调各类软件重用活动,并处理所有有关重用的事务性工作。所有下属的创建、重用和支持部门都应定期向他报告各自重用活动的当前状况,高层经理根据这些状况制定或调整重用计划,实施奖励,以调动开发人员的重用积极性。此外,他还应根据整体重用情况,向项目管理人员提供资源分配、进度安排等方面的决策建议。

④重用支持者负责可重用构件的资格确认、质量保证、分类和存储。在可重用构件库尚未形成的初期,支持者的任务还包括开发可重用构件库和其它配套的软件重用CASE工具。此后,还可将部分力量投入应用论域中某些通用构件的开发。

(完整版)软件工程导论(第六版)张海藩课后习题部分答案

第一章 1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程? 是指导计算机软件开发和维护的一门工程学科。 1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 目前使用得最广泛的软件工程方法学(2 种): 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 1-6 什么是软件过程?它与软件工程方法学有何关系? z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型 1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。 软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。 瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。适用中小型项目。 快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。 增量模型的优点:1短期内可以交付满足部分用户需求的功能产品;2逐步增加功能可以让用户去适应新产品;3开放式的软件可维护性比较好;4开始第一构件前,已经完成需求说明。 增量模型的缺点:1对现有产品功能造成破坏;2意义上的矛盾适用于中型软件的开发 螺旋模型的优点:1集成了瀑布模型、快速原型模型、增量模型的优点;2支持用户需求动态变化;3需求分析与软件实现紧密联系相互依赖;4原型作为刑式的可执行的需求规格说明,即利用用户和开发人员共同理解,又可作为后续开发的基础;5为用户参与决策提供方便;6提高目标软件的适应能力;7降低风险;8在大型软件开发过程中充分发挥优势。螺旋模型的缺点:1迭代次数影响开发成本,延迟提价时间;2找不到关键改进点,人才、物力、财力时间引起无谓消耗;3成于风险分析,败于风险分析。适用于内部开发的大规模软件项目。 1-8:为什么说喷泉模型叫好的体现了面向对象软件开发过程无缝和迭代的特性?

软件工程概论课后答案解析

第1章软件与软件工程的概念 1、1 举出您所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1、2 认为“软件就就是程序,软件开发就就是编程序。”这种观点就是否正确?为什么? 认为“软件就就是程序,软件开发就就是编程序。”这种观点就是错误的。 首先,软件就是计算机系统中与硬件相互依存的另一部分,它就是包括程序,数据及其相关文档的完整集合,程序只就是软件的组成部分之一;其次,在软件开发中,编程只就是软件开发过程的一个阶段。 1、3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1、4 什么就是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机就是指在计算机软件的开发与维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本与进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。 (4)软件常常就是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅 速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验与有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技 术问题,更重要的就是必须有科学严格的管理。 (5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。

软件工程概论.doc

软件工程 1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。 2、软件危机的主要表现: (1)对软件开发成本和进度的估计经常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 3、产生软件危机的原因 (1)从软件特点上看,软件是逻辑部件,不是物理部件; (2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理; (3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等); (4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因) 4、消除软件危机的途径 (1)首先应该对计算机软件有一个正确的认识; (2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目; (3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法; (4)应该开发和使用更好的软件工具 总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。(1)1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。 (2)1993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 6、软件工程的本质特征 (1)软件工程关注于大型程序的构造; (2)软件工程的中心课题是控制复杂性; (3)软件经常变化; (4)开发软件的效率非常重要; (5)和谐地合作是开发软件的关键; (6)软件必须有效地支持它的用户; (7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。 7、软件工程的基本原理 (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的(阶段性)产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 (6)开发小组的人员应该少而精

软件工程导论课后习题答案95829882

《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 “软件危机”包含两方面的问题: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的原因 (1)开发人员与客户认识之间的矛盾 (2)开发人员能力与开发目标之间的矛盾 (3)预估与实际工作量之间的矛盾 (4)客户认识的提高与软件维护之间的矛盾 (5)遗产系统与实施软件之间的矛盾 2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成” 是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机? 软件工程是知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够

软件工程概论课后习题答案

软件工程概论郑人杰等版 第1章软件与软件工程的概念 1.1 举出你所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1.2 认为“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么? 认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。 首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。 1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本和进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用 迅速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。 (5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。 1.5 什么是软件工程? 软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 1.6 简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么? (1)问题定义与可行性研究:问题定义必须回答的关键问题是:“要解决的问题是什么”。 可行性研究要回答的关键问题是:“在成本和时间的限制条件下能否解决问题?是否值

软件工程导论课后习题答案

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。(4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经 常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具 四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 五、1-5 根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=×(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=×(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。

软件工程概论

第13章软件重用技术 13.1 典型问题分析和解答 【例1】实施软件重用的目的是要使软件开发工作进行得( A )。软件重用的实际效益除了( B )之外,在企业的经营管理方面也渴望达到理想的效益。 新的应用软件开发技术和工具是以( C )作为关键,重用大粒度的( D ),为的是快速开发应用软件。这些新技术包括微软的( E )、( F )、(G ),SUN公司的Java,OMG公司的CORBA、IDL等。 供选择的答案: A. ①更简捷②更方便③更快、更好、更省④更丰富 B. ①重用率②功能扩充③效率④空间利用率 C, D. ①软件②固件③构件④属性 ⑤对象⑥事物⑦数据⑧代码 E~G. ①office ②Visual Basic ③Active X ④Photoshop ⑤OLE ⑥Fortran ⑦COBOL ⑧Delphi 答案:A. ③, B. ①, C. ③, D. ⑤, E. ②, F. ③, G. ⑤。其中,E、F、G的答案顺序可互换。 分析:实施软件重用的目的是要使软件开发工作进行得是更快、更好、更省。“更快”是指在市场竞争环境中,软件开发工作能满足市场上时间方面的要求(即在提供软件产品的时间方面能赛过竞争对手);“更好”是指开发出来的软件在未来的运行中失效可能性小;“更省”是指在开发和维护期间所花费的开销少。 日美一些大公司的资料表明,软件重用率最高可望达到90 %,而且软件重用使得企业在及时满足市场、软件质量、软件开发和维护费用等方面都得到显著的改进。 除了重用率之外,在企业的经营管理方面也可望达到理想的效益。例如,上市时间可缩短2 ~ 5倍;软件产品的缺陷密度可减少5 ~ 10倍;软件产品的维护费用可减少5 ~ 10倍;软件开发总费用可减少15% ~ 75%,其中,75%是针对长期项目,包括开发可重用构件及支持重用的负担。 新的应用软件开发技术和工具是以“构件”作为关键,重用大粒度的“对象”,为的是快速开发应用软件。这些新技术包括微软的Visual Basic、Active X、OLE(对象链接与嵌入),SUN公司的Java,OMG公司的CORBA(公用对象请求代理程序体系结构)、IDL(接口定义语言)等。非面向对象语言(如COBOL和Fortran)在重用实践中已经相当的成功。这些非面向对象程序设计语言构件技术的成功实践说明了实现软件重用并不限于面向对象语言构件或类库。 【例2】以往的软件工程技术不能满足重用的需要,体现在工程、( A )、( B )、经营业务等4个方面。“工程”指软件开发工程,表现在缺乏( C )手段,缺乏( D )构件,缺乏对潜在可重用的( E ),缺乏实施重用的工具。 供选择的答案: A, B. ①需求②过程③环境④组织管理 C ~ E. ①重用②可靠性③灵活性④界定 ⑤工具⑥互连性 答案:A. ②, B. ④, C. ④, D. ①, E. ③。其中,A、B的答案的顺序可互换。

软件工程导论》期末考试试题与答案

《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植

软件工程导论课后题

1-5、根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.28(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。 基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算: (1) 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少? (2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。

2-4 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图。 医院对患者8监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 从问题陈述可知,本系统数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。 从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。 系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。 此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。 为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。

《软件工程导论》第五版-张海藩-编著-总结

《软件工程导论》第五版张海藩编著总结 分类:Computer System2011-01-04 10:14 6417人阅读评论(10) 收藏举报 测试数据结构工具任务文档软件测试 总结重点: ?Unit1 ?软件危机包含两方面の问题:一是如何开发软件,怎样满足人们对软件日益增长の需求?二是如何维护软件,使它们持久地满足人们の要求。 ?软件工程学定义:把软件当作一种工业产品,采用工程学の原理来管理和组织软件の开发和维护,称为软件工程。 ?软件是指程序、数据和文档三者共同构成の配置。 ?包含与数据处理系统操作有关の程序、规程、规则以及相关文档の智力创作称为软件。文档是描述程序开发过程の,是智力创作の真实记录,是创作活动の历史档案和结晶。 ?软件の描述性定义:软件由计算机程序,数据结构和文档组成。 ?软件质量定义为“与软件产品满足规定の和隐含の需求能力有关の特征和特性の全体” 具体来说: 1)软件产品中能满足给定需求の性质和特性の总体; 2)软件具有所期望の各种属性の组合程度。 ?将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户の观点——面向管理の观点,且是定性描述の。 ?软件质量度量体系:内部度量可用于开发阶段の非执行软件产品,外部度量只能在生存周期过程中の测试阶段和任何运行阶段使用。 ?软件工程项目の基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。 ?软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。 ?软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。 ?结构程序设计是进行以模块功能和处理过程设计为主の详细设计の基本原则。它の主要观点是采用自顶向下、逐步求精の程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。 ?用来辅助软件开发、运行、维护、管理、支持等过程中活动の软件称为软件工具(CASE)。 ?软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用の整个过程。各阶段の任务彼此间尽可能の相对独立,同一阶段内各项任务の性质尽可能の相同。软件の开发就是“按软件顺时间发展の过程分阶段进行”の。 ?软件生存周期模型: 瀑布模型(阶段间具有顺序型和依赖性,清楚地区分逻辑设计与物理设计、尽可能推迟程序の物理实现,是文档驱动模型,遵循结构化设计);

软件工程导论试题和答案2

一、判断题:每小题1分,共15分,在正确打上√,错误打 上X 1.快速原型模型可以有效地适应用户需求的动态变化。 () 2.数据字典是对数据流图中的数据流,处理过程、数据存储、数据的源和终点进行详细定义。() 3.统一的建模语言,是一种软件工程设计语言。() 4.模块化使程序设计比较方便,但比较难以维护。() 5.一个模块实际上就是一个进程。() 6.过程描述语言可以用于描述软件的系统结构。() 7.编程语言应该在软件概要设计时选择。() 8.如果通过软件测试没有发现错误,则说明软件是正确的。() 9.在进行概要设计时应加强模块间联系。() 10.一般人为,软件开发阶段是由设计、编码和测试三个基本活动组成() 11.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。()12.为了提高程序的易读性,尽可能使用高级语言或4GL编写程序。 () 13.为了加强软件维护作业的进度,应尽可能增加维护人员的数目。 () 14.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。() 15.确认测试计划应该在可行性研究阶段制定。()1、√2、√3、×4、×5、×6、×7、×8、×9、×10、×11、×12、√13、×14、√15、× 二、单选题:每题1分,共15分 1、以下哪一项不是软件危机的表现形式()

A、软件成本高 B、软件产率低 C、计算机技术发展快 D、软件质量得不到保证 2、软件工程由方法、工具和()三部分组成 A、算法 B、技术 C、文档 D、过程 3、软件生命周期终止的最典型原因是() A、错误太多 B、利润过低 C、可维护性过差 D、效率不高 4、软件在需要它投入使用时能实现其制定功能的概率称为软件的() A、兼容性 B、可靠性 C、坚固性 D、可用性 5、软件项目计划一般不包括以下哪项内容() A、培训计划 B、人员安排 C、进度安排 D、软件开发标准的选择和制定 6、计算机系统工程包含硬件、软件、人机及()工程 A、数据库 B、软件 C、CASE D、开发方法 7、SA法中,DFD图的某个处理过程分解后,一般不超过()处理过程 A、10 B、7 C、5 D、12 8、下列需求陈述中一致的是() A、所有命令响应时间应小于0.1s;BUILD命令的响应时间应小于5s B、所有命令响应时间应小于5s;BUILD命令的响应时间应小于1s C、BUILD命令的响应时间应小于5s;BUILD命令的响应时间应小于1s D、所有命令响应时间必须等于2s;BUILD命令的响应时间应小于3s

软件工程概述习题及答案

第一章软件工程概述 一. 填空题 1. 软件的发展过程, , , . 2. 基于软件的工作方式,软件可以划分为, , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境. 4. 在计算机系统中,软件是, 而硬件是. 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,,. 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤, , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型, , , , , . 14. 软件工程面临的问题有, , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和. 16.基于软件的功能划分可以把软件划分为, ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:, ,和, 。 20.原型模型是从需求分析开始。软件开发者和用户在一起定义,说明需求,并规划出定义的区域。然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原形由用户/客户评估,并进一步求精。

软件工程概论知识点

软件工程概论知识点总结 第一章 软件定义:是计算机系统中及硬件相互依存的另一部分,包括程序、数据和相关文档的完整集合。 软件特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。 软件分类。 (1) 系统软件 (2) 应用软件 (3) 支撑软件 (4) 可复用软件 软件危机的原因:1)缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。2)软件人员及用户的交流存在障碍,除了知识背景的差异,缺少合适的交流方法和需求描述工具也是重要的一个原因。3)软件开发过程不规范,缺少方法论和规范的指导,软件难以维护。4)随着软件规模的增大,其复杂性往往会呈指数级升高。5)缺少有效的软件评测手段,提交用户的软件质量差 软件工程的定义: 1.指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理技术和方法进行软件的开发和维护,把经过时间考虑而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护 2.软件工程的目标:运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。 3.软件的生存周期:软件孕育、诞生、成长、成熟、衰亡的生存过程。由软件定义、软件开发和运行维护三个时期组成。软件定义:解决“做什么”的问题;软件开发:解决“如何做”的问题,分为概要设计、详细设计、编码和测试四个阶段;维护:使软件持久的满足用户的需求。 4.开发过程中的典型文档 a.软件需求规格说明书:描述将要开发的软件做什么。 b.项目计划:描述将要完成的任务及其顺序,并估计所需要的时间及工作量。 c.软件测试计划:描述如何测试软件,确保软件应实现规定的功能,并达到预期的性能。 d.软件设计说明书:描述软件的结构,包括概要设计及详细设计。 e.用户手册:描述如何使用软件 各阶段基本任务:问题定义及可行性研究、需求分析、软件设计、程序编码和单元测试、集成测试和系统测试。 5.软件生存期模型: 瀑布模型。优点:强迫开发人员规范化方法、严格规定每个阶段必须提交的文档、要求每个阶段交出的所有产品必须经过验证。缺点:完全依赖书面规格说明,可能会导致产品及用户需求有差异、只适用于项目开始时需求已确定的情况。需求分析、规格说明、设计、编码、综合测试、维护 快速原型模型。优点:易于满足用户真实需求、已通过及用户的交互验证,能正确描述用户需求、产品开发基本上按线性顺序、规格文档说明正确描述了用户需求,后期错误率和返工率很低、开发人员建立原型

软件工程概论知识点汇总

软件危机是指在计算机软件的开发和维护过程中遇到一系列严重问题。 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门。 软件工程方法学包含3个要素:方法、工具和过程 目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学 软件生命周期由软件定义、软件开发和运行维护3个时期组成。 软件生存周期是指一个软件从提出开发要求开始直到软件报废为止的整个时期。 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。 软件定义分3个阶段,即问题定义、可行性研究和需求分析。 可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 可行性研究的主要内容包括技术可行性、经济可行性和操作可行性3个方面。 开发时期由4个阶段组成:总体设计、详细设计、编码和单元测试,综合测试。其中前两个阶段称为系统设计,后两个阶段称为系统实现。 系统流程图是概括地描绘物理系统的传统工具;而数据流图是系统逻辑功能的图形表示工具。 模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。 分析建模的用处是为了更好地理解复杂事物。 软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。 需求分析过程应该建立3种模型,分别是数据模型、功能模型和行为模型。 数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。 结构程序设计的定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制接口进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。 衡量模块独立程序的两个定性标准是内聚和耦合。 确认测试也称为验收测试,它的目标是验收软件的有效性。 等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。一个理想的测试用例能独立发现一类错误。 软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。 软件的可用性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。 软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。 Jackson方法是一种面向数据结构的设计方法。 完整的软件测试一般要经过单元测试、集成测试、确认测试和系统测试等4个阶段。 模块化是指把程序划分成独立命名切可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 软件复杂性度量的参数包括: ①规模②难度③结构④智能度 数据字典应该有下列4类元素的定义组成: 1、数据流; 2、数据流分量(即数据元素) 3、数据存储 4、处理 产生软件危机的原因?

软件工程概论

软件工程 1 、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。包含两方面的问题:(1 )如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。 2、软件危机的主要表现: ( 1 )对软件开发成本和进度的估计经常很不准确; ( 2 )用户对“已完成的”软件系统不满意的现象经常发生; ( 3 )软件产品的质量往往靠不住; ( 4 )软件常常是不可维护的; ( 5 )软件通常没有适当的文档资料; ( 6 )软件成本在计算机系统总成本中所占的比例逐年上升; (7 )软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 3、产生软件危机的原因 ( 1 )从软件特点上看,软件是逻辑部件,不是物理部件; ( 2 )软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理; (3 )软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等); (4 )在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因) 4、消除软件危机的途径 ( 1 )首先应该对计算机软件有一个正确的认识; ( 2 )更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目; ( 3 )应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法; ( 4 )应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。(1 )1968 年NATO 会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。 ( 2 )1993IEEE 定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 6、软件工程的本质特征 (1)软件工程关注于大型程序的构造; (2)软件工程的中心课题是控制复杂性; ( 3 )软件经常变化; (4)开发软件的效率非常重要; (5)和谐地合作是开发软件的关键; (6)软件必须有效地支持它的用户; (7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。 7、软件工程的基本原理 (1)用分阶段的生命周期计划严格管理 ( 2 )坚持进行阶段评审 (3)实行严格的(阶段性)产品控制 (4)采用现代程序设计技术 ( 5 )结果应能清楚地审查 (6)开发小组的人员应该少而精 (7)承认不断改进软件工程实践的必要性

软件工程导论试题答案

第一章 4.什么是软件工程?它与软件工程方法学有何关系? 软件过程是为了开发高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件过程定义了运用技术方法的顺序,应该交付的文档资料,为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。软件过程是软件工程方法学的3个重要组成部分之一。 2、假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果要求精确到小数点后4位。一旦实现并测试完成后,该产品将被抛弃。你打算选用哪种软件生命周期模型?说明你做出选择的理由。 该软件的要求很明确,实现开平方算法的功能也很成熟,因此既无需通过原型来分析需求也无需用原型来验证设计方法。此外,一旦实现并测试完成后,该产品将被抛弃,因此无需使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。 综上所述,为了开发这个软件,使用瀑布模型就可以了。 8.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本的开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么? 答:对这个项目的一个重要要求是,严格按照已对外公布的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。 这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得出三点结论:第一,旧版本想当于一个原型,通过收集用户对旧版本的反应,较容易确定对新版本的需求,没有必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对子处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版本字处理软件所需要的技术水平;第三,该软件收到广大用户的喜爱,今后很可能还要开发更新版本,因此,应该把该软件的体系结构设计成开放式,以利于今后的改进和扩充。 综上所述,采用增量模型来完成这个项目较恰当。 第三章 3.29 用Jackson图描绘下述的一列火车的构成: 一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电器机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。 答:jackson图善于描绘复杂事物的组成。用jackson图描绘一列火车的构成的方法至少有两种,一种方法是把火车分为一个车头和两个车头两类,另一种方法是把后车头作为可选的。图3.29给出了描绘一列火车的构成的jackson图。

相关文档
最新文档