当前位置:文档之家› 本科软件工程第4章

本科软件工程第4章

第4 章软件编码 

4.1 程序设计语言的特征及选择 4.2 程序设计风格 

返回主目录

第4章软件编码

4.1 程序设计语言的特性及选择 

4.1.1程序设计语言特性 

1. 心理特性 

程序设计语言经常要求程序员改变处理问题的方法,使这种处理方法适合于语言的语法规定。而程序是人设计的,人的因素在设计程序时是至关重要的。语言的心理特性指影响程序员心理的语言性能,许多这类特性是作为程序设计的结果而出现的,虽不能用定量的方法来度量,但可以认识到它在语言中的表现形式如下: 

(1) 歧义性:指程序设计语言通常是无二义性的,编译程序总是根据语法,按一种固定方法来解释语句的,但有些语法规则容易使人用不同的方式来解释语言,这就产生了心理上的二义性。 

/X2·X3,编译系统只有一种解释,但人们却有如:X=X

1

/X2)·X3,而另一个人可能理解不同的理解,有人理解为X=(X

1

/(X2·X3)。又如FORTRAN语言中变量的类型有显式为X=X

1

定义和隐式定义两种,用REAL K显式说明K是实型变量,但按隐含类型定义,K是整型变量。在程序较长时,不可能每次都查类型定义,容易产生错误。若程序语言具有这些使人心理上容易产生歧义性的特征,则易使编程出错,而且可读性也差。

/X2·X3,编译系统只有一种解释,但人们却如:X=X

1

有不同的理解,有人理解为X= (X

/X2)·X3,而另一个人可能

1

/(X2·X3)。又如FORTRAN语言中变量的类型有理解为X=X

1

显式定义和隐式定义两种,用REAL K显式说明K是实型变量,但按隐含类型定义,K是整型变量。在程序较长时,不可能每次都查类型定义,容易产生错误。若程序语言具有这些使人心理上容易产生歧义性的特征,则易使编程出错,而且可读性也差。

(2) 简洁性:指人们必须记住的语言成分的数量。人们要掌握一种语言,就要记住语句的种类、各种数据类型、各种运算符、各种内部函数和内部过程,这些成分数量越多,简洁性越差,人们越难以掌握。但特别简洁也不好,有的语言(如APL)为了简洁,提供功能强但形式简明的运算符,允许用最少的代码去实现很多的算术和逻辑运算。可是这样使程序难以理解,一致性差。所以既要简洁又要易读易理解。 

(3) 局部性和顺序性:指人的记忆特性有两方面即联想方式和顺序方式。人的联想力使人能整体地记住和辨别某件事情,如一下子就能识别一个人的面孔,而不是一部分一部分地看过之后才认得出;的顺序记忆提供了回忆序列中下一个元素的手段,如唱歌,依次一句一句地唱出,而不必思索。

人的记忆特性对使用语言的方式有很大的影响。局部性指语言的联想性,在编码过程中,由语句组合成模块,由模块组装成系统结构,并在组装过程中实现模块的高内聚,低耦合,使局部性得到加强,提供异常处理的语言特性,则消弱了局部性。若在程序中多采用顺序序列,则使人易理解,如果存在大量分支或循环,则不利于人们的理解。 

(4) 传统性:指人们习惯于已掌握的语种,而传统性容易影响人们学习新语种的积极性,若新语种的结构、形式与原来的类似,还容易接受,若风格根本不同,则难以接受,如习惯用Pascal或C的编程人员,用Lisp和Prolog编程,就要用更多的时间来学习。 

2. 工程特性 

从软件工程的观点、程序设计语言的特性着重考虑软件开发项目的需要,因此对程序编码有如下要求:

(1) 可移植性:指程序从一个计算机环境移植到另一个计算机环境的容易程度,计算机环境是指不同机型、不同的操作系统版本及不同的应用软件包。要增加可移植性,应考虑以下几点:在设计时模块与操作系统特性不应有高度联系;要使用标准的语言,要使用标准的数据库操作,尽量不使用扩充结构;对程序中各种可变信息,均应参数化,以便于修改。 

(2) 开发工具的可利用性:指有效的软件开发工具可以缩短编码时间,改进源代码的质量。目前,许多编程语言都嵌入到一套完整的软件开发环境里。这些开发工具为:交互式调试器、交叉编译器、屏幕格式定义工具、报表格式定义工具、图形开发环境、菜单系统和宏处理程序等。 

(3) 软件的可重用性:指编程语言能否提供可重用的软件成分,如模块子程序可通过源代码剪贴、包含和继承等方式实现软件重用。可重用软件在组装时,从接口到算法都可能调整,需考虑额外代价。 

(4) 可维护性:指源程序的可维护性对复杂的软件开发项目的重要性,如易于把详细设计翻译为源程序、易于修改需要变化的源程序。因此,源程序的可读性、语言的文档化特性对软件的可维护性具有重大的影响。

3. 技术特性 

语言的技术特性对软件工程各阶段有一定的影响,特别是确定了软件需求之后,程序设计语言的特性就显得非常重要了,要根据项目的特性选择相应特性的语言,有的要求提供复杂的数据结构,有的要求实时处理能力强,有的要求能方便地进行数据库的操作。软件设计阶段的设计质量一般与语言的技术特性关系不大(面向对象设计例外),但将软件设计转化为程序代码时,转化的质量往往受语言性能的影响,可能会影响到设计方法。如Ada, Smalltalk, C++等支持抽象类型的概念,Pascal, C等允许用户自定义数据类型,并能提供链表和其他数据结构的类型。

这些语言特性为设计者进行概要设计和详细设计提供了很大的方便。在有些情况下,仅在语言具有某种特性时,设计需求才能满足。如要实现彼此通信和协调的并发分布式处理,要用并发Pascal,Ada, Modula-2等语言才能用于这样的设计。语言的特性对软件的测试与维护也有一定的影响。支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护。 

4.1.2程序设计语言的选择 

为开发一个特定项目选择程序设计语言时,必须从技术特性、工程特性和心理特性几方面考虑。在选择语言时,从问题入手,确定它的要求是什么,以及这些要求的相对重要性。由于一种语言不可能同时满足它的各种需求,所以要对各种要求进行权衡,比较各种可用语言的适用程度,最后选择认为是最适用的语言。 

1. 项目的应用领域 

项目应用领域是选择语言的关键因素,有下列几种类型。

 1) 科学工程计算 

该计算需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有: 

(1) FORTRAN语言:是世界上第一个被正式推广应用的计算机语言,产生于1954年,经过FORTRAN 0到FORTRAN Ⅳ,又相继扩展为FORTRAN 77,FORTRAN 90,通过几个版本不断的更新,使它不仅面向科学计算,数据处理能力也极强。

 (2) Pascal语言:产生于60年代末,具有很强的数据和过程结构化的能力,它是第一个体现结构化编程思想的语言,由于它语言简明、数据类型丰富、程序结构严谨,许多算法都用类Pascal来概括。用Pascal语言写程序,也有助于培养良好的编程风格。 

(3) C语言:产生于70年代初,最初用于描述UNIX操作系统及其上层软件,后来发展成具有很强功能的语言,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符。此外还具有汇编语言的某些特性,使程序运行效率高。 

(4) PL/1语言:是一个适用性非常广泛的语言,能够适用于多种不同的应用领域,但由于太庞大,难以推广使用,目前一些PL/1的子集被广泛使用。 

2) 数据处理与数据库应用 

数据处理与数据库应用可供选用的语言如下: 

(1) Cobol语言:产生于50 年代末,是广泛用于商业数据处理的语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开,数据描述与算法描述分开,结构严谨层次分明,说明采用类英语的语法结构,可读性强。 

(2) SQL语言:最初是为IBM公司开发的数据库查询语言,目前不同的软件开发公司有了不同的扩充版本,如80 年代后期我国引入Informix-SQL, Microsoft-SQL可以方便地对数据库进行存取管理。

(3) 4GL语言:称为第4代语言,随着信息系统的飞速发展,原来的第2代语言(如FORTRAN,Cobol)第3代语言(如Pascal, C等)受硬件和操作系统的局限,其开发工具不能满足新技术发展的需求,因此,在70年代末,提出了第4代语言的概念,4GL的主要特征是:

①友好的用户界面:指操作简单,使非计算机专业人员也能方便地使用它。 

②兼有过程性和非过程性双重特性:非过程性指语言的抽象层次又提高到一个新的高度,只需告诉计算机“做什么”,而不必描述“怎么做”,“怎么做”的工作由语言系统运用它的专门领域的知识来填充过程细节。

③高效的程序代码:指能缩短开发周期,并减少维护的代价。 

④完备的数据库:指在4GL中实现数据库功能,不再把DBMS(数据库管理系统)看成是语言以外的成分。 

⑤应用程序生成器:能提供一些常用的程序来完成文件维护、屏幕管理、报表生成和查询等任务,从而有效提高软件生产率。 

目前流行的Fox公司的FoxPro,Uniface公司的Uniface, Powersoft公司的Power Builder, Informix公司的Informix-4GL以及各种扩充版本的SQL等都不同程度地具有上述特征。 

3) 实时处理 

实时处理软件一般对性能的要求很高,可选用的语言有: (1) 汇编语言:是面向机器的,它可以完成高级语言无法满足要求的特殊功能,如与外部设备之间的一些接口操作。 

(2) Ada语言:是美国国防部出资开发的,主要用于适时、并发和嵌入系统的语言。Ada语言是在Pascal基础上开发出来的,但其功能更强、更复杂。它提供了一组丰富的实时特性,包括多任务处理、中断处理、任务间同步与通信等,它还提供了许多程序包供程序员选择。通过修订,已成为安全、高效和灵活的面向对象的编程语言。 

4) 系统软件 

如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。 

5) 人工智能 

如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别、机器人视角及自然语言处理等人工智能领域内的系统,应选择的语言如下:

(1) Lisp: 是一种函数型语言,产生于60年代初,它特别适用于组合问题中的符号运算和表处理,因此用于定理证明、树的搜索和其他问题的求解。近年来Lisp广泛应用于专家系统的开发,对于定义知识库系统中的事实、规则和相应的推理相对要容易一些。 

(2) Prolog: 是一种逻辑型语言,产生于70年代初,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的子句组成,比较接近于自然语言,符合人的思维方式。 以上讨论的语言,一般适用于相应的应用领域,但要根据具体情况灵活掌握。有的语言功能强,适用的范围较广,但比较庞大。 

2. 软件开发的方法 

有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发(详见第7章),要求能快速实现原型,因此宜采用4GL。如果是面向对象方法,宜采用面向对象的语言编程。近年来,推出了许多面向对象的语言,这里主要介绍以下几种: (1) C++:是由美国AT&T公司的Bell实验室最先设计和实现的语言,它提供了面向对象类的定义、继承、封装和消息传递等概念实现的手段,又与C语言兼容,保留了C语言的许多特性,维护了大量已开发的C库、C工具以及C源程序的完整性,使编程人员不必放弃自己熟悉的C语言,只需补充学习C++提供的那些面向对象的概念,因而从C过渡到C++比较容易,加之它的运行性能较高,成为当今最受欢迎的对象语言之一。

目前,除了常用的AT&T C++, Turbo C++, Borland C++及Microsoft C++等版本外,又推出了Microsoft Visual C++, 充分发挥Windows和Web的功能。 

(2) Java: 是由Sun公司开发的一种面向对象的、分布式的、安全的、高效的及易移植的语言,它的基本功能类似于C++,但做了重大修改,不再支持运算符重载、多继承及许多易于混淆和较少使用的特性,增加了内存空间自动垃圾收集的功能,使程序员不必考虑内存管理问题。Java应用程序可利用语言提供的例程库,能够自由地打开和访问网络上的对象。 

软件工程部分课后练习题答案

第一章 1.计算机系统是由计算机硬件系统和软件系统这两个密不可分的部分组成的。 2.计算机软件系统通过运行程序来实现各种不同应用,包括用户为自己的特定目的编写的程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等。 3.在软件工程学中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。 4.在软件工程层次结构中,包括工具层、方法层、过程、技术层和质量保证层。 5.在面向对象概念中,消息传递是其与外部世界相互关联的唯一途径。 第三章 1.软件需求分析,可以把软件功能和性能的总体概念描述为具体的软件需求规格说明,进而建立软件开发的基础。 2.软件需求工作基本上包括收集用户、市场等方面对项目的需要,经过分析建立解题模型,细化模型,抽取需求。 3.结构化分析方法的基本步骤是采用由顶向下对系统进行功能分解,画出分层数据流图;由后向前定义系统的数据和加工,绘制数据词典和加工说明;最终写出软件需求和规格说明书。 4.面向对象分析方法总是从理解系统的“使用实例”开始,基本步骤是:定义系统的用例,在领域分析的基础上建立问题域的类(对象模型),然后开始建立对象——关系和对象——行为模型。 5.需求分析评审过程由以下5个步骤组成:规划、准备、召开审查大会、修改缺陷、重审。 第四章 1.与软件需求分析一样,软件设计也有两种主要设计方法:以结构化设计为基础的结构化软件设计和面向对象方法指导的面向对象软件设计。 2.传统的软件设计任务通常分两个阶段完成。第一个阶段是概要设计,包括体系结构设计

和接口设计,并编写概要设计文档;第二阶段是详细设计,其任务是确定各个软件的数据结构和操作,产生描述各软件组件的详细设计文档。 3.结构化的软件设计方法是一种面向数据流的设计方法,在面向数据流的方法中,数据流是考虑一切问题的出发点。 4.在数据流图中所代表的结构化设计模型中,所有系统均可纳入两种典型的形式,因此系统结构图也有两种类型:变换型系统结构图,事务型系统结构图。 5.Jackson表示法包括图形描述(Jackson图)和文本描述(Jackson伪代码)两种形式。 第五章 1.与结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,应用数据设计(对象属性设计)、接口设计(消息模型开发)以及过程设计(子系统级设计)。 2.当两个子系统相互通信时,可以建立客户机/服务器连接或端对端连接。 3.系统设计不仅包括主要的业务需求子系统设计,还包括用户界面子系统设计、任务管理子系统设计、数据管理子系统设计。 4.对象设计强调从问题域的概念转换成计算机领域的概念,通过对象的描述、算法和数据结构设计、程序构件和接口,实现相关的类、关联、属性和操作。 5.在面向对象设计中系统设计的主要目标是表示软件体系结构。对象设计着重于对象及其交互的描述 第八章 1.软件程序测试的目的是发现程序中的错误,其主要任务是通过在计算机上执行程序,暴露

最新软件工程(第五版)-习题及答案---第四章资料

一、判断题 1、(√)如果在需求分析阶段采用了结构化分析方法,则软件设计阶段就应采用结构化设计方法。 2、(√)概要设计与详细设计之间的关系是全局和局部的关系。 3、(×)一个模块的作用范围应该大于该模块的控制范围。 4、(√)模块间的耦合性越强,则模块的独立性越弱。 5、(×)在设计模块时,应使一个模块尽量包括多个功能。 6、(√)软件结构图可以利用数据流图映射出来。 7、(×)结构化设计是一种面向数据结构的设计方法。 8、(√)在结构化设计过程中首先要确认DFD。 二、选择题 1、软件结构图的形态特征能反映程序重用率的是(C)。 A、深度 B、宽度 C、扇入 D、扇出 2、概要设计的目的是确定整个系统的(B)。 A、规模 B、功能及模块结构 C、费用 D、测试方案 3、耦合是对软件不同模块之间互连程度的度量。各种耦合从强到弱的排列为(C)。 A、内容耦合,控制耦合,数据耦合,公共环境耦合 B、内容耦合,控制耦合,公共环境耦合,数据耦合 C、内容耦合,公共环境耦合,控制耦合,数据耦合 D、控制耦合,内容耦合,数据耦合,公共环境耦合 4、当一个模块直接使用另一个模块的内部数据时,这种模块之间的耦合为(D)。 A、数据耦合 B、公共耦合 C、标记耦合 D、内容耦合 5、数据耦合和控制耦合相比,则(B)成立。 A、数据耦合的耦合性强 B、控制耦合的耦合性强 C、两者的耦合性相当 D、两者的耦合性需要根据具体情况分析

6、衡量模块独立性的标准是(D)。 A、耦合的类型 B、内聚的类型 C、模块信息的隐藏性 D、耦合性和内聚性 7、如果某种内聚要求一个模块中包含的任务必须在同一段时间内执行,则这种内聚为(A)。 A、时间内聚 B、逻辑内聚 C、通信内聚 D、信息内聚 8、为了提高模块的独立性,模块内部最好是(C)。 A、逻辑内聚 B、时间内聚 C、功能内聚 D、通信内聚 9、在结构化设计方法中,下面哪种内聚的内聚性最弱(C)。 A、逻辑内聚 B、时间内聚 C、偶然内聚 D、过程内聚 10、软件设计是把(A)转换为软件表示的过程。 A、软件需要 B、系统分析 C、数据库 D、软件代码 11、概要设计的主要成果是(C)。 A、用户的界面需求 B、用户的分析方案 C、概要设计说明书 D、系统总体方案 12、数据结构设计也是概要设计的重要内容,主要是进行数据的(A)设计。 A、逻辑 B、存取 C、用户视图 D、索引 13、概要设计与详细设计衔接的图形工具是(B)。

软件工程第4章习题

1、软件需求包括3 个不同的层次:业务需求、用户需求、功能需求和非功能需求 2、举例说明什么是功能需求和非功能需求 3、软件需求工程的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型 4、目标系统的具体物理模型是由当前系统的具体物理模型经过哪些环节转换得到的。 5、数据流图的作用是什么?它有哪些基本成份? 〖解〗数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。 数据流图的基本成份有4种: 某银行的计算机储蓄系统功能是:将储户的存户填写的存款单或存款单输入系统,如果是存款,系统记录存款人姓名﹑住址﹑存款类型﹑存款日期﹑利率等信息,并打印出存款单给储户;如果是取 款,系统计算清单给储户。请用DFD。 6、描述加工逻辑有哪些工具?

答:加工逻辑的描述:一般用结构化语言,判定表,判定树 加工逻辑描述为,如果申请者的年龄在21岁以下,要额外收费;如果申请者是21岁以上并是26岁以下的女性,适用于A类保险;如果申请者是26岁以下的已婚男性,或者是26岁以上的男性,适用于B类保险;如果申请者是21岁以下的女性或是26岁以下的单身C类保险。附此之外的其他申请者都适用于A类保险。 7、什么是结构分析方法?该方法使用什么描述工具? 答:结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。 8、快速原型模型有几种,各有什么特点? 答:快速原形模型根据原型的不同作用,有三类原型模型: (1)探索型原型:把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性, 并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发者对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。 (2)实验型原型:主要用于设计阶段,考核实现方安是否合适,能否实现。对于一个大型系统,若 对设计方案心中没有把握时,可通过这种原型的开发来证实设计方案的正确性。 (3)演化型原型:它将原型思想扩展到软件开发的全过程,就是及早向用户提交一个原型系统,在得到用户认可后,将原型系统不断扩充演化为最终的软件系统。 9、面向对象分析模型由三个独立的模型构成: 由用例和场景表示的功能模型; 用类和对象表示的分析对象模型; 由状态图和顺序图表示的动态模型。 10、在分析对象模型中的对象类分为哪三种类型。

软件工程课后作业第四章.doc

第四章 4.1.简述软件设计阶段的基本任务。 答:(1)数据/类设计数据/类设计将分析类模型变换成类的实现和软件实现所需要的数据结构。 (2)体系结构设计体系结构设计定义了软件的整体结构,由软件部件、外部可见的属性和他们之间的关系组成。 (3)接口设计接口设计描述了软件内部、软件和协作系统之间以及软件同人之间的通信方式。 (4)部件级设计部件级设计将软件体系结构的结构性元素变换为对软件部件的过过程性描述。 4.2.软件设计与软件质量的关系是怎么样的? 答:设计是在软件开发中形成质量的阶段,设计提供了可以用于质量评估的软件表示,是将用户需求准确地转化为完整的软件产品或系统的主要途径。 4.4.简述模块、模块化及模块化设计的概念。 答:模块:具有名字、参数、功能等外部特征以及完场模块功能的程序代码和模块内部数据等特征。 模块化:把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。 模块化设计:简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来, 并定义和调试好各个框架之间的输入、输出链接关系。 4.5.举例说明每种类型的模块耦合度和每种类型的模块内聚度。 答:1、巧合内聚:讲几个模块中没有明确表现出独立功能的相同程序代码段独立出来建立的模块称巧合内聚模块。 2、逻辑内聚:逻辑内聚是指完成一组逻辑相关任务的模块,调用该模块时,由传送给模 块的控制性参数来确定该模块应执行哪一种功能。 3、时间内聚:时间内聚是指一个模块中的所有任务必须在同一时间段内执行。 4、过程内聚:过程内聚是指一个模块完成多个任务,这些任务必须指定的过程执行。 5、通信内聚:通信内聚是指一个模块内所有处理元素都集中在某个数据结构的一块区 域中。 6、顺序内聚:顺序内聚是指一个模块完成多个功能,这些功能又必须顺序执行 7、功能内聚:功能内聚是指一个模块中各个部分都是为完成一项具体功能而协同工作, 紧密联系,不可分割。 1、内容耦合:当一个模块直接修改或操作另一个模块的数据,或者直接转入另一 个模块时 ,就发生了内容耦合。此时 ,被修改的模块完全依赖于修 改它的模块。如果发生下列情形 ,两个模块之间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重叠(只可能出现在汇编语言中); (4) 一个模块有多个入口。

软件工程全部习题答案

软件工程全部习题答案。(2003-5-31 19:55:00) 第九章 1、渐增模型有那几种特点 答:增量构造和演化提交。增量构造是瀑布模型的基础上在一些的阶段中采用增量开发一些阶段整体开发。演化提交是在瀑布模型的基础上所有阶段都使用增量开发也就是不紧使用增量开发也使用增量提交。 2、快速原形有那几种特点 答:探索型、试验型、演化型。探索型:在需求阶段帮助明确理解需求用完抛弃。试验型:在设计阶段考核现行方案是否合适用完抛弃。演化型:及早的向用户展示一个系统的原形包含主要的功能得到用户的认可后将原形不断的扩充直到系统完成。 3、快速原形开发的步骤 答:快速开发、需求、构造原形、原形、运行原形、评价原形、修改意见。 4、评价快速原形的优缺点 答:可以更清楚的理解用户的需求、开发阶段可以用原形解决局部的困难,通过原形的开发可以让用户看见系统的初步功能的实现有利与用户的开发人员更好的交流,及早的解决存在的问题减少开发的风险。 缺乏好的管理工具和开发环境、缺乏管理机制、对开发人员的技术要求高、更新文档比较困难。 5、对比瀑布模型和增量模型,指出增量模型的新思路。 答:瀑布模型是一种整体的开发模型,开发的每一阶段必须按线性的顺序来进行,前一阶段的工作没有完成后一阶段的工作就不能开始。由于需求分析的易变性使的软件开发工作不顺利,同时瀑布模型的每个阶段有不可避免的错误出现,那么延伸到以下的各个阶段错误就会放大。增量模型是非整体开发的模型它采用渐增模型和原形模型,软件的开发是用增量开发和增量提交。 第八章 1、软件维护有那些内容 答:校正性维护、完善性维护、适应性维护、预防性维护 2、软件维护的特点 答:结构性维护、非结构性维护、别人的程序难懂、开发和维护在人员和时间上的差异、文档的不一致性、维护不是一项吸引人的工作 3、软件维护的流程 答:制定维护申请报告、审查申请报告并批准、实施维护并做记录、复审 4、软件维护的副作用 答:代码副作用、数据副作用、文档副作用 5、什么是软件的可维护性可维护性度量的特性 答:是能够别理解、适应、校正和增强功能的容易程度。可理解、可适应、可测试、可修改、可靠、可移植可使用、效率。 6、提高可维护性的方法 答:使用有可维护性的程序设计语言、及时更新文档、使用先进技术和工具、明确软件质量目标、明确质量保证工作。 第七章 1、软件测试的目的是测试中要注意那些原则 答:软件测试的目的是的发现软件中存在错误的活动。好的测试用例可以发现至今没有发现的错

现代软件工程第四章答案

习题四参考答案 1. 交互设计具体采用什么方法进行?有哪些设计手段和过程? 交互设计使用目标导向的设计方法,包括角色设计、目标设计、任务设计和人性化设计等几种方法。其中角色设计是虚构软件的潜在用户并进行精确的定义和设计,目标设计是提炼角色的目标,任务设计是角色为达到某个目标而必须执行的任务进行简洁的描述,也就是进行行为设计,最后进入界面设计阶段。 交互设计的手段 首先考虑什么人会使用产品?用在什么地方?接下来要了解用户会有些什么样的行为?交互设计的关键在于如何优化用户与产品之间的交互,从而使产品满足用户的期望。在做选择的时候你应当有所依据,而这个依据就是对用户的理解。这就涉及到: 考虑人们擅长什么、不擅长什么。 考虑什么可能对用户的当前做法有所帮助。 考虑如何提供高质量的用户体验。 听取人们想要些什么,并让他们参与设计。 在设计过程中,让用户来尝试和验证。 交互设计的过程 一般来说,交互设计涉及以下4项基本活动: (1)理解用户需要,建立用户需求 开发人员必须了解谁是目标用户、他们需要哪些支持,才可能设计出能支持这些用户的产品。首先找到真正的用户,然后从他们那里找到需求。用户和他们的需求是所有设计、开发工作的基础。在“以用户为中心”的方法中,这个活动是“万物之源”。简而言之,在这个阶段开发人员需要知道:用户想要什么,开发人员要做什么。 (2)开发一些候选设计方案 这是设计的核心活动,也就是提出满足用户需求的构思。它可以划分为两个子活动:概念设计和物理设计。所谓概念设计就是用一种用户能够理解的方式去描述产品应该做些什么、如何运作、外观如何;而物理设计考虑的则是产品的细节,包括要使用的色彩、声音和图像,还有菜单设计和图标设计。这些设计构思都需要提出各种候选方案,从而制作出原型以供评估。这个阶段其实就是:试试该如何来做。 (3)制作设计方案的原型 评价一个交互设计的最佳方法,就是让用户与产品进行交互,让用户去感受。这就要求开发人员要把设计方案转化为可以交互的版本,或者说产品的原型。 这些原型并不一定必须是能够运行的真正软件版本,可以采用很多技术来实现所谓的“交互”。比如说,制作纸张原型(把步骤画在纸片上并口头为用户演示)就又快捷又便宜,而且能在设计的早期阶段就发现问题。这个阶段概括来说就是:先简单地做个样子出来。 (4)用户测试和评估 开发者需要让用户来检验产品或软件。用一句简单的话来概括这个阶段也就是:让用户看看这个设计行不行。测试也需要重复进行。这个相互联系并且重复进行的特征被称为“迭代”,是交互设计过程的关键特征之一。测试的目的是要保证产品是可用的。因为不同的用户有不同的需要,开发人员需要相应地设计不同类型的产品。 为用户“度身订造”产品或服务,这一点通常可以采用“以用户为中心”的设计方法来实现。UCD方法要一切以用户的最终感受为出发点,让用户参与整个设计过程。同时,为 了验证产品确实能够满足用户,你也需要通过测试和评估来进行判断。

第四章软件工程测试题

第四章测试题 1.在软件的体系结构中,模块是可组合、分解和更换的单元。模块具有________、________、_______和__________等属性。 2.软件结构的设计是以__________为基础的,以需求分析的结果为依据,从实现的角度经进一步划分为_________,并组成模块的_________。 3.在大型数据处理系统的功能分析与设计中,同时要进行数据分析和数据设计。数据库的”概念设计”与”逻辑设计”分别对应于系统开发中的__________与_________,而数据库的”物理设计”与模块的_________相对应。 4.进入了设计阶段,要把软件”做什么”的_________变换为”怎么做”的_________。 5.在软件需求分析阶段,已经搞清楚了软件_________的问题,并把这些需求通过________描述出来,这也是目标系统的___________。 6.模块间耦合高低取决于模块间_________、_________及________。 7.内聚性有七种类型(),(),(),(),(),(),()。 8.耦合是指软件系统结构中_________相互联系紧密程度的一种度量。其耦合性就越强,模块的________就越差。 9.结构图的深度指结构图________,也是模块________,结构宽度指_________。10.软件结构使用的图形工具,一般采用( )图。 A.DFD B.PAD C.SC D.ER 11.属于软件设计的基本原理是( )。 A.数据流分析设计 B.变换流分析设计 C.事务流分析设计 D.模块化 12.将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是( )的。 A.逻辑性 B.瞬时性 C.功能性 D.通信性 13.结构分析方法就是面向( )自顶向下逐步求精进行需求分析的方法。 A.目标 B.数据流 C.功能 D.对象 14.下列几种耦合中,( )的耦合性最强。 A.公共耦合 B.数据耦合 C.控制耦合 D.内容耦合 15.( )数据处理问题的工作过程大致分为三步,即取得数据、变换数据和给出数据。 A.变换型 B.事务型 C.结构化 D.非结构化 16.在对数据流的分析中,主要是找到中心变换,这是从( )导出结构图的关键。 A.数据结构 B.实体关系 C.数据流图 D.E-R图 17.内容耦合指( )。 A.两个模块之间传递的是数据结构 B.一个模块调用另一个模块时,传递的是控制变量 C.通过一个公共数据环境相互作用的那些模块间的耦合 D.一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部

软件工程第四章

软件工程作业三 1、简述软件设计阶段的主要工作内容。 答:(1)概要设计:将软件需求转化为系统结构(程序结构、接口)和数据结构。通过仔细分析软件需求规格说明,确定组成系统的模块及各模块之间的关系, 设计出完成预定功能的模块结构(软件结构),并建立接口。 (2)详细设计:详细地设计每个模块,即确定完成每个模块功能所需要的算法和数据结构。 2、软件设计过程中,如何运用模块化原理? 答:用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。逐步求精的结果是得到一系列以功能块为单位的算法描述。以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。 3、什么是模块独立性?软件设计中,如何提高模块独立性? 答:含义:模块独立性是指模块内部各部分之间、以及模块之间关系的一种度量标准。模块软件结构中的每个模块完成一个相对独立的特定子功能,并且和其它模块的接 口是简单的。 提高方法:改进软件结构,通过分解或合并模块,降低耦合、提高内聚。 4、简述结构化程序的基本特征。 答:一个程序的代码块仅仅通过顺序、选择和循环三种控制结构进行连接;并且每个代码块只有一个入口和一个出口。 5、商场商品信息管理系统的主要功能为:库房管理员负责商品的存储,及时录入商品的入/出库信息,系统处理商品的变更情况并保存到相关文件,系统定期打印库房商品的库存清单给采购部。前台销售员负责商品销售,录入商品销售信息,系统处理并保存商品销售信息、为顾客打印购货清单。销售经理可以查询商品销售情况、商品库存情况,并得到相应的统计报表。 下面是表示商品信息管理系统功能的数据流图,请分析数据流图的类型,设计软件结构图并简述相应的设计步骤。

软件工程作业1-4 章答案

软件工程作业1(第1~4章) 一、选择题: 1.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)。 A.软件工程 B.软件周期 C.软件危机 D.软件产生 2.瀑布模型本质上是一种(A)模型。 A.线性顺序 B.顺序迭代 C.线性迭代 D.早期产品 3.瀑布模型存在的问题是(B)。 A.用户容易参与开发B.缺乏灵活性C.用户与开发者易沟通 D.适用可变需求 4.螺旋模型是一种将瀑布模型和(A)结合起来的软件开发模型。 A.增量模型B.专家系统C.喷泉模型D.变换模型 5.原型化方法是用户和设计者之间执行的一种交互构成,适用于(A)系统。 A.需求不确定性高的 B.需求确定的C.管理信息 D.实时 6.下列有关软件工程的标准,属于国际标准的是( C ) A.GB B.DIN C.ISO D.IEEE 7.结构化方法是一种基于(D)的方法。 A.数据结构 B.程序结构 C.算法 D.数据流 ------------------以上为第一章知识点---------------------------------------- 8.软件可行性研究实质上是要进行一次( A)需求分析、设计过程。 A、简化、压缩的 B、详细的 C、彻底的 D、深入的 9.可行性研究的目的是(D) A、分析开发系统的必要性 B、确定系统建设的方案 C、分析系统风险 D、确定是否值得开发系统 10.设年利率为i,现存入p元,不计复利,n年后可得钱数为(C)。 A、P×(1+i*n) B、P× (i+1)*n C、p×(1+i)n D、p×(i+n) 11.可行性研究是在(A)之前 A、系统开发 B、测试 C、试运行 D、集成测试 12.可行性研究需要的时间长短取决于系统的规模,一般来说,可行性研究的成本只是预期总成本的 (C)。 A、1% B、20% C、8% D、50% 13.我国正式颁布实施的(B)对计算机病毒的定义具有法律性、权威性。 A.《计算机软件保护条例》 B.《中华人民共和国计算机信息系统安全保护条例》

软件工程导论第四章

1:软件工程思想决定了软件工程的策略和方法 2:管理学的佐证: 管理中心从物本管理到人本管理,经济人(物质) 社会人(人有社会 需求,需要和睦相处,需要完全) 3:由智力活动所决定: 尊重软件团队的每一个人,调动每一个人的工作激情和创造能力, 发挥每个人的潜力 4:软件工程是知识工程:知识工程的管理就是一种人性化的管理和全员参与的管理,组织 的价值需要每个人的价值体现出来 5:软件危机:软件是高科技的智力产品,需要很高的创造性,但还是不能抹去其工业性软件质量问题直接危害到人们的生命财产、会造成国家经济的严重损失,企 业会为此付出很大的代价 艺术可以定义为“人类以创造美为主要目的的技术及其产品” 6:向传统工业学习: 客户为导向需求分析是基础过程决定结果持续改进过程 缺陷预防围绕项目开展工作验证和确认缺一不可以架构设计 为中心 7:客户为导向:客户为导向就是以客户为中心,将客户的需求、期望和关心作为组织管理 的活动原则和价值准则,充分体现了“以客户为关注焦点”的原则客户为导向是一种文化,也是一种策略和方针。 (1)满足客户的期望 (2)超越客户的期望 (3)一切从客户出发:站在客户角度思考 (4)体现在具体过程中:分析,设计,编程 (5)让客户参与到公司的质量管理中:参与到评审;测试中;一起设计;反馈不管反面 还是正面,开发公司一定要认真考虑;听取客户业务流程 8:需求分析是基础:在传统的制造业,产品的每个新特性都是经过仔细推敲后才确定下来 表现如下:以客户为导向,最直接体现在客户需求工作之上 对需求不重视,导致软件开发的返工率很高、成本高、质量低等一系列 问题 在项目的最后阶段修正需求错误比在需求阶段修正它要多花费200倍的 代价 9:过程决定结果:质量不是检验出来的,而是构建出来的 (1)有什么流程,就有什么结果,流程决定了结果 (2)产品是构建于过程之中 (3)自动化生产线就是一个很好的例子:各个环节注重质量多年来的工业经验总结;。

软件工程--课后答案

第一章: 1.1 简述软件的定义、软件的特点和软件危机的表现。 软件的定义:软件是由计算机程序、数据和文档组成的。 软件的特点:1)抽象性,2)软件生产无明显的制造过程,3)无磨损性,4)对计算机系统的依赖性,5)软件的手工开发方式,6)软件本身复杂性,7)软件的高成本软件危机的表现:1)软件开发周期大大超过规定日期,2)软件开发成本严重超标,3)软件质量难于保证。 1.2 什么是软件工程和软件工程化? 软件工程: 软件工程化:把软件工程理论应用到软件开发组织中,以改进软件产品开发的时间(T)、质量(Q)、成本(C)和服务(S)。 1.3简要说明软件工程三要素与质量关注点之间的关系。 软件工程的三要素:方法、工具和过程。关系看P4 1.4如何构造软件过程? 软件过程构造时首先应建立一个公共过程框架,其中定义了少量可用于所有项目的框架活动;再给出各个框架活动的任务集合,使得框架活动能够适合于项目的特点和项目组的需求;最后是保护性活动。 1.5什么是软件生存周期?软件生存周期分为哪几个阶段?各阶段的任务是什么? 软件生存周期:是软件产品或软件系统从设计、投入使用到被淘汰的全过程。 软件生存周期:定义、开发、维护。 1)定义:包括问题定义、可行性研究和需求分析。 2)开发时期包括设计、编码和测试。 3)维护时期包括维护阶段。 1.6常用的软件工程方法和开发模型各有哪些? 软件工程方法:生命周期法(又称传统方法或结构化方法)、面向对象方法和原型法。 软件开发模型:瀑布模型、快速原型模型、演化模型、面向对象模型、形式化方法模型。 1.7什么是软件工具、软件开发环境和软件工程环境? 软件工具:是用来辅助软件开发、运行、维护、管理和支持等过程中活动的软件。 1.8软件工程的基本原理: 1)按软件生存期分为阶段制定计划并认真实施。 2) 坚持进行阶段评审。 3)坚持严格的产品控制。 4)使用现代程序设计技术。 5)明确责任,使得工作结果能够得到清楚的审查。 6)人员应少而精。 7) 不断改进开发过程。 第二章: 2.3软件文档可分为哪几类?各包括哪几类文档? 软件文档可分3类。为1)开发文档,2)管理文档,3)用户文档。

软件工程课后作业第四章教学文案

软件工程课后作业第 四章

第四章 4.1.简述软件设计阶段的基本任务。 答:(1)数据/类设计数据/类设计将分析类模型变换成类的实现和软件实现所需要的数据结构。 (2)体系结构设计体系结构设计定义了软件的整体结构,由软件部件、外部可见的属性和他们之间的关系组成。 (3)接口设计接口设计描述了软件内部、软件和协作系统之间以及软件同人之间的通信方式。 (4)部件级设计部件级设计将软件体系结构的结构性元素变换为对软件部件的过过程性描述。 4.2.软件设计与软件质量的关系是怎么样的? 答:设计是在软件开发中形成质量的阶段,设计提供了可以用于质量评估的软件表示,是将用户需求准确地转化为完整的软件产品或系统的主要途径。 4.4.简述模块、模块化及模块化设计的概念。 答:模块:具有名字、参数、功能等外部特征以及完场模块功能的程序代码和模块内部数据等特征。 模块化:把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。 模块化设计:简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的 主要结构和流程描述出来,并定义和调试好各个框架之间的 输入、输出链接关系。

4.5.举例说明每种类型的模块耦合度和每种类型的模块内聚度。 答:1、巧合内聚:讲几个模块中没有明确表现出独立功能的相同程序代码段独立出来建立的模块称巧合内聚模块。 2、逻辑内聚:逻辑内聚是指完成一组逻辑相关任务的模块,调用该模块时, 由传送给模块的控制性参数来确定该模块应执行哪一种功 能。 3、时间内聚:时间内聚是指一个模块中的所有任务必须在同一时间段内执行。 4、过程内聚:过程内聚是指一个模块完成多个任务,这些任务必须指定的过程执行。 5、通信内聚:通信内聚是指一个模块内所有处理元素都集中在某个数据结 构的一块区域中。 6、顺序内聚:顺序内聚是指一个模块完成多个功能,这些功能又必须顺序执行 7、功能内聚:功能内聚是指一个模块中各个部分都是为完成一项具体功能 而协同工作,紧密联系,不可分割。 1、内容耦合:当一个模块直接修改或操作另一个模块的数据,或者直接 转入另一个模块时,就发生了内容耦合。此时,被修改的 模块完全依赖于修改它的模块。如果发生下列情形,两个 模块之间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部;

软件工程作业1-4 章答案

软件工程作业(第~章) 一、选择题: 1.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。 .软件工程.软件周期.软件危机.软件产生 2.瀑布模型本质上是一种()模型。 .线性顺序 .顺序迭代 .线性迭代 .早期产品 3.瀑布模型存在的问题是()。 .用户容易参与开发.缺乏灵活性.用户与开发者易沟通.适用可变需求 4.螺旋模型是一种将瀑布模型和()结合起来的软件开发模型。 .增量模型.专家系统.喷泉模型.变换模型 5.原型化方法是用户和设计者之间执行的一种交互构成,适用于()系统。 .需求不确定性高的.需求确定的.管理信息.实时 6.下列有关软件工程的标准,属于国际标准的是( ) 7.结构化方法是一种基于()的方法。 .数据结构 .程序结构 .算法.数据流 以上为第一章知识点 8.软件可行性研究实质上是要进行一次( )需求分析、设计过程。 、简化、压缩的、详细的、彻底的、深入的 9.可行性研究的目的是() 、分析开发系统的必要性、确定系统建设的方案 、分析系统风险、确定是否值得开发系统 10.设年利率为,现存入元,不计复利,年后可得钱数为()。 、×(*) 、× ()* 、×() 、×() 11.可行性研究是在()之前 、系统开发、测试、试运行、集成测试 12.可行性研究需要的时间长短取决于系统的规模,一般来说,可行性研究的成本只是预期总成本的 ()。 、、、、 13.我国正式颁布实施的()对计算机病毒的定义具有法律性、权威性。 .《计算机软件保护条例》 .《中华人民共和国计算机信息系统安全保护条例》

.《中华人民共和国著作权法》 .《计算机病毒防治管理办法》 以上为第二章知识 14.效率是一个性能要求,因此应当在以下哪个阶段规定? 、可行性分析、需求分析、概要设计、详细设计 15.需求规格说明书的作用不包括() 、软件验收的依据、用户与开发人员对软件要做什么的共同理解 、软件可行性研究的依据、软件设计的依据 16.数据字典是用来定义()中的各个成份的具体含义的。 、程序流程图、功能结构图、系统结构图、数据流程图 17.数据流程图是()方法中用于表示系统逻辑模型的一种图形工具。 、、、、 18.中的每个加工至少有()。 、一个输入流或一个输出流、一个输入流和一个输出流 、一个输入流、一个输出流 19.需求分析阶段的关键任务是确定() 、软件开发方法、软件开发工具、软件开发费、软件系统的功能 以上为第三章知识点 20.在方法中全面指导模块划分的最重要的原则是()。 、程序模块化、模块高内聚、模块低耦合、模块独立性 21.在模块的种基本属性中,反映模块内部特性的是()。 、接口、功能、逻辑、状态 22.模块的耦合性可以按照耦合程度的高低进行排序,以下哪一项符合从低到高的正确次序()。 、数据结构耦合,公共耦合,控制耦合,内容耦合 、数据耦合,控制耦合,数据结构耦合,公共耦合 、无直接耦合,数据结构耦合,内容耦合,控制耦合 、无直接耦合,数据耦合,控制耦合,内容耦合 23.是描述处理过程( ) 、做什么、为什么做、怎么做、对谁做 24.()工具在软件详细设计过程中不采用。 、判定表、图、、图 25.为高质量地开发软件项目,在软件结构设计时,必须遵循()原则。 .信息隐蔽、质量控制、程序优化、数据共享 26.当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为()

(完整版)软件工程课后题答案

1什么是软件危机?软件危机产生的原因是什么? 软件危机就是指人们在开发软件和维护软件过程中遇到的一系列问题。 产生的原因:<1>忽视软件开发前期的需求分析。<2>开发过程缺乏统一的、规范化的方法论的指导。<3>文档资料不齐全或不准确。<4>忽视与用户之间、开发组成员之间的交流<5>忽视测试的重要性。<6>不重视维护或由于上诉原因造成维护工作的困难。<7>从事软件开发的专业人员对这个产业认识不充分,缺乏经验。<8>没有完善的质量保证体系。 2请简述软件工程的三要素 三要素是指过程、方法和工具 软件工程的基础是过程层,它定义了一组关键过程区域的框架,使软件能过被合理和及时的开发;软件工程的方法提供了建造在在技术上需要“做什么”,它覆盖了一系列的任务,包括需求分析、设计编程、测试和支持等;软件工程的工具对过程和方法提供了自动的或半自动的支持。 3请对比瀑布模型、快速模型、增量模型和螺旋模型。 瀑布模型的优点是:过程模型简单,执行容易;缺点是无法适应变更。 快速模型的优点是:软件产品的开发基本上是按线性顺序进行的(它所完成的功能往往是最终产品能完成的功能的一个子集) 增量模型的最大特点是将待开发的软件系统模块化和组件化,优点是:将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解项目的进展;以组件为单位进行开发降低了软件开发的风险;开发顺序灵活。它的缺点是要求待开发的软件系统可以被模块化 螺旋模型的优点是对可选方案和约束条件的强调有利于已有的软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;更重的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质的区别,它的主要优势在于风险驱动但是这也可能是他的一个弱点。 4什么是软件过程?他与软件工程方法学有何不同? 软件过程:是指一个为获得高质量软件所需完成的任务的框架,它规定了软件产品开发时完成各项任务的一系列工作步骤,包括中间产品、资源、角色及过程中采取的方法、工具等范畴。 软件工程方法学:通常把在软件生命周期的全过程中的一整套技术方法的集合称为方法学,也称范型。 从这些两个定义可以看出,软件过程是软件工程方法学的一个要素而已! 5某大型企业计划开发一个“综合信息管理系统”,该系统涉及销售、供应、财务、生产、人力资源等多个部门的信息管理。该企业的想法是按照部门优先级别逐个实现,边应用。边开发。对此,需要一种比较适合的过程模型。请对这个过程模型做出符合应用需要的选择,并说明选择理由。 答:可以采用增量模型。它是瀑布模型与原型进化模型的综合,它对软件过程的考虑是:在整体上按照瀑布模型的流程实施项目开发,以方便对项目的管理;但在软件的实际创建中,则把软件系统功能分解为许多增量构件,并以构件为单位逐个创建与交付,直到全部增量构件创建完毕,并都被集成到系统之中交付用户使用。 第二章 6请简述可行性研究的内容。 可行性研究就是指在项目进行开发之前,对该项目师傅能在特定的资源。时间等制约条件下完成做出评估,并且确定他师傅值得去开发。||(评估的方面主要包括:战略可行性、操作可行性、计划可行性、技术可行性、社会可行性、市场可行性、经济可行性和风险可行性等。)

软件工程课后作业第四章

第四章 .简述软件设计阶段的基本任务。 答:(1)数据/类设计数据/类设计将分析类模型变换成类的实现和软件实现所需要的数据结构。 (2)体系结构设计体系结构设计定义了软件的整体结构,由软件部件、外部可见的属性和他们之间的关系组成。 (3)接口设计接口设计描述了软件内部、软件和协作系统之间以及软件同人之间的通信方式。 (4)部件级设计部件级设计将软件体系结构的结构性元素变换为对软件部件的过过程性描述。 .软件设计与软件质量的关系是怎么样的 答:设计是在软件开发中形成质量的阶段,设计提供了可以用于质量评估的软件表示,是将用户需求准确地转化为完整的软件产品或系统的主要途径。 .简述模块、模块化及模块化设计的概念。 答:模块:具有名字、参数、功能等外部特征以及完场模块功能的程序代码和模块内部数据等特征。 模块化:把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。 模块化设计:简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出 来,并定义和调试好各个框架之间的输入、输出链接关系。 .举例说明每种类型的模块耦合度和每种类型的模块内聚度。 答:1、巧合内聚:讲几个模块中没有明确表现出独立功能的相同程序代码段独立出来建立的模块称巧合内聚模块。 2、逻辑内聚:逻辑内聚是指完成一组逻辑相关任务的模块,调用该模块时,由传送给 模块的控制性参数来确定该模块应执行哪一种功能。 3、时间内聚:时间内聚是指一个模块中的所有任务必须在同一时间段内执行。 4、过程内聚:过程内聚是指一个模块完成多个任务,这些任务必须指定的过程执行。 5、通信内聚:通信内聚是指一个模块内所有处理元素都集中在某个数据结构的一块区 域中。 6、顺序内聚:顺序内聚是指一个模块完成多个功能,这些功能又必须顺序执行 7、功能内聚:功能内聚是指一个模块中各个部分都是为完成一项具体功能而协同工作, 紧密联系,不可分割。 1、内容耦合:当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个 模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改 它的模块。如果发生下列情形,两个模块之间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重叠(只可能出现在汇编语言中); (4) 一个模块有多个入口。

软件工程第四章习题

第四章习题 一、单项选择题(每题1分) 1.原型化方法是用户和设计者之间执行的一种交互构成,适用于______系统。 A.需求不确定性高的 B.需求确定的 C.管理信息 D.实时 2.原型化方法是一种_______型的设计过程。 A.自外向内 B.自顶向下 C.自内向外 D.自底向上 二、填空题(每题2分) 1.在JSP方法中解决结构冲突的具体办法是__________________。 2、两个模块都是用同一张表,这种耦合称为____________。 3、一个模块把数值作为参数传送给另一个模块,这种耦合方式称为_______。 4、一个模块内部各程序段都在同一张表上操作,这个模块的内聚性称为________。 5、软件项目计划是可行性研究阶段的结果产品。但由于可行性研究是在高层次进行系统分析,未能考虑软件系统开发的细节情节,因此_________一般在需求分析阶段完成后才定稿的。 6、_______指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。 7、同一个类中的共享是指同一个类中的对象有着相同的_______和相同的_______。 8、通过____,可以确定组成软件的过程实体。通过______,可以定义和实施对模块的过程细节和局部数据结构的存取限制。 9、______图描述分层图中一个模块的输入、输出和处理内容。 10、基于IDEF0图的设计也是结构化设计技术之一,它以系统的功能模型和信息结构为基础设计______。 11、________图是描述物理模型的传统工具,用图形符号表示系统中各个元素,表达了系统中各种元素之间的信息流动情况。 12、_____是用来代替被测试模块所调用的模块,它的作用是返回被测模块所需的信息。 13、静态冗余常用的有:______和________。 14、软件结构是以______为基础而组成的一种控制层次结构。 15、软件设计阶段产生的最重要的文档之一是________。 16、反映软件结构的基本形态特征是____、_____、______和______。 17、在一个模块中,功能状态与接口反映模块的_____特性,逻辑反映它的_____特性。 18、Jackson结构图能对结构进行自顶向下分解,因此可以表示_______结构。 三、名词解释题(每题3分) 1.对应关系 2.结构冲突 3、结构化设计:

软工题第四章

第四章习题 一、选择题 1. 从供选择的答案中选出应填入下列( )中的字句。 软件测试的目的是( A )。为了提高测试的效率,应该( B )。使用白盒测试方法时,确定测试数据应根据( C )和指定的覆盖标准。与设计测试数据无关的文档是( D )。 软件的集成测试工作最好由( E )承担,以提高集成测试的效果。 供选择的答案: A. ①评价软件的质量②发现软件的错误 ③找出软件中的所有错误④证明软件是正确的 B. ①随机地选取测试数据 ②取一切可能的输入数据作为测试数据 ③在完成编码以后制定软件的测试计划 ④选择发现错误的可能性大的数据作为测试数据 C. ①程序的内部逻辑②程序的复杂程度 ③使用说明书④程序的功能 D. ①该软件的设计人员②程序的复杂程度 ③源程序④项目开发计划 E. ①该软件的设计人员②该软件开发组的负责人 ③该软件的编程人员④不属于该软件开发组的软件设计人员 2. 请从供选择的答案中选出应填入下列()中的字句。 程序的三种基本控制结构是( A )。它们的共同点是( B )。结构化程序设计的一种基本方法是( C )。软件测试的目的是( D )。软件调试的目的是( E )。 供选择的答案: A. ①过程,子程序,分程序②顺序,条件,循环 ③递归,堆栈,队列④调用,返回,转移 B. ①不能嵌套使用②只能用来写简单的程序 ③已经用硬件实现④只有一个入口和一个出口 C. ①筛选法②递归法③归纳法④逐步求精法 D. ①证明程序中没有错误②发现程序中的错误 ③测量程序的动态特性④检查程序中的语法错误 E. ①找出错误所在并改正之②排除存在错误的可能性 ③对错误性质进行分类④统计出错的次数 3. 从下列关于软件测试的叙述中,选出5条正确的叙述。 (1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。

软件工程 课后习题答案复习过程

软件工程课后习 题答案

第一章 1.1什么是计算机软件?软件的特点是什么? 计算机软件是指计算机系统中的程序及其文档 软件的特点: ●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估 算。 ●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即 可,但其维护的工作量大。 ●软件的使用没有硬件那样的机械磨损和老化问题。 1.2简述软件的分类,并举例说明 1.系统软件 系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。例如:编译软件、操作系统。 2.支撑软件 支撑软件是支撑软件的开发和维护的软件。例如:数据库管理系统、网络软件、软件工具、软件开发环境。 3.应用软件 应用软件是特定应用领域专用的软件。例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。 1.3简述软件语言的分类,并举例说明。 1.需求定义语言 是用于书写软件需求定义的语言。例如:PSL/PSA。 2.功能性语言 是用于书写软件功能规约的语言,通常又称为功能规约语言。例如:广谱语言、Z 语言。 3.设计性语言 是用于书写软件设计规约的语言。例如:PDL。 4.实现性语言 也称为程序设计语言,是用于书写计算机程序的语言。例如:C、java、PROLOG、FORTRAN、COBOL、Modula。 5.文档语言 是用于书写软件文档的语言。通常用自然语言或半形式化语言书写。 1.4什么是软件工程? 软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。1.5简述软件工程的基本原则。

相关主题
文本预览
相关文档 最新文档