目录第一章软件工程简介.....................................................................................................................1第二章过程和生命周期的建模.....................................................................................................6第三章项目的计划和管理...........................................................................................................12第四章需求获取...........................................................................................................................24第五章系统设计...........................................................................................................................40第六章对象...................................................................................................................................48第七章程序的编写.......................................................................................................................58第八、九章测试...........................................................................................................................65第十、十一章培训与维护...........................................................................................................831第一章软件工程简介一、单项选择1、软件是计算机系统中与硬件相互依存的另一部分,它是包括(1B)、(2A)及(3D)的完整集合。其中,(1B)是按事先设计的功能和性能要求执行的指令序列。(2A)是使程序能够正确操纵信息的数据结构。(3D)是与程序开发、维护和使用有关的图文材料。1.A.数据B.程序C.用户使用手册D.图表2A.数据B.文档C.代码D.安装说明3.A.程序B.数据C.外设D.文档2、有人将软件的发展过程划分为4个阶段:第一阶段(1950~1950年代末)称为“程序设计的原始时期”,这时既没有(A①),也没有(B④),程序员只能用机器指令编写程序。第二阶段(1950年代末~1960年代末)称为“基本软件期”。出现了(A①),并逐渐普及。随着(B④)的发展,编译技术也有较大的发展。第三阶段(1960年代末~1970年代中期)称为“程序设计方法时代”。这一时期,与硬件费用下降相反,软件开发费急剧上升。人们提出了(C⑤)和(D⑧)等程序设计方法,设法降低软件的开发费用。第四阶段(1970年代中期~现在)称为“软件工程时期”。软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如(E⑤)、(F④)、编码、单元测试、综合测试、(G①)及其整体有关的各种管理技术。A--D:①汇编语言②操作系统③虚拟存储器概念④高级语言⑤结构式程序设计⑥数据库概念⑦固件⑧模块化程序设计E--G:①使用和维护②兼容性的确认③完整性的确认④设计⑤需求定义⑥图象处理3、软件工程的最终目的是以较少的投资获得可维护的、可靠的、高效率的和可理解的软件产品。软件工程技术应遵循(A⑦)、(B⑧)、(C⑥)、(D③)、一致性、确定性、完备性、可验证性。A--D:①有效性②合理性③局部化④协同性⑤实用性⑥模块化⑦抽象⑧信息隐蔽4、软件产品的生产主要是__C__。A.制造B.复制C.开发D.研制5、个体手工劳动是__B__时代的软件生产方式。A.程序系统B.程序设计C.软件工程D.程序编码6、软件工程是一门__C__学科。A.理论性B.原理性C.工程性D.心理性二、填空题1、软件由计算机程序、数据和(文档)组成。2、软件是一种(逻辑)产品,它与物质产品有很大的区别。3、计算机系统由硬件、软件、使用计算机的人、数据库、(文档)和执行过程组成。24、软件的发展,到现在为止,经历了三个阶段:(程序设计)、(程序系统)和软件工程。5、程序设计时代的生产方式是(个体手工艺者),程序系统时代的生产方式是(手工作坊),软件工程时代的生产方式是(工程化)。6、软件工程是一门综合性的交叉学科,它涉及计算机学科、(工程)学科、管理学科和(数学)学科。7、计算机科学中的成果都可用于软件工程,但计算机科学着重于(理论和原理),软件工程着重于(建造软件系统)。8、软件工程研究的主要内容是(方法)、(过程)和(工具)等三个方面。9、软件开发各阶段任务的划分应尽可能(相对独立),同一阶段任务的性质应尽可能(相同)。三、判断题1.Asystemisacollectionofobjectsandactivities.(F)2.Anabstractionisadescriptionoftheproblematsomelevelofgeneralizationthatallowsustoconcentrateonthekeyaspectsoftheproblemwithoutgettingmiredinthedetails.(T)四、问答题1.什么是软件?它的特点是什么?软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。软件的特点是:(1)依赖性:软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。软件不能完全摆脱硬件单独活动。在开发和运行中必须以硬件提供的条件为依据。有的软件依赖于某个操作系统。(2)可移植性:为了解除这种依赖性,在软件开发中提出了软件移植的问题,并且把软件的可移植性做为衡量软件质量的因素之一。(3)复用性:软件的开发至今尚未完全摆脱手工艺的开发方式。由于传统的手工艺开发方式仍然占据统治地位,开发的效率自然受到很大的限制。为此,人们在软件技术方面做了许多卓有成效的工作,提出了许多新的开发方法,例如充分利用现成软件的复用技术、自动生成技术,也研制了一些有效的软件开发工具或软件开发环境。(4)复杂性:软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。软件开发,特别是应用软件的开发常常涉及到其它领域的专门知识,这对软件人员提出了很高的要求。(5)昂贵性:软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。然而,也并非在所有软件开发上的花费都能获得成果。(6)社会性:相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及到人的观念和人们的心理。它直接影响到项目的成败。2.试比较软件发展的三个时期的特点,从软件所指、软件工作范围、软件3开发组织、决定质量的因素、开发技术和手段等几个方面说明它们的差别。3.软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素?试说明之。软件工程包括三个要素:方法、工具和过程。软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。软件工具是指为了支援软件人员的开发和维护活动而使用的软件。例如项目估算工具、需求分析工具、设计工具、编程和调试工具、测试工具和维护工具等。使用了软件工具后可以大大提高软件的生产率和质量。软件工程的过程则将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。4.软件工程过程有哪几个基本过程活动?试说明之。软件工程过程通常包含四种基本的过程活动:P(Plan):软件规格说明。规定软件的功能及其运行的限制;D(Do):软件开发。产生满足规格说明的软件;C(Check):软件确认。确认软件能够完成客户提出的要求;A(Action):软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。5.软件产品的质量一直是用户高度重视的问题,简述有哪些评论质量的观点。用户的观点:质量是恰好达到目的制造的观点:质量是与需求说明的一致产品的观点:质量是与产品的内在特性相联系的基于价值的观点:质量取决于顾客愿意支付的金额超越的观点:质量是可以认识而不能定义的6.什么是软件质量?如何度量软件质量?4ANSI/IEEEStd729-1983定义软件质量为与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体。M.J.Fisher定义软件质量为所有描述计算机软件优秀程度的特性的组合。也就是说,为满足软件的各项精确定义的功能、性能需求,符合文档化的开发标准,需要相应地给出或设计一些质量特性及其组合,作为在软件开发与维护中的重要考虑因素。如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是高的。1991年ISO发布的ISO/IEC9126质量特性国际标准定义了6个质量特性,即功能性、可靠性、可维护性、效率、可使用性、可移植性;并推荐了21个子特性,如适合性、准确性、互用性、依从性、安全性、成熟性、容错性、可恢复性、可理解性、易学习性、操作性、时间特性、资源特性、可分析性、可变更性、稳定性、可测试性、适应性、可安装性、一致性、可替换性,但不做为标准。7.软件产品质量评价金三角“产品运行、产品修改、产品变迁”中的“产品变迁”包含哪些质量要素和与之对应的评价标准。产品变迁包含的质量要素和与之对应的评价标准为:可移植性:简单性、软件系统独立性、硬件独立性可复用性:简单性、通用性、模块化、软件系统独立性、硬件独立性互用性:模块化、通信通用性、数据通用性8.什么是CMM-SEI能力成熟度模型?其五级成熟度水平是什么?CMM-SEI能力成熟度模型(CapabilityManurityModelforSoftware,CMM)是软件工程协会SEI(SoftwareEngineeringInstitution)在卡内基.梅隆大学开发完成的对一个组织软件开发能力进行评价的标准,它侧重于对软件开发过程和开发方法论的考察。CMM五级成熟水平:初始级可重复级:有纪律的过程已确定级:标准一致的过程已管理级:可预测的过程优化级:不断改进的过程9.解释系统(system)的概念。Asystem(系统)isacollectionofthings:asetofentities,asetofactivities,adescriptionoftherelationshipsamongentitiesandactivities,anddefinitionoftheboundaryofthesystem.。系统是一组事务的集合:实体的集