软件工程 期末复习笔记

合集下载

2021最新版《软件工程》期末考试重点背诵内容

2021最新版《软件工程》期末考试重点背诵内容

1.什么是软件危机及其表现?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

表现:(1)对软件开发成本和进度的估计常常很不准确。

(2)用户对“已完成的”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。

(5)软件通常没有适当的文档资料。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。

(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

2.什么是软件工程?答:软件工程是指导计算机软件开发和维护的一门工程学科,由需求分析、总体设计、详细设计、编码、测试、维护和演化等一系列分工明确的活动组成。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

3.什么是瀑布模型方法?(有利于大型软件开发过程中人员的组织及管理)答:按照时间顺序依次进行可行性分析、项目计划、需求分析、概要设计、详细设计、编码与单元测试、集成测试、确认验证、运行与维护等几个阶段进行软件开发。

图1 瀑布模型(软件生命周期模型)4.瀑布模型方法的优缺点:其优点体现在:(1)促进软件开发的工程化。

(2)提高了软件的成功率和质量。

(3)加强了软件开发的管理过程。

(4)强调了文档的作用,保护了软件开发商的利益。

其缺点体现在:(1)瀑布模型僵化的划分阶段、缺乏灵活性,对于软件需求不明确或不准确的问题,由于其开发模型是线性的,所以瀑布模型的风险控制能力较弱。

一方面用户只有等到整个过程的后期才能见到开发成果,中间提出的变更要求很难响应。

另一方面体现在早期的错误可能要等到开发后期的测试阶段才能发现,这样会带来严重的后果。

(2)增加了软件开发的工作量,由于开发过程各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

软件工程复习笔记整理

软件工程复习笔记整理

软件工程复习笔记整理1.软件工程三要素:方法、工具(case、VSS)、过程2.软件危机:①定义:软件开发和维护过程中遇到的一系列严重问题,包括两个方面:如何开发软件以满足不断增长、日趋复杂的需求;如何维护数量不断膨胀的软件产品。

②产生原因:与软件本身特点有关;软件开发与维护方法不正确3.软件=程序+数据+文档4.软件工程:① 软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

② 特点:强调规范化、文档化5.软件生命周期:软件生命周期即软件定义、运行、维护,最终到废弃的整个过程。

软件定义:问题定义、可行性研究、需求分析运行阶段:总体设计、详细设计、编码及测试、综合测试维护阶段:持续满足用户需求6.软件过程:为了获得高质量软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

① 瀑布模型:适用范围:需求明确、一般不会更改的软件开发特点:阶段间具有顺序性、依赖性;推迟实现(物理上);质量保证(严格的文档要求以及文档评审)②快速原型模型:适用范围:需求不明确的软件开发特点:快速建立原型;线性顺序开发③增量模型:适用范围:特点:分批逐步向客户提交产品;技术要求高;本身自相矛盾。

④螺旋模型:适用范围:内部开发的大规模软件项目特点:风险驱动7.可行性研究(一个简单的需求调研过程),包括技术可行性、经济可行性和操作可行性。

8.需求分析:需求分类:大致分为功能性需求和非功能性需求;其中非功能性需求包括:性能需求、可靠性需求、出错处理、接口需求、约束、逆向需求以及将来可能提出的需求。

9.数据流图和ER图:参考作业储蓄系统10.数据字典:①定义:包括四个方面,数据流、数据流分量、数据存储、处理。

②用途:分析阶段的工具11.概要设计的任务:确定模块以及模块之间的关系。

12.内聚与耦合:进行结构化设计的有力工具① 耦合:对一个软件结构不同模块间互联程度的度量,其强弱程度取决于模块间接口的复杂程度,是影响软件复杂度的一个重要因素。

软件工程期末复习重点

软件工程期末复习重点

1、什么是软件工程在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。

2、软件生存周期分哪几个阶段分别简述各个阶段的任务。

答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。

A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。

B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约。

C 软件设计只要解决待开发软件“怎么做”的问题。

软件设计通常可分为系统设计和详细设计。

系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。

详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。

D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。

E测试阶段的任务是发现并纠正软件中的错误和缺陷。

测试主要包括单元测试、集成测试、确认测试和系统测试。

F软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。

3、简述各类软件过程模型的特点。

答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。

A瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是:接受上一阶段活动的结果作为本阶段活动的输入;依据上一阶段活动的结果实施本阶段应完成的活动;对本阶段的活动进行评审;将本阶段活动的结果作为输出。

B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。

软件工程期末复习重点

软件工程期末复习重点

1.软件危机的介绍在计算机软件的开发和维护过程中所遇到的一系列严重问题。

2.产生软件危机的原因与软件本身特点有关:软件开发与维护的方法不正确有关:3.消除软件危机的途径4.软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。

5.软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。

这个时期的工作通常又称为系统分析,由系统分析员负责完成。

软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。

6.开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。

其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

7.维护时期的主要任务是使软件持久地满足用户的需要。

8.软件生命周期每个阶段的基本任务:问题定义、可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试。

9.常用软件模型区别原理:(1)瀑布模型:按照传统的瀑布模型开发软件,有下述的几个特点。

a)阶段间具有顺序性和依赖性:两重含义:段的输出文档正确,后一阶段的工作才能获得正确的结果。

①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶b) 推迟实现的观点瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。

c)质量保证的观点:软件工程的基本目标是优质、高产。

为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法。

每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。

每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。

软件工程期末考试重点

软件工程期末考试重点

《软件工程》期末复习重点第一章软件工程1.什么是软件工程。

A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。

2. 软件工程的三要素:方法、工具和过程。

第二章软件过程1.软件生命周期分为哪几个阶段?每个阶段的基本任务是什么?a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么b.软件开发:具体设计和实现在前一个时期定义的软件。

概要设计:怎样宏观地解决问题详细设计:应如何具体地实现这个系统编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。

c.运行维护:修正错误,使软件持久地满足用户需要。

改正性维护:诊断和改正使用中的错误适应性维护:修改以适应环境变化完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备2.常用的过程模型有哪些?各自的特点及不足。

如:瀑布模型的不足是不能适应需求的动态变更。

A.瀑布模型特点:可强迫开发人员采用规范化的方法。

严格地规定了每个阶段必须提交的文档。

要求每个阶段交出的所有产品都必须是经过验证(评审)的。

缺点:太理想化,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。

如果需求规格与用户需求之间有差异,就会发生这种情况。

只适用于项目开始时需求已确定的情况。

B.快速原型模型特点:快速软件产品开发基本上是线性顺序进行。

降低了规格说明文档变化的可能性。

减少了后续阶段错误的可能性。

c.增量模型优点:人员分配灵活,刚开始不用投入大量人力资源。

当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。

增量能够有计划地管理技术风险。

缺点:要求构件具备开放式的体系结构。

易退化为边做边改模型,从而使软件过程的控制失去整体性。

软件工程期末考试主要知识点电子版

软件工程期末考试主要知识点电子版

4.七条基本原理:(1)用分阶段的生命周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)结果应能清楚地审查;(6)开发小组的人员应该少而精;(7)承认不断改进软件工程实践的必要性。

10、RUP是Rational软件公司进过多年的商业化经验的六条最有效的软件按开发经验:迭代式开发、管理需求、使用基本构件的体系结构、可视化建模、验证软件质量、控制软件变更11、.微软过程生命周期的阶段以及各阶段的里程碑:(1)规划阶段(项目目标得到认可);(2)设计阶段(完成产品设计);(3)开发阶段(完成开发工作);(4)稳定阶段(准备好可发布版本);(5)发布阶段(完成产品发布)13、可行性研究的目的是用最小的成本在较短的时间内确定问题是否能够解决。

14. 对问题的每一种解法一般需要进行1.技术可行性2.经济可行性3.操作可行性4.法律可行性15. 在可行性研究阶段使用的描述工具有哪些?系统流程图,数据流图,数据字典。

16. 系统流程图:是概括地描述物理系统的传统工具表达的是数据在系统各部件之间的、流动的情况。

其基本思想是用图形符号从黑盒子描绘组成系统的各个部件(程序、文档、数据库、人工过程等)数据流图:是一个图形化技术,它描述信息流和数据从输入一点到输出的过程中所经受的变换。

数据字典:关于数据的信息的集合,即对数据流图中包含的所有元素的定义的集合17. 数据流图仅反映系统必须完成的逻辑功能,所以只是描绘数据在软件中流动和被处理的逻辑过程18. 数据字典的基本元素:数据流、数据元素、数据存储、处理21. 在进行成本/效益分析时首先需要估计成本。

成本估计可以使用那些技术?代码行技术、任务分解技术、自动估计成本技术22. 需求分析阶段的具体任务是什么?确定对系统的综合要求、分析系统的数据要求;导出系统的逻辑模型;修正系统开发计划23. 需求分析最终结果是什么体现的?分析模型、软件需求规格说明书24. 需求分析阶段完成的文档有哪些?分析模型、软件需求规格说明书25. 需求分析阶段使用的图形工具有哪些?数据流图、E-R图、状态转换图、层次方框图、watnier图、IPO图26. 在大型数据处理系统的功能分析与设计中,数据库的概念设计对应于系统开发的哪个阶段?对应需求分析阶段27. 最常用的表示概念性数据模型的方法是什么?E-R图28. 一般说来,应该从哪几个方面来验证需求分析的正确性?一致性、完整性、现实行、有效性29. 什么有穷状态机?有穷状态机有何作用?有穷状态机又哪几部分组成?有穷状态机:一个5元组(JKTSF)J有穷非空状态集K有穷的非空输入集T是一个从(J-F)*K到J 的转换函数、S属于J,初始状态。

软件工程期末考试知识概括

软件工程期末考试知识概括

一、名词解释1、软件:是计算机程序及其有关的数据和文档的完整集合。

2、软件工程:软件工程采用工程的概念、原理、技术和方法来开发与维护软件。

3、软件生命周期:是从设计软件产品开始到产品不能使用为止的时间周期。

4、模块:是能够单独命名,由边界元素限定的程序元素的序列。

在软件的体系结构中,模块能独立地完成一定的功能,是可以组合、分解和更换的单元。

5、模块化:是指把系统分割成能完成独立功能的模块。

6、软件维护:就是指在软件产品交付之后对其进行修改,以排除故障,或改进性能和其他属性,或使产品适应改变了的环境。

7、软件的可维护性:是指软件功能被理解、改正、适应和增强的难易程度,可维护性时维护人员对该软件进行维护的难易程度。

可维护性是指导软件工程各阶段的一条基本原则,提高可维护性是软件工程追求的目标之一。

8、数据流图:是用来描绘软件系统逻辑模型的图形工具,是描绘信息在系统中流动和处理的情况的。

9、数据字典:是对数据流图中出现的所有数据元素、数据流、文件、处理的定义的集合。

二、1、比较瀑布模型、快速原型模型、螺旋模型的特点。

2、尽可能推迟软件的编码3、保证质量(2)快速原型模型快速原型模型:是指快速开发一个可以运行的原型系统,该原型系统所能完成的功能往往是最终产品能完成的功能的一个子集。

(3)螺旋模型每一个螺旋周期由下列六个步骤组成:1) 确定任务 2) 选择对象 3) 分析约束条件 4) 风险分析5) 制定消除风险的方法 6) 制定下一周期的工作计划确定目标、方案、约束 复审需求计划生命周期计划开发计划集成测试计划计划下一阶段工作开发验证下一级产品需求确认设计验证与确软件需求产品设计详细设计编码单元测试集成测试验收测试运行、维护2、耦合的种类:(耦合度越低模块的独立性越强、划分的质量好)数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合(耦合度最大)为了降低模块间的耦合程度,应采用以下设计原则:●在传递信息时尽量使用数据耦合,少用控制耦合和特征耦合。

软件工程期末考知识点归纳(自制)

软件工程期末考知识点归纳(自制)

需求分析工具,任务,内容需求分析也称为需求工程,是一个非常重要而有很复杂的,需要交替进行,反复迭代的过程。

需求分析过程通过执行初步沟通、需求导出、分析与精化、可行性研究、协商和沟通、规格说明、验证和变更管理八个不同的活动来完成。

非形式技术主要包括会谈、调查表和场景技术,用于获取用户需求和系统需求。

排错调试(debug)又称排错或纠错调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,进行改正调试工作:对错误进行定位并分析原因,即诊断;对于错误部分重新编码以改正错误;重新测试软件项目管理计划的重要方面项目是指一系列独特的、复杂的并相互关联的活动。

项目参数包括项目范围、质量、成本、时间、资源。

项目三维管理:时间维:即把整个项目的生命周期划分为若干个阶段,从而进行阶段管理。

知识维:即针对项目生命周期的各个不同阶段,采用和研究不同的管理技术方法。

保障维:即对项目人力、财力、物力、信息等后勤保障管理。

特点项目管理是一项比较复杂的工作项目管理具有创造性项目管理的对象是项目或被当作项目来处理的作业项目负责人(或项目经理)在项目管理中起着非常重要的作用项目管理需要集权领导和建立专门的项目组织项目管理的方法、工具和手段具有先进性、开放性五个阶段启动阶段:用户提出需求,开发人员进行需求分析,确定可行性,编写项目实施计划。

计划阶段:创建项目范围文档和项目计划,项目范围详细描述项目范围。

实施阶段:实施阶段意味着项目正在进一步设计、编码、测试,小组成员正在创造项目需要的可交付产品。

控制阶段:项目经理开始监督小组成员的工作,将项目的进度、任务和预算控制在正常的范围内。

收尾阶段:项目负责人和用户批准和签署项目,交付产品。

项目的收尾阶段标志着项目的正式结束。

测试目标,执行过程没找到Sa(结构化分析)结果结构化分析方法是一种自顶向下,逐步分解的面向数据和数据流的建模方法。

结构化分析(SA,Structured Analysis)方法是20世纪70年代,由E.Yourdon等人倡导的一种适用于大型数据处理系统的、面向数据流的需求分析方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程期末复习笔记胡丹一.基本概念1.什么是软件工程?答:见作业2.什么是参与者,角色?答:所有参与到软件项目中的人员称为参与者。

把项目或系统的一组职责称为角色。

一个角色与一组任务联系在一起,且被派给一个参与者。

一个参与者能充当多个角色。

3.系统和模型。

系统指内部关联部分的集合。

模型指系统的任何抽象。

4.软件工程开发活动:开发活动通过构造和验证应用域模型或系统模型处理复杂性问题,开发活动包括:需求获取、分析、系统设计、对象设计、实现、测试。

二.基本概念(2)1.系统开发的主要内容集中在系统的3个不同模型上:功能模型,在MUL中,使用用例图表示功能模型,以从用户观点描述系统功能。

对象模型,在MUL中,使用类图表示对象模型,使用对象、属性、关联和操作来描述系统的结构。

动态模型,在UML中,使用交互图、状态图和活动图表示动态模型,以描述系统的内部行为。

2.用例模型(功能模型)2.1用例模型=用例文档+用例图2.2用例间的关系:用例之间的关系关联(association )、包含(include)、扩展(extend)和泛化(generalization)这几种关系。

关系关联(association ):通信1.表示参与者用例之间进行通信。

2.不同的参与者可以访问相同的用例。

包含(include):把它所包含的用例行为作为自身行为的一部分。

扩展(extend):扩展用例被定义为基础用例的增量扩展。

基础用例提供扩展点以添加新的行为。

扩展用例提供插入片段以插入到基础用例的扩展点上泛化(generalization):继承2.3 用例文档包括的内容:1.用例名。

2.范围。

3.级别。

4.主要参与者。

5.涉众及其关注点。

6.前臵条件7.后臵条件8.主事件流9.备用事件流。

3.类图(对象模型)3.1类是面向对象系统组织结构的核心。

对一组具有相同属性、操作、关系和语义的对象的抽象。

包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。

3.2类之间的关系 1.依赖关系2.泛化关系3.关联关系4.实现关系1.依赖关系表示两个或多个模型元素之间语义上的关系。

例如:客户以某种形式依赖于提供者。

关联、实现和泛化都是依赖关系。

2.泛化关系描述了一种“is a kind of”的关系。

3.关联关系包括:名称(Name)角色(Role)多重性(Multiplicity)一对一,一对多,多对多。

聚合关系(Aggregation)(一个类由多个类组成,has a关系)组合关系(Composition)聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合。

成员对象的生命周期取决于聚合的生命周期。

聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构导航性(Navigation)4.实现关系4.时序图(同一个用例中的变迁)表示单一用例间的一组对象之间的交互强调消息时间顺序的交互图。

时序图描述了对象之间传送消息的时间顺序,用来表示用例中的行为顺序。

5.状态图状态图表示了单一对象(或者是一组连接非常紧密的对象)的行为。

,是一个对象的状态的变迁。

三.项目组织和沟通1.一个项目的沟通涉及计划内沟通和计划外沟通,其中计划内沟通包括:1问题检查。

2现状通报会议。

3通报情况会议。

4客户和项目检查。

5发布。

计划外沟通包括:1澄清需求(需求澄清是指澄清有关任何使得系统看上去存在二义性的内容)2变化需求。

(需求变化指参与者报告问题或者是提出解决方案。

)3问题解决。

(提出问题,找到问题解决方案评审并上报后,选择一个解决方案,并进行必要的沟通和实现。

)四.需求获取1.需求工程的目标是定义所构造系统的需求。

需求工程包括两个主要活动:第一,需求获取,导出用户可理解的系统规格说明;第二,分析,其结论是给出开发者无二义理解的模型2.需求获取需求获取包括以下活动:●标识参与者标识出未来系统将支持的不同用户类型。

(自然人,软/硬件实体)●标识场景对未来系统的典型功能用一组带有细节的场景来描述。

(使用某一功能的具体过程)●标识用例从场景中抽象出用例。

●求精用例细化每一个用例和描述面临错误和异常条件时系统行为。

●标识用例之间关系标识出用例之间的依赖关系。

●标识初始分析对象建立用例的术语表●标识非功能性需求如:性能上约束、文档、资源、安全性、质量等。

3.绿地工程没有现存系统存在,开发过程从草稿开始,需求从用户和客户出提取。

再工程对一个现存系统的再设计和再实现。

界面工程对一个现存系统的用户界面的再设计。

五.分析(建模)1.分析关注系统模型的产生,这一模型称为分析模型,该模型必须正确、完全、一致和可确认。

分析模型由三个独立模型构成:●通过用例和场景表示的功能模型。

●通过类和对象图表示的分析对象模型。

●通过状态图和顺序图表示的动态模型。

2.实体对象表示系统将跟踪的持久性信息。

边界对象表示参与者与系统之间的交互。

控制对象负责用例实现。

3.分析活动3.1标识实体对象3.2 标识边界对象3.3 标识控制对象3.4 使用顺序图将用例映射成对象3.5 使用CRC卡建模的对象之间的交互3.6 标识关联(类与类之间的关系)3.7 标识聚集(表示整体—部分的关系,用钻石符号,实心钻石符号表示组合聚集,部分的存在依赖于整体,空心钻石表示共享聚集,部分和整体可以独立的存在)3.8 标识属性3.9 建模单一对象状态相关的行为(方法)3.10 建模对象之间的继承关系(用空心箭头指向父类)六.系统设计:分解系统1.系统设计是将系统分析模型变换到系统设计模型。

系统设计后,得到的是一个包括子系统分解和每个策略的清晰描述模型。

2.系统设计包括活动:●标识系统目标。

开发者标识并区分应进行优化的各种系统属性的优先次序。

(可靠性。

容错性。

安全性。

可修改性)●设计初始子系统分解。

根据用例和分析模型,开发者将系统分解成一些小的部分。

●分解求精子系统以对应设计目标。

初始的分解大多不能满足所有的设计目标。

开发者必须不断分解求精,直到所有的设计目标都被满足为止。

3.耦合用于度量子系统之间的依赖程度。

内聚用于度量子系统中类之间的依赖程度。

(耦合度越小越好,内聚越大越好)。

分层将系统看成是由多个子系统按一定层次组织起来的,每一层通过使用低层子系统服务,为上一层的子系统提供服务(层是有序的)。

划分是将多个子系统组合成多个对等的实体,这些对等实体相互提供服务。

4.体系结构七.系统设计(选择设计目标)1 将子系统映射到处理器和构件,选择硬件配臵与平台2 标识并存储持久性数据2.1标识持久性数据,我们可以通过检查所有在系统关闭之后必须保存的类,来标识持久性对象。

长期储存的2.2选择存储管理策略,有三种选择来进行存储管理:●平面文件。

这种文件是由操作系统提供的存储对象。

●关系数据库。

数据按照预先定义好的模式类型存储在表中。

表中的每一列代表一个属性。

每一行代表一个属性元组值的数据项。

个别对象的属性,则用不同表中的元组来展示。

●面向对象数据库。

以对象和关联的方式来存储数据。

出了提供一个上层抽象外,面向对象数据库为开发者提供了继承和抽象类型。

3 提供访问控制,访问权限4 设计全局控制流有3种可能的控制流机制:●过程驱动的控制。

例如,一个操作需要从一个参数那里获得数据,该操作不得不等待这些数据的输入。

●事件驱动的控制。

一个主循环等待一个外部事件。

●线程。

线程是过程驱动控制的并发单元。

5 标识边界条件5.1边界条件标识决定系统如何启动,如何初始化和如何关闭,同时还需要定义在数据发生故障和网路断开等情况下,如何处理失败。

我们把负责处理这些条件的用例称为边界用例。

边界用例有哪些:●配臵。

对每一个持久性对象,我们应该检查持久性对象在哪个用例中被创建、撤销(存档)。

●启动与关闭。

对每一个构件,我们增加3个用例来启动、关闭和配臵构件。

●异常处理。

对于每一个类型的构件失败,系统如何进行反应,由开发者决定。

通过使用异常用例,对这些决定进行文档化,这些异常用例是通过对在需求过程中标识的一般用例进行扩展而得到。

5.2一般来说,一个异常是在系统执行过程中发生的一个事件或者错误。

导致异常的不同原因主要有三个:●硬件失败。

硬件老化和失败。

●操作环境改变。

如果超出了发射器范围,无线移动系统就会失去连接。

●软件失败。

异常处理是系统对异常所做出的反应机制。

八.对象设计:复用模式解决办法1.对象设计包括:●重用(Reuse),标识商业外购构件和设计模式以利用已有的解决方法。

(复用别人的额,和把自己的做好的东西为他人复用而做准备)(第八章)●服务规格说明(Server Specification),在这个过程中,精确地描述每一个类接口。

(第九章)●对象模型重构(Object Model Restructuring),改进对象设计模型,提高该模型的可读性和扩展性。

●对象模型优化(Object Model Optimization),改进对象设计模型来标识性能标准,例如系统的响应时间和存储空间利用率等。

2.说明继承,即接口继承,只继承签名,没有继承任何实现代码。

3.实现继承,子类继承基类所有成员函数和字段。

4.授权,一种可供选择的实现继承的办法,授权不干涉现存构件且会产生更健壮的代码。

5.Liskov替换准则,Liskov替换准则能够为接口的规格说明提供一个形式化的描述。

它的本质是,如果客户代码使用了由某个父类提供的方法,那么开发者就能够新增子类而不用对代码做任何改变(子类型必须能替换它们的基类型。

)6.设计模式(是开发者通过长时间地求精,从而得到的解决重复出现问题的模板化解决方案)6.1一个设计模型包括4个要素:Name(名字),用来将一个设计模式与其他设计模式区别开。

Problem description(问题描述),用来描述该设计模式适用于何种情况。

Solution(解决方案),描述了解决该问题需要的、结合在一起的类和接口的集合。

Consequences(结果),描述了将要解决设计目标的协议和可供选择的办法。

6.2设计模式中出现的不同类:●客户类(Client Class),用来访问模式。

●模式接口(Pattern Interface),模式接口是模式中对客户可见的部分。

●实现类(Implementor Class),该类实现了模式中较低层次的类。

扩展类(Extender Class),扩展类是指为了实现一个不同操作,或者是实现模式的一个扩展活动而将一个实现类特殊化。

7.常见的设计模式8.桥梁模式原理(详见作业)9.九.对象设计:说明接口(接口:操作)1 类实现者、类扩展者和类使用者●类实现者(class implementor)负责实现待实现的类。

●类使用者(class user)在其它类的实现过程中,调用由待实现类所提供的操作,这个类成为客户类。

相关文档
最新文档