《软件工程》第一章 软件工程学概述 作业

1.什么是软件危机?它有哪些典型表现?

    1)软件危机是指在计算机软件的开发和维护的过程中所遇到的一系列严重问题。

    2)典型表现主要如下:

      ·对软件开发成本和进度的估计常常很不准确。这降低了软件开发组织的信誉,而为了赶进度和节约成本所采取的权宜之计又损害了软件产品的质量。

      ·用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。

      ·软件产品的质量往往靠不住。主要由于软件可靠性和质量保证的概念刚刚出现,且软件质量保证技术应用不全面。

      ·软件常常是不可维护的。比如程序中错误难以改正,无法适应新的硬件环境,也无法根据需求添加功能。

      ·软件通常没有适当的文档资料。在开发中产生的一整套与程序配套的文档对于管理、开发和维护都有重要的意义,缺失或不合格必然会出问题。

      ·软件成本在计算机系统总成本中所占的比例逐年上升。主要原因在于硬件成本逐年下降,而软件规模和数量不断扩大。

      ·软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。

2.什么是软件工程?它有哪些本质特性?

    1)概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

      1993年IEEE将其定义为:a.把系统的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程应用于软件;b.研究a中提到的途径。

    2)人们普遍认为软件工程有如下本质特征:

      ·软件工程关注于大型程序的构造。大型程序通常指多人合作用时半年以上才完成的包含若干个相关程序的“系统”。

      ·软件工程的中心课题是控制复杂性。主要通过分解成保持简单通信关系的可理解的部分降低。

      ·软件经常变化。在交付使用后仍需随现实世界的变化而变化,以避免很快淘汰。

      ·开发软件的效率非常重要。为解决供不应求,需要寻求开发与维护软件的更好更有效的方法和工具。

      ·和谐地合作是开发软件的关键。在多人协同合作的过程中,规定、标准和规程是实现高效的必要手段。

      ·软件必须有效地支持它的用户。这意味着必须仔细研究用户并为其提供使用说明,还须注意建立使用新系统的环境。

      ·在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。

3.什么是软件过程?它与软件工程方法学有何关系?

    1)软件过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

    2)是软件工程方法学的三要素之一。

4.什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。

    1)软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。通常使用生命周期模型简洁的描述软件过程,它规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此也称过程模型。

    2)四种模型的比较如下:

·瀑布模型

      优点:

           为项目提供了按阶段划分的检查点;

            当前一阶段完成后,只需关注后续阶段;

            可在迭代模型中应用。

      缺点:

            难以在开发初期指明用户全部需求;

            需求确定后,经过一段时间才得到软件最初版本;

            完全依赖规格说明,产品往往反映用户的初始需求而非最终需求。

      适用范围:

            需求明确且几乎不变的中小型项目。

·快速原型模型

      优点:

            满足用户需求程度高、用户的参与面广、返工现象少,减少由于软件需求不明确带来的开发风险。

      缺点:

            所选用的开发技术和工具不一定符合主流的发展;

            快速建立起来的系统结构加上连续的修改可能导致产品质量低下;

            使用前提是要有一个展示性的产品原型,一定程度上可能会限制开发人员的创新。

      适用范围:

            预先不能确切定义需求的软件系统的小型项目。

·增量模型

      优点:

            短期内可以交付满足部分用户需求的功能产品;

            可维护性较好;

            开始第一构件前,已经完成需求说明;

            模块化待开发系统,分批次提交产品,使用户及时了解并适应软件项目的进展;

            降低了开发风险一个错误不会影响到整个系统;

            开发顺序灵活,可先完成需求稳定的核心组件。

      缺点:

            各构件并入已有体系结构中时,需不破坏原有部分,所以应具备开放式的体系结构;

            易退化为边做边改模型,而使软件过程的控制失去整体性;

            若增量包间存在相交的情况且未很好处理,则必须做全盘系统分析。

      适用范围:

            需求经常改变的中型开发项目。

·螺旋模型

      优点:

            集成了上述三种模型的优点,需求分析与软件实现紧密联系相互依赖;

            有利于已有软件的重用和把软件质量作为开发的一个重要目标;

            减少了过多测试(浪费资金)或测试不足(产品故障多);

            维护只是模型的另一个周期,与开发间没有本质区别。

      缺点:

            需具有相当丰富的风险评估经验和知识,如未能及时标识风险,势必造成重大损失;

            过多的迭代次数会增加开发成本,延迟提交时间。

      适用范围:

            内部开发的大规模软件项目。

5.试讨论Rational统一过程的优缺点。

优点:

      建立在非常优秀的软件工程原则基础上的,例如迭代,需求驱动,基于结构化的过程开发;

      提高了团队生产力——在开发中的方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础;

      提供了几个支持直观管理开发过程的方法;

      它简洁和清晰的过程结构为开发过程提供较大的通用性。

缺点:

      仅包含开发过程,并没有涵盖软件过程的全部内容,例如它缺少维护和技术支持这两个重要阶段;

      不支持组织内的多项目开发,导致组织内的大范围的重用无法实现;

      缺少开发商的支持;

      在度量管理,重用管理,人员管理和测试上有缺陷。


                        初学者手写作业,对问题叙述较为简单浅显,仅作为学习过程记录。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件工程作业与解答 第一章 软件工程概述 1.简述软件的发展过程。 答:计算机软件的发展经历了三个阶段:(1)程序设计阶段,约50至60年代; (2)程序系统阶段,约60至70年代;(3)软件工程阶段,约70年代以后。各 个时期软件开发的特点见课本第7页表1.3。 2.简述软件的定义及特点。 答:软件是计算机系统中与硬件相互依存的另一部份,它是包括程序、数据及其 相关文档的完整集合。 特点见课本第1页至第3页。 3.简述软件的种类。 答:见课本第3页至第6页。 4.什么叫软件危机? 答:在软件发展的第二阶段,随着计算机硬件技术的进步,计算机的容量、速度 和可靠性有了明显的提高,生产硬件的成本降低了。计算机价格的下跌为它的 广泛应用创造了极好的条件。在这一形式下,要求软件能与之相适应。然而软 件技术的进步一直未能满足形式发展提出的要求。在软件开发中遇到的问题找 不到解决的办法,致使问题积累起来,形成日益尖锐的矛盾。软件开发时期所 面临的这种状态就是所谓的软件危机。 5.软件危机主要有哪几种表现? 答:见课本第8页(1)、(2)、(3)、(4)。 6.什么叫软件工程? 答:开发、运行、维护和修复软件的系统方法。 7.什么叫软件生存周期? 答:软件从孕育、诞生、成长、成熟到衰亡的过程叫软件生存周期。它包括制定 计划、需求分析、设计、程序编码、测试及运行维护。 8.简单介绍软件开发的瀑布型模型和螺线型模型。 答:见课本第11页至第14页。 第二章 系统分析 1.简述系统分析的目标 1) 识别用户要求; 2) 评价系统的可行性; 3) 进行经济分析和技术分析; 4) 把功能分配给硬件、软件、人、数据库和其它系统元素; 5) 建立成本和进度限制; 6) 生成系统规格说明,形成所有后续工程的基础。 2.系统分析过程的第一步就是识别用户要求。要求的识别是系统开发的起点。为此,分 析员必须回答哪些问题,才能完成这一步骤? 1) 所期望的功能和性能是什么 2) 可靠性和质量问题是哪些 3) 总的系统目标是什么 4) 成本与进度限制如何 5) 制造的需求是什么 6) 市场与竞争情况怎样 7) 有效的技术有哪些 8) 将来可能有哪些扩充 3.软件项目的可行性研究主要集中在哪个方面? (1)经济可行性。(2)技术可行性。(3)法律可行性。(4)抉择。 4.填空 在成本-效益分析中,有形的效益可以用(货币的时间价值、投资回收期、纯收入 )等指标进行度量。    第三章 软件需求分析课程作业 一、简述与问答 1.简述软件需求分析的任务。 需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和 软件同其他系统元素的接口细节,定义软件的其他有效性需求。分析员通过需求分 析,逐步细化对软件的要求,描述软件要处理的数据域,并给软件开发提供一种可 转化为数据设计、结构设计和过程设计的数据与功能表示。在软件完成后,制定的 软件需求规格说明还要为评价软件质量提供依据。 2.软件的需求分析就是解决所开发软件做什么,做到什么程度的问题。它包括诸多需求 ,这些需求有那些? 功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求 、资源使用需求、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目 标。 3.简述需求分析评审的主要内容。 a.系统定义的目标是否与用户的要求一致;b.系统需求分析阶段提供的文档资料 是否齐全;c.文档中的所有描述是否完整、清晰、准确反映用户要求;d.与所有其他 系统成分的重要接口是否都已经描述;e.所开发项目的数据流与数据结构是否足够 确定;f.所有图表是否清楚,在不补充说明时能否理解;g.主要功能是否已包括在规 定的软件范围之内,是否都已充分说明;h.设计的约束条件或限制条件是否符合实 际;i.开发的技术风险是什么;j.是否考虑过软件需求的其他方案;k.是否考虑过将 来可能会提出的软件需求;l.是否详细制定了检验标准,它们能否对系统定义是否 成功进行确认;m.有没有遗漏、重复或不一致的地方;n.用户是否审查了初步的用户 手册;o.软件开发计划中的估算是否受到了影响。 4.软件需求分析的基本原则是什么? (1)必须能够表达和理解问题的数据域和功能域。(2)必须按自顶向下、逐层分 解的方式对问题进行分解和不断细化。(3)要给出系统的逻辑视图和物理视图。 5.什么是结构化分析方法? 结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系 ,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。 6.数据词典的任务什么? .对于数据流图中出现的所有被命名的图形元素在数据词典中作为一个词条加以 定义,使得每一个图形元素的名字都有一个确切的解释。数据词典中所有的定义应 是严密的、精确的,不可有半点含混,不

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值