软件工程课后习题:
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.在螺旋模型中,风险分析的作用是什么?
答案要点:在螺旋模型中,软件开发是在风险等级的指导下进行的。首先确定
该阶段的目标,完成这些目标的选择方案及其约束条件;其次从风险角度分析方案的开发策略,努力排除各种潜在的风险,在需求不适当的情况下可能需要建造原型系统;如果某些风险不能排除,该方案可能立即终止,否则继续启动下一步的软件开发和验证工作,并再次通过风险分析规定过程遵循的策略;最后,评价该阶段的结果,并规划下一个迭代。从上述过程中可以看出,风险分析的作用是通过识别项目中的高风险问题,使开发人员制定适当的开发策略消除这些风险。
5.某大学准备开发一个新的学生注册选课系统,以替换一个现有的系统。请设计一个适用于该系统开发的过程模型,并进一步描述该模型。
答案要点:假设原有的学生注册课程系统是由学生手工提交书面选课单,教师手工提交成绩单,教务管理人员在客户端录入学生选课结果和课程成绩;而在新的选课系统中,所有用户在自己的计算机上通过 Internet 访问和操作该系统,该软件系统需要更新服务器和数据库等系统,并扩充一些新功能和提高系统性能。从该系统的具体情况来看,系统的需求是比较容易明确的,整个系统的结构需要重新设计,但是原有的遗留系统中有些部分是可以重用的,因此我们可以采用组件模型实施软件开发:系统需求分析:由于该系统是现有系统的扩展,因此首先可以经过一个简单的需求分析阶
1.3什么是所有专业的软件应该有四个重要的属性?建议四其他属性,有时可能是重要的。回答:
四个重要的属性是可维护性,可靠性,性能和可用性。其他可能是重要的属性,可重用性(它可以重复使用在其他应用程序中),分布性(可以分布在网络处理器),可移植性(可以在多个平台上如有笔记本电脑和移动平台操作)和互操作性(它具有宽范围的其它软件系统的工作)。这4个关键属性例如可靠性分解,
安全,安全,有效的分解,等也对这一问题的一个有效的回答。
2.1给你的答案基于系统正在开发的类型的原因,建议最适当的通用的软件过程模型,可以用来管理以下系统发展的基础: ?系统控制反在汽车制动锁 ?虚拟现实系统的支持软件维护 ?大学会计系统取代现有的系统
?互动旅游规划系统,帮助用户计划行程,以最低的环境影响
答:1。防抱死制动系统,这是一个安全关键系统,需要大量的前期分析实施之前。这当然需要一个计划驱动的方法来开发的要求,认真分析。因此,瀑布模型是使用最合适的方法,也许有着不同的发展阶段之间的正式的转换。 2。虚拟现实系统,这是一个系统,要求将发生变化,将有一个广泛的用户界面组件。增量开发,也许,一些用户界面的原型是最合适的模型。敏捷过程可以用。
3。高校会计制度,这是一个系统的要求是相当有名,它将被用于在一个与其他来源如科研经费管理系统很多连接环境。因此,基于复用的方法可能是适当的为。
4。互动的旅游规划系统的一个复杂的用户- 2—接口,但它必须是稳定的,可靠的。一个增量的开发方法是最合适的系统要求将获得与系统实际的用户体验的变化。
2.4说明为什么它是发展用户的需求,在需求工程过程的开发系统的要求之间做出一个重要的区别。
回答:这是用户和系统的要求,这意味着他们应该分开考虑的最基本的区别。 1。用户要求的目的是描述系统
从用户的角度来看的功能和特点以及用户了解这些要求,它是必不可少的。他们应该在自然语言表达的,可能不是很详细的表达,让一些实施的灵活性。在这个过程中所涉及的人必须能够了解用户的环境和应用程序域。2。系统要求比用户更详细要求和拟系统,可能是一个系统的合同的一部分,一个精确的规格。他们也可能被使用的情况下开发外包和开发团队需要什么应该开发一个完整的规范。系统要求是在用户要求开发了。练习(作业):其4.2,4.2×4.4 发现在下面的语句的售票系统的一部分要求的歧义或遗漏:
自动售票系统出售火车票。用户选择他们的目的地,输入信用卡和个人识别号码。
发出的火车票和信用卡账户收取。当用户按下启动按钮,一个潜在的菜单显示目的地是激活的,随着消息的用户选择一个目的地。一旦目标已被选定,要求用户输入他们的信用卡。
检查其有效性,然后用户被要求输入一个个人标识符。当信用交易已被验证,彩票发行。
回答:歧义和遗漏,包括:- 3—
可以买几张票的顾客对同一目标在一起 还是必须一次买一?
客户可以取消请求如果犯了一个错误?应?
如果用户试图把卡在选择之前发生了什么 目的(如他们在ATM机)?为了不同的目的地的机票吗? 系统应该只卖门票站之间的地方
必须用户按下启动按钮,如果他们想买另一个
系统应该如何如果无效卡输入响
机位于直接连接或应该包括所有可能的目的地?4.4
写的一组售票系统的非功能性需求,设置它的预期的可靠性和响应时间。 回答:可能的非的售票系统的功能需求包括:1。在0600和2300中的任何一天,总的系统停机时间不应超过5分钟。
2。在0600和2300中的任何一天,在一个系统的故障应不超过2分钟的恢复时间。3。在2300和0600中的任何一天,总的系统停机时间不应超过20分钟。 所有这些都是可用性的要求–注意这些变化根据一天的时间。失败的时候大多数人都是不可接受的旅行比失败的时候很少有客户。4。在用户按下机器上的按钮,应更新显示在0.5秒。
5。出票后,信用卡确认已收到不应超过10秒。
6。在验证信用卡,显示应为客户提供表示动作发生的状态消息。这告诉客户,确认潜在的耗时的活动仍在进行中,系统不只是失败。 7。机票发出请求的最大可接受的故障率为1:10000。 练习(作业):p143-144 5.2,5.5,5.6,5.7 5.2
你如何使用一个系统中已经存在的模型?解释为什么4—
它并不总是需要这样的系统模型是完整和正确的。同样的如果你开发一个新的系统模型,是真的吗?回答:
你可以创建和使用一个系统已经存在的理由如下模型: 1。要了解和记录的现有系统的体系结构和操作。 2。作为讨论的可能变化,系统的焦点。 3。通知重新实施系统。
你不需要一个完整的模型,除非打算完全文档现有系统的运行情况。在这种情况下,该模型的目的通常是为了帮助你工作的系统的一部分,只有这些需要建
模。此外,如果模型是用来作为一个讨论的焦点,你是不可能感兴趣的细节,所以可以忽略模型中的系统的一部分。
一般来说这是真的,新系统的模型,除非基于模型的方法的发展是以在这种情况下,一个完整的模型所需要的。其他情况下,您可能需要一个完整的模型时,这种模式得以产生的系统文件的一部分合同要求。
5.5开发了一个序列图显示的相互作用涉及当学生注册一个在大学课程。课程可能有有限的招生,所以注册过程必须包括检查的地方是可用的。假设学生访问一个电子课程目录找到可用的课程。回答:
一个相对简单的图都是需要在这里。最好不要太计较像UML箭头样式为几乎没有人能记得他们之间的差异。
5.6仔细看邮件和邮箱中的电子邮件系统,可以使用。模型的对象类,可以用在系统实施中代表一个信箱和电子邮件。回答:
5.6仔细看邮件和邮箱中的电子邮件系统,可以使用。模型的对象类,可以用在系统实施中代表一个信箱和电子邮件。回答:
5.7基于你在银行ATM经验,绘制活动图,数据处理时所涉及的客户提取现金从机器模型。
6。回答:请注意我不代表其他服务的活动或验证失败。
答:请注意我不代表其他服务的活动或验证失败。
练习(作业):p173-174 6.1,6.3,6.9 6.1
当描述一个系统,解释为什么你会在需求规格说明的完整的设计系统的体系结构。
回答:建筑可能要在规格书提供构建规范和发展不同的子系统规范同时设计,允许分包商制造硬件和系统成本的提供。6.3
解释为什么设计冲突可能会出现当设计一个架构,可用性和安全性的要求是最重要的非功能性需求。
回答:从根本上说,提供的可用性,你需要有(一)复制组件体系结构中的一个组成部分,在失败的事件,你可以立即切换到备用组件。你也要被处理的数据的多个副本。安全的需要最小化的数据副本的数量,在可能的情况下,采用一个架构,每个组件只知道尽可能多的需要,要做自己的工作。这减少了入侵者的几率7— 访问数据。
因此,有可用性之间的冲突的一个基本的建筑(复制,几份)和安全(专业化,最小的副本)。系统设计师必须找到这些根本对立的要求之间的最佳折衷。 6.9使用信息系统的基本模型如图6.16中给出,表明可能是一个信息系统,组件 允许用户查看航班的到达和离开的从一个特定的机场信息。
答:学生应该考虑在信息系统的水平,应确定组件可能包括在每个级别。这些组件的例子可能是:1级(数据库)
飞机飞行状态数据库;数据库;机场信息;2级:(信息检索水平) 状态管理;飞行管理;搜索;3级:(用户交互水平) 认证;会话管理;表格处理()4级(用户界面) 输入检查(JavaScript),浏览器
练习(作业):p202-203 7.1,7.3,7.1
7.1使用结构化的符号如图7.3所示,指定报告状态和配置气象站的使用情况。你应该了解的功能,这里需要合理的假设。
回答:
7.3使用UML的图形符号的对象类,设计了以下对象类的属性和操作,识别。用你自己的经验来决定,应该对这些对象相关联的属性和操作。?电话 ?打印机为个人电脑?个人立体音响系统?银行账户 ?图书馆目录
回答:有许多可能的设计在一个很大的复杂性可以被添加到对象。然而,我只是真的寻找简单对象封装这些文物的主要要求。可能的设计是在上面的图所示。