软件工程期末复习重点
(完整word版)软件工程复习重点

三大块内容:软件危机与软件工程传统软件开发方法面向对象方法一、软件危机与软件工程:软件、软件危机、软件生存期、软件开发模型、软件管理1、软件:软件是能够完成预定功能和性能的可执行的计算机程序+使程序正常运行所需要的数据+描述软件开发过程及其管理、程序的操作和使用的有关文档。
文档:分开发、管理、用户、维护文档,作用是记录及解决不可视性、通信与交流、管理与维护、用户服务2、软件危机a)表现:软件成本高、难于控制开发进度、软件工作量估计困难、软件质量低、软件修改维护困难b)原因:需求问题(描述不精确、理解不一致)、管理问题、方法和工具问题、软件本身的特点3、软件生存期:a)三个时期:定义时期(软件计划、需求分析)—>开发时期(软件设计、编码实现、测试)—>使用和维护时期(维护)b)六个阶段:软件计划需求分析设计编码测试使用与维护c)生命周期方法特点:顺序性、依赖性,推迟程序的物理实现、质量保证的观点(利于尽早发现错误,如阶段文档、评审)4、软件开发模型a)瀑布模型:文档驱动i.阶段划分、分而治之、控制开发过程的复杂性ii.自顶向下、由抽象到具体,顺序进行优点:规范管理开发过程、文档驱动缺点:初期系统的需求难以完全确定、文档驱动、周期长b)原型模型:i.针对:软件开发初期需求难以确定ii.基本思想:快速建立原型,完善用户需求iii.优点:用户参与、快速iv.缺点:快速弱功能、对开发环境要求高c)螺旋模型(风险驱动)d)增量模型(模块、功能驱动)e)迭代模型f)喷泉模型5、软件管理a)区别于其他工业产品生产管理的特点b)主要内容:开发计划与进度管理、文档管理、人员组织管理、成本管理、质量管理二、传统软件工程方法:a)软件计划i.问题定义ii.可行性研究1.经济可行性2.技术可行性3.法律可行性b)需求分析i.结构化分析SAii.面向数据流的分析方法1.DFD四个组成部分(表示方法、命名)2.DFD作图:需求描述DFD3.层次分解法(保持父图和其子图的平衡)4.数据字典(符号)c)软件设计i.总体设计1.模块独立性:高内聚2.作用域是控制域的子集3.单入单出4.规模、深度、宽度、扇入、扇出适当ii.传统设计方法1.面向数据流的设计方法(数据流图)a)结构化设计SD-对应有SD结构化需求分析、SP结构化实现b)DFD软件结构(层次图)i.变换设计ii.事务设计c)优缺点2.面向数据结构的设计方法a)Jackson方法b)Jackson图i.三种元素间的逻辑关系:顺序、选择、重复ii.可描述两种数据结构:数据结构、程序结构c)思想:数据结构与程序处理过程相互转换d)步骤:I/O DS对应关系Program Structure细化求精e)优缺点:i.数据入手ii.简化数据处理程序的设计iii.模块与独立性原则没有给予应有的重视iv.求提供对复杂系统设计过程的支持3.Parnas方法iii.详细设计1.结构化程序设计SPa)高效率---良结构b)三种基本控制结构、单入单出2.过程设计的工具d)实现/编码i.语言1.功能等价2.描述问题方便性有差异a)例如:OOPL---非OOPLii.程序设计风格e)软件测试i.目标ii.方法1.正确性证明2.静态测试3.动态测试a)黑盒(功能)测试i.等价类划分ii.边界值分析iii.错误推测b)白盒(结构)测试i.语句覆盖ii.判定覆盖iii.条件覆盖iv.判定—条件覆盖v.条件组合覆盖iii.步骤f)软件维护i.四种类型1.校正性2.适应性3.完善性4.预防性ii.提高可维护性的措施三、面向对象方法(Object-oriented Method)a)OOM与CM对比:区别—优点i.思维方式iv. 稳定性ii.可重用性v. 可维护性iii.大型软件b)OOSE方法i.三个阶段、五个模型、E CASE第二章.传统软件工程方法:软件计划具体任务:项目定义、可行性分析、软件计划其中:可行性分析:1、可行性研究实质:可行性研究试一次大大压缩和简化了的系统分析和设计过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计过程。
软件工程期末复习重点

1、什么是软件工程在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。
2、软件生存周期分哪几个阶段分别简述各个阶段的任务。
答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。
A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。
B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约。
C 软件设计只要解决待开发软件“怎么做”的问题。
软件设计通常可分为系统设计和详细设计。
系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。
详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。
D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。
E测试阶段的任务是发现并纠正软件中的错误和缺陷。
测试主要包括单元测试、集成测试、确认测试和系统测试。
F软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。
3、简述各类软件过程模型的特点。
答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。
A瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是:接受上一阶段活动的结果作为本阶段活动的输入;依据上一阶段活动的结果实施本阶段应完成的活动;对本阶段的活动进行评审;将本阶段活动的结果作为输出。
B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。
软件工程期末考试重点

《软件工程》期末复习重点第一章软件工程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.消息:是对象之间相互通信的机制,是某个对象执行其操作的规格说明。
消息传递:一个对象向另一个对象发送消息时,接收消息的对象经过解释、给予响应,这种对象之间进行通信的机制成为消息传递。
10.继承:继承是子类(新类)自动的共享父类(已有类)中定义的数据的操作的机制。
子类可以继承父类的属性和操作;同时子类可以定义自己独有的属性和操作。
子类复用父类的定义,而不修改父类。
继承具有传递性。
多态性:在一个类层次中,不同对象对相同消息做出不同的响应。
11.软件重用:是指同一事物不做修改或者稍加修改就可多次重复使用,软件重用是降低软件开发成本,提高软件开发生产率和质量的有效途径。
12.软件测试:根据软件开发的规格说明和程序的内部结构而设计的一个测试用例,利用这些测试用例去运行程序以发现设计和程序错误的过程。
软件工程期末考试复习重点

第一章软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
软件危机的主要表现:1、对软件开发成本和进度的估计常常很不准确。
2、用户对“已完成的”软件系统不满意的现象经常发生。
3、软件产品的质量往往靠不住。
4、软件常常是不可维护的5、软件通常没有适当的文档资料6、软件成本在计算机系统总成本中所占的比例逐年上升7、软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势软件工程:定义一:是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
定义二:1.把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2.研究1.中提到的途径。
软件工程方法学的三个要素:方法、工具和过程。
目前使用的最广泛的软件工程方法学:传统方法学、面向对象方法学。
软件的生命周期:软件生命周期有软件定义、软件开发和运行维护3个时期组成;定义时期分为:问题定义、可行性研究和需求分析阶段;开发时期分为:总体设计、详细设计、编码和单元测试、综合测试;维护时期的任务:是软件持久的满足用户的需求;瀑布模型:最广泛的过程模型;瀑布模型的特点:1、阶段间具有顺序性和依耐性;2、推迟实现的观点;3、质量保证的观点;Rational统一过程(RUP)四个阶段的工作目标:初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围;精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求;构建阶段:开发出所有构件和应用程序,把他们集成为客户需要的产品,并且详尽地测试所有功能;移交阶段:把开发出的产品提交给用户使用;第二章可行性研究的目的是确定问题是否值得去解决;可行性研究的方面:技术可行性、经济可行性、操作可行性;系统流程图描述物理模型;P39(要求会做)数据流图描述逻辑模型;P40(要求会做)数据流图(DFD)描绘信息流和数据从移动到输出的过程中所经受的变换;数据字典有以下4类元素的定义组成:数据流、数据流分量(数据元素)、数据存储、处理;由数据元素组成的数据的方式三种基本类型:顺序、选择、重复;“=”是等价于(或者定义为),“+”是和(用来连接分量),“[ ]”是或(从其中选一),“{ }”是重复,“()”是可选;第三章:需求分析任务:功能需求是指定系统必须提供的服务,通过该分析划出该系统必须完成的所有功能。
软件工程期末复习知识点整理

复习整理一、绪论1.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。
3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。
⑶软件开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4.三种编程范型的特点(1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。
●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。
软件工程复习要点

题型1、名词说明2、问答题3、应用题(看图题,分析题,计算题)学问点:1、什么是软件及软件特点,软件的分类软件是计算机系统中和硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合软件的特点(1)软件是一种逻辑实体。
(2)软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。
(3)软件维护和硬件的修理有着本质的差别。
(4)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依靠性。
(5)软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。
(6)软件的开发是一个困难的过程。
(7)软件的成本特殊昂扬软件的分类1.基于软件功能的划分系统软应用软件支撑软件2.基于软件工作方式的划分实时处理软件分时软件交互式软件批处理软件2、什么是软件危机,起因一方面软件特殊困难,价格昂贵,供需差日益增大,另一方面软件开发时又常常受挫,质量差,指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去限制。
我们称软件开发和维护过程中所中遇到的这一系列严峻问题为软件危机。
软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
3、什么是软件工程,它的基本目标,要素,原则(1)软件工程是指探讨软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既牢靠又能在实际机器上有效运行的软件。
(2)软件工程学探讨的基本目标是:定义良好的方法学,面对支配,开发维护整个软件生存周期的方法学;确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹;可预料的结果,在生存周期中,每隔确定时间可以进行复审(3)软件工程的原则:分解;抽象和信息隐藏;一样性;确定性4、什么是软件生命周期,每个阶段的意义理解如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生命周期。
1.软件定义时期(1)问题定义:这是软件生存期的第一个阶段,主要任务是弄清用户要计算机解决的问题是什么。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.软件危机的介绍
在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.产生软件危机的原因
与软件本身特点有关:
软件开发与维护的方法不正确有关:
3.消除软件危机的途径
4.软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
5.软件定义时期的任务是:
确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
这个时期的工作通常又称为系统分析,由系统分析员负责完成。
软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。
6.开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。
其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
7.维护时期的主要任务是使软件持久地满足用户的需要。
8.软件生命周期每个阶段的基本任务:问题定义、可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试。
9.常用软件模型区别原理:
(1)瀑布模型:
按照传统的瀑布模型开发软件,有下述的几个特点。
a)阶段间具有顺序性和依赖性:
两重含义:段的输出文档正确,后一阶段的工作才能获得正确的结果。
①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶
b) 推迟实现的观点
瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。
c)质量保证的观点:
软件工程的基本目标是优质、高产。
为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法。
每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。
瀑布模型有许多优点:
a可强迫开发人员采用规范的方法(例如,结构化技术);
b严格地规定了每个阶段必须提交的文档;
c要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
(2)快速原型模型
概念:
快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
快速原型模型是不带反馈环的,这正是这种过程模型的主要优点:软件产品的开发基本上是线性顺序进行的。
能基本上做到线性顺序开发的主要原因如下:
(1)原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现了规格说明文档的错误而进行较大的返工。
(2)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。
(3)增量模型
概念:
增量模型也称为渐增模型。
使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。
优点:
1能在较短时间内向用户提交可完成部分工作的产品。
2逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
使用增量模型的困难:
1在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
2必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。
10.数据流图
正方形表示数据的源点或终点
圆角矩形代表变换数据的处理
开口矩形代表数据存储
箭头表示数据流,即特定数据的流动方向
11.数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
12.成本/效益分析
软件开发成本主要表现为人力消耗(乘以平均工资则得到开发费用)。
下面简单介绍3种估算技术。
1代码行技术 2任务分解技术 3自动估计成本技术
成本/效益分析的方法:
主要从四个方面考虑(货币的时间价值投资回收期纯收入投资回收率)
13.需求分析的任务
确定对系统的综合要求
分析系统的数据要求
导出系统的逻辑模型
修正系统开发计划
14.实体联系图
1E-R模型包含哪3种相互关联的信息?
(1)数据对象、
(2)数据对象的属性
(3)数据对象彼此间相互连接的关系。
15.状态转换图(简称:状态图)
概念:是通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
此外,状态图还指明了作为特定事件的结果系统将做哪些动作。
A-状态:是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
状态规定了系统对事件的响应方式。
{ 初态(即初始状态)用实心圆表示、
终态(即最终状态)和中间状态用一对同心圆(内圆为实心圆)表示。
中间状态:用圆角矩形表示。
(在一张状态图中只能有一个初态,而终态则可以有0至多个)}
B-事件:★是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到
另一个状态的外界事件的抽象。
定义:事件就是引起系统做动作或(和)转换状态的控制信息。
C-
16.总体设计过程:结构设计阶段,系统设计阶段
17.模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求
18.抽象:概念:把现实世界中一定事物、状态或过程之间相似方面(共性) 集中和概括起来。
19.逐步求精:最初是由Niklaus Wirth提出的一种自顶向下的设计策略。
按照这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。
20.信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
局部化是指把一些关系密切的软件元素物理地放得彼此靠近。
21.为什么模块独立性很重要。
(1)即具有独立的模块软件比较容易开发出来。
(2)独立的模块比较容易测试和维护。
22.模块的独立程度由两个定性标准度量:
耦合(定义:对一个软件结构内不同模块之间互连程度的度量。
)
耦合强弱决定因素:1模块间接口的复杂程度,2通过接口的数据。
内聚(衡量一个模块内部各个元素彼此结合的紧密程度。
)
23.测试方法:黑盒测试,白盒测试
24.测试步骤:模块测试,集成测试(子系统测试,系统测试),验收测试,平行运行
25.如何完成单元测试:应用人工测试和计算机测试。