zoukankan      html  css  js  c++  java
  • 软件工程导论 习题一

    1.软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现:
    (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。
    (2) 用户对已完成的软件不满意的现象时有发生。
    (3) 软件产品的质量往往是靠不住的。
    (4) 软件常常是 软件工程导论(第六版)课后习题答案_文库下载不可维护的。
    (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
    (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
    (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
    软件危机出现的原因:
    (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
    (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
    (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。

    2.在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。

    3.1993年IEEE的定义:软件工程是:① 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;② 研究①中提到的途径。
    软件工程的本质特征:
    (1) 软件工程关注于大型程序(软件系统)的构造;
    (2) 软件工程的中心课题是分解问题,控制复杂性;
    (3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化;
    (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具;
    (5) 和谐地合作是开发软件的关键;
    (6) 软件必须有效地支持它的用户;
    (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的。

    途径:
    (1) 对计算机软件有一个正确的认识(软件≠程序);
    (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;
    (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 ;
    (4) 开发和使用更好的软件工具。

    4.(1) 传统方法学:也称为生命周期方法学或结构化范型。 优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作, 从而降低了整个软件开发过程的困难程度。
    缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时 间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
     (2) 面向对象方法学:a.把对象作为融合了数据及在数据上的操作行为的统一的软件构件;
    b.把所有对象都划分成类;
    c.按照父类(基类)与子类(派生类)的关系,把若干个相关类组成了层次结构系统(也称为类等级)。
    d.对象彼此间仅能通过发消息互相联系。
    优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作; 促进了软件重用。
    缺点:
    a.需要一定的软件支持环境。
    b.不太适宜大型的MIS开发,若缺乏整体系统设计划分,易造成系统结构不合理、各部分关系失调等问题。
    c.只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化。
    d.初学者不易接受、难学。

    5.(1)存储容量需求M=4080e0.28(1985-1960)=4474263(字) 存储器价格P=0.048*0.72(1985-1974)*4474263=5789美元

    (2)需要工作量4474263/200=22371(人/月) 指令成本22371*4000=89484000美元

    (3)需求估计M=4080e0.28(1995-1960)=73577679字 存储器价格0.003*32*0.72(1995-1974)*73577679=7127美元 工作量73577679/600=122629(人/月) 成本122629*6000=735776790美元

    6.软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。 软件过程是软件工程方法学的3个重要组成部分之一。

    7.软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
    瀑布模型  优点:它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。
    缺点:(1) 实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
    (2) 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
    (3) 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。

    快速原型模型
    优点:使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。
    缺点:产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。 

    增量模型
    优点:(1) 人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。
    (2) 当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。
    缺点:(1) 至始至终开发者和客户纠缠在一起,直到完全版本出来。 (2) 适合于软件需求不明确、设计方案有一定风险的软件项目。 该模型具有一定的市场。

    螺旋模型
    优点:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。
    缺点:(1) 需要相当的风险分析评估的专门技术,且成功依赖于这种技术。
    (2) 很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化    的方法失去控制。 (3) 这种模型相对比较新,应用不广泛,其功效需要进一步的验证。 该模型适合于大型软件的开发。

    8.因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号,因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性。

    9.优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。
     缺点:RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。

    10.大型的需求不断变化的复杂软件系统项目。

    11.适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束。

    12.适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式。

  • 相关阅读:
    dotnet 新项目格式与对应框架预定义的宏
    dotnet 线程静态字段
    dotnet 线程静态字段
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取系统信息
    dotnet 通过 WMI 获取系统信息
    PHP show_source() 函数
  • 原文地址:https://www.cnblogs.com/zootopia/p/5307358.html
Copyright © 2011-2022 走看看