软件工程 期末复习笔记

合集下载

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.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。

(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。

3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。

在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。

产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。

⑶软件开发费用不断增加。

⑷软件开发技术落后。

⑸生产方式落后,仍采用手工方式。

⑹开发工具落后,生产率提高缓慢。

4.三种编程范型的特点(1) 过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2) 面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3) 基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。

●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。

软件工程期末复习必备知识点

软件工程期末复习必备知识点

一、概念解释1.软件:是程序,数据结构和文档的集合,用于实现系统所需要的逻辑方法、过程和控制。

2.软件危机:是软件开发和维护过程中所遇到的一系列严重的问题。

3.软件周期:是从软件从定义,开发,运行维护到废弃时经历的一个漫长的时期。

4.需求分析:是发现,求精,建模,规格说明和复审的过程。

5,概要设计:通过仔细分析需求规格说明,确定完成系统的模块以及各模块之间的关系,设计出完成预定功能的模块(软件结构),并建立借口。

详细设计:设计完成系统的模块内的算法和数据结构。

6.模块化:将软件划分成可以独立命名的且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能来满足用户的需求。

信息隐藏:一个模块内包含的信息对于一个不需要这些的模块来说是不可访问的。

7.耦合:是一个软件结构内的每个模块互连程度的度量。

内聚:一个模块间各个元素之间的紧密的程度。

8.类:是对有相同数据和相同操作的一组相似对象的抽象描述。

对象:是客观世界中事物的抽象表示,其属性(状态、数据)和相关操作(行为、方法或服务)的封装体;对象之间靠消息传递相互作用。

9.消息:是对象之间相互通信的机制,是某个对象执行其操作的规格说明。

消息传递:一个对象向另一个对象发送消息时,接收消息的对象经过解释、给予响应,这种对象之间进行通信的机制成为消息传递。

10.继承:继承是子类(新类)自动的共享父类(已有类)中定义的数据的操作的机制。

子类可以继承父类的属性和操作;同时子类可以定义自己独有的属性和操作。

子类复用父类的定义,而不修改父类。

继承具有传递性。

多态性:在一个类层次中,不同对象对相同消息做出不同的响应。

11.软件重用:是指同一事物不做修改或者稍加修改就可多次重复使用,软件重用是降低软件开发成本,提高软件开发生产率和质量的有效途径。

12.软件测试:根据软件开发的规格说明和程序的内部结构而设计的一个测试用例,利用这些测试用例去运行程序以发现设计和程序错误的过程。

软件工程笔记(完整版)

软件工程笔记(完整版)

软件⼯程笔记(完整版)第⼀章软件⼯程概述1.软件危机(software crisis):是指在计算机软件的开发和维护过程中所遇到的⼀系列严重问题。

即“两低⼀⾼”问题:质量低、效率低、成本⾼。

软件危机也成为“软件萧条(depression)”或“软件困扰(afflication)”2.软件危机主要表现1)开发成本和进度估计不准2)⽤户对“已完成的”软件系统不满意3)软件质量往往靠不住4)软件常常是不可维护的5)软件通常没有适当的⽂档资料6)软件成本逐年上升7)软件开发⽣产率滞后于硬件和计算机应⽤普及的趋势3.产⽣软件危机的原因1)与软件本⾝的特点有关a. 软件不同于硬件,是逻辑部件⽽不是物理部件缺乏可见性难于测试管理和控制开发过程困难不会因使⽤时间过长⽽被“⽤坏”难以维护b.软件不同于⼀般程序,规模庞⼤,⽽且程序复杂性随着程序规模的增加⽽呈指数上升2)和软件开发与维护的⽅法不正确有关a.对软件开发和维护有关的错误认识和作法忽视软件需求分析的重要性认为软件开发就是写程序轻视软件维护b. 对软件开发过程与⽅法的认识与应⽤软件开发要经历⼀个漫长的时期(编程占10-20%)程序仅是完成软件配置的⼀个组成部分软件开发⽅法要有利于软件维护4.软件的特点(1)软件是⽆形的(intangible)(2)软件副本的⼤批量⽣产轻⽽易举(3)软件业是劳动密集型的(4)⼀个没有经过充分训练的软件开发⼈员很容易编写出难以理解和修改的软件(5)软件本⾝很容易修改。

但由于它的复杂性,⼜很难正确地修改。

(6)软件不像其他的⼯业产品那样会因使⽤⽽磨损,随着反复修改,它的设计会逐渐退化5.消除软件危机的途径1)对计算机软件的正确认识2)认识到软件开发不是个体劳动的神秘技巧,⽽是⼀种组织良好、管理严密、各类⼈员协同配合、共同完成的⼯程项⽬3)推⼴使⽤成功的软件开发技术和⽅法4)开发和使⽤更好的软件开发⼯具总之, 为了消除软件危机,既要有技术措施(⽅法和⼯具),⼜要有必要的组织管理措施。

软件工程期末复习知识点整理

软件工程期末复习知识点整理

复习整理一、绪论1.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。

(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。

3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。

在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。

产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。

⑶软件开发费用不断增加。

⑷软件开发技术落后。

⑸生产方式落后,仍采用手工方式。

⑹开发工具落后,生产率提高缓慢。

4.三种编程范型的特点(1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。

●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。

软件工程期末复习要点归纳总结

软件工程期末复习要点归纳总结

第一章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升。

3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维护)5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现(什么是软件危机)(1)、成本高:(2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多(3)、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成(4)、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机(1)、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等(2)、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。

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

(1)、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。

(2)、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

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

5、软件工程的本质特性1、关注与大型程序的构造2、中心课题是控制复杂度3、软件经常变化4、开发软件的效率非常重要5、和谐的合作是开发软件的关键6、软件必须有效地支持它的用户7、在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产品6、软件工程的基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组应该少而精7、承认不断改进软件工程实践的必要性软件工程学包含3个要素:方法、工具和过程7、软件生命周期(1)、概念:软件生命周期由软件定义、软件开发和运行维护(也成软件维护)3个时期组成。

软件工程复习知识要点

软件工程复习知识要点

1 软件和软件工程概念软件的组成部分之一;在软件开发中,编程只是软件开发过程的一个阶段。

2.在结构化程序设计时代,程序最小的单位是函数及子程序,程序和数据是分别的。

程序的最小单位是类。

3.软件的特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。

4.软件的分类:系统软件;应用软件;支撑软件;可复用软件。

5.什么是软件工程?(课后题)软件工程是指导计算机软件开发和维护的工程学科。

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

6.可以用功能性、牢靠性、易用性、效率、可维护性和可移植性六个特性衡量软件的质量。

功能性是指软件所实现的功能达到它的设计规范和满意用户需求的程度。

可移植性是指软件从某一环境转移到另一环境时所作努力得程度。

7.软件生存期由软件定义、软件开发和运行维护三个时期组成。

开发时期通常由概要设计、详细设计、编码和测试四个阶段组成。

开发过程中的典型文档包括:项目支配、软件测试支配、软件设计说明书、用户手册。

8.需求分析的基本任务?(1)建立分析模型,了解系统的各种需求微小环节。

(2)基于分析结果,编写出软件需求规格说明或系统功能规格说明,确认测试支配和初步的系统用户手册,并提交管理机构进行分析评审。

2 软件工程方法和工具1.面对对象方法的动身点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类相识问题和解决问题的方法和过程,从而使描述问题的问题空间和其解空间在结构上尽可能一样。

2.形式化方法的主要特点是:(课后题)(1) 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;(2) 设计、实现和单元测试等开发过程由一个变换开发过程代替。

通过一系列变换将形式的规格说明细化成为程序。

3.面对对象 = 对象 + 类 + 继承 + 消息通信。

软件工程期末考试复习重点

软件工程期末考试复习重点

1.为什么会产生软件危机?一.软件特殊性和复杂性1.软件是逻辑产品而非物理产品,产品的进度和质量难以控制2.软件不会用坏,维护和升级并不是简单换一个新的。

3.软件的开发是基于硬件和操作系统的。

4.软件一般是从头做起的,而不是用现有的部件组装的。

二.在实践过程中采用了错误的方法和技术1.对用户的需求没有清楚认识2.认为编写代码是软件开发的主要工作3.轻视项目管理4.轻视维护2.解决软件危机的途径?1) 应该加强软件开发过程的管理。

2) 推广使用开发软件的成功技术与方法,并且不断探索更好的技术与方法。

3) 开发和使用好的软件工具,建立软件工程支持环境。

总之,为了解决软件危机,既要有技术措施(好的方法和工具),又要有必要的组织管理措施。

3.软件工程的定义软件工程以指导计算机软件开发和维护的工程科学。

采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程4.软件工程的基本原理软件工程的7条基本原理:1) 用分阶段的生命周期计划严格管理2) 坚持进行阶段评审3) 实行严格的产品控制4) 采用现代程序设计技术5) 软件工程结果应能清楚地审查6) 开发小组的人员应该少而精7) 承认不断改进软件工程实践的必要性5.文档的作用1.评估软件、跟踪软件开发的进度2.程序员之间交流的工具3.维护的重要依据1. 需求分析是什么?所谓需求分析是指软件开发人员了解软件的使用者(用户)对软件的功能、性能要求的过程。

2. 需求分析的过程?通过与用户交流获取真正需求评估和分析建模写出需求规格说明文档复查1.设计的任务根据用信息域表示的软件需求,以及功能和性能需求,进行1.数据设计2.系统结构设计3.过程设计4.界面设计2.软件设计的分类:概要设计和详细设计3.软件设计原则:模块化,抽象,逐步求精,信息隐藏。

软件工程导论期末复习重点

软件工程导论期末复习重点

软件工程导论期末复习重点软件工程期末复习一、软件工程学概述1.软件危机:计算机开发和维护的过程中所遇到的一系列问题名词解释(需要加上软件危机产生的原因)对用户的要求没有完整准确的认识就匆忙着手编写程序论述题(需要加上软件危机的典型表现)01.对软件开发成本和嫉妒的估计常常不准确02.用户对已完成软件系统的不满意情况经常发生03.软件的质量靠不住2.软件工程:指导计算机开发和维护的一门工程学科?名词解释3.软件工程方法学的三要素:方法、工具、过程4.软件生命周期的三个时期:软件定义、软件开发、运行维护01.软件定义时期的三个阶段:问题定义、可行性研究、需求分析02.软件开发时期的四个阶段:总体设计、详细设计、编码、单元测试,综合测试,前两个称系统设计,后两个称系统实现03.软件维护时期:只要任务是使软件持久的满足用户的需要,具体的说,当软件在使用过程中发现错误时应该加以纠正,当环境改变时应修改软件以适应新的环境,当用户有新的需要时,应该及时改进软件以满足用户新的需求,本时期不在划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程5.可行性研究的结果是客户做出是否继续这项工程的决定的重要依据,只有投资取得较大收益的的那些工程项目才是值得继续进行下去的6.需求分析的目标是:确定出系统必须具备哪些功能,和用户密切配合,充分交流信息,以得出经过系统确认的系统逻辑模型7.软件维护的四类维护活动:01.改正性维护:改正和诊断在使用过程中发生的软件错误02.适应性维护:修改软件以适应新的环境变化03.完善性维护:根据用户的需求改善和扩充软件使它更完善04.预防性维护:为将来的维护活动事先做准备8.瀑布模型: ?论述题01.传统的瀑布模型开发软件的特点A.阶段间具有顺序性和依赖性B.推迟实现的观点C.质量保证的观点02.软件配置:程序、文档、数据03.注释有什么用:提高代码的可读性(有待补充)二、可行性研究1.可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决2.从三个方面研究每种解法的可读性;01.技术可行性:使用现在的技术能实现这个系统吗?02.经济可行性:这个系统的经济效益能超过它的开发成本吗?03.操作可行性:系统的操作方式在这个用户组织内能行得通吗?3.系统流程图:是概括的描绘物理系统的传统工具。

软件工程期末复习要点归纳总结

软件工程期末复习要点归纳总结

软件工程期末复习要点归纳总结软件工程是指在软件开发的全过程中,应用工程的原理、方法和经验对软件进行开发、运行和维护的过程。

在软件工程这个学科中,包括了软件需求、软件设计、软件构建、软件测试、软件维护等多个阶段和技术。

下面是软件工程期末复习的要点归纳总结:1.软件开发过程模型-瀑布模型:各个阶段按顺序进行,每个阶段完成后不可回溯。

-增量模型:将软件划分为多个增量,每个增量独立进行开发。

-螺旋模型:将软件开发过程分为多个循环,每个循环都包括需求分析、设计、开发和测试。

-迭代模型:将软件开发过程分为多个迭代,每个迭代包括需求分析、设计、开发和测试。

2.软件需求工程-需求获取:通过需求采集、用户访谈、问卷调查等方式获取需求。

-需求分析:对需求进行整理、分类、抽象和规范化,得出系统需求。

-需求规格说明:将需求规格化为需求文档,包括用例、用例图、领域模型等。

-需求验证:通过评审、原型验证等方式验证需求的正确性和完整性。

3.软件设计-结构化设计:通过模块化、自顶向下、逐步求精的方式进行软件设计。

-面向对象设计:通过类、继承、多态等面向对象的概念进行软件设计。

-架构设计:设计软件的整体框架和组件之间的关系。

-接口设计:设计软件的各个组件之间的接口。

4.软件构建-编码:根据设计文档进行编码,可以使用编程语言、集成开发环境等工具。

-调试:通过调试工具,对程序进行调试,找出存在的问题并进行修复。

-集成:将各个模块集成到一起,进行整体测试,确保功能的正确性。

-部署:将软件部署到目标环境中,确保软件能够正常运行。

5.软件测试-单元测试:对软件的最小单元进行测试,如函数、方法等。

-集成测试:对软件的各个模块进行整合测试,确保模块之间的协调性。

-系统测试:对整个系统进行测试,确保系统满足用户需求。

-验收测试:由用户对软件进行测试,验证软件是否满足用户需求。

6.软件维护-改正性维护:修复软件中的错误。

-适应性维护:根据用户需求,对软件进行功能扩展。

软件工程期末考试重点整理

软件工程期末考试重点整理

软件工程的基本概念:研究软件生产和软件管理的工程学科。

主要内容:软件工程的基本概念。

软件开发模型。

软件开发各阶段的任务、技术、方法。

传统方法、面向对象方法。

软件工程管理。

软件质量保证。

软件工程环境。

软件工程三要素:方法、工具和过程什么是软件生命周期?定义一个软件从开始计划起,到废弃不用为止,称为软件的生存周期。

软件生存周期包括:计划(主要任务:调查和分析,调查用户需求,分析新系统的主要目标,分析开发该系统的可行性)、开发(主要任务:系统分析、设计和实现)与运行(主要任务:做好软件维护,使软件在整个生存周期内保证满足用户的需求和延长使用寿命)3个时期,每一时期又可细分为若干更小的阶段。

将软件开发过程划分生存周期的目的:把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理需求分析的主要任务是1通过对问题及其环境的理解、分析和综合,建立分析模型;2在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求不大出来。

需求分析的步骤通过对现实环境的调查研究,获得当前系统的具体模型;去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型;分析当前系统与目标系统的差别,建立目标系统的逻辑模型;对目标系统进行完善和补充,并写出完整的需求说明;对需求说明进行复审简述衡量模块独立性的两个准则。

选择程序设计语言的原则有哪些?简述你对程序设计风格的理解。

程序设计阶段的特点:生产方式:个体手工劳动。

生产工具:机器语言、汇编语言。

开发方法:追求编程技巧,追求程序运行效率。

程序难读、难懂、难修改。

硬件特征:价格贵、存储容量小、运行可靠性差。

软件特征:只有程序、程序设计概念,不重视程序设计方法。

“软件测试不能证明程序的正确性”,谈谈你对这句话的理解。

“软件维护是软件运行时期的工作,与软件开发各阶段联系较少,该阶段工作是简单的,难度也要小得多。

  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)在其它类的实现过程中,调用由待实现类所提供的操作,这个类成为客户类。

相关文档
最新文档