软件工程实践者的研究方法 中文版第七版 课后习题答案
- 格式:doc
- 大小:19.59 KB
- 文档页数:8
《软件工程》各章课后习题答案软件工程是计算机科学与技术的一门重要学科,旨在研究和应用工程原则和方法来开发高质量的软件系统。
课程中的习题对于加深学生对软件工程理论和实践的理解至关重要。
下面是对《软件工程》各章课后习题的答案,希望能够帮助你更好地掌握软件工程的知识。
第一章:软件工程导论1. 软件工程的定义:答:软件工程是通过应用系统化、规范化和可量化的方法进行软件开发、运行和维护的学科。
2. 软件工程的目标:答:软件工程的目标是提高软件开发的质量、效率和可靠性,使得软件能够满足用户的需求和期望。
3. 软件生命周期模型:答:常见的软件生命周期模型包括瀑布模型、迭代模型、敏捷模型等。
每个模型都有其独特的特点和适用场景。
4. 软件过程模型:答:软件过程模型描述了软件开发过程中的一系列活动和阶段,常见的软件过程模型包括瀑布模型、迭代模型、敏捷模型等。
5. 软件工程的基本原则:答:常见的软件工程基本原则包括分阶段、逐步求精、持续集成、迭代开发、需求优先等。
第二章:软件项目管理1. 软件项目管理的定义:答:软件项目管理是指对软件开发过程中的资源、进度、质量等进行有效管理,以确保软件项目能够按时、按质地完成。
2. 软件项目管理的内容:答:软件项目管理包括项目计划、需求管理、项目进度管理、资源管理、风险管理等方面。
3. 软件项目管理的方法:答:常见的软件项目管理方法包括敏捷项目管理、水平项目管理、里程碑项目管理等。
4. 软件项目管理的工具:答:常用的软件项目管理工具包括甘特图、PERT/CPM网络图、项目管理软件等。
第三章:软件需求分析与规格说明1. 软件需求的定义:答:软件需求是指用户对软件系统的要求和期望,包括功能需求、性能需求、接口需求等方面。
2. 软件需求分析的方法:答:常用的软件需求分析方法包括面向对象分析法、数据流图法、用例分析法等。
3. 软件需求规格说明的格式:答:常见的软件需求规格说明的格式包括自然语言描述、结构化描述、图形描述等。
作业答案。
2.1a.设计者对于用户要问的问题:项目的目标是什么?做到什么程度就成功了?谁会对项目的成功做最后的评判?项目的使用者包括那些?b. 用户对设计者应该问的问题:目前问题有哪些解决方案,项目完成有哪些难点,在时间范围内能否完成?c. 软件问题用户自问?还有其他解决方案吗?哪些功能是必须的?乙方资质和能力够吗?d. 软件过程问题自问?用敏捷还是用瀑布?质量检查点分别有哪些?有几个MileSton e?2.2 为沟通活动设计一系列动作,选定其一并设计任务集。
(批作业的时候,以合理为目标,不一定要一样)需求获取、需求规范说明(建模)、需求协商、需求确认等。
例如,书上page 23。
2.7 详细描述三个适合用于瀑布模型的软件项目。
(要求学生不仅仅列出项目的名称,而要说明为什么适合)瀑布模型适合于项目开发而不是产品开发。
信息管理系统一般适合于用瀑布模型。
因为这类系统业务功能较为明确,架构比较单一,技术难点较少。
图书馆系统、销售管理系统都是。
3.11 重构:已经写好的正确的代码,不断修正,使得代码更加精简并易读。
结对编程:两个人同时编写一段代码,一般一个人负责实现,一个人负责检查代码质量。
3.16 利用FDD,为“Web浏览器”定义一系列特征集合与特征。
特征集合模板:<Action><ing> an <Object> 如:出售一件商品特征定义模板:<Action> the <result> <by|for|of|to> a(n) <object>特征集合:展示Web页面内容。
特征:1)本地解析HT ML页面2)展示HTML页面3)从网络上下载页面相关图片4)在浏览器上展示图片附加:统一过程模型的图。
软件工程课后习题参考答案软件工程课后习题参考答案1.简答题1.1 什么是软件工程?软件工程是一门研究和应用如何以系统化、规范化、可量化的方式开发和维护软件的学科,涉及到软件的设计、构建、测试、部署和维护等全生命周期的过程。
1.2 软件工程的目标是什么?软件工程的目标是提高软件开发过程的效率和质量,确保软件项目按时、按需求交付,并且能够满足用户的期望。
1.3 软件生命周期有哪些阶段?常见的软件生命周期包括需求分析、系统设计、详细设计、编码、测试、部署和维护等阶段。
1.4 什么是软件需求?软件需求是指对于软件系统所需满足的问题或需求的描述,包括功能需求、性能需求、接口需求等。
1.5 软件开发过程有哪些模型?常见的软件开发过程模型包括瀑布模型、迭代模型、螺旋模型、敏捷开发等。
2.客观题2.1 软件测试的目的是什么?a) 发现软件中的错误和缺陷b) 验证软件是否符合需求和规格c) 提高软件的可靠性和质量d) 以上皆是答案:d) 以上皆是2.2 瀑布模型的特点是什么?a) 瀑布模型是一种线性顺序的软件开发过程模型b) 各个开发阶段是相互独立的c) 开发过程按照需求分析、设计、编码、测试等顺序进行d) 以上皆是答案:d) 以上皆是2.3 敏捷开发的原则是什么?a) 个体和交互胜过流程和工具b) 可工作的软件胜过详尽的文档c) 客户合作胜过合同谈判d) 响应变化胜过遵循计划e) 以上皆是答案:e) 以上皆是3.计算题3.1 请计算以下代码的覆盖率:(假设代码行数为100行,已执行代码行数为80行)覆盖率 = 已执行代码行数 / 代码行数 100% = 80 / 100 100% = 80%3.2 请计算以下缺陷密度的值:(假设代码行数为1000行,代码中的缺陷数为10个)缺陷密度 = 缺陷数 / 代码行数 1000 = 10 / 1000 1000 = 103.3 请计算以下代码的复杂度:(假设代码中包含的判断语句有20个,循环语句有5个)复杂度 = 判断语句数 2 + 循环语句数 3 = 20 2 + 5 3 = 40 + 15 = 554.附件本文档涉及附件:无5.法律名词及注释本文涉及的法律名词及注释:无。
软件工程实践者的研究方法第七版教学设计简介软件工程是一门实践性很强的学科,因此对于软件工程实践者来说,研究方法是非常重要的。
本教学设计旨在介绍软件工程实践者的研究方法第七版,其中包括教学目标、教学内容、教学方法和评估方法。
教学目标本教学设计的主要目标是:•了解软件工程实践者的研究方法第七版的基础知识;•掌握软件工程实践者的研究方法第七版的研究过程;•能够运用软件工程实践者的研究方法第七版进行研究工作;•能够分析和评价软件工程实践者的研究方法第七版的贡献和不足之处。
教学内容第一章概述•软件工程研究的概念、意义和发展历程;•软件工程实践者的研究方法概述;•第七版研究方法的特点和改进。
第二章研究过程•研究问题的确定;•研究设计的选择;•数据的收集和处理;•研究结果的分析和解释。
第三章研究设计•实验设计;•调查问卷设计;•个案研究设计;•非实验研究设计。
第四章数据收集和处理•数据收集的方法与技术;•数据处理的方法与技术。
第五章研究结果的分析和解释•数量分析方法;•质性分析方法;•综合分析方法。
第六章研究的报告•研究报告的特点;•研究报告的组织结构;•研究报告的写作技术。
教学方法为实现教学目标,采用下列教学方法:1.课堂讲授;2.案例分析;3.小组讨论;4.实践操作;5.作业完成;6.个人学习。
评估方法为全面评价学生的学习情况,本教学设计采用下列评估方法:1.课堂表现(20%):听课态度、积极参与、提问、回答问题等;2.作业报告(30%):独立完成作业,报告符合格式、技术含量、思路清晰、逻辑性强等;3.期末考试(50%):反映学生对所进行教学内容的理解和掌握情况。
结语软件工程实践者的研究方法是软件工程领域的一个研究热点,本教学设计致力于帮助学生了解和掌握该领域的最新研究方法和技术,以提高学生在软件工程研究实践中的能力和水平。
软件工程课后习题参考答案一、概述软件工程作为一门跨学科的学科,涉及到软件开发的各个方面,对培养软件工程师的能力具有重要意义。
课后习题是巩固和深化学生对课程知识的理解和应用的重要途径。
本文将为软件工程课后习题提供一些参考答案,供学生参考和自我评估。
二、需求分析与规格说明1. 什么是软件需求?软件需求分析的目的是什么?软件需求是对问题域中用户对软件所期望的功能和性能的描述。
软件需求分析的目的是识别、理解、规范和管理软件系统开发的需求。
2. 软件需求分析的基本步骤是什么?软件需求分析的基本步骤包括需求获取、需求建模、需求验证和需求管理。
3. 什么是功能需求?什么是非功能需求?功能需求描述的是软件系统应具备的具体功能和行为。
非功能需求则描述了软件系统的其他属性,例如性能、安全性、可靠性等。
4. 举例说明一些常见的软件需求验证方法。
常见的软件需求验证方法包括需求审查、原型验证、测试和模型检查等。
三、软件设计与架构1. 什么是软件架构?软件架构的重要性是什么?软件架构是软件系统的基础结构和组织方式,决定了软件系统的可扩展性、可维护性和可演化性。
软件架构的合理设计能够降低开发和维护的难度。
2. 请简要介绍常见的软件架构模式。
常见的软件架构模式包括分层架构、客户-服务器架构、面向对象架构和微服务架构等。
3. 什么是设计模式?列举几个常见的设计模式。
设计模式是针对软件设计中的常见问题所提出的解决方案。
常见的设计模式包括单例模式、观察者模式、工厂模式和策略模式等。
4. 请简要介绍面向对象设计的原则。
面向对象设计的原则包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口隔离原则等。
四、软件测试与质量保证1. 软件测试的目的是什么?请简要介绍测试驱动开发(TDD)。
软件测试的目的是发现软件产品中的错误和缺陷。
测试驱动开发是先编写测试用例,再根据用例编写代码的开发模式。
2. 请简要介绍黑盒测试和白盒测试。
黑盒测试是基于软件外部行为和需求的测试,不考虑软件的内部实现。
软件工程课后习题:1.解释为什么专业化软件不仅仅包括为用户所开发程序专业化软件在开发上与在与软件就有所不同。
专业软件通常是由团队开发而非个人,除了开发者外还有其他的用户使用。
如果你的软件有别的用户,别的工程师会去修改的话,你就必须提供除了程序源码之外的其它附带信息。
因此,系统通常除了包含一些单独的程序还有用于这些程序的配置文件,可能还包括描述系统结构的系统文档和解释如何使用该系统的用户文档,以及告知用户下载最新产品的Web站点。
2.通用软件产品开发和定制软件开发直接有什么不同这在实际应用中对通用软件产品用户意味着什么(1)重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定开发者必须按客户要求进行开发。
(2)意味着通用软件很难满足通用软件客户的特殊需求。
如可靠性、安全性、快捷性。
3.软件产品应该具有与的4重要属性是那些另外列举出4个可能有意义的属性。
重要属性:可维护性、可依赖性和安全性、有效性和可用性。
可能有意义的属性:可复用性、可分发性、可移植性和互用性。
4.除了异质性挑战、业务和社会的变革、安全和可信,说出软件工程在21世纪的可能面临的其它问题和挑战。
交付上的挑战:许多传统的软件工程技术需要耗费大量的时间,用于提高软件质量。
而今天的软件制作必须响应快、更换迅速,支持软件也必须同样快地进行更换。
交付上的挑战是:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间。
5.参论的应用类型,照节讨举例介绍为什么设计和开发不同类型的应用需要专门的软件技术。
如汽车上年的嵌入式控制系统对安全性要求极高,在车上安装是要烧制到ROM 中在这里的交互在这里是很少的(或许根本就没有)。
基于Web式系统更适合用于迭代式开发和交互。
而基于Web的系统编程使用的如Ruby一类的脚本语言,完全不适合嵌入式系统工程。
6.解释为什么软件工程的基本思想适用于所有的软件系统。
软件工程参考答案(中文注释)软件工程(外文教材)复习一、Fill in the blanks(X blanks, 1 point/blank, total XX points)(一)Chapter 11.Today, software takes on a dual rol e. It is a product, and the same time, the vehicl e for delivering a product. 1。
今天,软件具有双重作用。
这是一个产品,同时,交付产品的车辆。
2.Software delivers(提供)the most important product of our time----information.3.software doesn't wear out, but it does deteriorate软件没有磨损,但它恶化4.Software engineering is a layered technol ogy. Any engineering approach must rest on an organizational的技术。
任何工程方法必须依赖于一个组织对质量的承诺。
5.software engineering encompasses(包括) a process, method for managing and engineering software, and tools. 5。
软件工程过程,用于管理和软件工程方法和工具。
6.Umbrella activities occur throughout the software process and focus primarily on project management, tracking, and control. 6。
伞活动发生在整个软件过程和主要集中在项目管理,跟踪,控制。
(二)Chapter 27.A process was defined as a coll ection of work activities, actions and tasks that are performed when some work product is to be created.定义为一个集合的工作是一个过程,活动和任务执行时的一些工作产品被创建。
软件工程课后习题答案一、项目规划和管理1. 项目规划和管理的重要性在软件工程中,项目规划和管理是确保项目成功的关键因素。
它涉及到确定项目的目标、范围和需求,制定项目计划和时间表,分配资源,通过有效的沟通和协作来管理团队,以满足项目的要求和客户的期望。
良好的项目规划和管理可以提高项目的成功率,避免项目变更和延迟,保证项目在预算和时间范围内完成。
2. 项目规划的步骤和内容项目规划是项目管理的第一步,它包括以下步骤和内容:(1)确定项目目标和范围:明确项目的目标和范围,包括项目的可交付成果、所需功能和业务需求。
(2)需求分析和定义:详细收集和分析项目的需求,明确项目的功能和非功能性要求。
(3)制定项目计划:制定项目的时间表和里程碑,安排项目的活动和任务,确定资源需求和预算。
(4)风险评估和管理:评估项目的风险和不确定性,制定相应的风险管理策略。
(5)团队组建和管理:确定项目的团队成员,指定责任和职责,建立有效的沟通和协作机制。
(6)制定项目管理计划和报告:制定项目管理的具体计划和报告,包括项目的进度、成本和质量控制。
3. 项目管理的工具和技术项目管理涉及到各种工具和技术的应用,以支持项目规划和管理。
其中一些常用的工具和技术包括:(1)甘特图:可视化展示项目的时间表和活动,帮助团队成员了解任务的分配和完成情况。
(2)里程碑图:标记项目关键节点和重要事件的图表,用于跟踪项目进展和提醒项目重要里程碑的达成。
(3)网络图:图示项目活动之间的依赖关系和先后顺序,帮助确定活动的优先级和关键路径。
(4)资源分配和调度:根据项目需求和资源可用性,合理分配和调度团队成员和其他资源。
(5)决策分析:采用定性和定量的方法,评估项目决策的风险和效益,以支持决策过程。
(6)变更管理:制定变更管理程序和流程,确保变更的合理性和对项目的影响进行评估和控制。
二、软件需求分析与设计1. 软件需求分析的目的和方法软件需求分析是在指导下进行的,对于定义用户需求、开发软件系统和确保软件质量都非常重要。
软件工程实践者的研究方法(中文第七版)复习知识点总结统一过程模型的图、撰写用例规约、UML用例图、UML活动图、UML泳道图、UML状态图(P140)、UML顺序图(P141)、UML类图、第一章定义:软件工程是(1)将系统化、规范化、可量化的方法应用于软件的开1.IEEE 发、运行和维护,即将工程化方法应用于软件;(2) 在(1)中所述方法的研究。
2. 软件与硬件的区别:本质逻辑与物理;软件是设计开发的,并非传统意义上生产制造的;软件不会磨损;大部分软件是按需定制的。
3.遗留软件的特点:生命周期长、业务关键性、质量差第二章1.软件工程与软件过程的区别:软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。
软件过程定义了软件工程化中采用的方法,但软件工程还包括该过程中应用的技术—技术方法和自动化工具。
2.软件工程的三个要素:过程、方法和工具。
软件工程的目标(根基):质量关注点。
3.软件工程的通用过程框架定义了5个框架活动和8个普适性活动:五种框架活动:沟通、策划、建模、构建、部署。
8个普适性活动:项目跟踪控制、风险管理、质量保证、配置管理、技术评审、测量、可复用管理、工作产品的准备和生产。
4.课本21页软件过程框架图每个框架活动由一系列软件工程动作构成;每个软件工程动作由任务集合来定义,这个任务集合明确了工作任务、工作产品、质量保证点、项目里程碑。
(任务集的例子P22、P23)5.过程流(P22图)描述了在执行顺序和执行时间上,如何组织框架中的活动、动作和任务。
主要类型有:线性过程流、迭代过程流、演化过程流、并行过程流。
6.过程模式模板(非重点)P247.过程评估与改进:以改进为目标,评估力求理解软件的当前状态。
用于过程改进的CMMI标准评估方法提供了五部的过程评估模型:启动、诊断、建立、执行、学习。
用于组织内部过程改进的CMM评估8. 瀑布模型(经典生命周期):特点—文档驱动优点:消除非结构化软件;降低软件的复杂度,促进软件开发工程化缺点:实际项目开发中很少遵守瀑布模型提出的顺序;客户难以清楚的描述真正的需求;客户要等到开发周期的晚期才能看到程序运行的测试版本 ;在线性过程的开始和结束,容易发生“阻塞状态”适用于:需求确定、采用线性方式完成的工作中。
软件工程课后习题答案习题1 略。
习题2 略。
习题3 略。
习题42.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?人们在理解用自然语言描述的规格说明时,容易产生二义性。
为了克服非形式化方法的缺点,人们把数学引入软件开发工程,创造了基于数学的形式化说明技术。
应用形式化方法的准则:(1)应该选用释放的表示方法;(2)应该形式化,但不要过分形式化;(3)应该估算成本;(4)应该有形式化方法顾问随时提供咨询;(5)不应该放弃传统的开发方法;(6)应该建立详尽的文档;(7)不应该放弃质量标准;(8)不应该盲目依赖形式化方法;(9)应该测试、测试再测试;(10)应该重用。
4.用有穷状态机说明自动化图书馆流通系统习题5 略。
习题6 略。
习题7 略。
习题8 略。
习题91.什么是面向对象方法学?它有哪些优点?面向对象方法学,是尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使得实现解法的解空间(也称为求解域)与描述问题的问题空间(也称为问题域)在结构上尽可能一致。
优点:1.与人类习惯的思维方法一致;2.稳定性好;3.可重用性好;4.较易开发大型软件产品;5.可维护性好10.建立订货系统的用例模型。
分析如下:从对这个订货系统的需求可以知道,仓库管理员通过放在仓库中的终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报表功能,以获取订货报表。
综上所述,用例如下:习题101.用面向对象方法分析研究本书习题2第2题中描述的储蓄系统,试建立它的对象模型、动态模型和功能模型。
对象模型参考:以上还需将关联关系说明补全。
动态模型参考:(1)脚本正常情况脚本:储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;业务员查收存款,审核存款与存款单存款金额吻合;存款单生效;储户有取款要求,填写取款单,包含个人账号、密码(待定)和存款金额;业务员审核存款,验证储户身份,确定储户存款金额> = 取款金额;审核通过,取款单生效;系统打印利息清单,业务员把本金和利息返回储户。
作业答案。
2.1a.设计者对于用户要问的问题:项目的目标是什么?做到什么程度就成功了?谁会对项目的成功做最后的评判?项目的使用者包括那些?b. 用户对设计者应该问的问题:目前问题有哪些解决方案,项目完成有哪些难点,在时间范围内能否完成?c. 软件问题用户自问?还有其他解决方案吗?哪些功能是必须的?乙方资质和能力够吗?d. 软件过程问题自问?用敏捷还是用瀑布?质量检查点分别有哪些?有几个MileStone?2.2 为沟通活动设计一系列动作,选定其一并设计任务集。
(批作业的时候,以合理为目标,不一定要一样)需求获取、需求规范说明(建模)、需求协商、需求确认等。
例如,书上page 23。
2.7 详细描述三个适合用于瀑布模型的软件项目。
(要求学生不仅仅列出项目的名称,而要说明为什么适合)瀑布模型适合于项目开发而不是产品开发。
信息管理系统一般适合于用瀑布模型。
因为这类系统业务功能较为明确,架构比较单一,技术难点较少。
图书馆系统、销售管理系统都是。
3.11 重构:已经写好的正确的代码,不断修正,使得代码更加精简并易读。
结对编程:两个人同时编写一段代码,一般一个人负责实现,一个人负责检查代.码质量。
3.16 利用FDD,为“Web浏览器”定义一系列特征集合与特征。
特征集合模板:<Action><ing> an <Object> 如:出售一件商品特征定义模板:<Action> the <result> <by|for|of|to> a(n) <object> 特征集合:展示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还有依赖管理、自动生成项目站点等特性。
4)redmine Redmine是用Ruby开发的基于web的项目管理软件。
这种Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线索和各种动态的报表形式来自动给成员汇报项目进度。
另外,软件还提供wiki、新闻台等,也可以集成其他版本管理系统和BUG 等等。
TD、CVS、SVN跟踪系统,例如.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, MVC3)调用/返回体系结构远程消息调用( RPC),科学计算。
4)数据流体系结构编译器9.3 9.3.1节中提到的一些体系结构风格具有层次性,而另外一些则没有。
列出每种类型。
没有层次的体系结构风格如何实现?答:很难绝对地说那些体系结构没有层次。
1)层析性体系结构肯定有层次。
2)调用/返回的话,有主程序,也有1层调用,2层调用。
层次不明显的:1)以数据为中心的体系结构,通过所有软件访问公共的数据库实现数据共享。
2)面向对象体系结构,通过将对象组装成模块,体现某种层次。
3)数据流体系结构,数据可以通过管道,流到更细的管道里去。
9.6 研究ATAM,并对9.5.1节提出的6个步骤进行详细讨论。
此题目暂时不批。
.(对外延具有开放10.3 OCP原则的核心是容易扩充,但是不需要修改已有代码。
性,对修改具有封闭性)代码如:实现之,如果想扩充一种HeatSensor Sensor,然后探测器类读取不同的Sensor,用interface 定义 Detector接口,不需要修改。
Sensor,则直接实现Sensor//Detector SensorDetector { classpublic Sensor sensor;public Detector(Sensor sensor){this.sensor =sensor;}detectSensor(Sensor sensor){ public void.println(sensor.read()); System. out}}//Sensor 接口 Sensor { interfacepublicString read(); public}/HeatSensor/ Sensor{ implementsclasspublic HeatSensorString read(){ public; return桜慥却湥潳屲}}Sensor//扩充一个 Sensor { SmokeSensor implementsclasspublicString read(){ public; 獜潭敫return}}10.4 DIP含义是:1、上层不应该依赖于下层模块,二者都应该依赖于抽象。
2、抽象不应该依赖于细节,细节应该依赖于抽象。
如果如果以电灯为例子,开关可以打开电灯。
如果开关直接调用电灯,那么,当(和OCP的例子中有所不同,如果其他物体都继承电灯,也满足OCP原则,即可直接指出了依赖于抽象的意义)DIP以扩充,无需修改代码,而代码如下: Light { classpublicString turnOn(){ public;return呜牵?湯琠敨氠杩瑨}String turnOff(){ public; 呜牵?景?桴?楬桧屴return}}Switch { classpublic String Toggle(Light light){ public light.turnOn(); return}} Test { classpublic main(String argv[]){ void public static Switch(); Switch sw = newLight();Light light = new.println( sw.Toggle(light)); System. out}如果将TV作为子类,虽然从程序上可以,但理解不合理。
//Light{ extends class TV publicpublic String turnOn(){return呜牵?湯琠敨吠屖;}String turnOff(){ public; 呜牵?景?桴?噔return}}所以,增加一个接口,叫Switchable10.5 选择3个你最近开发的构件,评估每个构件的内聚类型。
此题目暂时不批。
10.6 选择3个…………………………….,评估每个构件的耦合类型。
此题目暂时不批。
10.7 问题领域构件不会存在外部耦合的说法有道理吗?如果你认为没有道理,那?么哪种类型的构件存在着外部耦合.没有道理。
例如:1)嵌入式软件应用中的构件,与操作系统耦合2)数据库应用中 POS构建,与数据库耦合。
3)文件传输构件,会和通信功能耦合。
10.8 完成(1)一个细化的设计类;(2)接口描述(3)该类中包含的某一操作的活动图。
例如,书上的printJob(Page 197),有7个操作,2个接口。
(注意,批作业的时候,一定要是活动图)的活动图。
CheckPriority。