简述传统软件工程方法学和面向对象方法学
面向对象分析

6.2面向对象方法学的主要优点
•
•
1.
2. 稳定性好(功能——对象)
•
• •
3. 可重用性好
4. 较易开发大型软件产品 5.
•
1.
•
• • • • •
2.
(1) 定义1 这个定义主要是从面向对象程序设计的角度看“对 象” (2) 定义2 对象是对问题域中某个东西的抽象,这种抽象反映 了系统保存有关这个东西的信息或与它交互的能力。 这个定义着重从信息模拟的角度看待“对象”。
接下来再考虑每个属性的访问权限(即可访问性)。 面向对象程序的一个基本特征就是具有信息隐藏能力,这 同时也是面向对象程序的一个突出优点。通常,不允许从 对象外面直接访问对象的属性,只能通过对象向外界公开 提供的接口访问对象的属性。 但是,父类的某些属性被子类继承之后,在子类中往 往需要频繁地使用这些属性。如果子类使用从父类继承来 的属性时也需要通过接口,则会明显降低效率。因此,这 些属性的访问权限应该是“在本类及其子类中可以直接访 问,超出上述范围则不能直接访问”。在本例中,X坐标 、Y坐标、可见性(Visible)和半径(Radius)等属性的 访问权限就应该是这样的,而起始角度(StartAngle)和 结束角度(EndAngle)这两个属性,因为没有子类需要使 用它们,访问权限应该是“仅在本类中可以直接访问”。
图6.3 实现继承机制的原理
6.4 面向对象建模
• 为了更好地理解问题,人们常常采用建立问题模型的方法。
5.1
一个面向对象的程序实例
为了介绍面向对象的软件工程方法学,我们首先从一个 面向对象的程序设计实例谈起。假设对一个简单的图形程序 的需求如下所述: 在显示器荧光屏上圆心坐标为(100,100)的位置画一 个半径为 40 的圆,在圆心坐标为( 200 , 300 )的位置画一 个半径为 20 的圆,在圆心坐标为( 400 , 150 )的位置画一 条弧,弧的起始角度为 30度,结束角度为120度,半径为50 。 怎样设计上述这个程序呢?
软件工程试题及答案

软件工程窗体顶端1:92.下面说法哪个不属于设计准则1.①提高模块的内聚,降低模块间的耦合2.②降低模块接口的复杂程度3.③模块大小要适中4.④模块要有重用性2:88.计算机的体系结构对程序设计语言具有1.①反作用2.②促进作用3.③抑制作用4.④完善作用3:79.程序图的作用是1.①定性度量软件的复杂程度2.②定量度量软件的复杂程度3.③预测软件的质量标准4.④估计软件中的错误数量4:87.下面说法正确的是1.①模块的作用域在模块的控制域之内2.②模块的控制域在模块的作用域之内3.③模块的作用域和模块的控制域有时相同4.④模块的作用域和模块的控制域都是一种层次结构5:94.等价类划分属于1.①白盒测试2.②黑盒测试3.③穷尽测试4.④系统测试6:90.软件维护组织包括1.①系统维护人员和系统管理人员2.②系统程序员和硬件维护人员3.③系统程序员和操作员4.④打字员和软件工程师7:86.可行性研究阶段使用的图形工具是1.①DFD图2.②N-S图3.③PAD图4.④Warnier图8:85.好的软件结构它的外观形状一般呈1.①线性2.②扇形3.③椭圆形4.④层次型9:93.变换型结构的数据流呈1.①线性形状2.②辐射状3.③椭圆形4.④阶梯形10:78.结构化程序设计就是要1.①保留GOTO语句2.②取消前转GOTO语句3.③限制GOTO语句的使用4.④取消后转GOTO语句11:89.若要保证开发出来的软件局部优化,而且能尽早发现设计上的错误,应采用1.①自顶向下的开发方法2.②自底向上的开发方法3.③渐增式的开发方法4.④非渐增式的开发方法12:软件工程的七条基本原理中有一条是“坚持进行阶段评审”,要这么做的理由有1 ;①大部分错误是在编码之前造成的②在软件开发过程中插入阶段评审是为了张弛有度、提高开发效率③错误发现得越晚,所付出的修正代价越高④为了便于控制开发进度1.供选择的答案:1.A. ①②2.B. ①③3.C. ②④4. D. ③④13:76.软件的开发模式有1.①面向过程模式、面向对象模式、混合模式2.②变换模式、渐增模式、瀑布模式3.③自顶向下模式、自底向上模式、关系模式4.④分步模式、渐增模式、非渐增模式14:80.VG=m-n+p中的p取3意味着1.①软件有三个模块2.②软件有两个子程序3.③主程序中含两个子程序4.④软件有三个子程序15:82.模块的初始化工作和模块处理意外故障均属于1.①时间内聚2.②顺序内聚3.③功能内聚4.④逻辑内聚16:81.在数据流图中,源点和终点的数量1.①必须是一对一的2.②源点个数大于终点个数3.③终点个数大于源点个数4.④依需要而定17:83.HIPO的含义是1.①层次、输入、处理、输出2.②高速、信息、程序、目标3.③顶层的IPO图4.④关于输入、处理、输出的层次18:CMU/SEI推出的2 将软件组织的过程能力分为五个成熟度级别,每一个级别定义了一组过程能力目标,并描述了要达到这些目标应该具备的实践活动;1.A. CMM2.B. PSP3.C. ISO-90004. D. RUP19:77.需求分析的方法包括1.①结构化分析技术、面向对象的分析技术、原型开发技术2.②结构化分析技术、面向对象的分析技术3.③面向对象的分析技术、原型开发技术4.④原型开发技术、结构化分析技术20:84.数据字典和数据流图共同构成系统的1.①物理模型2.②结构模型3.③设计说明书4.④逻辑模型21:95.软件测试的目的是1.①破坏已有的软件2.②寻找软件中的错误3.③证明软件不能正常工作4.④证明软件功能正确窗体底端窗体顶端1:91、泛化针对类型而不针对实例,一个类可以继承另一个类,但一个对象不能继承另一个对象;正确错误2:43、可重用的软件构件在开发时都经过了很严格的测试,本身是无错误的,其构件的可靠性很高;正确错误3:85、模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能;正确错误4:20、预防性维护是把今天的方法学应用到昨天的系统上,以支持明天的需求;正确错误5:18、除非对效率有特殊的要求,程序编写要做到清晰第一,效率第二;正确错误6:47、实体类指系统要记录和维护的信息;边界类指系统和外部要素间交互的边界;控制类指Use Case中行为的协调;正确错误7:55、等价类划分法的主要思想是首先将所有的输入数据划分成若干个有效等价类,然后设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的等价类,重复这一步,直到所有的等价类都被覆盖为止;正确错误8:83、数据流图和数据字典共同构成系统的物理模型;正确错误9:36、软件体系结构风格通过施加于构件上的限制及组成与设计规则来表现构件和构件间的关系;正确错误10:65、瀑布模型的本质是“一次通过”,它是一种文档驱动模型,在可运行产品交付之前,客户只能通过文档来了解最终的产品;正确错误11:39、如果程序员足够小心,就不需要测试;正确错误12:50、面向对象分析是提取和整理用户需求,并建立问题域精确模型的过程;面向对象设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程;正确错误13:26、对软件的质量控制,必须着重在软件开发方面下功夫;正确错误14:5、软件工程方法学包含三个要素:方法、模型和过程;正确错误15:1、软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;正确错误16:10、概要设计通过对系统的结构表示进行细化,得到软件的数据结构和算法;正确错误17:66、增量模型适用于人员配备不充裕、不能在软件项目期限之前实现一个完全版本的软件的情况;正确错误18:34、在一个设计得很好的系统中,模块的控制域应该在作用域之内;正确错误19:71、耦合是对一个软件结构内不同模块之间互连程度的度量,耦合由弱到强的顺序是:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合;正确错误20:75、测试是程序的执行过程,目的在于改正错误;一个好的测试用例在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试;正确错误21:14、软件体系结构是软件需求活动的一种工作产品;正确错误22:94、软件项目的开发时间最多可以减少到正常开发时间的75%;如果要求一个软件系统的开发时间过短,则开发成功的概率几乎为零;正确错误23:46、白盒测试又叫做功能测试或数据驱动测试,黑盒测试又称为结构测试或逻辑驱动测试;正确错误24:53、内聚标志一个模块内各个元素彼此结合的紧密程度,模块独立性由弱到强的同时模块内聚性由低到高的顺序是:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、巧合内聚;正确错误25:40、软件重用技术是从根本上提高软件可维护性的重要技术;正确错误26:93、面向对象方法在设计的早期阶段,变动较大,随着时间推移,设计方案日趋成熟,改动也越来越小了;正确错误27:17、可以用基于流图的环形复杂度描述测试一个单元或构件所需的工作量;正确错误28:6、传统方法学采用结构化技术自底向上地完成软件开发各项任务;正确错误29:25、从项目的角度来看,需求总是向着膨胀的方向变化;正确错误30:89、Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试,开发者负责记录发现的错误和使用中遇到的问题;正确错误31:29、瀑布模型中每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务;正确错误32:69、传统结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足性能要求的所有可实现的软件为止;正确错误33:19、测试就是不断寻找程序中的漏洞直到时间耗尽为止;正确错误34:23、高级语言表达和解决问题方面效率越高,采用代码行方法计算的生产率也越高;正确错误35:95、面向对象程序没有面向过程程序执行效率高;正确错误36:64、维护阶段的关键任务是通过各种必要的维护活动使软件系统持久地满足用户的需要;通常的4种维护活动有:改正性维护,适应性维护,完善性维护,防预性维护;正确错误37:41、软件开发小组的规模与个人生产率成正比,向一个已经延期的软件项目中增加人力,会使它按期完工;正确错误38:74、环形复杂度取决于程序控制结构的复杂度,当程序的分支数目或循环数目增加时其复杂度也增加,环形复杂度与程序中覆盖的路径条数有关,在McCabe复杂度为10的附近,存在出错率的间断跃变;正确错误39:56、用户手册要使用专门术语,并充分地描述该软件系统的结构及使用方法;正确错误窗体底端窗体顶端1:37、使用PAD符号所设计出来的程序必然是结构化程序;正确错误2:56、用户手册要使用专门术语,并充分地描述该软件系统的结构及使用方法;正确错误3:88、Pareto原理说明,测试发现的错误中的80%很可能是由程序中20%的模块造成的;正确错误4:14、软件体系结构是软件需求活动的一种工作产品;正确错误5:82、面向对象方法学是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法,把对象作为融合了数据及在数据上的操作行为的统一的软件构件;正确错误6:9、借助于当前系统的逻辑模型导出目标系统的逻辑模型是需求分析的主要任务;正确错误7:26、对软件的质量控制,必须着重在软件开发方面下功夫;正确错误8:34、在一个设计得很好的系统中,模块的控制域应该在作用域之内;正确错误9:23、高级语言表达和解决问题方面效率越高,采用代码行方法计算的生产率也越高;正确错误10:44、回归测试是指重新执行已经做过的测试的某个子集,以保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误;正确错误11:6、传统方法学采用结构化技术自底向上地完成软件开发各项任务;正确错误12:80、一个Use Case是用户与计算机之间为达到某个目的的一次典型交互作用,作为结果,Use Case代表的是系统的一个完整功能;正确错误13:72、内聚标志一个模块内各个元素彼此结合的紧密程度,模块独立性由弱到强的同时模块内聚性由低到高的顺序是:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、巧合内聚;正确错误14:57、软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大;正确错误15:94、软件项目的开发时间最多可以减少到正常开发时间的75%;如果要求一个软件系统的开发时间过短,则开发成功的概率几乎为零;正确错误16:1、软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;正确错误17:17、可以用基于流图的环形复杂度描述测试一个单元或构件所需的工作量;正确错误18:33、对一批模块进行测试,发现错误多的模块中残留的错误将比其它的模块少;正确错误19:78、衡量软件规模的功能点指标有:生产率、成本、质量、文档和资源;正确错误20:38、在为标识符命名时,名字不是越长越好,应当选择精炼的意义明确的名字;正确错误21:42、快速原型应该具备的基本特性是“快速”和“容易修改”;正确错误22:76、逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术,其中判定/条件覆盖是比判定覆盖更严格的测试标准;正确错误23:32、在进行详细的过程设计和编写程序之前,进行概要设计的好处是可以在软件开发的早期在全局高度对软件结构进行优化,使软件质量得到重大改进;正确错误24:93、面向对象方法在设计的早期阶段,变动较大,随着时间推移,设计方案日趋成熟,改动也越来越小了;正确错误25:62、软件的生产与硬件不同,在它的开发中没有明显的制造过程;对软件的质量控制,必须着重在软件维护方面下功夫;正确错误26:64、维护阶段的关键任务是通过各种必要的维护活动使软件系统持久地满足用户的需要;通常的4种维护活动有:改正性维护,适应性维护,完善性维护,防预性维护;正确错误27:41、软件开发小组的规模与个人生产率成正比,向一个已经延期的软件项目中增加人力,会使它按期完工;正确错误28:21、模型是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述;用面向对象方法开发软件,通常要建立描述系统数据结构的E-R模型,描述系统控制结构的动态模型,描述系统功能的功能模型;正确错误29:60、可行性研究报告应评述为了合理地达到开发目标而可能选择的各种方案,以便用户抉择;因此,编写者不必提出结论;正确错误30:59、项目开发计划除去规定项目开发所需的资源、开发的进度等以外,还可以包括用户培训计划;正确错误31:90、改正性维护是改正软件中原有的错误,所以对软件的修改一般不会导致文档的修改,而适应性和完善性维护将导致文档的修改;正确错误32:36、软件体系结构风格通过施加于构件上的限制及组成与设计规则来表现构件和构件间的关系;正确错误33:85、模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能;正确错误34:79、软件配置管理是一门应用技术、管理和监督相结合的学科,通过标识和文档来记录配置项的功能和物理特性、控制这些特性的变更、记录和报告变更的过程和状态,并验证它们与需求是否一致;软件配置管理主要有:标识、版本控制、变化控制、配置审计和配置状态报告;正确错误35:86、软件结构一般要求顶层扇出比较少,中层扇出较高,底层模块有高扇入;正确错误36:69、传统结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足性能要求的所有可实现的软件为止;正确错误37:87、McCabe方法的核心是:通过定量分析程序中分支个数或循环个数,对软件测试难度进行定量度量,对软件最终的可靠性进行预测;正确错误38:24、软件配置管理是在软件项目启动时就开始的,并且一直持续到软件退役后才终止的一组跟踪和控制活动;正确错误39:47、实体类指系统要记录和维护的信息;边界类指系统和外部要素间交互的边界;控制类指Use Case中行为的协调;正确错误窗体底端窗体顶端4:12、错误处理类模块是典型的时间内聚模块;正确错误窗体底端窗体顶端 6:92、在面向对象方法中,软件系统的结构是根据问题领域的模型建立起来的,因此系统功能需求变化时并不会引起软件结构的整体变化,仅需要作一些局部性的修改即可;正确错误 窗体底端窗体顶端8:35、判定表、判定树和IPO 图都是常用来编写数据字典加工逻辑说明的工具;正确错误9:15、管道/过滤器风格支持并行执行;正确错误窗体底端窗体顶端11:11、控制耦合实质是在单一接口上选择多功能模块中的某项功能;正确错误12:84、需求定义文档要从适合顾客的层次,而且要用顾客能够理解的术语编写;正确错误13:63、软件工程方法学包含三个要素:方法、工具和过程;方法是完成软件开发的各项任务的技术;工具为软件工程方法提供了自动或半自动的软件支撑环境;过程为获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的步骤;目前使用得最广泛的软件工程方法学是传统方法学和面向对象方法学;正确错误窗体底端窗体顶端17:30、抽象和求精是一对互补的概念,也是人类解决复杂问题时最常用、最有效的方法;正确错误18:73、在一个设计得很好的系统中,所有受判定影响的模块应该都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块;正确错误19:67、可行性研究应着重考虑技术可行性,经济可行性,操作可行性,法律可行性和开发方案的选择性研究,可行性研究的成本一般为预期总成本的15%~20%;正确错误窗体底端窗体顶端23:45、事实上,层次图和结构图不仅表明一个模块调用哪些模块,而且对模块的其他成分也有明确的表示;正确错误窗体底端窗体顶端28:13、软件设计优化应该力求做到在有效的模块化的前提下使用最少量的模块;正确错误窗体底端窗体顶端31:58、测试分析报告应把每个模块实际测试的结果,与软件需求规格说明书和概要设计说明书中规定的要求进行对照并作出结论;正确错误32:81、在传统开发方法中,早期引入变动代价比较低,中期引入变动要付出的代价剧增,在软件“已经完成”时再引入变动,则需要付出更高的代价;正确错误窗体底端窗体顶端34:77、软件工程的Brooks定律指出:向已经延期的软件项目中添加人手只会使进度更加落后;我们不可能用“人力换时间”的办法无限缩短一个软件的开发时间,Boehm根据经验指出,软件项目的开发时间最多可以减少到正常开发时间的75%;正确错误35:68、面向对象需求过程的本质是在问题空间与求解空间之间架设桥梁;正确错误36:需求分析是提取、建模、规格说明和复审的过程;正确错误。
软件工程导论(第六版)张海藩课后习题其中一部分答案(完整版)-推荐下载

第一章1-1 什么是软件危机?是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-3 什么是软件工程?是指导计算啊时代发生的发生地方机软件开发和维护的一门工程学科。
1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学(2种):1. 传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2. 面向对象方法学:优点:降阿斯顿发生的发生的低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-6 什么是软件过程?它与软件工程方法学有何关系?z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤 z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。
软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
爱的沙发上地方瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要用于小型项目。
增量模型的优点:1短期内可以交付满足部分用户需求的功能产品;2逐步增加功能可以让用户去适应新产品;3开放式的软件可维护性比较好;4开始第一构件前,已经完成需求说明。
阿桑的发生地方增量模型的缺点:1对现有产品功能造成破坏;2意义上的矛盾适用于中型软件的开发螺旋模型的优点:1集成了瀑布模型、快速原型模型、增量模型的优点;2支持用户需求动态变化;3需求分析与软件实现紧密联系相互依赖;4原型作为刑式的可执行的需求规格说明,即利用用户和开发人员共同理解,又可作为后续开发的基础;5为用户参与决策提供方便;6提高目标软件的适应能力;7降低风险;8在大型软件开发过程中充分发挥优势。
软件工程第9章 面向对象方法学

9.1 面向对象方法学概述
9.1.1.面向对象方法学的要点
面向对象方法学的要点面向对象方法学的出发点和基本原则, 是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程 尽可能接近人类认识世界解决问题的方法与过程,也就是使描 述问题的问题空间(也称为问题域)与实现解法的解空间(也称为 求解域)在结构上尽可能一致。
9.2 面向对象的概念
3.消息(massage) 例如,MyCircle是一个半径为4cm、圆心位于(100,200)的
Circle类的对象,也就是Circle类的一个实例,当要求它以绿 颜色在屏幕上显示自己时,在C++语言中应该向它发下列消 息:
MyCircle.Show(GREEN); 其中,MyCircle是接收消息的对象的名字,Show是消息选择 符(即消息名),圆括号内的GREEN是消息的变元。当 MyCircle接收到这个消息后,将执行在Circle类中所定义的 Show操作。
面向对象的软件技术以对象为核心,用这种技术开发出的软 件系统由对象组成。对象是由描述内部状态表示静态属性的 数据,以及可以对这些数据施加的操作(对象的动态行为), 封装在一起所构成的统一体。
面向对象的设计方法基本原理是,使用现实世界的概念抽象 地思考问题从而自然地解决问题。
面向对象方法学的基本原则是按照人类习惯的思维方法建立 问题域的模型,开发出尽可能直观、自然地表现求解方法的 软件系统。面向对象的软件系统中使用的对象,是对客观世 界中实体的抽象。
9.2 面向对象的概念
4.方法(method)
方法就是对象所能执行的操作,也就是类中所定义的服务 。方法描述了对象执行操作的算法,响应消息的方法。在 C++语言中把方法称为成员函数。 5.属性(attribute)
软件工程考试题(含答案)

软件工程考试题简答题1、什么叫软件?软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合2、什么叫软件危机?软件危机包含哪两点?软件危机产生的原因是什么?软件危机是指在计算机软件开发与维护过程中所遇到的一系列严重问题。
包括两点:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
软件开发和维护过程中存在的许多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
具体表现如下:(1)软件是逻辑部件而不是物理部件。
(2)软件的规模越来越大,复杂性越来越大。
(3)轻视需求分析的重要性,轻视软件维护的错误观点和方法。
3、什么叫软件工程?1968 年在第一届NATO 会议上的早期定义:“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”。
1993 年 IEEE 的定义:“①软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②进而研究①实现的途径”。
我们国家最近定义:软件工程是指导计算机软件开发和维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
4、两种软件工程方法学开发软件时要建立哪些模型?软件工程方法学包括:传统方法学和面向对象方法学。
常用的开发模型有:瀑布模型(需求稳定,而且可以预先指定)原型模型(需求模糊或者随时间变化)增量模型(分析员先作出需求分析和概要设计,用户参与逐步完善)螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析)喷泉模型(使开发过程具有迭代性和无间隙性)5、软件过程模型有哪些?简述它们的特点。
过程模型分为五大类: 1.管理过程模型。
2.瀑布模型(又称为生命周期模型)。
3.增量过程模型:包括增量模型,,RAD模型。
软件工程导论张海潘第六总结

第一步: 提取数据流图的四种成分:
数据源点和终点:业务员、储户
处理:
(1) 事物处理
(2) 处理存款
(3)处理取款
数据存储: (1) 存款信息
(2) 取款信息
数据流: 事物、存款单、存单
密码 、取款单、利息清单
第22页/共117页
第二步:画基本数据流图
顶层数据流图
第23页/共117页
• 软件孕育、诞生、成长、成熟、衰亡的生存过程。
第4页/共117页
软件生命周期
1. 问题 2. 可行 3. 需求 4. 总体 定义 性研究 分析 设计
5. 详细设 6. 编码和 7. 综合测 8. 软件维
计
单元测试
试
护
第5页/共117页
• 各阶段具体任务:
• 1.问题定义:必须回答的关键问题是:“要解决的问题是什 么?”。
限和下限进一步注释表示重复的花括弧。 • ( ) 意思是可选(即,圆括弧里的分量可有可无)。
第27页/共117页
电话定义--应用举例
北京某高校可用的电话号码有 以下几类:
校内电话号码由4位数字组成, 第1位数字不是0;
校外电话又分为本市电话和外 地电话两类; a)拨校外电话需先拨0,若是 本市电话则再接着拨8位数 字(第1位不是0);
• 功能需求、 性能需求、可靠性和可用性需求、出错处理 需求
• 接口需求、 约束 、 逆向需求 、 将来可能提出的要求
• 3、分析系统的数据要求
• (1)建立数据模型—第—31页E/-共R11图7页
第三章 需求分析
•4 、 需 求 分 析 过 程 建 立 三 种 模 型
数 据 模 型 : 实 体 - 联 系 图 功 能 模 型 : 数 据 流 图 行为模型:状态转换图
软件工程-张海藩 编著 复习提纲1-6章

第一章软件工程学概述第一节软件危机1.为了消除软件危机,20世纪60年代后期形成了新学科:计算机软件工程学。
2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(这些问题不是不能运行的软件才仅仅具有的,几乎所有的软件都不同程度存在这些问题。
)3.软件危机包含两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
4.产生软件危机的原因(page4—图1.1)1.一方面与软件本身的特点有关2.另一方面也和软件开发与维护的方法不正确有关。
5.软件不同于一般程序,它的一个显著特点是:“规模庞大”。
6.软件开发流程:1. 问题定义:(确定要求解决的问题是什么)2. 可行性研究:(决定该问题是否存在一个可行的解决办法)3. 需求分析:(深入具体的了解用户需求)进入开发时期:对软件设计概要设计详细设计编写程序(全部工作量10%—20%)测试交付使用7.软件产品的配置:包括:程序、文档、数据8.软件危机的一些典型表现:1.对软件开发成本和进度的估计常常不准确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的5.软件通常没有适当的文档资料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
第二节软件工程1.软件工程定义软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2. 软件工程方法学包含3个要素:方法、工具和过程。
3. 软件工程方法学: 1. 传统方法学2. 面向对象方法学4. 面向对象方法学的4个特点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有的对象都划分成类(class)。
(3)按照父类(基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统(也成为类的等级)。
软件工程方法学

软件工程方法学(结构化设计)
■ 结构化设计为软件开发过程的总体设计和详细 设计提供了有效的工具和方法。
■ 在总体设计时,结构化设计把结构化分析的结果数 据流图作为基本输入信息按照一定的规则,设计软 件模块。
■ 结构化方法中的总体设计是与结构化分析一脉 相传的,它的最终完成了软件模块的设计。
■ 详细设计需要对总体设计中的模块实现过程作出规 范说明,确定应该怎样具体实现所要求的系统,得 出对目标系统精确描述,从而设计出程序蓝图。
组网技术
软件工程方法 学
软件工程方法 学
软件工程方法学 ■ 6.1 软件危机 ■ 6.2 软件工程 ■ 软件工程方法学 ■ 1.1结构化方法学 ■ 1.2面向对象方法学 ■ 6.4 标准建模语言UML ■ 6.5 统一开发过程 ■ 6.6 能力成熟度模型 ■ 6.7 软件项目管理
软件工程方法学(方法要素)
■ 分析的目标是全面深入地理解问题域, 其中不应该涉及具体实现的考虑。
软件工程方法学(OOD)
■ 面向对象设计,就是用面向对象观点建 立求解空间模型的过程,通过面向对象 的模型机制和方法来描述预实现系统。
■ 分析与设计本质上是一个多次反复迭代 的过程,而面向对象分析与面向对象设 计的界限尤其模糊。
软件工程方法学(结构化实现)
■ 实现阶段,实现阶段包括编码和测试两 个过程。
■ 编码是把软件设计的结果,经过翻译成用某 种程序设计语言书写的程序。
■ 软件测试在编写出每个模块之后就对它做必 要的测试(单元测试),测试阶段的根本任务 是发现并改正软件中的错误。
软件工程方法学(OO方法)
■ 面向对象方法学的出发点和基本原则,是尽可 能模拟人类习惯的思维方式,使开发软件的方 法和过程尽可能接近人类认识世界解决问题的 方法与过程,从而使描述问题的问题空间与实 现解法的解空间在结构上尽可能一致。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务名称:传统软件工程方法学和面向对象方法学
一、引言
传统软件工程方法学和面向对象方法学是软件开发领域中两种常见的方法论。
本文将对传统软件工程方法学和面向对象方法学进行详细探讨,并对它们的优缺点进行比较。
二、传统软件工程方法学
传统软件工程方法学是软件开发过程中常用的一种方法学。
它强调项目管理和软件开发的规范性,包括以下几个阶段:
2.1 需求分析
在传统软件工程方法学中,需求分析是一个重要的阶段。
开发团队通过与用户的沟通,收集用户的需求,并将其转化为软件需求规格说明书。
2.2 设计阶段
在传统软件工程方法学中,设计阶段是构建软件架构和设计详细功能的阶段。
开发团队根据需求分析阶段的结果,设计出软件的整体结构和模块之间的关系。
2.3 编码和测试阶段
在传统软件工程方法学中,编码和测试阶段是将设计转化为代码并进行测试的阶段。
开发团队根据设计阶段的结果,编写源代码,并进行各种类型的测试,包括单元测试、集成测试和系统测试等。
2.4 部署和维护阶段
在传统软件工程方法学中,部署和维护阶段是将软件部署到生产环境并进行维护的阶段。
开发团队将开发好的软件部署到用户的计算机上,并对其进行维护和更新。
三、面向对象方法学
面向对象方法学是另一种常见的软件开发方法学。
它将问题领域的概念和现实世界的实体转化为软件系统中的对象,并通过对象之间的交互来解决问题。
面向对象方法学强调以下几个关键概念:
3.1 封装
封装是面向对象方法学中的一个重要概念。
它将数据和操作数据的方法封装到对象中,隐藏了对象内部的细节,只提供对外部可见的接口。
3.2 继承
继承是面向对象方法学中的另一个关键概念。
它允许通过从已有的类中派生出新的类来扩展和重用代码。
通过继承,子类可以继承父类的属性和方法,并可以添加自己特有的属性和方法。
3.3 多态
多态是面向对象方法学的第三个关键概念。
它允许不同的对象对同一消息作出不同的响应。
多态性增强了代码的灵活性和可扩展性。
3.4 设计模式
设计模式是面向对象方法学的另一个重要概念。
它是一组被广泛应用的解决常见软件设计问题的模板。
设计模式提供了一种方法来描述和解决常见问题,并提供了经过验证的解决方案。
常见的设计模式包括工厂模式、单例模式和观察者模式等。
四、对比分析
传统软件工程方法学和面向对象方法学各有优缺点,表现在以下几个方面:
4.1 开发效率
传统软件工程方法学注重规范和文档,对软件开发过程进行详细规划和管理,有助于提高开发效率和代码的可维护性。
而面向对象方法学注重代码的重用和组件化,可以提高开发效率。
4.2 系统复杂度
传统软件工程方法学将系统分解为不同的阶段,并进行逐一开发,可以降低系统的复杂度。
而面向对象方法学通过对象的封装、继承和多态等特性,可以处理更复杂和具有多样性需求的系统。
4.3 可扩展性
面向对象方法学在设计和实现过程中,更注重类的关系和组织结构,具有良好的可扩展性和灵活性。
传统软件工程方法学在需求分析和设计阶段更注重规范和文档,可能在需求变化时,扩展性较差。
4.4 适用场景
传统软件工程方法学适用于需求较为明确、稳定或对规范性要求较高的项目。
而面向对象方法学适用于需求较为复杂、变化频繁或对可扩展性要求较高的项目。
五、总结
传统软件工程方法学和面向对象方法学是软件开发领域中常用的两种方法学。
传统软件工程方法学注重规范和文档,有助于提高开发效率和代码的可维护性;而面向对象方法学注重代码的重用和组件化,具有良好的可扩展性和灵活性。
在实际项目中,应根据项目需求和特点选择合适的方法学。