软件工程课后习题答案中文翻译版(第八版)分解

软件工程课后习题答案中文翻译版(第八版)分解
软件工程课后习题答案中文翻译版(第八版)分解

软件工程课后习题:

1.解释为什么专业化软件不仅仅包括为用户所开发程序?

专业化软件在开发上与在与软件就有所不同。专业软件通常是由团队开发而非个人,除了开发者外还有其他的用户使用。如果你的软件有别的用户,别的工程师会去修改的话,你就必须提供除了程序源码之外的其它附带信息。因此,系统通常除了包含一些单独的程序还有用于这些程序的配置文件,可能还包括描述系统结构的系统文档和解释如何使用该系统的用户文档,以及告知用户下载最新产品的Web站点。

2.通用软件产品开发和定制软件开发直接有什么不同?这在实际应用中对通用软件产品用户意味着什么?

(1)重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定开发者必须按客户要求进行开发。

(2)意味着通用软件很难满足通用软件客户的特殊需求。如可靠性、安全性、快捷性。

3.软件产品应该具有与的4重要属性是那些?另外列举出4个可能有意义的属性。

重要属性:可维护性、可依赖性和安全性、有效性和可用性。可能有意义的属性:可复用性、可分发性、可移植性和互用性。

4.除了异质性挑战、业务和社会的变革、安全和可信,说出软件工程在21世纪的可能面临的其它问题和挑战。

交付上的挑战:许多传统的软件工程技术需要耗费大量的时间,用于提高软件质

量。而今天的软件制作必须响应快、更换迅速,支持软件也必须同样快地进行更换。交付上的挑战是:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间。

5.参论的应用类型,照1.1.2节讨举例介绍为什么设计和开发不同类型的应用需要专门的软件技术。

如汽车上年的嵌入式控制系统对安全性要求极高,在车上安装是要烧制到ROM 中在这里的交互在这里是很少的(或许根本就没有)。基于Web式系统更适合用于迭代式开发和交互。而基于Web的系统编程使用的如Ruby一类的脚本语言,完全不适合嵌入式系统工程。 6.解释为什么软件工程的基本思想适用于所有的软件系统。

软件工程的基本思想:1.应使用有管理和理解了的开发过程进行开发。2.可依赖性和性能对所有类型的系统来说都很重要。3.理解和管理系统描述和需求是很重要,你必须知道不同的客户和用户的期望是什么。4.赢尽可能搞笑地使用档期存在资源。

软件工程也是从无数实践中提炼出来的一门科学,沟通、需求分析、设计建模、编程、测试和支持都是软件工程方法所依赖于一组的本原则。这些思想和原则涵盖了软件工程所有技术,是软件开发不可缺少的一部分。所以软件工程的基本思想适用于所有的软件系统。

7.解释Web的普遍使用是怎么改变软件系统的。

(1)软件复用已经成为构建基于Web的系统的主要技术。当你在够着这样的系统是就需要考虑在学校恩怨从已有的软件组件和系统开始工作。

(2)基于Web的系统的开发和交付应逐步完成,提前制定这些系统的所以需求

是不切实际的。

(3)用户界面搜到浏览器能力和实用性约束,基于Web的系统上的应用界面通常比专门为Pc系列产品专门设计的用户界面要差。(通俗点讲就是:实用是实用,就是有点丑。)

8.职业人员是否应该和医生或律师一样要颁发资格证书?讨论一下。

我认为:可以给职业人员颁发某种软件技术方面的资格证书以便公司能够快速确认从业人员具备的技能和让社会大众对从业人员的技术资质有更简单直观的了解。当然,这个证书不能成为他职业道德的证书,软件工程从业人员的职业道德和行为准则因由此方面协会和机构引导,从业人员自己严加自律。

9.对吐1-3的ACM/IEEE职业道德准则中的每一条款,举出一个恰当的例子加以说明。

(1)公众感:软件工程从业人员应该始终与公众利益保持一致。不应该通过软件给某些利益集团谋取私利从而损害广大人民群众的利益。

(2)客户和雇主:不能只站在雇主这边为雇主最求利益最大化而不顾客户利益。(3)产品:不能做一个没有完成或某方面如安全性、稳定性未达标的产品给客户。(4)判断力:软件从业人员应具备达到判断力,知道自己做的产品不是刻意用来危害社会的。

(5)管理:合理管理软件开发方法,不能官僚主义全听领导一句话。(6)职业感:大家都是从事正当行业的,要多想想怎么为社会谋取福利。

(7)同事:黑社会都说以和为贵,团队成员都是奔着一个目标去的不要由于一些小小分歧就那个啥...周恩来说要求同存异。

(8)自己:注意要有健康积极的职业和生活方式。

什么是四个重要的属性,所有的软件产品应该有?建议四其他属性,有时可能是重要的。可维护性, 可靠性,有效性,可用性.Other可复用性,可分发性,可移植性,互用性

给你的答案基于系统正在开发的类型的原因,建议最适当的通用的软件过程模型,可以用来管理跟踪系统发展的基础:

1)防抱死制动系统2)的虚拟现实系统3)高校会计制度4)互动的时间表(一)防抱死制动系统:安全关键安全鉴定系统方法的基础上,正式的转换等价每段之间的等价证明。(b)的虚拟现实系统:系统的要求,事先无法预测预先地预知所以探索性编程模型是合适的。

(C)大学会计系统:系统的要求应稳定是因为现有的系统因此瀑布模型是合适的。

(d)互动的时间表交互式时间表:系统复杂的用户界面,但它必须是稳定的,可靠的。应根据丢弃原型找到要求然后增量开发或瀑布模型。

为什么一个软件系统,用一个真实的世界环境必须改变或成为progressivelyless 有用吗?

这种适应自然生成新的系统需求

系统的环境是动态的,不断产生新的要求,作为对业务变化的后果,业务目标和业务政策。商务的目标以及政治相关除非系统适于反映这些要求,其设施将成为了所需要的设施支持业务和步骤,因此,它将变得不那么有用。

为什么一个好的程序员不一定是一个好的软件管理者?

管理活动包括提出书面建议,项目规划和进度,人员选择和评价,项目监督和评审,和其他队友的交流能力等。程序设计者的任务就不是这些,他们不需要和人交流的能力,如果按照做好一个程序设计者的要求去做管理者的话,他肯定不是一个号的管理者。

为什么项目策划的过程是迭代的,为什么一个计划必须不断审查软件项目中。软件项目地规划取决于有用地信息。在项目进行期间不断产生新的信息,所以必须经常性的修改原有的计划。原本有用的信息可能会不再有用,而原本一些

不确定的信息反而会变得有用。最初对象目本身的估算是实验性的,所以计划需要不断的修改。

表明他们可能会在一所大学的学生记录系统中的利益相关者。

在一个学生记录系统的利益相关者包括:大学管理中心,包括报到,交纳学费,考试,作业和毕业等记录在这个系统中的学生

大学部门管理者,需要提供和使用这些信息

使用系统信息的学院成员

数据保护工作者

潜在的学生中的雇佣者

在学生记录系统中的参与者包括:

。学校管理中心包括负责学生注册,缴费,考试,评估,毕业事宜的相关人员。那些被记录具体信息的学生

。把学生信息录入到系统并使用系统信息的学校部门人员

。使用这些信息的学术人员

。数据安全人员(本地和国家的)

。潜在的雇用学生的人(或许需要用到这个系统里面的信息)

7.3三在图书馆系统中发现的观点。libysy,建议三的要求,可以通过与相关的利益相关者提出的观点。你可以解决这个问题用头脑风暴的方法。显然,有许多替代解决方案建议,这里。注意印刷冲突是故意的。

观点:图书馆管理

要求:进入汇文系统应限于认可的图书馆用户。

要求:在汇文系统必须提供一个报告的设施,允许使用报告(谁使用系统,多久,是什么库访问)来创建和打印。

要求:在汇文系统的配置应使特定的库服务器允许打印文档。

观点:用户

要求:在汇文系统应可从任何位置,包括地点离大学校园。

要求:应能保存汇文系统查询,回忆和修改后使用。

要求:在汇文系统应允许文件被打印在用户的打印机。

观点:系统管理员

要求:重新启动时间的汇文系统失败后不得超过5分钟。

要求:在汇文系统必须提供一个用户的个人工作空间的备份设备。

要求:在汇文系统应提供一系列平台包括Windows 2000,Windows XP和MAC OS X。

7.4汇文系统支持包括编目工作的新文件系统目录可以分布在多台机器。可能是非功能需求与编目设施有关的最重要的类型?

重要的非功能属性的编目服务的可能:

?可用性(因为系统可以在任何需要的时间)

?安全(因为图书数据库不能损坏)

?效率(因为系统必须迅速作出反应,每个交易)

为浏览服务,这些服务的可用性也是非常重要的应该是易于使用,没有广泛的培训。

讨论了一个例子,一个类型的系统的社会和政治因素可能强烈地影响系统的要求。解释为什么这些因素是重要的在你的例子。

社会和政治因素影响系统需求的一个例子是管理成本和公共卫生保健的系统。政治家们对控制成本和确保提供最好的卫生保健系统都很关心。在这样一个系统中这本来就是一对潜在的矛盾,系统管理人员关心的治疗成本而医生们关心的治疗效果。此时系统需求可能要建立在特殊的包括一系列组织因素的政策上而不是技术需求。

11.1为什么它可能需要在规范设计系统的体系结构是写的吗?

体系结构设计过程输出了一个体系结构的设计文档,这样的设计文档包含了一系列图形化的系统模型描述和一些相关的描述文本。该文当描述了系统如何有子系统构成以及每个子系统如何有模块构成。

11.4给你答案的原因,建议以下系统的一个合适的结构模型:

11.4.1一个在铁路站旁,供乘客使用的自动售票系统

答:自动售票系统。最合适的架构模型是有共享数据仓库和定价信息的集中式控制模型。当使用这种模型时,所有机子能立即获取改变的信息。由于没有局部处理的必要,所以使用客户/服务架构没有什么优势。集中式控制系统允许全局信息和路径被收集和处理。

一个允许在同一时间段,视频,音频,计算机数据对很多参与者是可见的计算机控制视频会议系统答:视频会议系统。最合适的是使用客户/服务模型。很多局部过程用来处理多媒体数据。

11.4.3一个清洁机器人,主要用来清理一些地方比如走廊。该清洁机器人必须能感应墙和其他的障碍物。答:清洁机器人。最适合的模型是贮藏式模型。这时所有的子系统把信息存放在其他子系统得贮藏室,以备后用。以AI系统为例,一种特殊的贮藏室叫做“黑板”被使用

11.8 就分布性讨论数据流模型和对象模型的优点和缺点。假设应用程序的淡季和分布式版本都是必需的。

两种模型都能作为分布式,数据流程图中的每个转换都可以看作是个分离的过程,而每个对象也可以作为过程实现。函数的分解需要共享状态,并表示为一

个或多个过程。在对象模型中分布对象是个问题,对象如果继承的话就如同它的创建一样会造成很多网络阻塞。

用例子,解释对象和对象类之间的不同。

对象类就是定义实体(或者说对象)的类型说明,包含可以被识别的相似的公共特征。对象是真实世界或是在系统中的通过对象类对其属性进行赋值的特殊实例。给对象的赋值操作可用于识别与其他所有对象的区别,尽管不需如此。在现实世界中,我们只能看到对象和作为抽象实体的构造对象类。在程序中,我们通常可以定义对象类和构造对象,它们的声明周期不超过程序的执行时间。

一个对象类的一个实例,是一本具有的属性(特征)如标题,作者,出版

社,出版日期,等。

一个叫做“BOOK”的对象类的例子,属性有诸如……

一个关于这个对象类的对象的例子“specific book”

作者:伊恩萨默维尔标题:软件工程版:出版商艾迪生卫斯理

如果我们想定义一个书的对象是不同于其他所有的对象,我们需要增加的另一个特点的对象类,如业主。

16.2 说明在什么情况下提供前后一致的用户界面是不明智的或是不可能的。

一致性的用户界面也许不可能提供给拥有大量选项的复杂系统。在这样的系统中,经常使用的不同命令的使用程度有很大差异,因此我们希望用快捷方式。除非所有的命令都有快捷方式,否则一致性的界面是不可能的。

此外在复杂的操作界面中有不同类型的操作实体,这些不同类型的操作实体拥有相同的操作是不可能的。

开放型操作系统就是这样一个系统的例子。甚至是竭力做到尽可能一致性界面的苹果操作系统(MacOS)都会根据不同的用户喜好而由此产生矛盾。

再举个例子,用户要删除一个文件,只要把它拉到垃圾回收站,而删掉一个磁盘映像可不能这样,那要卸载那个磁盘。

在为“临街的”系统(如ATM机)涉及基于菜单的界面时,必须考虑哪些因素?请对你所使用的ATM机的界面提出批评意见。

要考虑的因素在设计步行和使用的系统:

?系统的用户可能是虚弱的,或禁用,因此将无法快速响应的要求。

?用户可能无法讲母语的国家机器安装。

?系统的用户可以与技术完全陌生的,可以用机器做几乎任何类型的错误。接口必须尽量减少可能出现的错误的数量必须是有弹性的任何可能的错误。

?一些系统的用户可能是由许多选项吓倒。另一方面,当用户与系统增益的熟悉,他们可能会使用一系列的银行服务。

?不同的人可能会明白不同图标的含义。

?如果系统导航选项,用户几乎肯定是迷路了。

?大多数用户将要使用的系统很简单的功能(例如提取现金取款机)和将要这样做,尽快。

有许多不同的ATM接口,每个人都必须单独考虑。我所发现的问题是:当有可能取消交易吗?当我这样做时会发生什么?如果我重新启动事务必须重新输入什么?

通常是不存在任何的方式说给我的最大数额的钱我可以撤回今天。有些机器只支持单一的交易是没有办法说我会做一些交易和相同的验证过程是适用于所有的人

16.5试述图形显示的优点,指出适合用图形显示数值而不适合用数字显示的四种应用。优点是匆匆一眼就能获得数值暗示和相对数值暗示。

这里有四个适于图形显示信息,而不适用于数字显示信息的例子.

温度计速度指示器气候统计表一些相关的比较表格.

你在什么情况下会建议不采用敏捷方法进行软件系统开发?

当几个软件开发团队不在同一个地方时不可用敏捷方法。如果其中一个团队用了敏捷方法,就很难跟其它团队协调工作.敏捷方法也要避免用在关键系统,在规

格错误的情况下如果用这个方法,会导致严重的后果.在开发系统之前规格就可

以用的情况下,可以做详细的规格分析使用敏捷方法成为可能.然而,一些敏捷方

法中的思想像测试优先开发(Test First Development–TFD 又称先行测试开发)

当然是可以适用于关键系统的.

解释为什么测试优先开发能帮助程序员获得对系统需求的更好的理解。测试优先的开发有什么潜在的困难。

测试优先开发帮助我们更好地理解需求,因为你要写一个测试程序,就需要分析需求,探究详细意图。

有时候,在需求不全的情况下,你会发现写一个测试是不可能的。测试优先开发的问题就在于是一些测试很难写,因为在任何一个测试之前都要一个就绪的系统底层结构.

给出四个理由说明为什么结对编程和单个程序员编程的软件生产率基本上是

一样的。

结对编程和同等数量的编程人员单独编程一样有效的原因:

1.结对编程会引发连续非正式地复查,这样会比单独编程更快地发现错误。

2.结对编程过程中,信息是共享的。单独编程中,人们不得不花时间来共享信息。

3.结对编程鼓励重构(代码需要让其他人看懂),这样减少了后期开发和变动的成本。

4.结对编程可能花更少的时间在细节优化上,因为这对其他程序员来说没有好处。(译者注:没看懂)

假设一个软件管理者参与了一个开发某个软件设计支持系统的项目,此系统是要支持将软件需求翻译成形式化软件描述。请评论下列开发策略的优点和缺点。

开发抛弃式原型,评估,然后审查系统需求。用C语言开发此系统。

丢弃原型化方法:快速的开发和快速的用户反馈. 可以带来合理的需求.

需要多种开发语言.花费更高.

适用java从现存的需求开始开发系统,然后修改它使之适应任何变更的用户需求。

开发使用C和X-Windows培训较少的问题。

已知的管理策略。需求可能的错误需要交付后的改性。训练几乎没问题,已知的管理策略.需求可能的错误的,所以要交付修改.

适用增量式方法并让用户参与到开发团队来开发此系统。

进化的方法.快速的用户反馈.快速的系统交付.容易适应改变的需求.

很难管理,缺少可移植性的标准.无特定系统结构,将导致以后的维护困难.

18.2解释下为什么通过复用已有的软件所节省的成本并不简单地与所适用的组件规模成比例。

如果复用节约的成本和复用的代码成比例,那么复用2000行代码就相当于复用两次1000行代码了。然而,复用2000行代码,那些代码必须要被理解,程序理解的费用不是线性的——越多的代码,就需要越多的努力去理解的。

而且,当需要更多的改动时,就需要更大量的代码复用,这也增加了成本。18.3给出你认为不应该适用软件复用的4种情况。

一如果代码提供商的运作状况不确定,或者提供商歇业,不支持代码的复用。

二关键部分的代码不可用。要测试这些代码以达到所需标准,可能非常困难。

三再利用所花的成本和再利用所节省下来的差不多的小型系统

四在一些关键需求在于性能的系统里,专门开发的代码通常更有效率。

18.4为什么模式是一种有效的设计复用形式?这种复用方式的缺点是什么?

模式是一种有效的再利用设计,是因为它是很多人在应用中积累出来的

智慧.这种方法有两种缺点:

知道哪一个模式被存档,找到这些模式所花的时间是必要的.

2.很多模式是一般化的,很多性能可能被限制.如果性能是主要要求的话,那么为

某一个问题问题特别研究的方法总是更有效率的.

xxx确定了六个可能的风险时可能出现的系统被构造使用COTS。公司可以采取什么步骤来降低这些风险呢?

风险时可能出现的系统被构造使用COTS包括:

卖主风险:卖方无法提供必要的支持,卖方歇业或结束产品开发.

产品风险:和其它系统不兼容,和其它系统组装时性能下降,在特定环境下,产

品不可靠.

过程风险:理解如何组装产品的时间超出预期.

可以通过使用第三方系统来解决.这样的话,可以通过深入的研究,投入使用

前的产品兼容性的测试,和其它用户讨论等方法来保证源代码的可用,如果卖方

歇业的话.

通常,COST是由卖方提供的,要减少风险是困难的.

19.1为什么它是重要的,所有组件的交互是通过定义的“需要”和“提供”接

口?

它是通过定义所有的相互作用重要的需要提供接口,组件的使用是完全独立的,

它的实现。如果组件交互使用的一些知识的组成部分,是没有定义的要求/提供

接口,然后组件之间的耦合增加,很难交换一个具有相同接口的等效组分的一

个组成部分。

19.3之间的根本区别是什么组件和Web服务(see Chapter 12).

Web服务只有单一的一个标准,组件则有多个标准,因此服务的内部操作性

会更好。

服务的付费是按使用权计算的(你要用时再付费,不用时,可以停止付费),这样用户就不用为一个偶尔使用的组件,支付昂贵的费用。

组件的交互可以作用比Web服务更有效的协议,因此组件更适用于高吞吐量/高性能要求的应用。

一旦一个组件被购买,它就属于用户所有。而与此相反,Web服务总是被提供商拥有,这就意味着用户对于服务的更改永远没有控制权,如果服务变更(或消失),那么可能对用户很不利。而组件不同,用户可以决定什么时候使用新版本。

19.6解释为什么它是很难不组件源代码验证的可重用的组件。以什么样

的方式将一个正式的组件规范简化验证的问题?

因为在没有源代码的情况下,我们无法知道该组件是如何处理异常的。唯一的

办法就是黑盒测试。因为组件的详细规格说明书很少是完整的,黑盒测试也有

很大的困难。标准的详细规格说明书定义了组件的功能,尽管能提供一定的帮

助,但是标准的说明书也很少说明全部的异常,它并不能帮助我们测试组件的性能,可靠性或其它的非功能性特征。

19.8使用的例子,说明需要支持顺序组成的适配器类型不同,分层的组合物和添加剂的组合物。

顺序组合的例子:部件C是由部件A和部件B依次组合而成的。

附加组合的例子:部件C是由部件A的界面和部件B的界面组成的。

层次组合的例子:部件C是由部件B组成的,而部件B是由部件C组

成的。

23.1解释为什么测试只能检测到错误的存在,而不是他们的缺席。

假定穷举测试的程序,在每一个可能的有效输入检查,是不可能的(适用于所有但平凡的程序)。测试用例不显示故障在程序或显示一个程序故障。如果他们发现一个程序故障则证明错误的存在。如果他们不显示故障,然而,这只是意味着他们已执行的代码序列,–为输入–是不是错误的选择。在相同的编码序列–不同输入–下测试可以揭示故障。

23.3回归测试是什么?解释锄自动化测试的使用和测试框架,如单元简化回归测试。

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。如果设置了自动回归测试,在每次修改代码之后都会自动进行测试,简化了回归测试的工作。一个自动化的测试包括成功的自身测试和其他测试。这样成功的测试成本和回归测试成本较低。

23.6在一个分布式数据库系统,如LIBSYS开发性能测试的问题是什么?

在软件测试一个系统中碰到的主要问题是:

在实际中你不能重复测试一个系统,所以你必须用一个模拟器来模拟系统的使用。然而,你没有系统实际工作的经验,用一个模拟器很难测试系统工作时的准确性。

2.LIBSYS系统不一定在专用的电脑上工作――该系统也可以同时在其他应用系统上工作。其他应用系统也会影响整个分布式系统的工作。在测试的时候,这些情况不会重复发生。

3.事实上数据的分布是未知的。数据分布受到特定的服务器的影响,所以对于数据的最初的假设可能是错误的。

23.7解释为什么接口测试是必要的甚至在个别组件已被广泛验证通过组件测试和程序检查。

在单元测试后接口测试的重要性:

①单元的接口可能没有明确的说明。确认这个单元的接口是以他的详细规格说明书为基础而不是以单元或者子系统在实践中的使用为基础的。

②假设了某些单元的操作,接口测试可以检测由这些单元组成的接口是否正确,有效。

③接口测试可以揭示在接口设计时的遗漏和错误。当接口和其他的单元组合在一起的时候这些错误会被发现,那么这些遗漏和错误可以被加到这个接口中。

26.1在什么情况下会公司收费软件系统比建议的费用估计加正常利润更高的价格?

①客户要开发者自己承担大部分的项目风险。

②客户有一些苛刻的要求,比如开发的时间比较短,要快速开发。

③开发软件这个工作不是公司主要的业务,所以为了开发项目必须从其他的业务上调派人手过来,那么就需要补偿给这些人更多的钱。

④客户很自私,只考虑到自己不能承担太多的钱。

26.2描述两个已被用来衡量程序员生产率度量。简要评述了各自的优点和缺点,这些度量。

已用于生产的测量指标:

?源代码行的每单位时间产生的

?目标代码指令的每单位时间

?页的每单位时间的文件其他的可能性是:

数据字典条目每单位时间?数(可能是有用的如果使用CASE工具)

数学定义的每单位时间产生的?数(规范)

书面的每单位时间的要求?数

设计图的每单位时间产生的?数

所有这些,当然,遭受同样的问题,其他指标,那就是,他们不考虑质量因素。

解释如何成本估计算法可以由项目经理进行期权分析。建议的情况下,管理者可以选择一种方法,不是基于最低工程造价。

使用算法模型进行项目估算,估算者应该做一系列估算(最坏估算,期望估算和最好估算)而不是单一估算,并用成本计算公式都计算一遍。管理者要估算软件的开发周期以及其他过程和产品因素的估算,比如团队队员的工作经验,硬件设备的更新,购买开发工具等。建立一张工作表,这张表包括了这些变化所产生的影响,并对这些影响进行估算。

由于一些组织机构方面的原因,管理者可能会选择一些相对比较贵的技术或者方法。比如软件工程师的经验相对比较丰富,但是工资也会比较高,但是开发人员还是会选择软件工程师来作为自己团队的成员而不使用新人。

28.6试列举三个为支持机构过程改善项目而开发的专门软件工具)

Elapsed time.经过时间。做某事需要多长时间。许多可能的例子如时间进行设计评审。

Resource utilisation. 资源利用率。大量的资源使用。如工作需要测试模块。 Events which occur.事件的发生。例如,一个系统已交付后发现的缺陷数。

29.1解释为什么在明确配置管理系统的文档时不用文档的名字,提出一个标准文档识别目录可用于组织中的所有工程。)

标题不是唯一的,所以不能用来标识文档。不同的子项目中的文档可能含有相同的标题。

文档标识的标准:<项目名称><子项目名称><任务名称><文档类型><文档号码><版本号><数据>

一个里程碑和可交付的关键的区别是什么?

里程碑是一个活动过程的终点。在每一个里程碑,应该有一个正式的输出,如报表,可以提出管理。里程碑报告不需要大的文件。他们可能只是一个已完成的内容简短的报告。里程碑应该代表一个独特的结束,在项目的逻辑阶段。

可交付成果是项目成果交付给客户。它通常是在一些重大项目相如规格或设计底交货。可交付成果是通常的里程碑,但不需要交付的里程碑。

为什么风险管理是软件工程的重要?

软件项目风险管理是特别重要的,因为大多数项目所面临的不确定性因素。这些来自松散定义的要求,估计软件开发所需的时间和资源的困难,在个人的水平和要求的变化,由于变化在客户的依赖需求。

什么是一个可行性研究解决?

可行性研究决定提出的系统是否是值得的。如果系统有助于组织的目标;

如果系统可以设计使用目前的技术和预算范围内;如果系统能够与其他系统,使用集成。

(可能是计算机系统,也可以是手工的系统?)

描述了用户界面设计的原则.P364

熟悉一致性(最小诧异) (可复原性) (指导性) (多样性)

在这一过程中的3个核心活动:

用户分析。了解用户与系统;系统原型。开发了一系列的原型实验;界面评价。这些原型与用户体验。

How to analysis the user activities in the UI design process?P378

在软件开发中的增量方法的优点是什么?P393

1.客户服务的快速交付。每个增量提供最高优先级功能给客户。

与系统用户的参与。用户必须参与发展,这意味着系统更容易满足他们的要求,用户更致力于系统。

讨论了增量式开发和原型之间的区别?P395

增量关系的发展提供一个工作系统的最终目的。开始开发这些要求是最好的理解。

目的丢弃原型是验证或派生的系统要求。成型过程开始与这些要求了解甚少。结对编程的优势是什么?P404

对程序的使用有许多优点:

它有助于发展共同拥有的代码和传播知识在团队。

它作为一种非正式的审查过程的每一行代码都是看了超过1人。

它鼓励重构整个团队可以受益于此。

原型如何可以用在软件开发过程中?什么是使用原型的好处?p409-411

一个原型可用于:

需求工程过程帮助的需求获取和验证;

在设计过程中探索和开发用户界面设计;

在测试过程中运行的背靠背试验

效益的原型

提高系统的可用性。

更符合用户的实际需求。

提高设计质量。

改进的可维护性。

减少开发工作量。

讨论四个问题integration.p430 COTS系统

在功能和性能控制的缺乏

COTS系统可能比他们出现有效的少

与COTS系统的互操作性问题。

不同的COTS系统可能会做出不同的假设,这意味着整合是困难的

无法控制的系统进化

COTS供应商没有系统的用户控制的演化

COTS供应商的支持

COTS供应商可能不在产品的生命周期提供支持

什么是一个可重用的组件特征?P443

软件测试的目的是什么?描述了验证测试和缺陷检测的差异??538

验证测试:向开发商和软件满足系统用户;一个成功的试验表明,系统工作的打算。

缺陷检测:发现在软件,其行为是不正确的或不符合其规格与一致故障或缺陷;一个成功的测试是一个使系统执行错误,因此暴露在系统缺陷测试。

为什么接口测试是特别重要的面向对象和基于组件的开发?P549

对象和组件的接口定义,可以与其他组件在不同的系统中............组合重用

我们必须考虑在计算程序中的对象点的数量?P618

在一个程序中的对象点的数目是一个加权估计:

单独的屏幕显示的号码;

由系统产生的报告的数目程序模块,必须开发以补充数据库代码的数

量;

描述在过程改进的三个阶段?P666

过程测量:当前的流程属性的测量。这些是评价改进的基线。

过程分析:当前进程的评估和瓶颈和缺陷识别。

过程中的变化:介绍了在分析过程中发现的过程中的变化。

什么会影响产品质量?P668

影响产品质量的四个主要因素:

你可以在过程度量收集?p672

为要完成的过程活动的时间

为过程或活动所需的资源

对某一事件发生的数

考虑开车去机场赶飞机和航空公司,你没有用过。什么样的风险可能是这次到机场的独特的,和那些可能是去机场的正常访问的一部分管理?

答:正常的风险:跑出来的气体,轮胎,天气延误,交通事故,遗忘的手提箱独特的风险:在公路,机场建设,可能不同的终端,在具体的检查,该航空公司延误

为什么是路径测试通常是不切实际的?

答:大多数程序具有无限数量的可能的路径通过的程序。

1.请简要说明软件过程的概念和基本元素。

答案要点:软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动,它应该明确定义以下元素:过程中所执行的活动及其顺序关系每一个活动的内容和步骤团队人员的工作和职责

2.请描述快速原型过程模型的各个阶段。

答案要点:快速原型方法的目的是解决软件需求不明确给开发带来风险的问题,其关键在于尽可能“快速”地建造原型,通过用户对原型的评价最终确定系统的需求。快速原型过程模型包括以下阶段:

原型需求分析:分析和提炼所收集到的客户需求;原型开发:基于初步的需求快速建造一个可以运行的软件原型,实现客户或未来的用户与系统的交互;原型评价:由用户或客户对该原型进行评价,需要的话再进一步细化待开发软件的需求,并继续调整原型直至需求确定下来为止。

3.对于下列每一个过程模型,分别列举一个可以适用的具体软件项目,并说明在开发中如何应用该模型。

(1瀑布模型(2快速原型模型(3增量模型(4形式化方法模型(5基于组件的开发模型

答案要点:(1)瀑布模型项目举例:某项目需要在一种新型机器上,为一种已知语言开发一个普通的编译器。选用分析:由于该项目的语言是已知的,需求是明确的和稳定的,整个系统属于中小规模,因此适合采用瀑布模型进行软件开发。阶段说明:略。

(2)快速原型模型项目举例:某公司需要给火车站开发一个交互式火车车次

查询系统,这是火车站首次使用该系统。选用分析:本项目的主要问题在于用户需要方面,该系统与最终用户的交互是十分关键的,但是在项目初期用户的需求基本上是不知道的,因此适

合采用快速原型方法来确定用户需求,在需求确定的基础上再开发最终系统。阶段说明:略。

(3)增量模型项目举例:某公司开发一个通用CAD 软件产品,产品需求是逐步完善的,某些需求在一定范围内是明确的,某些需求需要进一步细化,但是迫于市场竞争的压力产品需要尽快上市。选用分析:通用CAD 软件产品具有一定的成熟度,总体需求和软

件系统结构是可以确定的,但是实现该产品所有功能需要比较长的开发周期。为了尽快上市可以采用增量模型实行多版本的发布策略,既可以很快占领市场又可以为后续版本的需求定义奠定基础。阶段说明:略。

(4)形式化方法模型项目举例:某公司开发一个汽车防抱死刹车控制系统。选用分析:由于该系统对安全性和可靠性要求极高,需要在系统运行之前进行相关性能的检验,因此适合采用形式化方法开发该系统。阶段说明:略。(5)基于组件的开发模型项目举例:某公司开发企业管理ERP 系统,包括销售、库存、生产、财务、物流、人力资源等部分,在系统实施过程中不同的企业具有一定的需求差异。选用分析:企业ERP 系统具有组件化的结构,在不同企业实施时应该尽量重用已有的组件,因此适合采用基于组件的开发模型开发该系统,在直接应用或者修改使用的基础上,最终进行组件开发和系统集成。阶段说明:略。

4.在螺旋模型中,风险分析的作用是什么?

答案要点:在螺旋模型中,软件开发是在风险等级的指导下进行的。首先确定

软件工程习题及详细答案

个人收集整理勿做商业用途 软件工程习题及答案 一、选择题: 1. 为了提高测试的效率,应该。 A、随机地选取测试数据 B、取一切可能的输入数据作为测试数据 C、在完成编码后制定软件的测试计划 D、选择发现错误可能性大的数据作为测试数据 2. 与设计测试数据无关的文档是。 A、需求说明书 B、设计说明书 C、源程序 D、工程开发设计 3. 结构设计是一种应用最广泛的系统设计方法,是以为基础、自顶向下、逐步求精和模块化的过程。 A、数据流 B、数据流图 C、数据库 D、数据结构 4. 概要设计的结果是提供一份。 A、模块说明书 B、框图 C、程序 D、数据结构 5. 需求分析是由分析员经了解用户的要求,认真细致地调研、分析,最终应建立目标系统的逻辑模型并写出。 A、模块说明书 B、软件规格说明书 C、工程开发计划 D、合同文档 6. 注释是提高程序可读性的有效手段,好的程序注释占到程序总量的。 A、1/6 B、1/5 C、1/4 D、1/3 7. 变换型和事务型是程序结构的标准形式。从某处获得数据,再对这些数据作处理,然后将结果送出是属于。 A、变换型 B、事务型 8. PAD(Problem Analysis Diagram)图是一种工具。 A、系统描述 B、详细设计 C、测试 D、编程辅助 9. 分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的。 A、总貌 B、细节 C、抽象 D、软件的作者 10. 数据流图中,当数据流向或流自文件时,。 A、数据流要命名,文件不必命名 B、数据流不必命名,有文件名就足够了 C、数据流和文件均要命名,因为流出和流进数据流是不同的 D、数据流和文件均不要命名,通过加工可自然反映出

软件工程(习题与参考答案)

第1章概述(习题与参考答案) [判断题] 1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。(×) 2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。(×) 3. 购买大多数计算机系统所需的硬件比软件更昂贵。(×) 4. 大多数软件产品在其生命周期中不需要增强功能。(×) 5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。(√) 6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。(×) [选择题] 1. ()因素促使计算机系统越来越复杂。(D) A. 计算机内存和存储容量上的巨大增长 B. 外部输入/输出选项的更加多样性 C. 计算机体系结构方面的深刻变化 D. 以上所有选项 2. 下面的()不再是现代软件工程师关注的问题。(A) A. 为什么计算机硬件的成本这么高? B. 为什么软件需要很长时间才能完成? C. 为什么开发一个软件的成本这么高? D. 为什么不能在产品发布前去除软件错误? 3. 软件会逐渐退化而不会磨损,其原因在于()。(C) A. 软件通常暴露在恶劣的环境下 B. 软件错误通常发生在使用之后 C. 不断的变更使组件接口之间引起错误 D. 软件备件很难订购 4. 大多数软件仍然是定制开发的,其原因在于()。(C) A. 软件组件重用是十分普遍的 B. 可重用的组件太昂贵而无法使用 C. 软件在不使用其他组件的情况下很容易构造出来 D. 商业组件在很多应用领域中可以得到 5. 下面的()说法是正确的。(C) A. 软件危机在20世纪70年代末期全面爆发

B. 当前先进的软件工程方法已经解决了软件危机的问题 C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题 D. 软件危机是指在软件产品中存在一系列的质量问题 6. 软件工程的基本目标是()。(B) A. 消除软件固有的复杂性 B. 开发高质量的软件 C. 努力发挥开发人员的创造性潜能 D. 更好地维护正在使用的软件产品 7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方 法、工具和过程三个要素。(D) A. 软件产品 B. 软件过程 C. 软件测试 D. 软件工程 8. 软件工程的基本要素包括方法、工具和()。(C) A. 软件系统 B. 硬件环境 C. 过程 D. 人员 9. 软件工程师在从事软件工作时应使用下面的()准则。(E) A. 从来不为个人获利而窃取数据 B. 从来不散布或出售项目中自己工作的信息 C. 从来不故意毁坏或修改别人的程序、文件或数据 D. 从来不侵犯个人、小组或组织的隐私 E. 以上所有选项 第2章软件过程(习题与参考答案) [选择题] 1. ()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、 软件确认、软件改进等活动组成。(A) A. 软件过程 B. 软件工具 C. 软件产品 D. 软件工程 2. 软件过程的基本活动是()。(A) A. 分析、设计、实现、测试、演化 B. 沟通、计划、建模、构造、部署 C. 计划、分析、设计、实现、调试 D. 沟通、风险管理、度量、产品化、评审 3. ()软件需求规格说明书在软件开发过程中具有重要的作用,它是软件可行性分析的依据。(B) A. 真 B. 假

软件工程部分课后练习题答案

第一章 1.计算机系统是由计算机硬件系统和软件系统这两个密不可分的部分组成的。 2.计算机软件系统通过运行程序来实现各种不同应用,包括用户为自己的特定目的编写的程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等。 3.在软件工程学中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。 4.在软件工程层次结构中,包括工具层、方法层、过程、技术层和质量保证层。 5.在面向对象概念中,消息传递是其与外部世界相互关联的唯一途径。 第三章 1.软件需求分析,可以把软件功能和性能的总体概念描述为具体的软件需求规格说明,进而建立软件开发的基础。 2.软件需求工作基本上包括收集用户、市场等方面对项目的需要,经过分析建立解题模型,细化模型,抽取需求。 3.结构化分析方法的基本步骤是采用由顶向下对系统进行功能分解,画出分层数据流图;由后向前定义系统的数据和加工,绘制数据词典和加工说明;最终写出软件需求和规格说明书。 4.面向对象分析方法总是从理解系统的“使用实例”开始,基本步骤是:定义系统的用例,在领域分析的基础上建立问题域的类(对象模型),然后开始建立对象——关系和对象——行为模型。 5.需求分析评审过程由以下5个步骤组成:规划、准备、召开审查大会、修改缺陷、重审。 第四章 1.与软件需求分析一样,软件设计也有两种主要设计方法:以结构化设计为基础的结构化软件设计和面向对象方法指导的面向对象软件设计。 2.传统的软件设计任务通常分两个阶段完成。第一个阶段是概要设计,包括体系结构设计

和接口设计,并编写概要设计文档;第二阶段是详细设计,其任务是确定各个软件的数据结构和操作,产生描述各软件组件的详细设计文档。 3.结构化的软件设计方法是一种面向数据流的设计方法,在面向数据流的方法中,数据流是考虑一切问题的出发点。 4.在数据流图中所代表的结构化设计模型中,所有系统均可纳入两种典型的形式,因此系统结构图也有两种类型:变换型系统结构图,事务型系统结构图。 5.Jackson表示法包括图形描述(Jackson图)和文本描述(Jackson伪代码)两种形式。 第五章 1.与结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,应用数据设计(对象属性设计)、接口设计(消息模型开发)以及过程设计(子系统级设计)。 2.当两个子系统相互通信时,可以建立客户机/服务器连接或端对端连接。 3.系统设计不仅包括主要的业务需求子系统设计,还包括用户界面子系统设计、任务管理子系统设计、数据管理子系统设计。 4.对象设计强调从问题域的概念转换成计算机领域的概念,通过对象的描述、算法和数据结构设计、程序构件和接口,实现相关的类、关联、属性和操作。 5.在面向对象设计中系统设计的主要目标是表示软件体系结构。对象设计着重于对象及其交互的描述 第八章 1.软件程序测试的目的是发现程序中的错误,其主要任务是通过在计算机上执行程序,暴露

软件工程课后习题参考答案

1.简述软件开发的本质。 答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。P19 3.简述何谓模型以及软件开发中所涉及的模型。 答:模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。 软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。 4.简述软件开发所涉及的两大类技术。 答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。 5、简述需求与需求规约的基本性质。 答:需求的基本性质:1) 必要的,该需求是用户所要求的。2)无歧义的,该需求只能用一种方式解释。3)可测的,该需求是可进行测试的。4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。5)可测量的,该需求是可测量的。 需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。 3)完整的:没有被遗漏的需求。4)一致的:不存在互斥的需求。 6、简述软件需求的分类。

答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可 7、举例说明功能需求和非功能需求之间的基本关系。 答: 非功能需求可作用于一个或多个功能需求,例如 非功能需求可作用于一个或多个功能需求 其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。P24 8、有哪几种常用的初始需求发现技术 答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。P26 9、简述需求规约的3种基本形式。 (1) 非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。(2) 半形式化的需求规约。半形式化的需求规约即以半形式化符号体系(包括术语表、标准化的表达格式等)来表达需求规约。(3)形式化的需求规约。形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注释的支持。 P29 10、简述软件需求规约的内容和作用。 答:软件需求规约的内容有:引言、总体描述、特定需求、附录、索引。P28 需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 11、简述需求规约在项目开发中的基本作用。 答:需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求

软件工程课后习题答案

软件工程课后习题答案 习题1 略。 习题2 略。 习题3 略。 习题4 2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则? 人们在理解用自然语言描述得规格说明时,容易产生二义性。为了克服非形式化方法得缺点,人们把数学引入软件开发工程,创造了基于数学得形式化说明技术。 应用形式化方法得准则: (1)应该选用释放得表示方法; (2)应该形式化,但不要过分形式化; (3)应该估算成本; (4)应该有形式化方法顾问随时提供咨询; (5)不应该放弃传统得开发方法; (6)应该建立详尽得文档; (7)不应该放弃质量标准; (8)不应该盲目依赖形式化方法; (9)应该测试、测试再测试; (10)应该重用。 4.用有穷状态机说明自动化图书馆流通系统

习题5 略。 习题6 略。 习题7 略。 习题8 略。 习题9 1.什么就是面向对象方法学?它有哪些优点? 面向对象方法学,就是尽可能模拟人类习惯得思维方式,使开发软件得方法与过程尽可能接近人类认识世界解决问题得方法与过程,从而使得实现解法得解空间(也称为求解域)与描述问题得问题空间(也称为问题域)在结构上尽可能一致。 优点: 1.与人类习惯得思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5.可维护性好 10.建立订货系统得用例模型。 分析如下:从对这个订货系统得需求可以知道,仓库管理员通过放在仓库中得终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供得产生报表功能,以获取订货报表。综上所述,用例如下: 习题10 1.用面向对象方法分析研究本书习题2第2题中描述得储蓄系统,试建立它得对象模型、动态模型与功能模型。

-软件工程习题答案参考

软件工程 绪论 1.什么是软件危机?为什么会产生软件危机? 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2.什么是软件生产工程化?工程化生产方法与早期的程序设计方法 主要差别在哪里? 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。 3.分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管 理的相互关系。 答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。所以对于一

个理想的软件工程环境,应该同时具备技术和管理两个方面。 4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。 答:用C++开发一个软件,是校园一卡通的模块。首先,要在编辑程序支持下在计算机中输入源程序。然后编译程序,把源程序翻译成目标程序。如果发现错误,就重新调入编辑程序对源程序进行修改。编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。 5.什么是软件工程环境?谈谈你对环境重要性的认识。答:方法与工具相结合,再加上配套的软、硬件支持就形成环境。例如在批处理时代,用户开发的程序是分批送入计算机中心的计算机的,有了错误,就得下机修改。程序员对自己写的程序只能继续地跟踪,思路经常被迫中断,效率难于提高。分时系统的使用,使开发人员从此能在自己的终端上跟踪程序的开发,仅此一点,就明显提高了开发的效率。 6. 何谓面向对象软件工程?简述它与传统软件工程在各型软件开发中的作用。 答:以面向对象程序设计为基础。 7. 软件按规模大小可分成哪几类?简述软件工程中各型软件开发中的作用。 答:按规模分为极小、小、中、大、甚大、极大。(1)中小型软件:

软件工程课后习题(含答案)

第一章练习题 一、填空题 1、软件工程三要素是:方法、工具、过程。 2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。 二、名词(术语)解释: 1、可靠性---是指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。 2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。 三、问答题 1、面向对象方法的优点是什么? 答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。 (2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。 2、可视化开发方法的优点有哪些? 答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。 (2)软件开发简单,易学、易上手。 (3)专业或非专业人员都能参与软件开发活动。 第二章练习题 一、填空题: 1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工 程活动。 2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。 3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。 4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规范、项目规范。 二、简答题: 1、瀑布模型的优点有哪些? 答:1、强迫开发人员采用规范的技术方法; 2、严格地规定了每个阶段必须提交的文档; 3、每个阶段结束前必须正式进行严格的技术审查和管理复审。 2、瀑布模型的缺点是什么? 答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。 2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。 3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很 难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。

《软件》课后习题答案

第一章 1.什么是程序,程序有哪些特性? 程序:是一个用计算机语言描述的某一问题的解决步骤,它的表示是静态的。 特性:静态与动态属性,由程序语言抽象的符号表达,是对数据施行算法的过程,是分层嵌套的。2.软件有哪些特性? 特性:功能、性能相对完备的程序系统,具有使用性能的软设备,软件是信息商品,易大批量生产、成本低,是极具竞争性的商品,投入的资金主要是人工费,是只有过时而无“磨损”的商品。 3.什么是群件,目前常见的群件产品有哪些? 群件:是近几年开发的一种基于电子邮件的应急系统软件,它拓 宽了电子邮件的的内涵,涵盖了很多通信协调功能。目前常见的群件产品有:IBM公司的lotus Note、Microsoft公司的Exchange Server 、Novell公司的Group Wise等 4.计算机的软件是由哪几部分组成的,各自的作用是什么? 软件由:软件程序(解题步骤)+数据(描述事物的属性和状态)+文档(功能性能的说明性信息)组成。 5.什么是程序开发环境,常见的开发环境有那些? 程序开发环境:即现在作用到的编程语言,一般以一个集成环境的形式出现。 此环境中包含了语言编辑器,调试工具,编译工具,运行工具,图标图像制作工具等。 6.常见的Internet工具有哪些? Web服务器软件、web浏览器、文件传送工具FTP、远程访问工具Telnet、邮件软件、网络聊天、多媒体等。 7.操作系统的作用(功能)是什么? 1、处理器管理 2、存储器管理 3、设备管理 4、文件管理 5、作业管理。 8.文件系统足以支持程序运行,数据库的作用是什么? 克服文件系统的缺陷。 9.软件开发的核心是编制可运行的程序,还有比这跟重要的工作么? 系统分析和数据分析。 10.程序设计语言本身是软件么? 是,而且是系统软件。 第二章 1.程序设计语言有哪两种实现方式,各有什么优缺点? 方式一:编译(优:可进行优化,目标码效率很高。缺:费时)方式二:解释(优:可以逐句读入源代码,比较灵活,小巧。解释器不大,工作空间也不大,且能根据程序的执行情况决定下一步需做什么。缺:一句一句的难于优化,效率低) 2.结构化程序设计语言有那几种基本控制结构? 顺序、选择、循环。 3.为什么要引进过程,过程和函数的区别有哪些? 引进了过程或函数可以让程序语言更清晰,可以多次调用。使用过程还可以降低程序的复杂性,使程序结构变得清晰明了。过程是不带返回值,函数是带返回值。 4.什么是全局变量,什么是局部变量? 全局变量:出了程序便失去定义,作用范围,整个程序。 局部变量:局部的程序块中有定义。 5. 什么是指针变量? 指向数据的地址的变量。 6.过程参数传递的方式有哪几种,各有什么特点? 传值:优:很安全,不会改变全局变量的值。缺:占用双倍存储单元,传值时不能带回值。 引用:优:能带返回值,存储空间小。缺;局部有可能改变全局变量的值。

软件工程课后习题答案

软件工程课后习题答案 第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

软件工程习题参考答案

《软件工程》习题参考答案 概述 1.什么是软件危机,它有哪些典型表现 所谓“软件危机”就是,在计算机软件的开发和维护过程中所遇到的一系列严重的问题,概括起来归纳为:如何开发软件,以满足日益增长、日趋复杂的需要;如何维护数量不断膨胀的已有软件。 软件危机的典型表现主要有: a. 开发成本和进度不能准确估计 b. 开发出来的软件不能满足用户的要求 c. 软件的可维护性差 d. 软件质量不可靠 e. 软件成本在系统中的比重逐年上升 f. 软件开发生产率的提高速度不够 2.简述产生软件危机的原因和解决的思路。 软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的方法不正确有密切关系。 解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。 3.什么是软件工程它有哪些本质特性 软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开发和维护的学科。 其实质就是用工程的概念、原理、技术和方法,结合有效的管理方法和先进的开发技术,开发与维护软件,以解决软件危机。 4.软件工程是如何用来消除软件危机的 软件工程是从技术和管理两个方面来研究如何更好地开发和维护计算机软件,从源头上消除软件危机。 6.简述软件的定义。 软件=程序+ 数据+ 文档 7.软件工程的目的是什么 为高质量的软件开发提供一个科学的体系框架。 8.什么是软件工程方法学软件工程是一种什么样的技术包括哪三大要素分为哪三个分支 软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发技术方法的集合。目前,使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。

软件项目管理课后习题参考答案

第一章项目管理概述 一.选择题 1.项目是(D)。 A.一个实施相应工作围的计划 B.一组以协作式管理、获得一个期望结果的主意 C.创立独特的产品或服务所承担的临时努力 D.必须在规定的时间、费用和资源约束条件下完成的一次性任务 2.你刚被指派在你的公司的一个不同的部门中管理一个大的项目。你正试图了解项目是关于什么的,谁是主要的项目干系人,为了管理好此项目,你首先应该做(C)。 A.所有的项目计划 B.会见以前的项目经理,以找出他离开的原因 C.与你的老板见面,了解他对项目的看法 D.与你的新项目团队见面,认识他们和了解他们对项目的看法 3.不属于项目的活动是(B )。 A.一种新型罐头产品的开发 B.罐头产品的生产 C.罐头产品的试制 D.罐头产品的营销策划 4.项目是一个特殊的将被完成的有限任务,它是在一定的时间,满足一系列特定目标的多项相关工作的总称。此定义实际包含的含义有(D)。 A.项目是一项有待完成的任务,且有特定的环境与要求 B.在一定的组织机构,利用有限资源(人力、物力、财力等)在规定时间完成任务C.任务要满足一定性能、质量、数量、技术指标等要求

D.项目的实施具有一定的风险

第二章项目实施的环境与过程 一.选择题 1.项目管理中应用最广泛的组织形式是(C )。 A.项目式B.职能式C.矩阵式D.网络式 2.下面有关矩阵式组织环境的描述,不正确的是( A )。 A.项目的经理必须是职能部门领导,这样才能取得公司总经理对项目的信任B.项目经理和职能经理必须就谁占主导地位达成共识 C.矩阵式项目组织能够充分利用人力资源 D.矩阵式项目组织能够对客户的要求作出快速响应 3.在下列组织结构形式中,团队建设最困难的是( C )。 A.直线式结构B.职能式结构C.矩阵结构D.项目结构4.职能式项目组织形式中项目经理的权限( A )。 A.很小B.有限C.中等D.很高 5.项目在哪种组织中最不被重视(D)。 A.平衡矩阵型B.强矩阵型C.项目协调员型D.职能型6.下面各种类型的组织中,哪种最常发生冲突( B )。 A.职能型组织B.矩阵型组织 C.项目型组织D.项目协调员型组织 7.传统组织结构的不利因素是(B)。 A.与客户接触渠道单一B.对客户需求反应缓慢 C.项目领导拥有太多的正式权力D.直接项目报告太多

软件工程课后习题答案第五版

软件工程课后习题答案第五版 《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计。

(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 3.怎样克服软件危机? (1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。 (3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 4.构成软件项目的最终产品: 应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期? 软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 6.软件生存周期为什么划分成阶段? (1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。

软件工程课后习题答案

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具

软件工程课后参考答案

第一章课后参考答案 1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的主要原因 (1)与软件本身的特点有关 (2)与软件开发和维护过程中使用的方法不正确有关

2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机? 软件工程是指导知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 本质特征: (1)软件工程关注于大型软件的构造 (2)软件工程的中心课题是控制复杂性 (3)软件经常变化

软件工程课后习题答案

第一章 1.1举出至少5个例子来说明“意外效应法则”在计算机软件方面的应用。 答:典型的例子包括使用“数字汽车仪表板”的软件,赋予高科技,高品质的图像的软件;如广泛的消费类电子产品的软件;个人电脑,工业仪器仪表和机器的软件。软件分化出的在电子商务方面的应用。 1.2举例说明软件对社会的影响(包括正面影响和负面影响)。 答:这是一个很好的课堂讨论问题(如果时间允许),而不是专注于老生常谈的(但很重要)隐私问题,生活质量等问题。您可能想要讨论关于”技术恐惧“方面的问题,软件也许会使它恶化但也可能减少”技术恐惧“。另一个有趣的方面是使用诺依曼的“风险”列在SEN中做重点讨论。你也可以考虑基于软件的“现金”经济,新模式的互动娱乐,虚拟现实,电子商务等方面来思考软件对社会的影响。 1.3针对1.1节提出的5个问题,请给出你的答案,并与同学讨论。 答:软件需要如此长的开发时间: a)设施不上线 b)开发工具并不如预期般运作 c)客户提出的新要求,需要重新设计和返工 d)产品依赖于政府的规定,被意外更改。 e)严格的要求,与现有系统的兼容性需要超过预期更多的测试,设计和实现。 f)多个操作系统下运行的任务需求比预期需要更长的时间。 g)软件项目风险管理比预期需要更多的时间。 h)依赖的技术仍处于开发阶段,从而延长日程安排。 开发成本高: a)比当时预期低得令人无法接受的质量,需要进行更多的测试,设计和实施工作。 b)制定了错误的软件功能需要重新设计和实施。 c)开发错误的用户界面,而导致重新设计和实施。 d)开发了不需要的额外的软件功能而延长了开发日程安排。 在将软件交付顾客使用之前,我们无法找到所有错误: a)产品依赖于政府监管,意外而改变。 b)产品技术标准草案,会意外更改。 c)有时会在项目后期添加新的开发人员。 d)因为团队内的冲突有时会导致沟通不畅,而产生糟糕的设计。 e)破坏高效调度产生的项目管理成果和无效的规划 f)有时装备部件质量差,导致额外的测试,设计和集成工作和管理额外的客户关系。 软件开发和维护的过程仍旧难以度量: a)有时该项目的目的是不明确。 b)有大量的业务所涉及的风险。 c)如果产品内置没有装好。 d)我们需要不断检讨我们的工作。 e)进行维护检查的时间。 f)在整个软件开发过程中要彻底组织项目团队。 1.4在交付最终用户之前,或者首个版本投入使用之后,许多应用程序都会有频繁的变更。

软件工程期末复习题

填空: 1.软件包括程序、数据和文档。 2.软件按其功能划分,可以分为系统~ 、应用软件和支撑软件。 3.继承是使用已有的类定义作为基础建立新类的定义的技术。 4.从工程管理的角度看,软件设计分两部完成:概要设计和详细设计。 5.类是一组具有相同数据结构和相同操作的对象的集合。 6.软件质量特性度量有两类:预测性和验收型。 7.软件维护的类型有4种,分别是纠错性维护、适应性维护和预防性维护和完善性维护。 8.要从以下三个方面分析研究中衡量解决方法的可行性:经济可行性、操作可行性、 技术可行性。 9.需求分析应交付的主要文档是需求规格说明。 10.数据流图的基本组成部分有外部实体、数据流、数据存储、数据处理。 11.数据流图和数据字典共同构成了系统的__逻辑__模型,是需求规格说明书的主要组成部 分。 12.软件生存周期一般可分为问题定义. 可行性研究、需求分析、总体设计、编码和 单元测试、综合测试、运行与维护阶段。 13.衡量软件的独立性有两个定性的度量标准,即内聚和耦合。 14.模块之间联系越紧密,其内聚性就越强,模块的耦合则越差。 15.数据耦合传递的是数据,控制耦合传递的是控制信息。 16.面向数据流的设计又称结构化设计,它是以需求分析阶段产生的DFD为基础,按一 定的步骤映射成软件结构。 17.数据流图一般可分为事务性和变换型两类。 18.模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。 19.设计出软件的初步结构以后,应该进一步分解或合并模块,力求降低耦合,提高内 聚。 20.详细设计主要确定每个模块的具体执行过程。 21.判定表能够清晰地表示复杂的条件与所产生的动作之间的关系。 22.任何程序都可由顺序、分支和循环3种基本控制结构构造。 23.测试用例由输入数据和预期的输出结果两部分组成。 24..黑盒法只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功 能要求。 25.调试也称纠错,是在成功的测试之后才开始进行,其目的是确定错误的原因和位 置,并改正错误。 26.软件测试的目的是发现错误,通常把测试方法按功能划分为黑盒测试和 白盒测试两大类。因为通常不可能做到穷尽测试,所以精心设计测试方案是保证达到测试目的所必须的。 27.计算机软件的开发经过三个阶段分别为:定义、开发和运行。 28.软件维护的活动包括四种:改正性维护、适应性维 护、完善性维护和预防性维护。 29.在软件测试过程的4个步骤中,测试依据是需求规格说明的是验收测试。 30.在七种内聚中属于最强的是功能内聚,最弱的是偶然内聚 31.软件工程的原则包括:模块化、抽象与逐步求精、信息隐藏与局 部化、模块独立。 32.模块耦合程度越低,则说明模块的独立性越强。 33.系统设计分为两个阶段分别为总体设计与详细设 计。

软件工程课后习题答案

软件工程课后习题答案 Chapter1 1.1)The definition for software presented in Section 1.2 applies to the Web sites. There are, however, subtle differences between a Web site and conventional software. Among the most important are that the content that a Web site presents is considered to be part of the Web Application while that data processed by conventional software is often considered to be separate from the processing functions delivered. 1.4)Who would have thought that software would lead to: (1) a change in the dating habits of many young people (Internet dating); (2) the way people communicate (cell phones); (3) methods of warfare (cyberweapons); (4) the diagnosis of diseases (MRIs and related computer-based diagnostic devices), and (5) the manner in which people acquire and enjoy media (music, DVDs, etc.). 1.6)The Law of Conservation of Familiarity: As the system evolves the users engineers, developers all those associated must have the complete knowledge of the content and behavior to achieve satisfactory results. Increase in growth may diminish that knowledge (mastery); hence the average increase in growth remains invariant as the system evolves. 1.7)Many modern applications change frequently before they are presented to the end user and then after the first versions have been used. A few ways to build software to stop deterioration due to change would be: ?Make sure that software is designed so that changes in one part of a program do not create side-effects in another part of the program. ?Make sure that software is designed so that it does not depend on external devices or systems that are likely to change with time. ?Make sure test cases and results are archived and available so that the software can be retested when changes are made. ?Make sure you spend time understanding what the customer wants. 1.8)The two broadest categories encompass risks associated with economic loss and risks to the well being of people. It might be a good idea to select five risks (culled from the sources noted) and present them to the class. Look for humorous as well as serious risks. 1.9)The same approach to software engineering can be applied for each of the six categories, but it must be adapted to accommodate the special requirements of each category. 1.10)There are literally dozens of real life circumstances to choose from. For example, software errors that have caused major telephone networks to fail, failures in avionics that have contributed to plane crashes, computer viruses (e.g., Michelangelo) that have caused significant economic losses and attacks on major e-commerce sites. 1.11)The Law of Declining Quality: The quality of systems will decline unless they are maintained by various procedures to adapt to the environmental changes. This concept is similar to the ―deterioration‖ discussed in Problem 1-5. 1.12)The Law of Conservation of Organizational Stability: The average effective global activity rate is invariant over the lifetime of a product. Chapter 2 2.1)

相关文档
最新文档