浙大2014冬软件工程基础离线作业.
浙江大学远程教育学院
《软件工程基础》课程作业
第一章 概 述
1(什么是软件危机,它有哪些典型表现,
答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
典型表现:(1)对软件开发成本和进度的估计常常很不准确(2)用户对“已完成的”软件系统不满意的现象经常发生(3)软件产品的质量往往靠不住(4)软件常常是不可维护的(5)软件通常没有适当的文档资料(6)软件成本在计算机系统总成本中所占的比例逐年上升(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
2(简述产生软件危机的原因和解决的思路。
答:软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
不正确有密切关系。
解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。
3(什么是软件工程,它有哪些本质特性,
答:软件工程是一门研究如何用系统化、
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
化、数量化等工程原则和方法进行软件开发和维护的学科。
其实质就是用工程的概念、原理、技术和方法,结合有效的管理方法和先进的开发技术,开发与维护软件,以解决软件危机。
4(软件工程是如何用来消除软件危机的,
答:软件工程是从技术和管理两个方面来研究如何更好地开发和维护计算机软件,从源头上消除软件危机。
5(假设你是某软件开发企业的CEO,当你把教材P.4的图1.1给手下的软件工程师们看,同时告诉他们应及早发现并改正错误的重要性时,有人不以为然,认为要求在错误进入软件前就发现并清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么又如何能够在设计阶段就发现并清除呢,”那你应该如何说服,
答:软件开发编码错误虽然无法完全避免,但是我们要掌握先进开发技术以及正确开发方法,
才能降低因某写错误引发软件危机。必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好,管理严密,各类人员协调配合,共同完成的工程项目。并且研究探索更好有效的技术与方法,尽快消除在计算机系统早期阶段形成的一下错误概念和做法,应当开发和利用更好的软件工具。为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。
6(简述软件的定义。
答:软件 , 程序 + 数据 + 文档
7(软件工程的目的是什么,
答:为高质量的软件开发提供一个科学的体系框架。
8(什么是软件工程方法学,软件工程是一种什么样的技术,包括哪三大要素,分为哪三个分支,
答:软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发技术方法的集合。目前,使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。 软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极为广泛,而分为三个分支:软件开发技术、软件项目管理技术、软件质量管理技术。
9(简述软件工程的基本原理。
答:软件工程有7条基本原理:
1(严格按照软件生命周期
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
进行管理
2(坚持进行阶段评审
3(实行严格的产品控制
4(采用先进的程序设计技术
5(结果应能清楚的审查
6(开发小组成员应少而精
7(承认不断改进软件工程实践的必要性
10(软件工程的基本开发原则有哪些,
答:软件工程的基本开发原则有:
1(模块化
2(抽象和信息隐蔽
3(模块的高内聚和低耦合
4(确定性
5(一致性
6(完备性
11(构成软件工程的基本元素有哪些,
答:除了前面给出的软件工程三大要素,还应该包括控制和质量保证。这里的控制,即规模控制、成本控制、复杂性控制等。
12(什么是软件过程,它与软件工程方法学有何关系,
答:软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动。
软件过程规定了开发软件所需完成的各项任务步骤。过程步骤的设定与软件生命周期、生命周期模型、软件开发工具,以及参与开发的人员等诸方面因素有关。
13(什么是软件生命周期,什么是软件生命周期模型,
答:软件如同自然界任何事物一样,都有其孕育、诞生、成长、成熟、衰亡的生存过程。软件的这一过程,称为软件生命周期。
软件生命周期模型也称软件开发过程模型,是为了解决产业环境中的实际问题,而提出的开发策略。是反映整个软件生命期中,系统开发、运行、维护等实施活动的一种结构框架。
14(简述软件生命周期方法学的途径,以及划分阶段步骤的目的和实质。 答:软件生命周期方法学是软件工程的传统途径,划分阶段步骤的目的和实质是:控制开发工作的复杂性,通过有限步骤,把抽象逻辑概念,转化为具体物力实现。
15(试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明它们各自的适用范围。
答:
1)瀑布模型。
瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。但问题是,往往不能够真正满足用户的需求。
适用于传统软件工程领域的结构化开发。
2)原型模型。
是为了克服瀑布模型的缺点而提出来的。通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求。
3)螺旋模型。
螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是绝对的。主要体现在对开发人员的风险评估经验和专门知识的要求较高。如果项目风险较大,而开发人员的水平较低,不能准确的识别和分析风险,则势必造成重大损失。 4)增量模型。
具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构。
第二章 可行性研究
1(在软件开发的早期阶段,为什么要进行可行性研究,其目的和任务各是什么,
答:可行性研究的目的是用最小的代价,在尽可能短的时间内确定问题是否可解决,以及是否值得解决。
可行性研究的任务不是解决问题,而是确定是否可解/值得解。
2(应该从哪些方面研究目标系统的可行性,
答:主要从以下几个方面进行可行性研究:
1)技术可行性。以现有技术,能否在预定时间内完成该系统开发。 2)经济可行性。通过成本-效益分析,估算系统的整体经济效益是否满足要求。 3)操作可行性。分析系统的运行方式、操作规程是否适应用户应用需要。 4)社会可行性。分析系统在法律、社会、市场等方面的认可度。
3(可行性研究有哪些工作步骤,
答:(1) 复查定义,确定系统规模和目标。
(2) 研究老系统
(3) 导出高层逻辑模型(conceptual design) (4) 重新定义
(5) 导出多种解法
(6) 推荐行动方针
(7) 开发计划(粗略)
(8) 审查、存档
4(简述系统流程图在可行性研究中的作用。
答:系统流程图是概括的描述物理系统的传统工具。系统流程图反映的是信息在系统各部分间流动的情况。
系统流程图可以帮助了解和分析系统,以概括的方式表达对系统的认识,并可以描述未来物理系统的概貌。
5(简述数据流图在可行性研究中的作用和用途。
答:数据流图在可行性分析中可以帮助分析和描绘数据在软件中流动和被处理的逻辑过程,用图形的方式描述系统的逻辑功能,是系统分析员和用户之间理想的通信工具。
6(简单描述数据字典但内容和定义数据的方法。
答:数据字典主要由下列4种元素定义组成:
1(数据流
2(数据流分量
3(数据存储
4(处理
除了数据定义外,数据字典还应包含一些关于数据的其它信息。
定义数据的方法通常采用自顶向下分解的方式。并由顺序、选择、重复三种基本数据元素类型组成数据。
7(说明软件计划的内容和目标。
答:软件计划的内容 , 项目任务范围 + 环境资源 + 工作量 + 进度
软件计划的目标是为了提供一个框架,以便于管理者对资源、成本和进度等进行合理的估算。
8(什么是软件范围,定义软件范围需要哪些信息,
答:软件范围就是在技术和管理层面上都是无二义性和可理解的项目范围,是软件开发各阶段的工作依据。
定义软件范围需要以下信息:
a. 与用户、总体目标及利益相关的问题。
b. 有利于系统分析员理解的问题。
c. 集中于交流效果的问题。
9(简述软件开发环境资源的三个层次。
答:软件开发环境资源由三个层次构成:开发环境、软件构件以及最重要的资源——人。
10(软件环境资源的特征有哪些,它们对制定软件计划都有哪些意义,
答:每一类资源都有四个特征:资源描述、可用性说明和资源提供的时间、资源使用的延续时间。
可以为制定软件计划估算软件开发所需的资源。
11(软件计划中,安排软件开发进度主要可以用哪些工具,都有哪些优缺点, 答:编制进度计划的常用工具主要有甘特图和网络计划法。
甘特图的优点是简单,能动态地反映开发进展;缺点是难以反映多个任务间的逻辑关系。 网络计划法则恰好弥补了甘特图的缺点,最适合反映多个工作之间的逻辑关系。
12(主要的成本估计技术有哪些,其依据的主要是什么,
答:主要有,代码行技术。
是一种基于规模的分解估算:
D=,f(vi)
以及基于问题的分解估算:
EV,(Sopt+4Sm+Spess)/6
还有功能点技术。这种技术以功能点(FP)为单位,度量软件的规模。
由于项目本身的复杂性,因此,成本估计技术主要采用―分而治之‖的分解技术对软件项目进行估算
13(为什么说成本估计是不可能精准的,
答:那是由于太多的变化因素——人员、技术、环境、策略、复杂性等等,使得成本估算永远不可能精确。
14(进行成本/效益分析的方法主要有哪些,
答:常用成本/效益分析的方法主要有:
(1) 货币的时间价值
(2) 投资回收期
(3) 纯收入
(4) 投资回收率
15(软件计划的主要内容有哪些,
答:最重要的是需求分析,然后是测试。规格说明书,其中包括程序架构、模块功能以及编码规范等,零售软件还要有发布和维护等等。
具体的计划会因为软件规模、客户要求和公司实力、风格等有所不同,但大体上就这几部分。测试是要贯穿始终的,从需求阶段就开始测试。
16(如何对制定完成的软件计划进行复审,为什么要复审,
答:软件计划的复审通常涉及有关软件工作范围和软硬件资源问题等。复审应该邀请用户参加,用户可提出建议,并与开发人员最终商定内容。复审内容分为技术和管理两个方面: 技术方面需要考虑的问题有:
系统的任务是否合理;
系统的给你复杂性是否与开发成本、进度以及风险一致;
系统规格说明书是否足够充分;
系统性能要求是否恰当
管理方面需要考虑的问题有:
计划中描述的工作范围是否符合用户需求,
计划中对资源的描述是否有效、合理,
计划中系统的开发成本与进度要求是否合理,
计划中人员的安排是否合理,
系统开发存在哪些风险,
复审可以尽早发现错误,复审是软件质量保证的重要措施。
17(为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统。如果是存款,系统记录存款人的姓名、地址、存款类型、存款日期、存款数量和利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。
请写出问题定义并分析此系统的可行性。
答:该案例是分析开发计算机储蓄系统的可行性。
技术可行性:使用现有的技术可以完成该系统
经济可行性:这个系统的经济效益可以超过它的可发成本,可以节省时间和金钱 操作可行性:系统的操作方式在这个用户组织内可以行得通
同时,此系统不违反法律,有巨大的社会效益。
第三章 需求分析
1(为什么要进行需求分析,通常对软件系统有哪些需求,
答:需求问题是软件工程项目失败的主要原因。一个高质量的软件,很大程度上取决于对要解决的问题的认识,以及如何准确的表达用户的需求。需求分析就是要解决这个问题。 通常,对一个软件系统的需求可以有功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求等多个方面。
2(怎样与用户有效地沟通,以获得用户的真实需求,
答:访谈、情景分析,以及面向数据流的自顶向下求精等方法,编制简易的系统规格说明文档,创建原型等,是获取真实需求的有效方法。
3(需求分析的任务是什么,
答:确定对待开发系统的综合要求。
4(通常系统的需求可以分为哪几个层次,
答:一般可以分成5个层次:
(1) 功能需求:系统必须做什么,
(2) 业务需求:反映客户组织机构对系统高层次的目标要求。
(3) 运行需求:运行环境、软硬件配置等。
(4) 属性需求:包括用户关心的属性,如效率、灵活性、完整性、可靠性等;开发者关心的
属性,如可维护性、可复用性、可移植性等。
(5) 未来可能的扩充需求:如HDIS各组的合并,3维虚拟现实的效果等等。
5(进行需求分析的步骤有哪些,
答:1(确定系统的综合要求
2(分析系统的数据要求
3(导出逻辑模型
4(修正系统开发计划
6(简述建立原型模型对软件需求分析的作用。
答:可以快速构建旨在演示目标系统主要功能的可运行程序,帮助用户确定及提供更为精准的需求,以利用户和开发者能够在目标系统应该“做什么”这一问题上尽快达成一致。
7(解释实体-联系图及其用途。
答:实体-联系图是按照用户的观点对数据建立的模型。描述从用户角度看到的数据,反映用户的现实环境,并且与在软件系统中的实现方法无关。
8(说明为什么需要进行需求验证及验证的步骤有哪些,
答:进行需求验证是为了确保软件开发的质量,降低开发成本。通常对需求进行验证的步骤有:验证需求的一致性、验证需求的现实性、验证需求的完整性和有效性。
9(银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务人员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
请用数据流图描绘本系统的功能,并用实体,联系图描绘系统中的数据对象。
答:
电话号码 姓名
姓名 地址 电话号码
地址 身份证号码
MN 储蓄所 储户 存取款
数额 类型 到期日期 利率 密码
第四章 总体设计
1(为每种类型的模块耦合举一个具体的例子。
答:构成耦合性的七种类型
一般模块之间可能的连接方式有七种,构成耦合性的七种类型。它们之间的关系为(由弱到强)。
1)非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。
2)数据耦合(Data Coupling)
如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。由于限制了只通过参数表传递数据,按数据耦合开发的程序界面简单、安全可靠。因此,数据耦合是松散的耦合,模块之间的独立性比较强。在软件程序结构中至少必须有这类耦合。 3)印记耦合(Stamp Coupling)
如果一组模块通过参数表传递记录信息,就是标记耦合。事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。这要求这些模块都必须清楚该记录的结构,并按结构要求对此记录进行操作。在设计中应尽量避免这种耦合,它使在数据结构上的操作复杂化了。如果采取―信息隐蔽‖的方法,把在数据结构上的操作全部集中在一个模块中,就可以消除这种耦合。
4)控制耦合(control Coupling)
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。耦合的实质是在单一接口上选择多功能模块中的某项功能。因此,对所控制模块的任何修改,都会影响控制模块。另外,控制耦合也意味着控制模块必须知道所控制模块内部的一些逻辑关系,这些都会降低模块的独立性。
5)外部耦合(External Coupling)
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。例如C语言程序中各个模块都访问被说明为extern类型的外部变量。外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
6)公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。 这种耦合会引起下列问题:
?所有公共耦合模块都与某一个公共数据环境内部各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块。
?无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性。 ?公共数据名的使用,明显降低了程序的可读性。[Page]
公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两个模块之间有公共数据环境,则公共耦合有两种情况;若一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据,则这种公共耦合叫做松散公共耦合。若两个模块都从公共数据环境中取数据,又都向公共数据环境里送数据,则这种公共耦合叫做紧密公共耦合。只有在模块之间共享的数据很多,且通过参数表传递不方便时,才使用公共耦合。否则,还是使用
模块独立性比较高的数据耦合好些。
7)内容耦合(Content Coupling)
又称病态耦合。如果发生下列情形,两个模块之间就发生了内容耦合。
?一个模块直接访问另一个模块的内部数据;
?一个模块不通过正常入口转到另一模块内部;
?两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
一个模块有多个入口。 ?
在内容耦合的情形,所访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出错。好在大多数高级程序设计语言已经设计成不允许出现内容耦合。它一般出现在汇编语言程序中。这种耦合是模块独立性最弱的耦合。
2(为每种类型的模块内聚举一个具体的例子。
答:内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
一、低内聚:
(1)偶然内聚:如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散 的,这就叫做偶然内聚;
(2)逻辑内聚:如果一个模块完成的任务在逻辑上属于相同或相似的一类(例如,一个模块产生各种类型的全部输出),称为逻辑模块;
(3)时间内聚:一个模块包含的任务必须在同一段时间内执行(例如,模块完成各种初始化工作),就叫时间内聚。
二、中内聚:
(1)过程内聚:如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚;
(2)通信内聚:如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚。
三、高内聚:
(1)顺序内聚:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据),则称为顺序内聚。根据数据流图划分模块时,通常得到顺序内聚的模块,这种模块彼此间的连接往往比较简单。 (2)功能内聚:如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。功能内聚是最高程度的内聚。
3(简单说明系统总体设计的步骤步骤。
答:典型的总体设计包括以下9个步骤:
1、确定最佳
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
2、选取合理方案
3、推荐最佳方案
4、功能分解
5、软件结构设计
6、设计数据库
7、制定测试计划
8、书写文档
9、审查和复审
4(举例说明模块化原理的经验1和经验2。
答:(1)改进软件结构提高模块独立性(2)模块规模应该适中(3)深度、宽度、扇出和扇入都应该适当(4)模块的作用域应该在控制域之内(5)力争降低模块接口的复杂程度(6)设计单入口和单出口的模块(7)模块功能应该可以预测。
5(为什么要尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合,
答:减少模块之间的关联度,提高模块的独立性。
因为内容耦合会导致一个模块修改另一个模块的内容,使得程序逻辑发生严重问题。 而公共耦合是若干模块通过一个公共数据环境相互作用,公共部分的改动将影响所有调用它的模块,公共部分的数据存取无法控制,并且复杂程度也会随耦合模块的个数增加而增加。 控制耦合是一个模块通过传递开关、标志、名字等控制信息,明显地控制选择另一个模块的功能。由于接口单一,因此仍然会影响被控模块的内部逻辑。
而数据耦合只是模块间通过数据参数来交换I/O信息,因此不会对其它模块产生任何等影响。
6(为什么模块的规模要适中,
答:过大不易理解;太小则接口开销过大。
7(请说明为什么模块控制的宽度和深度要适度。
答:深度过大表示分工过细,而宽度过大则表示系统复杂度大,所以模块控制的宽度和深度要适度。
8(简述面向数据流设计方法的基本思想。
答:将由数据流图描绘的信息在系统中加工和流动的情况映射成软件结构。
9(常用数据流类型有哪些,
答:变换流和事务流。
10(面向数据流的设计方法主要有哪几个步骤,
答:主要有下面7个步骤:
1(复查基本系统模型
2(复查并精化数据流图
3(确定数据流图具有变换特性还是事务特性
4(确定输入流和输出流动边界,从而孤立出变换中心
5(完成“第一级分解”
6(完成“第二级分解”
7(使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。
第五章 详细设计
1(详细设计的任务是什么,
答:包括模块的算法设计、模块内的数据结构设计、模块接口设计、其它根据软件特点需要
完成的设计、模块测试用例设计、设计文档编写、设计评审。
2(在对系统做详细设计时,应遵循哪些原则,
答:? 模块的逻辑描述应清晰易读、正确可靠; ? 设计的处理过程应该简明易懂;
? 选择恰当的描述工具来描述模块算法。
3(简述结构化设计的特点。
答:? 自顶向下、逐步求精;
? 具有单入、单出的控制结构(取消GOTO语句)。
4(结构化程序设计中有哪几种基本控制结构,分别描绘在程序流程图、盒图和
PDA图中这些基本控制的图例。
答:
(1) 顺序结构
(2) 选择结构
(3) 先判定型循环结构
(4) 后判定型循环结构
(5) 多情况选择
5(假设只有SEQUENCE和DO_WHILE两种控制结构,请问应该如何完成
IF_THEN_ELSE操作,
答:转化如下:
K=1
DO WHILE (条件 .AND.K.EQ.1)
程序块 1
K=K+1
END DO
DO WHILE((.NOT.条件).AND. K.EQ.1)
程序块2
K=K+1
END DO
6(假设只有SEQUENCE和IF_THEN_ELSE两种控制结构,请问应该如何完成DO_WHILE操作,
答:转化如下:
Label: IF(条件) THEN
程序块
GOTO label
ELSE
程序块
END IF
7(试说明ISO为什么要建议停止使用程序流程图,而推荐使用PDA图,
答:由于程序流程图中的GOTO语句回严重地损害程序结构,而无法实行结构化设计。PDA图则既吸取了程序流程图好学、好用、好懂,方便、灵活的优点,又保留了N-S图结构化设计的特点,很好地满足了软结构构设计图形工具的要求,以及PDA图所具有的? 结构清晰,层次分明,易读;? 支持逐步求精的设计思想;? 容易将PAD自动转换为高级语言源程序等特点,因此,ISO要推荐使用PDA图
(请画出下列伪码程序的程序流程图、盒图和PDA图。 8
START
IF p THEN
WHILE q DO
f
END DO
ELSE
BLOCK
g
n
END BLOCK
END IF
STOP
答:流程图:
开始
P
q循环WHILE p g
n f
Q循环
停止 该程序的盒图
9(试说明Jackson方法是一种怎么样的程序设计方法。它有哪些工作步骤,
答:Jackson方法是以数据结构(data structure)为基础设计每个模块的处理过程,将数据结构转化成程序结构。具体工作步骤有:
第1步:用Jackson图描述 I\O 的数据结构
第2步:在两个图中指出有直接因果关系、可以同时处理的单元
第3步:将数据结构映射到程序结构
第4步:列出所有操作条件,并分配到上幅程序结构图中
第5步:用Pseudocode 表示程序
10(请将教材P.124图6.13统计空格程序的Jackson图改画成为等价的盒图和PDA图。
11(人机对话由操作员信息和系统信息交替组成。假设一段对话总是由操作员信息开始,以系统信息结束,请用Jackson图描绘这样的一段人机对话过程。
A A
S(i)* *
B C D B C* D*
a A A
S(i)
I(i) B -* B
C
第六章 实现
1( 说明什么是程序编码,为什么程序设计语言的特点和编码风格会影响到程
序的可靠性、可读性、可测试性和可维护性,
答:所谓―编码‖,就是将在低级抽象层次得到的详细设计结果,翻译成用某种程序设计语言书写的程序。是软件设计的自然结果。
而程序设计语言是否有理想的结构化、模块化机制,是否有可读性好的控制结构和数据结构等特性,以及程序设计语言提供的编译、软件工具等,再加上程序的设计风格会很深刻的影响软件的质量和可维护性、可测试性、可靠性等。
2(用户界面设计的最一般原则,即所谓“黄金规则”是什么,
答:1.置用户于控制之下;2.减少用户的记忆负担;3.保持界面一致。
3(软件界面设计包含了哪几个方面的基本内容,
答:界面设计包括三个方面:1.软件构件间接口;2.软件与其它系统的接口。
4(用户界面提供系统服务的方式通常有哪两种,
答:命令驱动和屏幕菜单驱动。
5(WIMP界面是屏幕菜单驱动用户界面的一种形式,其设计准则有哪些, 答:
(1) 明确的动作:在屏幕上指点并操纵对象;
(2) 即时反馈:操作结构即见;
(3) 增量效应:图标应被拖曳连续移动,而非跳跃;
(4) 可视交互:交互操作与用户概念模型匹配;
(5) 剥皮式学习:学习系统功能复杂性逐层加深;
(6) 可逆动作:也即应有退回操作;
(7) 事先验证:只允许合法操作产生效果。
6(为什么说软件界面设计的质量会直接影响到用户对软件产品的评价,
答:用户界面(User-interface)又称人机界面(man-computer interface),是用户和计算机联系的中间媒介,是系统中最重要、最关键的部分之一。用户界面设计的好坏,直接影响到系统设计的成败。
这是因为,如果一个界面设计的不好,也即通常所说的用户界面不友好,可以使用户在使用时感到不便,甚至制造麻烦,系统就难以发挥应有的效益,甚至可能被用户弃用。
7(什么是系统响应时间,系统响应时间有哪些重要属性,
答:系统响应时间指从用户完成某个控制动作,到系统给出预期响应的时间。 系统响应时间有2个重要的属性:长度和易变性。
8(在设计软件系统的用户帮助设施时,需要注意解决哪些问题,
答:1(在用户与系统交互期间,是否任何时候都能获得关于系统任何功能的帮助信息,
2(用户怎样请求帮助,
3(怎样显示帮助信息,
4(用户怎样返回到正常的交互方式中,
(怎样组织帮助信息, 5
9(软件出错处理设计,即软件安全性设计。一个交互式出错处理程序应该具备
哪些功能和属性,
答:
1(信息应该使用用户可以理解的术语描述。
2(信息应该提供有助于从错误中恢复的建设性意见。 3(信息应该指出错误可能导致的后果。
4(信息应该伴随感官提示。
5(信息不能带有指责色彩。
10(测试的最基本目标是什么,
答:以尽可能小的代价,发现尽可能多的错误。
11(软件测试的原则有哪些,
答:
? 应当把―尽早和不断的测试‖作为座右铭
? 测试应由独立的专业测试机构来完成
? 测试工作要全面,但不可能实现―穷举‖
? 只能尽可能查错,不能证明程序中没有错
? 软件测试符合2-8(Pareto)原理
? 应妥善保存测试文档
? 制定严格、合理的测试计划
? 错误经过修改后,相关的测试必不可少
12(软件测试的方法有哪几种,
答:黑盒测试和白盒测试。
13(简单说明什么是白盒测试,什么是黑盒测试。
答:黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程的测试方法。
黑盒测试又称功能测试。
白盒测试是对程序的执行细节进行测试,通过设计测试数据,验证程序模块的每个路径的执
行情况。白盒测试又称结构测试。
14(简述软件测试的步骤。
答:
(1) 单元测试 —— 程序设计 & 代码bugs
(2) 子系统测试 —— 模块连接
(3) 系统测试 —— 需求确认 & 系统设计
(4) 验收测试 —— 用户加入
(5) 平行运行 —— 新旧系统比较运行结果
15(举例说明通常情况下穷尽测试是不可能的。
答:穷尽的测试,真正的意思是,在测试完毕之后,测试员知道在系统里没有残留着任何未知的bug。因为如果有未知的bug,那么你可以通过做更多的测试来找到他们,你的测试也就还没有穷尽。
举一个很简单的例子,有代码如下:
Input A //The program accept any integer into A and B
Input B
Print A/B
在这个例子中,我们可以轻易地让覆盖率达到100%。
我们令A=2 B=1,则覆盖了此程序所有语句,也覆盖了所有分支。
但是这样的测试并不完整,或者说并没有穷尽, 很显然这里令B=0的时候,程序不可避免地会出错。也就是说这段程序里,遗漏了当B=0时需要如何处理的代码。前面提到过的,代码的遗漏,这种问题通过覆盖率根本无法发现。
16(为什么单元测试必须由编程者自己完成,
答:单元测试是对程序逻辑结构的测试。而对程序结构最为熟悉的,莫过于编程者。再者,高质量的程序模块是构造系统的基础,因此编程者必须向下一道工序提交符合质量要求的产品。
17(单元测试的主要手段有哪些,
答:代码审查、计算机测试等。
18(单元测试主要从哪5个方面进行,
答:主要测试以下五个方面:
1. 模块接口
2. 局部数据结构
3. 重要的执行通路
4. 出错处理通路
5. 边界条件
19(为什么人工代码审查十分重要,
答:一次审查可发现多个错误,不必改一个测一个。
20(集成测试主要有渐增式测试、非渐增式测试两种,试述两种方式的异同点。 答:
1)渐增式测试:可以较早发现模块间的接口错误、出现的错误往往跟最新加入的模块有关、在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底,但较非渐增式测试费时。
2)非渐增式测试由于最后才组装,因此错误发现得晚、发现错误后难以诊断定位,但可以同时并行测试所有模块,能充分利用人力。
21(描述集成测试的两种策略,并比较它们的优缺点。
答:自顶向下测试和自底向上测试两种。
自顶向下测试的优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,在早期发现上层模块的接口错误。主要缺点是需要存根程序,可能遇到与此相联系的测试困难,底层模块的错误发现较晚,而且对人力的使用也不利。
而自底向上测试的优缺点与自顶向下测试的优缺点正好相反。
22(什么是回归测试,回归测试的测试用例集如何确定,
答:回归测试是指重新执行已经做过的测试的某个子集,以保证系统在发生调试、功能变化等事项后,没有带来非预期的副作用。
回归测试的测试用例集按以下方法确定:
1(检测软件全部功能的代表性测试用例。
2(专门针对可能受修改影响的软件功能的附加测试。
3(针对被修改过的软件成分的测试。
23(什么是确认测试,确认测试的任务是什么,如何确认其范围,
答:验收软件的有效性(功能和性能达标)。
确认测试的工作范围主要有:
1)按合同规定审查软件配置;
2)设计测试计划,使通过测试保证软件能满足所有功能、性能要求;
3)文档与程序一致,具有维护阶段所必须的细节;
4)严格按用户手册操作,以检查手册的完整性和正确性。
24(设计测试方案的任务有哪些,
答:
?预定要测试的功能
?设计输入的测试数据
?列出预期结果
25(什么是逻辑覆盖测试法,它主要用于什么测试,
答:逻辑覆盖测试是一种对程序逻辑通路进行覆盖的测试,通常适用于白盒测试。
26(什么是等价划分法,它主要用于什么测试,
答:是一种很常用的测试方法。其对测试数据的选择是基于对程序功能的分析,按照程序输入要求和输出要求,选择若干数据进行测试功能的过程。
等价划分法主要用于黑盒测试。
27(什么是边值分析法,它主要用于什么测试,
答:根据经验,在程序处理的边界最容易发生错误的地方进行测试,主要用于黑盒测试。
28(什么是错误推测法,它主要用于什么测试,
答:利用有经验的测试者对程序可能发生错误的位置的推测进行测试的方法,主要用于黑盒测试。
29(一个软件的测试策略应该是怎样的,
答:黑盒设计 , 白盒补充
? 在任何情况下都应首先使用边界值分析的方法;
? 必要时用等价划分法补充;
? 必要时再用错误推测法补充;
? 对照程序逻辑,检查测试方案。
30(什么是调试,调试和测试有什么不同,
答:
测试 —— 发现错误
调试 —— 改正错误
调试与测试的区别在于,调试作为测试的后续工作,主要是解决和排除测试中出现的错误。
31(简单说明调试的方法和策略。
答:调试过程的关键不是调试技术,而是用来推断错误原因的基本策略。主要有: ? 试探法:凭经验猜测。
? 回溯法:由症状(symptom)最先出现的地方,沿control flow向回检查。适用于小型程序。 ? 对分法:在关键点插入变量的正确值。
? 归纳法:从错误症状中找出规律,推断根源。
? 演绎法:普通 , 特殊
32(什么是软件的可靠性、可用性和正确性,
答:
软件可靠性是指程序在给定的时间间隔内,按照说明书的规定,成功地运行的概率。 软件可用性是指程序在给定的时间点,按照说明书的规定,成功地运行的概率。 软件正确性是指程序的功能正确。
第七章 维护
1(什么是软件维护,
答:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
2(软件维护有哪几种类型,
答:
?改正性维护:诊断和改正错误;
?适应性维护:为了和变化了的环境(如软\硬件升级、新数据库等)适当地配合而修改软件; ?完善性维护:为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件; ?预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。
3(为什么说软件文档维护和代码维护同样重要,
答:这是因为,软件文档是影响软件可维护性的决定因素。
4(为什么说维护的代价很高,应该怎样做才能降低维护的代价,
答:一般维护的工作量占生存周期70%以上,维护成本约为开发成本的4倍(满足8-2规则)。维护代价分为:
1)有形代价:费用已上升至总预算的80%;
2)无形代价:
? 占用资源以致延误开发;
?修改不及时引起用户不满;
?维护引入新错误,降低了软件质量;等等。
3)维护工作量的经验模型:M = P + K*ec-d
降低维护代价的通常认识是:提高程序的可维护性,这也是软件工程学的主要目的。
5(导致维护成本高企的原因主要有哪些,
答:软件开发途径不好,导致软件可维护性差,原来的开发人员没有参与维护,维护成本日益高涨等,从维护工作量的经验模型可以看到,维护工作量和成本将呈指数增加。
6(什么是软件的可维护性,
答:软件可维护性可定性地定义为:维护人员理解、改正、改动和改进这个软件的难易程度。
7(如何提高软件的可维护性,
答:可以从提高决定软件可维护性的因素着手,这些因素是:可理解性、可测试性、可修改性、可移植性、可重用性、可靠性、可使用性、效率等。
8(维护报告的主要内容有哪些,
答:
(1)满足维护要求表中提出的要求所需要的工作量;
(2)维护要求的性质;
(3)这项要求的优先次序;
(4)与修改有关的事后数据。
9(为什么说文档是影响软件可维护性的决定因素,
答:由于长期使用的软件系统在使用过程中会有多次修改的经历,而文档应该记载了这些重要的修改,所以文档比之代码更为重要。
10(什么是软件的系统文档,
答:系统文档是指软件系统从问题定义、需求说明、设计、实现到验收测试计划等一系列和系统实现密切相关的技术文档。
11(什么是软件的用户文档,
答:提供用户了解、使用、操作和安装系统的文档资料。
12(什么是可重用性,如何通过提高软件的可重用性来提高软件的可维护性,
答:可重用性是指同一事物不加修改或稍加修改,就可以在不同环境多次重复使用。大量使用可重用软件构件,可大幅提高软件的可维护性。主要体现在两个方面: 1)可重用构件通常都是组装成功的部件,加上每次重用又都会进一步完善部件,因此可以大幅提高软件的可靠性,而改正性维护要求会降低;。
2)很容易修改可重用的软件构件,使之适应新的应用环境,因此软件中使用可重用构件越多,软件的适应性维护和完善性维护也越容易。
13(为什么要进行软件可维护性复审,
答:目的是提高软件的可维护性。
可维护性复审在软件开放的不同阶段有不同的重点。例如,在分析阶段的复审重点是:可靠性、可移植性、可用性。而编码阶段则主要是:可理解性、可修改性、可移植性和效率。
14(什么是软件的逆向工程和再工程,
答:软件逆向工程是指当维护对象缺乏必要的文档资料时,分析已有程序,寻求比源代码更高级的抽象表现形式,恢复软件原有设计的过程。换言之,是一个恢复设计的过程。 软件再工程则是以软件工程学为指导,对目标软件进行重新设计、重新编码和测试的过程。
15(逆向工程与再工程与软件的预防性维护有什么样的关系,
答:预防性维护是为了改进软件未来的可维护性或可靠性,或为了给软件未来的改进奠定更好的基础而修改软件的过程。
预防性维护就是对软件将来可能需要的改动,使用逆向工程与再工程方法对软件进行维护。
16(假设你的任务是对一个已有软件进行重大修改,而且只允许你从以下文档中选取两份:(a)程序的规格说明;(b)程序的详细设计结果(自然语言描述加上某种设计工具表示);(b)源程序清单(其中有适当数量的注解)。
你将选取哪两份文档,为什么这样选取,你打算如何完成这个任务,
答:应该选择(a)程序的规格说明和(b)程序的详细设计结果。
因为是重大修改,所以需要从修改程序规格说明和详细设计开始,对开发文档进行重大修改,而源码也会需要重新编制。
17(分析预测在第二章习题17的储蓄系统交付使用后,用户可能提出哪些改进或扩充功能的要求。如果由你来开发该系统,你在设计时会采取哪些措施,以方便交付后的修改,
答:扩充短信提醒功能,定期转账功能。
第八章 面向对象方法学引论
1(为什么要引入面向对象方法学,
答:
1)瀑布模型的缺点:僵化
2)SA - SD - SP 技术的缺点:本质上是基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差。
2(面向对象方法学有哪4个基本要素,
答:对象、类、继承、消息
2( 面向对象方法学的优点主要有哪些,
3(
答:
1)以object为核心,强调对现实概念的模拟而不是算法。
2)以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。
3)一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的 class 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。
4)从稳定性、Class 的独立性强、继承和多态性、容易理解、容易测试、调试等几方面改善了可维护性。
4(什么是“对象”,它与传统数据有何不同,
答:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,可以表示为:对象Object: = 身份ID + 方法Method + 属性Attribute+ 消息Message。
与传统数据相比,对象有以下特点:
? 以数据为中心,不设与数据无关的操作;
? Object主动处理而不 被动地等待被处理,外部只能通过message请求操作; ? 具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法; ? 具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;
? 模块独立性好:内聚强( ? )、耦合松( ? ? )
5(什么是“类”,
答:具有相同数据和相同操作的一组对象。
6(什么是“继承”,
答:子类自动共享父类的attributes 和methods ,而不必重复定义。
7(什么是模型,软件开发为什么要建立模型,
答:模型就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。 软件开发建立模型是为了帮助我们思考问题、定义术语、作出适当的假设,并帮助我们保持定义和假设的一致性。
对于较为复杂而不能直接理解的系统,特别需要建立模型,其目的是可以减少复杂性。
8(什么是对象模型,建立对象模型时主要使用哪些图形符号,这些符号的含义是什么,
答:描述系统数据结构。
对象模型具体是描述系统的静态结构。
9(什么是动态模型,建立动态模型时主要使用哪些图形符号,这些符号的含义是什么,
答:描述系统控制结构。
动态模型具体是表示系统瞬时的控制性质。
10(什么是功能模型,建立功能模型时主要使用哪些图形符号,
答:描述系统功能。
功能模型具体描述的是表明系统应该做什么。
11(试用面向对象的观点分析、研究第二章习题17的储蓄系统的例子。在这个例子中,有哪些类,试建立它的对象模型。
第九章 面向对象分析
1(进行面向对象分析的基本过程是怎么样的,
答:需求陈述 , 快速原型 , 模型 其中模型 有三个:对象模型、动态模型、功能模型。
2(建立对象模型有哪几个步骤, 答:1)确定类与对象:
第1步:列出所有候选对象
第2步:去粗取精;
2)确定关联 , 结构层
第1步:收集
第2步:筛选删除
第3步:完善;
3)划分主题;
4)确立属性;
5)识别继承关系及其它修改。
(复杂问题的对象模型有哪5个层次, 3
答:主题层、类&对象层、结构层、属性层、服务层。
4(建立动态模型的步骤有哪些, 答:
1)编写脚本,描述事件序列:
事件 = 触发器 + 接收器 + 参数 2)设想用户界面, 修改原型. 3)画事件跟踪图
4)画状态图
4( 如何建立功能模型,
答:
1)画出基本系统模型图;
2)画出功能级数据流图;
3)描述处理框功能.
6(用面向对象方法分析第二章习题17中描述的储蓄系统,试建立它的对象模型、
动态模型和功能模型。
答:对象模型
动态模型
1、编写脚本
设想用户界面
画出事件跟踪
画出动态图
审查动态模型
功能模型
画出基本系统模型图
画出功能级数据流图
描述处理框功能
第十章 面向对象设计
1(面向对象设计应该遵循哪些准则,简述每条准则的内容,并说明遵循该条准则的必要性。
答:
1)模块化;
2)抽象。抽出事物的本质特性, 暂不考虑其细节,使设计从具体实现方法中超脱。包括程序抽象、数据抽象、参数抽象;
3)信息隐蔽。对象封装;
4)弱耦合。包括交互耦合、继承耦合;
5)强内聚。包括服务内聚、类内聚、一般-特殊内聚;
6)可重用。是提高软件开发生产率和目标系统质量的重要途径。
2(简述有助于提高面向对象设计质量的每条主要启发式规则的内容和必要性。 答:1)设计结果清晰易懂,应做到:
? 用词一致 —— 按习惯用法命名。不同类中相似的方法最好取同一名字; ? 使用已有的
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
;
? 尽量减少消息模式的数目;
? 避免模糊定义。
2)一般-特殊结构的深度应适当(约100个类,则设计7?2层);
3)设计简单的类(定义不超过一页纸或两屏)。应注意:
? 避免过多属性;
? 能用简单的语句描述一个类的任务;
? 对象之间合作关系要简单;
)。 ?避免过多方法(, 7个
4)使用简单的协议,减少消息中传递的参数;
5)使用简单的方法(CASE 可考虑用 继承替代);
6)把设计变动减至最小。
3(为什么说类构件是目前较为理想的可重用软构件,它有哪些重用方式,
答:具备可重用的软构件应有的特点:独立、可塑、接口清晰(文档详尽) 重用方式有:实例重用、继承重用和多态重用。
4(什么是继承耦合,
答:继承是一般化类和特殊类之间耦合的一种形式。从本质上看,通过继承关系结合起来的基类和派生类,构成了系统中粒度更大的模块。因此,与交互耦合相反,继承的耦合程度会更高。
5( 如何计算软件重用带来的净成本节省,
答:软件重用带来的净成本节省可以用下式估计:C=Cs – Ct – Cd,其中,Cs是项目从头开发(没有重用)时所需要的成本,Ct是与重用相关联的成本,Cs是交付给客户的软件的实际成本。
第十一章 面向对象实现
1(面向对象实现应该选用哪种程序设计语言,为什么,
答:应该选择能够更完整、更正确地表达问题域语义的面向对象语言。这是由于面向对象语言相对非面向对象的语言,其突出的优点:一致的表示方法、可重用性、可维护性。
2(面向对象程序设计语言主要有哪些技术特点,
答:面向对象语言的技术特点主要有:
1)支持类与对象概念的机制;
2)实现整体—部分结构的机制;
3)实现一般—特殊结构的机制;
4)实现属性和服务的机制;
5)类型检查;
6)类库;
7)效率;
8)持久保存对象;
9)参数化类;
10)开发环境。
3(选择面向对象程序设计语言时主要应该考虑哪些因素,
答:主要应该着重考虑以下因素:将来能否占主导地位、可重用性、类库和开发环境、其他因素等。
4(良好的面向对象程序设计风格主要有哪些准则,
答:提高可重用性、提高可扩充性、提高健壮性。
5(测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点, 答:
1)单元测试是在类层面上的测试。由于继承和复合,类(或对象)在很多情况下已不再是单
纯意义上的单个操作了。因此,具体的测试将在所有与该操作有关的每个子类语境中
进行。
2)集成测试由于面向对象软件中类的成分的直接和间接交互,使得传统测试方法已经失去
意义。因此有两种策略可供选择:基于线程的测试和基于使用的测试。 3)确认测试与传统确认测试一样,仍然关注于用户可见的动作和用户可识别的系统输出,
但是,基于场景的测试总是主宰面向对象系统的确认测试。
6(测试面向对象软件时,主要有哪些设计单元测试用例的方法,
答:随机测试、划分测试和基于故障的测试。
7(测试面向对象软件时,主要有哪些设计集成测试用例的方法,
答:多类测试、从动态模型中导出测试用例。也可以采用随机测试、划分测试的方法。
8(测试面向对象软件时,主要有哪些设计确认测试用例的方法,
答:可以采用传统的黑盒方法,也可以采用基于情景的方法。
第十二章 项目管理
1(请简单描述有哪些进行软件规模估算的方法。
答:代码行技术和功能点技术。
2(在工作量估算技术中,动态多变量模型比静态单变量模型有哪些优点,
答:可以更精确地进行估算,估算结果更切合被估算对象的实际。
3(简述Gantt图的用途和优缺点。
答:优点:简单,能动态地反映开发进展。
缺点:难以反映多个任务间的逻辑关系。
4(简述关键路径法CPM工作步骤
答:
(1) 标出持续时间 Lasting Time
(2) 标出最早开始 时间EST: = 从起点始,所有进入事件的 EST+LT 中最大的
(3) 标出最迟开始时间 LST: = 从终点(EST = LST)始,所有离开事件的 LST,LT 中最
小的
(4) 标出机动时间 ST: = 终点LST , 起点EST , LT
(5) 标出关键路径Critical Path: 即EST = LST的所有事件组成的路径
5(目前项目开发时常用的小组组织方法有哪些,
答:民主制程序员组、主程序员组和现代程序员组。
6(简述主程序员组的优缺点。
答:优点主要有:主程序员广播式发布工作要求,组织管理好、效率高、质量容易保证、
成本相对较低。
缺点主要有:人员完整配备较难、不利人才脱颖而出。并且,能够在技术和管理两方
面都能同时具备优秀品质的主程序员更不多见。
7(什么是软件质量,
答:软件质量就是软件与明确及隐含的需求相一致的程度。
8(软件质量保证的措施主要有哪些,
答:
? 审查:由组长、作者、2位评审员(与评审结果有利害关系的)组成审查小组,进行发
现、记录错误的工作,并复查返工结果;
? 复查和管理复审:从技术、管理两方面进行的复查工作;
? 测试。
9(参加软件质量保证活动的人员有哪两类,
答:可以分为两类:参与软件开发的技术人员,以及负责任软件质量保证活动的SQA小组
成员。
10( 简述技术复审的必要性。
答:技术复审能够较早发现软件错误,防止错误被带入到软件过程的后期阶段,从而大大
降低后续开发和维护的成本。
11( 什么是软件能力成熟度模型,其基本思想是什么,
答:软件能力成熟度模型是用于评价软件开发机构的软件过程能力成熟度的模型,其基本
思想是,采用能力成熟度模型来帮助软件开发机构建立一个有规律的、成熟的软件过
程,以开发出质量更好的软件,免受时间和成本超支之苦。
12( 简述软件能力成熟度模型的5个等级。
答:
(1)初始级;
(2)可重复级;
(3)已定义级;
(4)已管理级;
(5)优化级。
书中横卧着整个过去的灵魂——卡莱尔
人的影响短暂而微弱,书的影响则广泛而深远——普希金
人离开了书,如同离开空气一样不能生活——科洛廖夫
书不仅是生活,而且是现在、过去和未来文化生活的源泉 ——库法耶夫
书籍把我们引入最美好的社会,使我们认识各个时代的伟大智者
———史美尔斯
书籍便是这种改造灵魂的工具。人类所需要的,是富有启发性的养
料。而阅读,则正是这种养料———雨果