软件工程第三版答案
【篇一:软件工程课后答案】
>1.1什么是计算机软件?软件的特点是什么?
答:计算机软件指计算机系统中的程序及其文档。
软件的特点是:
a 软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确得估算;
b 软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大;
c 软件的使用没有硬件那样的机械磨损和老化问题。
1.2 简述软件的分类,并举例说明。
答:在《计算机科学技术百科全书》中,将软件分为系统软件、支撑软件和应用软件3类。
a 系统软件:系统软件居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。系统软件与具体的应用领域无关。例如:编译程序、操作系统等。
b 支撑软件:支撑软件是支撑软件的开发和维护的软件。例如:数据库管理系统、网络软件、软件工具、软件开发环境等。
c 应用软件:应用软件是特定应用领域专用的软件。例如:工程/科学计算软件、嵌入式软件、产品线软件、web应用软件、人工智能软件。
1.4 什么是软件工程?
答:在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。
1.5 简述软件工程的基本原则。
答:软件工程原则包括围绕工程设计、工程支持和工程管理提出的以下4条基本原则:
第一条:围绕适宜的开发模型;
第二条:采用合适的设计方法;
第三条:提供高质量的工程支撑;
第四条:重视软件工程的管理。
1.6 软件生存周期分哪几个阶段?分别简述各个阶段的任务。
答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。
a计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系
统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。
b需求分析主要解决待开发软件要“做什么”的问题,确定软件的功
能、性能、数据、界面等要求,生成软件需求规约。
c软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细设计。系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。
d编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。
e测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。
f软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。
1.9 简述各类软件过程模型的特点。
答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。
a瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是:
接受上一阶段活动的结果作为本阶段活动的输入;
依据上一阶段活动的结果实施本阶段应完成的活动;
对本阶段的活动进行评审;
将本阶段活动的结果作为输出。
b增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。
c原型模型从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建模型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下一轮迭代中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下一轮原型的迭代开发。
d螺旋模型将原型模型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,不仅体现了这两种模型的优点而且还增加了风险分析。
e喷泉模型是一种支持面向对象开发的过程模型。类及对象是面向对象方法中的基本成分。在分析阶段,标识类及对象,定义类之间的关系,建立对象-关系模型和对象-行为模型。在设计阶段,从实现的角度对分析模型进行调整和扩充。在编码阶段,用面向对象语言实现类及对
象,通过消息机制实现对象之间的通信,完成软件的功能。在面向对象方法中,分析模型和设计模型采用相同的符号表示体系,开发的各个活动没有明显的边界,各个活动经常重复,迭代地交替进行。
f基于构件的开发模型,基于构件的开发是指利用预先包装的构建来构造应用系统。构件可以是组织内部开发的构建,也可以是商业化的、现存的软件构件。
g形式化方法是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成,直至维护等各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。形式化方法用严格的数学语言和语义描述功能和设计规约,通过数学的分析和推导,易于发现需求的歧义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证。通过数学的演算,使得从形式化功能规约到形式化设计规约,以及从形式化设计规约到程序代码转换成为可能。
1.10 敏捷软件开发的特点是什么?
答:敏捷软件开发的特点有4个:
a个人和交互高于过程和工具;
b可运行软件高于详尽的文档;
c与客户协作高于合同谈判;
d对变更及时做出反应高于遵循计划。
1.12 简述敏捷软件开发的原则。
答:敏捷软件开发必须遵循的12条原则如下;
a最优先的是通过尽早地和不断地提交有价值的软件来使客户满意;
【篇二:软件工程课后习题答案】
1﹑软件产品的特性是什么? 答:软件产品特性:
⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。 ⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是定做的
⑸开发软件的费用不断增加,致使生产成本相当昂贵。 2﹑软件生产有几个阶段?各有何特征?
答:⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。
3﹑什么是软件危机?产生原因是什么?答:软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。产生原因:⑴ 软件规模越来越大,结构越来越复杂。⑵ 软件开发管理困难而复杂。⑶ 软件包开发费用不断增加。⑷ 软件开发技术落后。⑸ 生产方式落后,仍采用手工方式。⑹ 开发工具落后,生产率提高缓慢。
4﹑什么是软件工程?它目标和内容是什么?
答:软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?
答:软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。
6﹑什么是软件生存周期?它有哪几个活动?
答:软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 包括:
可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。 7﹑什么是软件生存周期模型?有哪些主要模型?
答:生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。
8﹑什么是软件开发方法?有哪些主要方法?
答:使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。通过使用成功的软件开发方法,在规定的投资和时间内,开发出符合用户需求的高质量的软件。软件开发方法是克服软件危机的重要方面之一,对软件工程及软件包产业的发展起了不可估量的作用。
主要有:结构化方法,jackson方法,维也纳开发方法﹙vdm﹚,面向对象开发方法。 第二章习题参考答案
1.可行性研究的任务是什么?
答:可行研究的任务:首先需要进行概要的分析研究,初步确定项目的规模,目标,约束和限制。分析员再进行简要的需求分析,抽象出项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的解决方法,对每种解决方法都要研究它的可行性。
主要从三个方面考虑:⑴技术可行性:一般要考虑的情况包括 开发的风险即设计出的系统
能否达到要求的功能和性能;资源的有效性;相关技术的发展是否支持;⑵经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资。⑶社会可行性:要开发的项目是否存在任何侵权问题,运行方式在用户组织内是否可行,现有管理制度﹑人员素质﹑操作方式是否可行。 2. 可行性研究有哪些步骤?
答:⑴确定项目规模和目标;⑵研究正在运行的系统;收集﹑研究﹑分析现有系统的文档资料,实地考察系统访问有关人员,然后描绘现有系统的高层系统流程图。⑶建立新系统的高层逻辑模型;使用数据流图和数据字典描述数据在系统中的流动和处理情况。⑷导出和评价各种方案;导出若干较高层次的物理解决方法,根据技术可行性﹑经济可行性﹑社会可行性进行评估,得到可行的解决方法。⑸推荐可行方案;进行成本~效益分析,决定该项目是否值得开发,若值得开发那么解决方案是什么,并且说明该方案可行的原因和理由。⑹编写可行性研究报告;将上述可行性过程的结果写成相应文档,即可行性研究报告。
3. 可行性研究报告有哪些主要内容?
答:⑴引言:编写本文档的目的;项目名称﹑背景;本文档用到的专门术语和参考资料。⑵可行性研究前提:说明开发项目的功能﹑性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。⑶对现有系统的分析:说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需各类专业技术人吧和数量;所需各种设备;向有系统存在什么问题。⑷所建议的技术可行性分析:所建议系统的简要说明;处理流程和数据流程;与现有系统比较的优越性;采用所建议系统对用户的影响;对各种设备﹑现有软件﹑开发环境﹑运行环境的影响;对经费支出的影响;对技术可行性的评价。⑸所建议系统的经济可行性分析:说明建议系统的确良各种支出,各种效益;收益投资比;投资顺收周期。⑹社会因素可行性分析:说明法律因素,对合同责任﹑侵犯专利权﹑侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理﹑工作制度﹑人吧素质的要求。⑺其它可供选择方案:逐一说明
其他可供选择的方案,并说明未被推荐的理由。⑻结论意见:说明项目是否能开发;还需什么条件才能开发;对项目目标有何变动等。
4. 成本--效益分析可用哪些指标进行度量?
答:⑴投资回收率:通常把建立系统若干年后能取得的收益折算成现在的价值和开发系统所需的费用进行比较得出投资回收率。⑵投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间。⑶纯收入:整个生存周期之内的累计经济效益(折成现在值)与投资之差。 5. 项目开发计划有哪些内容?
答:⑴项目概述:说明项目的各项主要工作;说明软件的功能﹑性能;为完成项目应具有的条件;用户及合同承包者承担的工作完成的期限及其他条件限制;应交付的程序名称;所使用的语言及程储形式;应交付的文档。⑵实施计划:说明任务的划分,各任务责任人,项目开发进度,项目的预算,各阶段的费用支出,各阶段应完成的任务,用图表说明每项任务的开始和完成时间。⑶人员组织及分工:所需人员类型﹑数量﹑组成结构。⑷交付期限:最后完工日期。
第三章习题参考答案
⒈什么是需求分析?需求分析阶段的基本任务是什么?
答:需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务:⑴问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,
环境需求,用户界面需求。⑵分析与综合,导出软件的逻辑模型⑶编写文档:包括编写需求规格说明书,初步用户使用手册,确认测试计划,修改完善软件开发计划
⒉什么是结构分析方法?该方法使用什么描述工具?
答:结构化分析:简称sa,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。 ⒊结构化分析方法通过哪些步骤来实现? 答:⑴了解当前系统的工作流程,获得当前系统的物理模型。 ⑵抽象出当前系统的逻辑模型。 ⑶建立目标系统的逻辑模型。 ⑷作进一步补充和优化。
⒌画数据流图应注意什么事项?
答:命名: 不能使用缺乏具体含义的名字,加工名应能反映出处理的功能。1.画数据流而不是控制流。 数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
一般不画物质流。2.每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果 。
编号: 某个加工分解成加一张数据流图时,上层图为父图,下
层图为子图。子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应。3.父图与子图的平衡:子图的输入输出 数据流同父图相应加工的输入输出数据流必须一致 ⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。
通过抽象确定组成软件的过程实体。⑶信息隐蔽:将模块实现自身功能的细节与数据局部数据存储:当某慨数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。 注意数据流图的易理解性。
⒍什么是数据字典?其作用是什么?共有哪些条目?
答:数据字典(dd)用来定义数据库流图中的各个成分的具体含义。有以下四类条目:数据流,数据项,数据存储,基本加工。
⒎描述加工逻辑有哪些工具?
答:加工逻辑的描述:一般用结构化语言,判定表,判定树 结构化语言是介于自然语言和形式语言之间的一种半形式化语言。它的结构可分里层和内层
⑴外层:用来描述控制结构,采用顺序,选择,重复三种基本结构。
顺序结构:是一组祈使语句,选择语句,重复语句的顺序排列 ②选择结构:一般用if-then-elase-endif,case-of-endcase等关键词。
③重复结构:一般用do-while-enddo,repeat-until等关键词。⑵内层:一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其 动词含义要具体,尽量不使用形容词和副词来修饰。
包括: idef0描述系统的功能活动及联系,建立系统的功能模型。即反映系统做什么折功能。 idef1描述系统的信息及联系,建立系统的信息模型。 idef2进行系统模拟,建立系统的动态模型。 idef0特点:
⑴采用方框和箭头等简单图形符号描述系统的活动和数据流,描述活动所受的约束条件及实现机制。
如下图描述,其中输入为完成某活动时所需的数据,输出指执行活动产生时的数据,控制活动指所受到的约束条件,机制是指活动由谁来完成。⑵采用严格的自顶向下﹑逐层分解的方式建立系统功能模型。
⒐简述sa方法的优缺点。 答:sa方法是软件需求分析中公认的,有成效的,技术成熟,使用广泛的一种结构化分析方法。较适用于开发数据处理类型软件的需求分析。利用图形等半形式化工具表达需求,简明,易读,也易于使用。但也存在一些弱点,表现如下:⑴sa方法仅是一个静态模型,没有反映处理的顺序,即控制流程。⑵sa方法使用dfd在分析与描述数据要求方面是有局限的,只有与数据库技术中的实体联系图(er图)结合起来,才能较完整地描述用户对系统的需求。⑶dfd不适合描述人机界面系统的要求,一些人机交互较频繁的软件系统。⑷sa方法要与形式化方法结合起来,才能更精确地描述软件需求。⑸要借助需求分析工具,提高需求分析的质量及效率。
第四章习题参考答案
1、什么是软件概要设计?该阶段的基本任务是什么?
答:把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。基本任务:⑴设计软件系统结构,具体为:1.采用某种设计方法,将一个复杂的系统按功能划分为模块。2.确定每个模块的功能。3.确定模块之间的调用关系。4.确定模块之间的接口(模块之间传递的信息) 评价模块的结构质量⑵进行数据结构及数据库的设计⑶编写概要设计的文档 主要内容有:概要设计说明书,数据库说明书(dbms的简介,概念模型,逻辑设
计,结果)用户手册,修订测试计划(测试的策略﹑方法﹑步骤)⑷评审:是否完整地实现了规定的功能﹑性能要求。设计方案是否可行。关键的处理及内部接口定义的正确性,有效性,各部分的一致性。 2、软件设计的基本原理包括哪些内容?
答:⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。模块化即按照一定的原则,将软件划分成若干个模块,每个模块完成一个特定的功能,然后把这些模块按照某种方法组装成一个软件系统。(可降低复杂度、减少工作量)
模块具有以下几种特性:接口:模块的输入输出。功能:指模块实现什么功能。逻辑:描述模块内部如何实现要求及所需的数据。状态:该模块的运行环境,模块间调用与被调用关系。
隐蔽起来。模块间仅交换为完成系统功能所必须的信息。⑷模块独立性:每个模块只完成系统要求的独立的子功能。 3、衡量模块独立性的两个标准是什么?各表示什么含义? 答:内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。
4、模块的耦合性有哪几种?各表示什么含义?
答:⑴内容耦合:一个模块直接操作或修改另一模块的数据,或者不通过正常入口直接转入另一模块⑵公共耦合:两个或多个模块通过共同引用一个全局数据环境相互作用⑶控制耦合:模块之间通过传递控制信息相互作用⑷标记耦合:两个模块之间通过传递公共指针或地址相互作用的耦合⑸数据耦合:模块之间通过传递数据交换信息⑹无耦合:模块间无任何关系,独立工作
5、模块的内聚性有哪几种?各表示什么含义?答:⑴偶然内聚:一个模块各个成分之间毫无关系⑵逻辑内聚:将几个逻辑上相关的功能放在同一个模块中⑶时间内聚:一个模块完成的功能在同一时间执行⑷过程内聚:一个模块内部的处理成分是相关的,而且必须以特定的次序执行⑸通信内聚:一个模块的所有成分都集中在同一个数据结构上⑹顺序内聚:一个模块的各个成分同一个功能密切相关,而且一个成分的输出,作为另外一个成分的输入⑺功能内聚:模块内的所有成分属于一个整体,完成单一的功能。(内聚最高)
6、什么是软件结构?简述软件结构设计的优化准则。
答:⑴改进软件结构,提高模块独立性 首先设计出软件初始结构,评价该结构,通过模块分解或合并,力求降低耦合提高内聚。⑵模块的规模应该适中⑶模块结构的深度、宽度、扇出和扇入应适中。深度:软件结构中控制的层数 宽度:软件结构中同一层次上最大模块总数 扇入:某一模块有多少直接调用它的上级模块数目(越大越好)扇出:一个模块直接控制(调用)下级模块的数目。(越少越好,3,4个为宜,不超过9个, 顶层扇出较高,中间扇出较少,底层模块高扇入多⑷一个模块的作用域(范围),应处在这个模块的控制域(范围)之内 模块的作用域:受该模块内一个判定影响的所有模块的集合 模块的控制域:这个模块本身以及所有直接或间接从属于它的模块的集合 一个模块的影响范围(作用域),应处在这个模块的模块的控制范围(控制域)内。
8、什么样是事物流?什么是变换流?试将相应形式的数据流图转换为软件结构图
答:数据流图(dfd)一般可分为变换流,事物流两种。变换流:由输入﹑输出﹑变换(或称处理)三部分组成,是一顺序结构。事物流:它的某个加工,分离成许多发散的数据流,形成许多加工路径,并且根据输入值选择其中一个路径来执行。(这人加工称为事务处理中心)
9.试述变换分析﹑事务分析设计步骤。
答:变换分析设计步骤:⑴确定变换中心,逻辑输入和输出。⑵设计软件结构的顶层和第一层--变换结构:顶层的功能是完成所有模块的控制(名称应是系统名,以体现完成整个系统功能)第一层至少有三种功能模块:输入﹑输出和变换模块⑶设计中﹑下层模块,对第一层的模块自顶向下分解。输入模块由两部分组成:接收数据﹑转换成调用模块所需信息。输出模块由两部分组成:将数据转换成下属模块所需的形式﹑ 发送数据 变换模块:对每个基本加工建立一功能模块、⑷设计的优化 :输入部分求精,每个物理输入设置专门模块,以体现系统的外部接口。其它输入模块与转换数据模块都很简单时,可将它们合并。输出部分求精:每个物理输出设置专门模块,其它也可适当合并。变换部分求精:根据设计准则,对模块适当合并。 事务分析的设计步骤:⑴确定事务中心和加工路径⑵设计顶层(事务机构)和第一层 顶层模块有两个功能:接收数据和根据事务类型调动相应处理模块。⑶中下层模块的设计﹑优化工作与变换结构相同。事务型软件结构包括两部分: 接收分支 发送分支出 通常包括一调度模块,当事务类型不多时,可与主模块合并 。
第五章习题参考答案
1、详细设计的基本任务是什么,有哪几种描述方法?答:详细设计的基本任务包括:(1)为每个模块进行详细的算法设计 (2)为模块内的数据结构进行设计(3)对数据库进行物理设计(4)其他设计(5)编写详细设计说明书(6)评审 详细设计的描述
方法有图形、表格和语言,其中图形常用结构化程序流程图、盒图和pad(问题分析图)为描述工具,语言常用过程设计语言(pdl)来作为工具。
2、结构化程序设计的基本要点是什么?答:主要有三个:(1)采用自顶向下、逐步求精的程
序设计方法(2)使用三种基本控制结构构造程序。任何程序都可以由顺序、选择、重复(循环)三种基本控制结构构造,这三种基本结构的共同点是单入口、单出口。(3)主程序员组的组织形式。
3、简述jackson方法的设计步骤。答:jackson方法的设计步骤如下:1.分析并确定输入数据和输出数据的逻辑结构,并用jackson结构图表示这些数据结构。 (2)找出输入数据结构和输出数据结构中有对应关系的数据单元。3.按一定的规则由输入、输出的数据结构导出程序结构。 4.列出基本操作与条件,并把它们分配到程序结构图的适当位置。 (5)用伪码写出程序。 比较?
答:白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
白盒法有下列几种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖
从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。
什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?这些第六章习题参考答案
程序语言有哪些共同特征?
答:程序语言的共同特征(似为特性更符合题意)是指程序设计语言的语言特性,包括心理特性、工程特性和技术特性三个方面。语言的心理特性对人机通信的质量有主要的影响;语言的工程特性对软件开发成功一否有重要的影响,此外,语言的技术特性也会影响软件设计的质量。
在项目开发时选择程序设计语言通常考虑哪些因素?
答:通常要考虑的因素有:项目的应用领域、软件开发的方法、软件执行的环境、算法和数据结构的复杂性以及软件开发人员的知识等。
第4代语言(4gl)有哪些主要特征?答:4gl的主要特征是:1.友好的用户界面2.兼有过程性和非过程性双重特性3.高效的程序代码4.完备的数据库 (5)应用程序生成器 举例说明各种程序设计语言的特点及适用范围?
答:以常见的一些编程语言为例:fortran语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算;pascal语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算,操作系统的编写 ;c语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有较大优势。 coble语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据处理。 sql:结构化查询语言,用于对数据库进行存取管理。
汇编语言和ada语言,主要用于实时处理和编写系统软件。 prolog、lisp语言。lisp是一种函数型语言,特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。prolog是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示
事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。 c++、java语言,是面向对象的设计语言,用于面向对象的方开发软件。
什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题?
答:程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。
要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。 第七章习题参考答案
软件测试的目的是什么?软件测试中,应注意哪些原则?
答:软件测试的目的是为了发现软件的错误。软件测试中应注意的原则有:
测试用例应由输入数据和预期的输出数据两部分组成。这样便 于对照检查,做到有的放矢。 测试且例不仅选用合理输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性。对于不合理的输入数据,程序应拒绝接受,并给出相应的提示。
除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。
应制定测试计划并严格执行,排除随意性。 长期保留测试用例。
对发现错误较多的程序段,应进行更深入的测试。 (7)程序员应避免测试自己的程序。测试是一种挑剔性的行为,心理状态是测试自己程序的障碍。
什么是白盒测试法?有哪些覆盖标准?试对他们的检错能力进行
方法各有什么特点?
答:黑盒测试法把被测试对象看成是一相黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。
采用黑盒技术测试用例的方法有:等价类的划分、边界值分析、错误推测和因果图。
软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?
答:软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。
确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。
单元测试有哪些内容?测试中采用什么方法?答:单元测试主要针对模块的以下五个基本特征进行测试:1.模块接口 2.局部数据结构 3.重要的执行路径4.错误处理 5.边界条件6.测试的方法是为被测试模块编写驱动模块和桩模块来实现被测试单元的可运行。通过驱动模块来模拟被测试模块的上级调用模块,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测
试结构并输出。桩模块则用来代替被测试模块所调用的模块。它的作用是返回被测模块所需的信息。
什么是集成测试?非渐增式测试与渐增式测试有什么区别? 渐增式测试如何组装模块?
答:集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。
非渐增式测试是指首先对每个模块分别进行单元测试,再把所有模块组装成一个完整的系统进行的测试。而渐增式测试就是逐个把未经测试的模块组装到已经过测试的模块上去进行集成测试,每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕。渐增式测试有两种不同的组装方法:自顶向下和自底向上结合。两者区别是:(1)非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试和集成测试合在一起,同时完成。(2)非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量少。渐增式可以较早地发现接口之间的错误,非渐增式最后组装时才发现。(3)渐增式有利于排错,发生错误往往和最近新加入的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。(4)渐增式比较彻底,已测试的模块和新的模块再测试。(5)渐增式点用时间较多,但非渐增式所需更多的驱动模块和桩模块也占用一些时间。(6)非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。 什么是确认测试?该阶段有哪些工作?
答:确认测试又称有效性测试。它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合。因而需求说明是确认测试的基础。确认测试阶段有两项工作:进行确认测试与软件配置审查。
调试的目的是什么?调试有哪些技术手段?
答:调试则是在进行了成功的测试之后才开始的工作。调试的目的是确定错误的原因和位置,并改正错误,因此调试也称为
纠错(debug)。调试的技术手段有简单的调试方法、归纳法、演绎法和回溯法等。 第八章习题参考答案 软件维护有哪些内容? 答:(1)校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
(2)适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。
(3)完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。
(4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。 软件维护的特点是什么? 答:主要体现在三个方面:
(1)非结构化维护和结构化维护。软件的开发过程对软件的维护有很大的影响。若不采用软件工程的方法开发软件,则软件只有程序而无文档,维护工作非常困难,这是一种非结构化的维护。若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是一种结构化的维护。
(2)维护的困难性。软件维护的困难性是由于软件需求分析和开发方法的缺陷。软件生存
周期中的开发阶段没有严格而又科学的管理和规划,就会引起软件运行时的维护困难。
(3)软件维护的费用。软件维护的费用在总费用中的比重是在不断增加的,这是软件维护有形的代价。另外还有无形的代价,即要占有更多的资源。软件维护费用增加的占有原因是软件维护的生产率非常低。 软件维护的流程是什么?
答:软件维护的流程如下:知道维护申请报告、审查申请报告并批准、运行维护并做详细记录、复审。 软件维护的副作用有哪些? 答:维护的副作用有以下三种:
(1)编码副作用。在使用程序设计语言修改源代码时可能引入的错误。
(2)数据副作用。在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误。数据副作用是修改软件信息结构导致的结果。但它可以通过详细的设计文档加以控制。 (3)文档副作用。如果对可执行软件的修改没有反映在文档中,就会产生文档副作用。
什么是软件可维护性?可维护性度量的特性是什么?
答:软件可维护性的定义:软件能够被理解、校正、适应及增强功能的容易程度。软件的可维护性可用以下七个质量特性来衡量,即可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。
提高可维护性的方法有哪些? 答:(1)建立明确的软件质量目标。(2)使用先进的软件开发技术和工具。(3)建立明确的质量保证。(4)选择可维护性的程序设计语言。(5)改进程序的文档。 第九章习题参考答案
渐增模型有几种?各有何特点?
答:渐增模型有两种类型,一是增量构造模型,二是演化提交模型。增量构造模型是在瀑布模型基础上,对一些阶段进行整体开发,对另一些阶段进行增量开发。演化提交模型则是在瀑布模型的基础上,所有阶段都进行增量开发,不仅是增量开发,也是增量提交。
2、快速原型模型有几种,各有什么特点?
答:快速原形模型根据原型的不同作用,有三类原型模型: 探索型原型:把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发者对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。
实验型原型:主要用于设计阶段,考核实现方安是否合适,能否实现。对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型的开发来证实设计方案的正确性。
(3)演化型原型:它将原型思想扩展到软件开发的全过程,就是及早向用户提交一个原型系统,在得到用户认可后,将原型系统不断扩充演化为最终的软件系统。 快速原型的开发步骤是什么? 答:快速原型的开发步骤是:(1)快速分析:在分析人员与用户的配合下,迅速确定系统基本需求并开始构造原型。(2)构
造原型:在快速分析的基础上,根据基本需求说明尽快实现一
个可运行的系统。(3)运行原型:通过运行快速原型,发现问题,消除误解,达到开发者也用户的充分协调。(4)评价原型:在运行的基础上,评价原型的特性,分析运行效果是否满足用户的需求,提出全面的修改意见。(5)修改:根据评价原型的活动结果进行修改,修改过程代替初始的快速分析,从而实现原型开发的循环过程。用户与开发者在这种循环过程中不断
接近系统的最终要求。上述步骤在软件工具的支持下往往是互相交融在一起的,而不再象瀑布模型那样严格的阶段划分,线性推进。
评价快速原型模型的优缺点。 答:快速原型的优点是:(1)可及早为用户提供有用的产品。( 2)可及早发现问题,随时纠正错误。(3)减少技术、应用风险,缩短开发时间,减少费用、提高生产率。 (4)通过实际运行原型,提供直接评价系统的方法,促使用户主动参与开发活动,加强了信息反馈,促进各类人员的协调,减少误解,适应需求变化,能有效提高系统质量。快速原型的缺点是:1.缺乏丰富而强有力的软件工具和开发环境。 2.缺乏有效的管理机制,还未建立起自己的开发标准。 3.对设计开发环境要求较高。(4)在多次重复改变原型的过程中,程序员会感到厌倦。(5)系统的易变性对测试有一定影响,难于做到彻底测试,更新文档较为困难。
4、比瀑布模型与增量模型,指出增量模型的新思路。 答:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。瀑布模型很难适应需求可变、模糊不定的软件系统的开发,而且在开发过程中用户很难参与进去,只有到开发结束才能看到整个软件系统。这种理想的、线性的开发过程缺乏灵活性,不适应实际的开发过程。 增量模型是在瀑布模型的基础上加以修改而形成的。属于非整体开发模型。
它的基本思路是为了使开发过程具有一定的灵活性和可修改性,在开发过程中推迟某些阶段或所有阶段中的细节,从而较早的产生工作软件。 第十章习题参考答案
说明对象、类、类结构、消息的基本概念。
答:(1)对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象包括有形实体、作用、事件、性能说明等类型。对象具有状态和行为。一个对象用数据值来描述它的状态,对象的操作则用于改变状态,对象及其操作就是对
象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。对象内的数据具有自己的操作,从而可灵活地专门描述对象的独特行为,具有较强的独立性和自治性,其内部状态不受或很少受外界的影响,具有很好的模块化特点。为软件重用奠定了坚实的基础。(2)类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象就是类,类的具体化就是对象,也可以说类的实例是对象。(3)类结构:类与类之间的结构关系,包括一般-具体结构关系和整体-部分结构关系。一般-具体关系结构称为分类结构,也可以说是或关系或is a关系,类的这种层次结构可用来描述现实世界中的一般化的抽象关系,通常越在上层的类越具有一般性和共性,越在下层的类越具体、越细化。整体-部分结构称为组装结构,它们之间的关系是一种与关系,或者是has a关系。类的这种层次关系可用来描述现实世界中的类的组成的抽象关系。上层的类具有整体性,下层的类具有成员性。在类的层次结构中,通常上层的类称为父类或超类,下层类称为子类。 (4)消息:对象之间进行通信的构造叫做消息。在对旬的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。接收消息的对象经过解释,然后给予响应。这种通信机制称为消息传递。发送一条消息的格式是对象名.方法名(参数)。
说明面向对象的特征和要素。 答:面向对象的特征是:(1)对象唯一性。每个对象都有自身唯一的标识,在对象生存期中,其标识不变,不同的对象不能有不同的标识。(2)分类性。是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类(3)继承性。是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。(4)多态性。是指相同的操作或函数过程可以作用于多种类型的对象上并获得不同的结果。 面向对象的要素是:1.抽象。 2.封装性(信息隐蔽) (3)共享性。 说明动态模型的特征,说明事件,脚本、状态的含义。
答:动态模型是与时间和变化有关的系统性质,该模型描述了系统的控制结构,它表示了瞬时的、行为化的系统控制性质,
它关心的是系统的控制,操作的执行顺序,它从对象的事件和状态的角度出发,表现了相
互行为。事件是指特定时刻发生的某件事情,它是某事情发生的信号,它没有持续时间,它是一种相对性的快速事件。脚本是完成系统某个功能事件序列,侧重于表达说明发生于系统执行过程中的一个特定场景,用事件跟踪图表达。状态是对象属性值的抽象。状态指明了对象对输入事件的响应。
说明功能模型的特征,比较功能模型的dfd和结构化方法的dfd异同。
答:功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型表明一个计算如何从输入值得到输出值,它不考虑所计算的次序。功能模型由多张数据流图组成。数据流图说明数据流是如何从外部输入、经过操作和内部存储输出到外部的。功能模型也包括对象模型中值的约束条件。
说明三种分析模型的关系。答:三种分析模型之间关系是这样的:功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。 说明对象建模的过程。
答:对象建模的过程如下:首先标识类和关联,因为它们影响了整体结构和解决问题的方法,其次是增加属性,进一步描述类和关联的基本网络,使用继承合并和组织类,最后将操作增加到类中去作为构造动态模型和功能模型的副产品。(1)确定类。构造对象模型的第一步是标出来自问题域的相关对象类,包括物理实体和概念。所有类在应用中都必须有意义。检查问题陈述中的所有名词,产生暂定类。然后去掉不必要的类和不正确的类。(2)准备数据字典。为所有建模实体准备一个数据词典。准确描述各个类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制。1.确定关联。两个或多个类之间的相互依赖就是关联。从问题中抽取所有可能的关联表示,把它们记下来,但不要过早去细化这些表述。2.确定属性。属性是个体对象的性质,通常用修饰性的名词词组来表示。只考虑与具体应用直接相关的属性,不考虑那些超出问题范围的属性,首先找出重要属性,避免那些只用于实现的属性,要为各个
属性取有意义的名字。3使用继承来细化类。4.完善对象模型。
说明功能建模的过程。 答:功能建模的过程如下:(1)确定输入、输出值 (2)建立数据流图
10、说明对象设计的步骤。
答:对象设计要确定实现用到的类、关联的完整定义,接口的形式以及实现操作方法的算法,可以增加实现必须的内部对象,对数据结构和算法进行优化。1.获得操作 2确定操作的目标对象 3.算法设计 4.优化设计 5.控制的实现 6调整继承 (7)关联的设计
第十一章习题参考答案
软件质量与软件质量保证的含义是什么?
答:从实际应用来说,软件质量定义包括三个一致性:1.与所确定的功能和性能需求的一致性; (2)与所成文的开发标准的一致性; 3.与所有专业开发的软件所期望的隐含特性的一致性。4.软件质量保证是指确定、达到和维护所需要的软件质量而进行的所有有计划、有系统的管理活动。 影响软件质量的因素有哪些? 答:影响软件质量的因素分为可以直接度量的因素(如单位时间内千行代码中所产生的错误)和只能间接度量的因素(如可用性和可维护性)。
什么是软件质量保证策略?软件质量保证的主要任务是什么? 答:软件质量保证策略是指软件质量保证工作的过程和侧重点。 质量保证的主要任务包括以下几点:1.正确定义用户的要求。 2.技术方法的应用。 3.提高软件开发的工程能力。 4.软件的复用。 5.发挥每个开发者的能力。6.组织外部力量协作。 7.排除无效劳动。(8)提高计划和管理质量。 程序复杂性的度量方法有
哪些?
答:软件复杂性的度量方法有:1.代码行度量法:以源代码行数作为程序复杂性的度量。 2、mccabe度量法:一种基于程序控制流的复杂性度量方法。
什么是软件的可靠性?它们能否定量计算?
答:软件可靠性是指在给定的时间内,在规定的环境条件下系统完成所指定功能的概率。衡量软件可靠性的两个常用指标是平均失效等待时间mttf和平均失效间隔时间mtbf。就是说可以定量计算。
7、说明容错软件的定义与容错的一般方法。
答:容错软件的定义有四种,指规定功能的软件,(1)在一定程度上对自身错误的作用具有屏蔽能力的软件。(2)在一定程度上能从错误状态自动恢复到正常状态的软件。 (3)在因错误而发生错误时,仍然能在一定程度上完成预期的功能的软件。(4)在一定程度上具有容错能力的软件。
实现容错技术的主要手段是冗余。冗余通常分为四类:1.结构冗余,又分为静态、动态和混合冗余三种。2.信息冗余 3.时间冗余 (4)冗余附加技术 第十二章习题参考答案
软件工程管理包括哪些内容?
答:软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。
2、软件项目计划中包括哪些内容?
答:软件项目计划内容包括:1.范围 2.资源 3.进度安排 4成本估算 (5)培训计划
3、软件开发成本估算方法有哪几种? 答:软件开发成本估算的方法主要有:(1)自顶向下估算方法 (2)自底向上估算方法(3)差别估算方法
以及专家估算法、类推估算法、算式估算法等几类方法。 4、什么是软件配置管理?什么是基线?
答:软件配置管理,简称scm(software configuration management),是指一组管理整个软件生存期各阶段中变更的活动。软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高生产率。
基线:是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。
5、软件工程标准化的意义是什么?都有哪些软件工程标准? 答:软件工程标准化可以为软件工程各个阶段的活动提供统一的行动规范和衡量准则,使得各种工作都能有章可循。软件工程标准根据其制定机构与适用范围,可分为:1.国际标准2.国家标准 3.行业标准 4.企业规范 5、项目(课题)规范 6、请说明软件文档的作用?
答:软件文档的作用是:1.提高软件开发过程的能见度;2.提高开发效率;3.作为开发人员阶段工作成果和结束标志;4.记录开发过程的有关信息便于使用与维护;5.提供软件运行、维护和培训有关资料;6.便于用户了解软件功能、性能。 第十三章习题参考答案
1、什么是软件开发环境?请列出其发展情况。
答:软件开发环境是指在计算机的基本软件的基础上,为支持软件的开发而提供的一组工具软件系统。具体地说,软件开发环境是一组相关工具的集合。这些相关工具按一定的开发方法或一定开发处理模型组织起来的,这些相关工具支持整个软件生存期的各阶段或部分阶段。 软件开发环境的发展阶段:
(1)70年代,软件开发与设计方法出现了结构化分析技术的一整套相互衔接的sa-sd的方法学。与此相适应的计算机辅助软件工程技术则主要由开发孤立的软件工具而逐步向程序设计环境的开发和使用方向发展,出现了第一代的基于正文的case工具。
(2)80年代中期与后期,主要是实时系统设计方法,以及面向对象的分析和设计方法的发展,它克服了结构化技术的缺点。在这期间开发了第二代的case工具,其特点是支持使用图形表示的结构化方法,如数据流图与结构图。其开发环境表现在提高环境中工具的集成性方面,如集成的项目支持环境。 (3)80年代后期和90年代初期出现了基于信息工程case技术,这种环境集成了用于项目计划、分析、设计、编程、测试和维护的一个工具箱的集合。
(4)90年代出现一系列集成的case软件产品,用以实现需求管理、应用程序分析设计和建模、编码、软件质量保证和测试、过程和项目管理及文档生成管理等软件开发工作的规范化、工程化和自动化。
2、请叙述软件开发环境的分类。答:软件开发环境可按解决的问题、软件开发环境的演变趋向和集成化程度进行分类:(1)按解决的问题可分为:程序设计环境、系统合成环境、项目管理环境三类。(2)按软件开发环境的演变趋向可分为:以语言为中心的环境、工具箱环境和基于方法的环境三类。(3)按集成化程度有第一代、第二代、第三代的开发环境。
3、何谓软件工具?通常包含哪几部分?答:软件工具的定义是:可用来帮助和支持软件需求
分析、软件开发、测试、维护、模拟、移植或管理而编制的计算机程序或软件。软件工具是一个程序系统。软件工具通常由工具、工具接口和工具用户接口三
【篇三:软件工程课后题答案】
说明软件工程研究的内容。
软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。其中软件开发方法的内容又涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级。常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型。软件支持过程由所支持的case工具组成,常用的case工具有
powerdesigner和rational rose。软件管理过程主要有cmmi、iso9000、微软企业文化和敏捷文化
现象。
1-3请读者详细解释软件的定义和程序的定义。
软件的定义:软件 = 程序 + 数据 + 文档。这里的程序是指程序系统。这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据。这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。
现在有一种新提法正在引起关注,这种提法是:软件 = 知识 + 程序 + 数据 + 文档。 程序
是计算机为完成特定任务而执行的指令的有序集合。从应用的角度可理解为: 面向过程的程序 = 算法 + 数据结构 面向对象的程序 = 对象 + 信息 面向构件的程序 = 构件 + 构架。
1-5.读者同意“四种开发方法”和“五个面向理论”的提法吗?为什么?
“四种开发方法”是指“面向过程的方法、面向对象的方法、面向数据的方法、形式化方法”,面向过程的方法来源于面向过程的程序设计,面向对象的方法来源于面向对象的程序设计,面向数据的方法就是面向元数据的方法,它来源于关系数据库程序设计,形式化方法来源于离散数学中的集合运算和逻辑运算。四种方法各适用于不同的场合,各有优缺点,互相促进,构成一个开发方法论的多极化世界。
“五个面向理论”是指“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”,它是在综合“四种开发方法”各自的优点之后提出的软件工程实施理论,是对前者的继承与发展。总之,上述提法既精彩又实用。
1-6怎样理解软件工程的支持过程?
软件工程的支持过程是由支持软件生存周期各个阶段的生产工具所组成。就是说将一个软件的生存周期划分为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单位测试、集成测试、运行、维护这几个过程中,在这些过程中需要配套的工具来支持,比如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具,开发环境等。
第二章:
2-1.为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系?
因为软件开发模型是软件工程研究的四大内容之一,它虽然不是软件工程研究的重点,但是在宏观上特别重要。软件公司的项目组在开发一个大项目或产品时,首先在技术上必须选择一个开发模型,使开发模型非常适合这个项目或产品的生存周期;随后通过对生存周期的裁减,来给出适合与本项目或产品的软件生存周期定义。
软件的开发模型与软件生存周期有关:不同的开发模型,可能对应着不同的生存周期。生存周期不同,该软件的开发阶段划分、评审次数、基线标准都有所不同,甚至维护方法都有所区别。
2-2. 简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。
答案如表8-2所示 :
表 8-2 开发模型优缺点
3-2立项的具体表现形式是什么?
企业的市场销售部门在市场调研的基础上,分析该产品是否有市场前景,以及企业是否有能力开发出该产品,并具体列出系统的功能、性能、接口和运行环境等方面的需求情况,当前客户群和潜在客户群情况,以及投入产出分析,然后写出立项建议书,召开立项论证会,决定是否立项。
3-3立项书的编制者为什么主要是软件公司的市场销售人员,而不是开发人员?
软件开发出来终归要推向市场的,软件能不能被市场接受是软件开发成功的标准。市场销售人员长期和市场客户打交道,他们最了解客户和市场的需求,最知道什么样的产品具有巨大
商机。
第四章:
4-2.需求分析的目的是什么?需求分析的难点在哪里?
软件需求分析,其目的是用于说明软件产品或软件项目需要满足的条件和限制。在软件工程项目中首先要获取用户的需求,通过对软件需要的提取、分析、文档化以及验证,为进一步的设计和实现提供依据。
需求分析的难点是:在系统的功能、性能和接口方面,开发者与客户达成完全一致的需求,让客户最终签字确认,并保证在项目验收前,需求相对稳定不变。万一需求有点变化,双方必须履行“需求变更管理程序”,而变更管理程序在签订合同时已经做了规定。要知道,合同是具有法律效力的。
4-15.需求描述有哪几种工具?你喜欢哪一种?为什么?
需求描述的工具包括数据流图、业务流程图、用况图、时序图、用户交互图、数据模型图和功能需求列表、性能需求列表、接口需求列表、界面需求列表等。
选择哪一种描述工具,主要取决于问题域的本质特征。不同的软件,对分析要求的严格程度不同。 我喜欢业务流程图,它包括了物流、资金流、信息流、即业务操作模型,重点是业务操作的流水步骤,业务模型表示了与系统有关的人、设备、其他子系统之间的业务关系和费用关系,它是经过业务流程重组、再创和优化后,并且得到企业领导确认的业务流程图。绘制这个图的工具可以是office办公软件。
补充:需求分析的任务是什么?
(1)画出目标组织结构图,列出个部门的岗位角色表,即组织结构模型。
(2)画出目标系统的业务操作流程图,包括物流、资金流、信息流,即业务操作模型,重点是业务操作流水步骤。
(3)画出目标系统的数据流图(即单据和报表的流图),掌握业务规则,获得初步数据模型(真正的数据模型是e—r图加上相应的数据字典)。
(4)列出目标系统的功能点列表,即功能模型。 (5)列出目标系统的性能点列表,即性能模型。 (6)列出目标系统的接口列表,即接口模型。 (7)确定目标系统的运行环境,即环境模型。 (8)目标系统的约定界面,即界面模型。
(9)对目标系统的开发工期、费用、开发进度、系统风险等问题进行分析与评估。
第五章:
5-2简述软件策划的步骤
软件策划共分4个步骤,如表8-3所示。
表8-3 软件策划的4个步骤
5-3 软件策划要实现的具体目标是什么?
软件策划是项目跟踪和监控的基础,是项目经理和高层经理管理项目的依据。软件策划要实现的具体目标有三个。
(1)对供项目策划和跟踪用的三个软件估计已建立文档。这三个估计是: ——工作产品规模估计 ——工作量及成本估计 ——计算机资源估计
(2)软件项目活动和约定是有计划的,并已建立文档。这里的活动,包括开发活动和管理活动。这里的约定,是指对项目的各种标准、规范、规程的约束。
(3)受影响的组和个人,同意他们对软件项目的约定。受影响的组和个人有: ——软件工程组(项目组) ——软件估计组 ——系统测试组 ——质量保证组 ——配置管理组 ——合同管理组 ——文档支持组
其中有的组可能只有一个人。
第六章:
6-1 软件设计的输入输出是什么?
对于签订合同的项目,软件设计的输入时《用户需求报告》/《需求规格说明书》,输出是《概要设计说明书》和《详细设计说明书》。对于立项的项目,软件设计的输入时《需求规格说明书》,输出是《概要设计说明书》和《详细设计说明书》。
6-3 概要设计说明书和详细设计说明书有何区别?
《概要设计说明书》,一是要覆盖《需求规格说明书》的全部内容,二是要作为指导详细设
计的依据。它注重框架上的设计,它是软件系统的总体结构设计,全局数据库(包括数据结构)设计,外部接口设计,功能部件分配设计,部件之间的内部接口设计,它要覆盖需求规格说明书中的功能点列表,性能点列表,借口列表。
《详细设计说明书》,一是要覆盖概要设计说明书的全部内容,二是要作为指导程序设计的依据,它注重微观上和框架内的设计,它是各子系统的公用部件实现设计,专用部件实现设计,存储过程实现设计,触发器实现设计,外部接口实现设计,部门角色授权设计,其他详细设计等。
两者的设计者不同,在一般情况下,《概要设计说明书》是由系统设计师负责,《详细设计说明书》则由高级程序员负责。
第七章:
7-7 信息系统的业务模型、功能模型、数据模型各是什么?
信息系统的业务模型就是系统的操作流程和业务规则,功能模型就是系统的功能菜单和用户界面,数据模型就是系统的数据结构和数据字典。
7-8 请说明“三个模型”的定义,以及三者之间的关系。
功能模型是描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。
业务模型是描述系统在何时、何地、由何角色、按什么业务规则去做,以及做的步骤或流程,即对系统的操作流程进行定义。
数据模型是描述系统工作前的数据来自何处,工作中的数据存什么地方,工作后的数据放到何处,以及这些数据之间的关联,即对系统的数据结构进行定义。
功能模型和业务模型是在需求分析时建模,是两个基本点。数据模型是一个中心,在设计时建模。功能模型和业务模型给数据模型提供数据与维护数据,数据模型支持功能模型和业务模型的正常运行。
通常,数据模型建模用power designer,er win或oracle designer工具实现;功能模型用功能点列表(或用况图)表示;业务模型用自然语言加上流程图(或顺序图)表示。
7-9 进一步规范“图书馆信息系统”的业务模型、功能模型、数据模型。
通过遵循“三个模型”的分析思想,以及“从分析数据模型入手”的分析方法,进一步规范出“图书馆信息系统”的“三个模型”。
(1).数据模型如图8-2所示:
图8-2 图书馆信息系统数据模型
(2). 功能模型如表8-12所示:
表8-12 图书馆信息系统功能模型
因篇幅问题不能全部显示,请点此查看更多更全内容