logo资料库

软件工程实践者的研究方法(中文版第七版)课后习题答案.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
作业答案。 2.1 a.设计者对于用户要问的问题: 项目的目标是什么?做到什么程度就成功了?谁会对项目的成功做最后的评判?项目的使 用者包括那些? b. 用户对设计者应该问的问题: 目前问题有哪些解决方案,项目完成有哪些难点,在时间范围内能否完成? c. 软件问题用户自问? 还有其他解决方案吗?哪些功能是必须的?乙方资质和能力够吗? d. 软件过程问题自问? 用敏捷还是用瀑布?质量检查点分别有哪些?有几个 MileStone? 2.2 为沟通活动设计一系列动作,选定其一并设计任务集。 (批作业的时候,以合理为目标,不一定要一样) 需求获取、需求规范说明(建模)、需求协商、需求确认等。 例如,书上 page 23。 2.7 详细描述三个适合用于瀑布模型的软件项目。 (要求学生不仅仅列出项目的名称,而要说明为什么适合) 瀑布模型适合于项目开发而不是产品开发。信息管理系统一般适合于用瀑布模型。因为这类 系统业务功能较为明确,架构比较单一,技术难点较少。 图书馆系统、销售管理系统都是。 3.11 重构:已经写好的正确的代码,不断修正,使得代码更加精简并易读。 结对编程:两个人同时编写一段代码,一般一个人负责实现,一个人负责检查代码质量。 3.16 利用 FDD,为“Web 浏览器”定义一系列特征集合与特征。 特征集合模板: an 如:出售一件商品 特征定义模板: the a(n) 特征集合:展示 Web 页面内容。 特征: 1)本地解析 HTML 页面 2)展示 HTML 页面 3)从网络上下载页面相关图片 4)在浏览器上展示图片 附加:统一过程模型的图。 (要求有图有说明)
5.9 为如下活动开发一个完整的规约 注意按照书本 59 页格式,包括用例名称,参与者,场景,异常等等。 5.10 用例异常代表什么 1)非正常输入。 2)环境状态不满足要求。 3)备选方案 。。。。 5.13 在需求工程活动的谈判情境中,“双赢”意味着什么? 1)找到了双方赢的条件。 2)合适的折衷。(在满足利益相关者要求的同时,反映软件团队所处真实世界的限制,如 时间、人员,预算) 3)后续开展软件活动的关键。 JUNIT,SVN, Maven,RedMine 分别是什么工具,完成什么功能? 这四个工具都是软件工程辅助工具。JUNIT 是单元测试工具、SVN 是版本管理工具,Maven 是构建工具,Redmine 是项目管理与变更管理工具。 1)JUnit 是基于面向对象构建的 java 单元测试框架。JUnit 是开放源代码项目。使用这个工 具可以快速构建测试用例。 可以和 Maven 等构建工具集成,在持续集成过程中不断进行测 试。 2)svn(subversion)是一个版本管理工具。与 GITHubGit 这种分布式版本管理工具不同,这是 集中式代码管理工具。SVN 的核心是服务器,所有开发者在开始新一天的工作之前必须从服 务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。SVN 支 持分支与合并,支持标签管理等。 3)Maven 是一个构建工具,可以通过撰写配置文件,自动构建一个项目。构建过程包括从 服务器上 checkout 出源代码,编译、运行单元测试、生成文档、打包和部署等工作,在 maven 的帮助下,这些工作可以自动进行。另外,maven 还有依赖管理、自动生成项目站点等特性。 http://wenku.baidu.com/view/80e4c3136edb6f1aff001fdd.html 4)redmine Redmine 是用 Ruby 开发的基于 web 的项目管理软件。这种 Web 形式的项目 管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的 资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线 索和各种动态的报表形式来自动给成员汇报项目进度。另外,软件还提供 wiki、新闻台等, 也可以集成其他版本管理系统和 BUG 跟踪系统,例如 SVN、CVS、TD 等等。 6.6 PHTRS 的用例图与类模型
类包含:坑洼/上报人/工单/维护人员/维护设备/维护材料等等 注意到这几个之间的关联,上报人和坑洼的关系,工单和其他所有类的关系。等等。 6.8 与类图相关。 7.1 结构化分析与面向对象分析的本质区别。 答:结构化分析的核心是“处理”,而面向对象分析的核心是“对象/类”。前者以“计算” 为核心,而后者以“结构”为核心 7.5 什么是控制规格说明? 答:控制规格说明使用两种不同的方式表现系统的行为,1)一个状态图,是行为的序列说 明。2)程序激活表, 即行为的组合说明,或者说是当有事件发生时,会引入流程模型的 哪个处理。 7.6 PSPEC 和用例是同一事物吗?如果不是,请解释区别。 答:不是。处理规格说明用于描述出现在求精过程中最终层次的所有流程模型的处理,通常 是在详细设计的时候用到,是系统某个功能的具体实现方法。而用例描述了一个用户如何使 用系统的,并不涉及到系统的内部的行为,通常在需求分析阶段用到。 坑洼上报坑洼损失数据生成市民坑洼查询管理人员坑洼修补工单生成修复人员坑洼修补
7.8 如何从状态图区分顺序图?它们有何相似之处? 答:状态图描述一个对象状态的变迁,而顺序图描述几个对象之间交互的顺序。 对象状态的变迁,通常是由事件激发的,这个事件和顺序图当中的消息有关。可以由多个对 象的状态图,组合成多个对象交互组成的序列图。 9.1 用一个房屋或建筑物的结构做比喻,与软件体系结构做对照分析。经典建筑与软件体系 结构的原则有什么相似之处? 又有何区别? 答:建筑物也是由各种部件通过不同方式搭建而成。如不同的房子都有墙、顶、地基等等, 搭建方法的不同构成了不同风格的房子。软件体系结构也一样,不同的部件通过不同的方式 的组装,形成了不同的软件系统。 不同点:1)一个比较实际,一个比较抽象。 2)房屋或建筑物可变化的空间比较小,软件体系结构变化跨度更大一点。 9.2 举出一两个例子,说明9.3.1 节中提到的每一种体系结构的应用。 答:1)以数据为中心的体系结构 以数据库为核心的企业信息系统 2)层次体系结构 OSI, MVC 3)调用/返回体系结构 远程消息调用(RPC),科学计算。 4)数据流体系结构 编译器 9.3 9.3.1 节中提到的一些体系结构风格具有层次性,而另外一些则没有。列出每种类型。 没有层次的体系结构风格如何实现? 答:很难绝对地说那些体系结构没有层次。 1) 层析性体系结构肯定有层次。 2) 调用/返回的话,有主程序,也有 1 层调用,2 层调用。 层次不明显的: 1) 以数据为中心的体系结构,通过所有软件访问公共的数据库实现数据共享。 2) 面向对象体系结构,通过将对象组装成模块,体现某种层次。 3) 数据流体系结构,数据可以通过管道,流到更细的管道里去。 9.6 研究 ATAM,并对 9.5.1 节提出的6个步骤进行详细讨论。 此题目暂时不批。 10.3 OCP 原则的核心是 容易扩充,但是不需要修改已有代码。(对外延具有开放性,对修改 具有封闭性) 代码如: 探测器类读取不同的Sensor,用interface 定义Sensor,然后HeatSensor实现之,如果 想扩充一种Sensor,则直接实现Sensor接口,Detector不需要修改。 //Detector Sensor public class Detector { Sensor sensor; public Detector(Sensor sensor){
this.sensor =sensor; } public void detectSensor(Sensor sensor){ System.out.println(sensor.read()); } } //Sensor 接口 public interface Sensor { public String read(); } //HeatSensor public class HeatSensor implements Sensor{ public String read(){ return "heatSensor"; } } //扩充一个Sensor public class SmokeSensor implements Sensor { public String read(){ return "smoke"; } } 10.4 DIP 含义是:1、上层不应该依赖于下层模块,二者都应该依赖于抽象。 2、抽象不应该依赖于细节,细节应该依赖于抽象。 如果如果以电灯为例子,开关可以打开电灯。如果开关直接调用电灯,那么,当 (和 OCP 的例子中有所不同,如果其他物体都继承电灯,也满足 OCP 原则,即可以扩充, 无需修改代码,而 DIP 直接指出了依赖于抽象的意义) 代码如下: public class Light { public String turnOn(){ return "Turn on the light"; } public String turnOff(){ return "Turn off the light"; } } public class Switch { public String Toggle(Light light){ return light.turnOn(); } }
public class Test { public static void main(String argv[]){ Switch sw =new Switch(); Light light = new Light(); System.out.println( sw.Toggle(light)); } // 如果将 TV 作为子类,虽然从程序上可以,但理解不合理。 public class TV extends Light{ public String turnOn(){ return "Turn on the TV"; } public String turnOff(){ return "Turn off the TV"; } } 所以,增加一个接口,叫 Switchable 10.5 选择 3 个你最近开发的构件,评估每个构件的内聚类型。 此题目暂时不批。 10.6 选择 3 个……………………………., 评估每个构件的耦合类型。 此题目暂时不批。 10.7 问题领域构件不会存在外部耦合的说法有道理吗?如果你认为没有道理,那么哪种类 型的构件存在着外部耦合? 没有道理。 例如:1) 嵌入式软件应用中的构件,与操作系统耦合 2)数据库应用中 POS 构建,与数据库耦合。 3) 文件传输构件,会和通信功能耦合。 10.8 完成(1)一个细化的设计类;(2)接口描述 (3)该类中包含的某一操作的活动图。 例如,书上的 printJob(Page 197),有 7 个操作,2 个接口。 CheckPriority 的活动图。(注意,批作业的时候,一定要是活动图)
getJobAtttributeshowPriopritycaculatePriorityJobQueueprintJob
分享到:
收藏