浙江大学远程教育学院《软件工程基础》课程作业姓名:学号:年级:学习中心:—————————————————————————————第一章概述1.什么是软件危机,它有哪些典型表现?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括地说,软件危机包含下述两方问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机典型表现:对软件开发成本和进度的做计常常很不准确。用户对已完成的软件系统不满意的现象经常用发生。软件产品的质量往往靠不住。软件常常是不可维护的。软件通常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上涨。软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是计算机系统中逻辑部件而不是物理部件。管理和控制软件开发过程相当困难。软件是击规模庞大,而且程式复杂性将随着程式规模的增加而呈指数上升。目前相当多的软件专业人员对软开发和维护还有不省糊涂观念,在实践过程中或多或省地采用了错误的方法和技术,这是使软件问题发展成软件危机的主机原因。2.简述产生软件危机的原因和解决的思路。答:软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的方法不正确有密切关系。解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。3.什么是软件工程?它有哪些本质特性?答:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够瞧得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。软件工程本质特性:1、软件工程关注注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。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)导出高层逻辑模型(conceptualdesign)(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.软件计划的主要内容有哪些?答:1.概述:一般性地叙述开发项目,描述计划组织,并概述这个文档其余部份的内容。2.阶段计划:讨论项目开发周期——需求分析阶段、总体设计阶段、详细设计阶段等等。详细说明每个阶段应该完成的日期,并指出不同阶段可以相互重叠的时间等等。3.组织计划:规定从事这个开发项目的每个小组的具体责任。4.测试计划:概述应进行的测试和需要的工具,以及完成系统测试的过程和分工,在这一节中并不包括具体的测试方案。5.变动控制计划:确定在系统开发过程中需求变动时的管理控制机制。6.文档计划:这一节的目的是定义和管理与项目有关的文档。7.培训计划:培训从事开发工作的程序员和使用系统的用户的计划。8.复审和报告计划:讨论如何报告项目的状况,并确定对项目进展情况进行正式复审的计划。9.安装和运行计划:描述在用户现场安装该系统的过程。10.资源和配置计划:概述关键的细节计划——进度、里程碑和按合同规定应交付的系统配置成份。11.索引16.如何对制定完成的软件计划进行复审?为什么要复审?答:软件计划的复审通常涉及有关软件工作范围和软硬件资源问题等。复审应该邀请用户参加,用户可提出建议,并与开发人员最终商定内容。复审内容分为技术和管理两个方面:技术方面需要考虑的问题有:系统的任务是否合理;系统的给你复杂性是否与开发成本、进度以及风险一致;系统规格说明书是否足够充分;系统性能要求是否恰当管理方面需要考虑