四川大学软件工程课后习题答案 联系客服

发布时间 : 星期二 文章四川大学软件工程课后习题答案更新完毕开始阅读

程序,有时适合原型模型是某些类别的数学算法,命令驱动系统和其他应用在没有实时交互时结果可以很容易地检查。难以用原型模型的应用程序,包括控制和过程控制功能许多种类的实时应用程序和嵌入式软件。

2.7如果将原型变成一个可发布的系统或产品,应该如何调整过程?

答:如果将原型变成一个可发布的系统或产品,软件工程师和客户需要满足和定义软件的总体目标,识别已知的任何要求,对整体轮廓进一步的强制定义。原型作为一种机制,用于识别软件需求。如果一个工作原型被建立了,开发商会试图利用现有的程序片段或应用工具(例如,报表生成器,窗口管理等)使工作方案,可以快速生成。

2.8详细描述三个适于采用增量模型的软件项目。 答: 每一个线性序列产生的“增量”交付的软件,例如字处理软件开发使用增量范式可能会提供基本的文件管理,编辑和文件制作功能在第一增量,更复杂的编辑和文件制作能力在第二增量;拼写和语法检查在第三增量,先进的页面布局能力在第四增量。任何增量的处理流程

可以纳入原型范式。增量发展是特别有用当人员无法在经营期限为一个已成立的项目做完美的实施。

2.9当沿着螺旋过程流发展的时候,你对正在开发或者维护的软件的看法是什么?

答:随着工作的螺旋向外移动,产品走向一个更完整的状态,执行工作的抽象层次减少了。

2.10可以合用几种过程模型吗?如果可以,举例说明。

答:过程模型可以合用,每个模型都有个有点不同的处理流程,但都执行相同的通用框架活动集:沟通,规划,建模,施工和交付/反馈。例如线性顺序模型可以作为一个有用的过程模型,在被固定的情况下,要求工作以线性的方式继续进行,直至完成。在这情况下,开发者可能无法确定一种算法的效率,一个操作系统的适应性或应采取的人机交互的形式。在这之中,以及许多其他场合原型模型可以提供最好的办法。在其他情况下,以渐进的方式可能是有意义的和螺旋模型的流动可能是有效率,特殊过程模型具有许多的一个或多个传统的特性。

2.11协同过程模型定义了一套“状态”,用你自己的话描述一下这些状态表示什么,并指出他们在协同过程模型中的作用。

答:简而言之,并发进程模型假定不同的部分项目会有所不同阶段的完整性,因此,不同的软件工程活动都被同时执行。目前的挑战是管理的并发,并能够评估该项目的状态。

2.12开发质量“足够好”的软件,其优点和缺点是什么?也就是说,当我们追求开发速度胜过产品质量的时候,会产生什么后果?

答:开发质量“足够好”的软件可能会碰到死亡线(截止时间),但质量会是比

较好的。当追求开发速度超过了产品的质量,这可能会导致许多缺陷,该软件可能需要更多的测试,设计和实施工作。需求定以的不是很清楚,可能需要不断地改变。半调子和速度过快开发都可能导致无法检测到重大的项目风险。质量太差可能导致过多的质量问题和频繁的返工。

2.13详细描述三个适于采用基于构件模型的软件项目。

答:我会建议推迟这个问题直到“软件过程改进”这一章。

2.14我们可以证明一个软件构件甚至整个程序的正确性,可是为什么并不是每个人都这样做?

答:这是可能的用数学技术来证明软件组件,甚至整个程序的正确性。然而,对于复杂的程序,这是一个非常耗时的过程。用详尽的测试是不可能证明任何不平凡的程序的正确性,

2.15统一过程和UML是同一概念吗?解释你的答案。

答:UML提供了必要的技术支持和面向对象的软件工程实践。但它并不提供流程框架来指导项目团队,在他们的技术应用中。在近几年中,雅各布森, Rumbaugh和Booch制定的统一过程中框架使用UML的面向对象的软件工程。今天,统一的流程和UML被广泛应用于各种面向对象的项目。

第四章

4.1需求不断的改变,理解需求问题是软件工程师面临的最困难的工作之一,因此他们更少注意需求。在某些情况下,工程师们会化繁为简。其他情况下,工程师们必须严格地执行具体定义的需求。需求分析是设计和施工的桥梁,不能跳过。

4.2你可以尝试使用方法比如QFD(质量功能部署)通过客户访谈和观察、调查以及检查历史数据(如问题报告)为需求收集活动获取原始数据。然后把这些数据翻译成需求表——称为客户意见表,并由客户和利益相关者评审。接下来使用各种图表、矩阵和评估方法抽取期望的需求并尽可能导出令人兴奋的需求。

4.3事实上,客户和开发人员会有一个协商的过程,开发人员会要求客户权衡产品的性能与产品成本、上市时间之间的关系。这个协商的目的是开发一个项目计划,这个计划在满足客户需求的同时又能准确反映了软件开发过程中约束(如时间、人员、预算)。不幸的是,这样的项目计划很难达成,每个客户都有自己的观点。这些观点并不对其他客户都适用,此外时间是另一个重要的约束,客户可能没有时间与开发人员讨论需求,这使得问题更加复杂。

4.4需求模型的目的在于描述所需的信息、功能和计算机系统的工作领域。随着软件工程师对系统了解的深入以及利益相关者越来越了解他们真正的需求,这种需求模型是不断变化的。因此,分析模型在任何时候都是用户需求的简介

4.5最好的协商是争取“双赢”,这会使你成为是一位谈判大师。这些初期步骤的成功实施可以达到一个双赢的结果,这是继续开展后续的软件工程活动的关键。

4.6第一组上下文无关问题集主要关注的是客户、总体目标和利益。例如,需求工程师可能会问:

谁是这项工作的最初请求者? 谁将使用该解决方案?

成功的解决方案将带来什么样的经济收益? 对于这个解决方案你还需要其他资源吗?

4.7-4.9答案略。

4.10用例图描述了参与者所能观察到模型图。用例图鼓励系统的功能视图应该转换为面向对象的视图。在许多情况下,为了提供更多的相互作用,用例图需要做更详细的阐述。

4.11任何有一些软件项目需求工程经验的人都开始注意到,在特定的应用领域内某些事情在所有的项目中重复发生。这些分析模式在特定应用领域内提供了一些解决方案(如类、功能、行为),在为许多应用项目建模时可以重复使用。

4.13最好的协商是争取“双赢”的结果,即利益相关者的“赢”在于获得满足客户大多数需要的系统或产品,而作为软件团队一员的“赢”在于按照实际情况、在可实现的预算和时间期限内完成工作。

4.14当需求确认解释了一个错误时,每个需求有一个问题清单。之后会有评审小组寻找它。确认需求的评审小组包括软件工程师、客户、用户、和其他利益相关者,他们在检查系统规格说明,查找内容或解释上的错误,以及可能需要进一步解释澄清的地方、丢失的信息、不一致性(这是建造大型产品或系统时遇到的主要问题)、冲突的需求或是不可实现的(不能达到的)需求。 第五章

5.1有没有可能在分析建模创建后立即开始编码?解释你的答案,然后说服反方。 答:分析模型作为领域对象的设计和结构的基础服务。在定义了对象和属性后,就可以开始进行编码,也就知道了对象之间的关系。

5.2 一个单凭经验的分析原则是:模型“应该关注在问题域或业务域中可见的需求”。在这些域中哪些类型的需求是不可见的?提供一些例子。 答:正如我们所知道的,在开始阶段很可能没有完整的需求规范。客户可能不是非常精确地确定他们的所有需求。开发者也没有把握使用一个具体的方法来正常的完成系统的功能和性能。为了需求分析和建模,不倾向使用迭代的方法。分析师所将认识到的东西进行建模,并使用此模型作为软件增量的设计的基础。软件增量作为流程迭代的一部分被制作出来。在这些领域中,需求的类型是不可见的,可能因为一些功能必须在系统中实现,系统展示的行为是什么,属性定义的接口有哪些,应用的约束有哪些?

5.3 域分析的目的是什么?如何将域分析与需求模式概念相联系?

答:域分析是持续的软件工程活动,不与任何的软件项目相关联。它与需求模式的概念相联系。域分析是通过一系列活动进行表征的过程。这些活动从识别域开始,以描述域中对象和类的规范为结束。

5.4 有没有可能不完成如图6-3所示的4种元素就开发出一个有效的分析模型?解释一下。

答:如果没有图6.3所示的4大元素,是不可能开发出一个有效的分析模型。分析模型作为域对象的设计和建造的基础。

5.5 构建如下系统中的一个:

a你所在大学基于网络的课程注册系统。 b一个计算机商店的基于Web的订单处理系统。 c一个小企业的简单发票系统。

d内置于电磁灶或微波炉的互联网食谱。

选择你感兴趣的系统开发一套试题关系图并说明数据对象、关系和属性。 答:需要强调的是,所有的数据对象和关系一定客户可见的。为了确认属性正确地反映出系统的需求,属性应该被检查。(无固定答案)

5.6-5.9答案略。

5.10 什么是分析包?如何使用分析包?

答:将分析模型的各种元素以包组的方式进行分类,成为分析包。为了说明分析包的作用,请思考一下视频游戏。作为视频游戏的分析模型,道出了大量的类。 第六章

6.1 对于需求分析,结构分析与面向对象策略有何本质区别?

答:结构分析,考虑把数据作为分离实体的变形的数据和过程。数据目标是被使用它们已被定义的属性和关系建模的。过程操作数据目标是被使用它们在系统中的数据流向建模的。面向对象分析,集中于类的定义和它们合作对用户需求所带来的效果的方式。

6.2 在数据流图中,一个箭头表示控制流还是其他? 答:DFD数据目标是用有标签的箭头所表示的。

6.3 什么是“信息流连续性”?当重新定义一个数据流时,如何应用它?

答:数据流动连续性意味着在同一等级中的输入和输出必须和它们的精确等级相同。

6.4 在生成DFD图时,如何使用图形化解析?