您的位置:首页 > 其它

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

2020-04-21 23:34 281 查看

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

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

    2)典型表现主要如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

·瀑布模型

      优点:

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

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

            可在迭代模型中应用。

      缺点:

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

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

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

      适用范围:

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

·快速原型模型

      优点:

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

      缺点:

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

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

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

      适用范围:

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

·增量模型

      优点:

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

            可维护性较好;

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

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

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

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

      缺点:

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

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

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

      适用范围:

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

·螺旋模型

      优点:

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

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

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

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

      缺点:

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

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

      适用范围:

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

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

优点:

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

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

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

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

缺点:

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

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

      缺少开发商的支持;

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

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
AnjaWren 发布了11 篇原创文章 · 获赞 1 · 访问量 1228 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: