软件工程实践者的研究方法(中文版第七版)课后习题答案
更新时间:2023-05-06 11:56:01 阅读量: 实用文档 文档下载
作业答案。
2.1
a.设计者对于用户要问的问题:
项目的目标是什么?做到什么程度就成功了?谁会对项目的成功做最后的评判?项目的使用者包括那些?
b. 用户对设计者应该问的问题:
目前问题有哪些解决方案,项目完成有哪些难点,在时间范围内能否完成?
c. 软件问题用户自问?
还有其他解决方案吗?哪些功能是必须的?乙方资质和能力够吗?
d. 软件过程问题自问?
用敏捷还是用瀑布?质量检查点分别有哪些?有几个MileStone?
2.2 为沟通活动设计一系列动作,选定其一并设计任务集。
(批作业的时候,以合理为目标,不一定要一样)
需求获取、需求规范说明(建模)、需求协商、需求确认等。
例如,书上page 23。
2.7 详细描述三个适合用于瀑布模型的软件项目。
(要求学生不仅仅列出项目的名称,而要说明为什么适合)
瀑布模型适合于项目开发而不是产品开发。信息管理系统一般适合于用瀑布模型。因为这类系统业务功能较为明确,架构比较单一,技术难点较少。图书馆系统、销售管理系统都是。
3.11 重构:已经写好的正确的代码,不断修正,使得代码更加精简并易读。
结对编程:两个人同时编写一段代码,一般一个人负责实现,一个人负责检查代码质量。
3.16 利用FDD,为“Web浏览器”定义一系列特征集合与特征。
特征集合模板:
特征定义模板: the
特征集合:展示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还有依赖管理、自动生成项目站点等特性。7bba9044b5360b4c2e3f5727a5e9856a561226fb/view/80e4c3136edb6f1aff001fdd
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.39.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的活动图。(注意,批作业的时候,一定要是活动图)
可复制、编制,期待你的好评与关注)
正在阅读:
软件工程实践者的研究方法(中文版第七版)课后习题答案05-06
大学活动策划方案书模板04-19
农村学校学生辍学原因分析及对策思考05-27
底板大体积施工方案04-07
C语言练习题(谭浩强第四版)..附有答案05-26
高压线下施工安全专项方案09-09
安全用药管理质量评价标准05-09
万科杭州公司防水抗渗体系 - 图文04-03
外研版必修一Module 1. My first day at Senior High导学案05-26
爱运动的先生们10-29
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 实践者
- 软件工程
- 课后
- 习题
- 中文版
- 答案
- 方法
- 研究
- 高中地理第4章地表形态的塑造第1节营造地表形态的力量2习题新人教版必修
- XX银行授信业务审查审批流程管理办法
- 2016年上海师范大学人文与传播学院社会工作实务(同等学力加试)复试笔试最后押题五套卷
- 道路施工合同范本正式版
- 读《名师高效课堂的引导艺术》心得体会肖珊珊
- 火灾自动报警系统的设计开题报告
- 九年级英语全册《Unit 1 How do you study for a test》教案 人教新目标版
- 一战雅思7.5分的经验与教训
- 安全生产百日行动实施方案
- 遇见最美古诗词 作文
- 一教学目标 1了解函数的单调性的概念,掌握有关证明和判断的基本方法。
- 【完整版】2019-2025年中国汽车维修行业市场竞争战略制定与实施研究报告
- 桂林市五校联考2021届英语八上期末模拟检测试题(二)
- 2018年广西师范大学数学与统计学院624数学分析考研强化五套模拟题
- 2017优化方案高考总复习·生物(江苏专用)第一单元第2讲课后达标检测
- 历史文化名镇的论述分析 以沙湾镇为例
- 沃尔玛中国集团员工手册
- 塞班岛5日游详细游记和攻略
- 售后服务授课内容前厅服务与管理第二章客房预订第一节预订的渠道和
- 产品数量、技术参数及要求