《今昔软件工程方法探究.docx》由会员分享,可在线阅读,更多相关《今昔软件工程方法探究.docx(14页珍藏版)》请在三一办公上搜索。
1、今昔软件工程方法探究由于用户的需求和软、硬件技术的不断发展,按照功能划分设计的系统模块 必然是易变的和不稳定的,这样开发出来的模块可重用性不高。因而,结构化系 统分析与设计已无法满足用户需求的变化。发展软件质量,缩短软件开发周期, 发展软件可靠性、可扩充性和可重用性迫使软件界人士不断研究新方法、新技术, 探索新途径。1. 什么是传统软件工程方法1.1传统软件工程的概念传统软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需 求、设计、实现、确认以及维护等活动。进入上世纪60年代,人们开始逐渐认识到了确实存在着“软件危机”这样 一个事实。例如:软件生产不能满足日益增长的需要;软件开发成
2、本和开发尽速估计往往不准确;软件开发人员和用户之间信息交流不充分,用户对完成的软件满意度很 低;软件价格昂贵,软件成本在整个计算机系统中所占的比例急剧上升,软 件已成为许多计算机系统中花钱最多的项目;软件质量难以保证;软件可维护性差,程序中的错误很难更正,适应性或完善性维护都及其 困难;图1.传统软件工程方法示意图我们所说的传统软件工程方法主要指结构化软件工程方法,目前较新的部分 文献将传统软件工程方法划分为以下阶段:系统工程、分析、设计、测试、软件 维护。传统软件工程方法的前期工作主要集中在分析和设计阶段,实际上分析和 设计是传统软件工程方法中最为重要的阶段。传统软件工程方法以功能、数据和
3、数据流进行分析,也就是基于数据的。在传统软件工程方法的分析阶段,所使用 的主要工具有数据字典(DD)、实体一关系图(EFU)、数据流图(DFD)和状态一变换 图(STD)。在传统软件工程方法的设计阶段,所使用的主要工具有针对总体设计的模块 结构图(MSD)和针对详细设计的流程图,在目前实际的软件开发中,通常不使用 流程图,而直接通过编程完成详细设计,所以较新的部分文献中,设计阶段包括 了总体设计、详细设计和编程阶段,三者之间的界线较模糊。传统软件工程方法的主要缺点是在分析阶段以功能、数据和数据流进行分析, 对问题域的认识和描述不是以问题域中的固有事物作为基本单位并保持它们的 原貌,这些方法的分
4、析结果不能直接地映射到问题域;在设计阶段分析的结果一 一数据流图和设计的结果一一模块结构图是两种不同的表示体系,从分析到设计 的转换实际上没有可靠的转换规则,带有人为的随意性,导致为软件开发带来隐 患和设计结果与问题域偏差大。1.2软件生命周期及其模型一个计算机软件,从出现一个构思之日起,经过开发成功投入使用,在使用 中不断增补修订,知道最后决定停止使用,并被另一项软件替之时至,被认为是 该软件的一个生命周期(或称生存周期、生存期,Life-cycle)o一个软件产品的生命周期可以划分成若十个互相区分二又有联系的阶段,每 个阶段中的工作均以上一阶段工作的结果为依据,并为下一阶段的工作提供了前
5、提。经验表明,失误造成的误差越是发生在生存周期的前提,在系统交付使用时 造成的影响和损失就越大,要纠正它所花费的代价也越高。因而在前一阶段工作 没有做好之前,绝不要草率地进入下一阶段。国家标准GB/T8566-2001信息技术软件生存周期过程将软件生存周期划 分为以下8个阶段:可行性研究与计划需求分析概要分析 详细设计实现(包括单元测试) 组装测试(即集成测试)确认测试使用和维护软件工程学中的需求分析具有两方面的意义。在认识事物方面,它具有一整 套分析,认识问题域的方法、原则和策略。这些方法、原则和策略使开发人员对 问题域的理解比不遵循软件工程方法更为全面,深刻和有效。在描述事物方面, 它具有
6、一套表示体系和文档规范,但是,传统的软件工程方法学中的需求分析在 上述两方面都存在不足。它在全局范围内以功能、数据或数据流为中心来进行分 析。这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和 重新组合。因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,与后续开 发阶段的衔接也比较困难。总体设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方 案,主要是决定系统的模块结构,包括决定模块的划分,模块间的数据传送及调 用关系。详细设计是在总体设计的基础上考虑每个模块的内部结构及算法。最终 将产生每个模块的程序流程图。经过总体设计和详细设计,开发人员对问题域的 认识和描述
7、越来越接近于系统的具体实现一编程。编程阶段,是利用一种编程语言产生一个能够被机器理解和执行的系统。测 试是发现和排除程序中的错误,最终产生一个正确的系统。但是由于分析方法的缺陷很容易产生对问题域的错误理解,而分析与设计的 鸿沟很容易造成设计人员对分析结果的错误转换,所以在编程时程序员往往需要 对分析员和设计人员已经认识过的事物重新进行认识,并产生与他们不同的理解。 在实际开发过程中常常看到,后期开发阶段的人员不断地发现前期阶段中的错误, 并按照他们的新的理解进行工作,所以每两个阶段之间都会出现不少变化,其文 档不能很好的衔接。维护阶段的工作,一是对使用中发现的错误进行修改,二是因需求发生了变
8、化而进行修改。前一种情况需要从程序逆向追溯到发生错误的开发阶段。由于程 序不能映射问题域以及各个阶段的文档不能对应,每一步追溯都存在许多理解障 碍。第二种情况是一个从需求到程序的顺向过程,它也存在初次开发时的那些困 难,并且又增加了理解每个阶段原有文档的困难。软件生命周期模型仅对软件的开发、运行、维护过程有意义,在ISO12207 和ISO9000-3中都提到软件生命周期模型,它包括:瀑布模型、渐增模型、演化 模型、螺旋模型、喷泉模型和智能模型等。这里仅对出现最早的瀑布软件开发模 型进行介绍。瀑布模型是1970年W.Royce提出的,其开发过程依照固定顺序进行。该模 型严格规定各阶段的任务,上
9、一阶段任务输出作为下一阶段工作输入。此模型适合于用户需求明确、开发技术比较成熟、工程管理严格的场所使用。 其缺点是:由于任务顺序固定,软件研制周期长,前一阶段工作中造成的差错越 到后期越大,而且纠正前期错误的代价高。在评价瀑布模型时,应考虑一下的相关风险:需求未被充分理解系统太大而一次不能做完所有的事事先打算采用的技术迅速发生变化需求迅速发生变化有限的资源无法利用某一中间产品图2.具有维护循环的软件生存周期2. 现代软件工程方法有哪些2.1面向对象软件工程方法面向对象软件工程方法(OOSE)是面向对象(00)方法在软件工程领域的全 面应用,面向对象软件工程方法目前有多种流派,但目前面向对象软件
10、工程方法 也可以划分为以下阶段:面向对象的分析(00A)、面向对象的设计(00D)、面 向对象的编程(OOP)、面向对象的测试、面向对象的软件维护(0 0SM)。图3.面向对象的软件工程方法示意图面向对象的分析OOA(Object-Oriented Analysis): 00A强调直接针对问题 域客观存在的各项事物设立00A模型中的对象。问题域有哪些值得考虑 的事物,00A模型中就有哪些对象。00A对问题域的观察、分析和认识 是很直接的,对问题域的描述也是很直接的。它所采用的概念及其术语与问题域中的事物保持了最大程度的一致,不存在语言上的鸿沟。 面向对象的设计OOD(Object-Orient
11、ed Design): OOD是针对系统的一个具 体的实现运用OO方法。它与OOA采用相同的表示法和模型结构。OOA 与OOD采用一致的表示法是面向对象的分析与设计优于传统的软件工 程方法的重要因素之一。这使得从OOA到OOD不存在转换,只有很局部 的修改或调整,并增加几个与实现有关的独立部分,因此OOA与OOD 之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接,大 大降低了从OOA到OOD的难度、工作量和出错率。 面向对象的编程OOP(Object-Oriented Programing): OOP工作就是用同一 种面向对象的编程语言把OOD模型中的每个成分书写出来。即用具体的 数
12、据结构来定义对象的属性,用具体的语句来实现服务流程图所表示的 算法。OOP阶段产生的程序能够紧密地对应OOD模型;OOD模型中一 部分对象类对应OOA模型,其余部分的对象类对应与实现有关的因素; OOA模型中全部类及对象都对应问题域中的事物。这样的映射关系提高 了开发工作的效率和质量。 面向对象的测试OOT(Object-Oriented Test): OOT指对于用OO技术开发 的软件,在测试过程中继续运用OO技术,进行以对象概念为中心的软 件测试。在测试过程中发掘并利用与OO方法的概念、原则及技术机制 有关的语法与语义信息。可以更准确地发现程序错误并提高测试效率。 对于用OOA和OOD建模
13、并由OOPL编程的软件,OOT可以通过捕 OOA/OOD模型信息,检查程序与模型不匹配的错误。这一点传统的软件 工程方法很难达到。面向对象的软件维护:面向对象的软件工程方法为改进软件维护提供了 有效的途径。程序与问题域是一致的,各个阶段的表示是一致的,从而 大大减少了理解的难度。2.2面向构件(组装)、架构(复用)的软件工程方法这一方法在分布式系统中得到了广泛的应用,构件和基于构件的方法是 电子商务革命的驱动力,它们是Internet时代开发企业级解决方案的方法。 在任何行业中,复杂情况通常是通过很多关键概念来解决的。这些概念是通过 抽象、分解、选代、细化等方法来表达的。其中的关键是分解技术一
14、把一个 较大的问题分解成较小的、可管理的单元,这样每一个单元都是可以单独处 理的,这个技术是软件工程的许多方法的核心。这些方法可以称为结构化设 计,模块化编程,面向对象程序设计,基于构件的程序设计,它们产生的单 元称为模块、包、对象或构件。基于构件软件开发是历史发展的必然,基于 构件的软件开发(Component Based Software Development),简称 CBD。基于构 件的软件工程(Component Based Software Engineering),简称 CBSE。CBD 追求 的目标是软件的“即插即用”。回顾经典的工业化革命,不难得出一些有益 的启示:功能再复杂
15、的产品都是由大量标准的零件(领域构件)组成,零件 在生产线上装配成一个产品,所有零件在产品中共同发挥作用。分工越细致, 专业生产的程度越高,总体生产效率就越高。把这些启示运用于软件开发, 那就是:标准的零件就是软件生产的构件,构件在软件生产线上通过集成得 到新开发的软件。由此,中国诞生了像青鸟工程这样致力于生产构件的项目。 2.3形式化开发方法随着软件系统复杂度的不断增长,开发正确、可靠的软件,成为一 个急待解决的问题。解决此问题的一个有前途、有希望的技术是形式化 方法的应用。形式化方法建立在严格的数学基础上,其目标是希望能使 系统具有较高的可信度和正确性,并能使系统具有良好的结构,使其易 维
16、护,关键是能较好地满足用户需求。一般说来,形式化方法是指具有坚实数学基础的方法,它是数学上 的综合、分析技术的应用,用于开发计算机控制的系统,经常有推理工 具的支持,它可提供一个用于模型设计和分析的一个严格而有效的途径。 从形式系统和复杂问题的本质来看,还未有一个适于全面描述和分析一 个复杂系统的形式系统。所以,可以说,一个“形式化方法”并不是系 统设计者开发系统时可能选择使用的方法,而只是设计者在此过程中希 望利用的一种工具之一 Wood*1988。总体上,形式化方法大致可分为五类Barroca* 1992:(1)基于模型的方法一给出系统(程序)状态和状态变换操作的显 式但亦是抽象的定义,但
17、对于并发没有显式的表示,如:Z和VDMJones 1990。(2)代数方法一通过联系不同操作间的行为关系而给出操作的隐式 定义,而不定义状态,同样,它亦未给出并发的显式表示,如:OBJ、CLEAR。(3)过程代数方法一给出并发过程的一个显式模型,并通过过程间 允许的可观察的通讯上的限制(约束)来表示行为,如:CSP、CCS。(4)基于逻辑的方法一有很多方法采用逻辑来描述系统的特性,包 括程序行为的低级规范和系统时间行为的规范,如:时态逻辑Galton 1992。(5)基于网络的方法一根据网络中的数据流显式地给出系统的并发 模型,包括数据在网中从一个结点流向另一个结点的条件。如Petri网、 谓
18、词变换网。在形式化方法的使用中,这些方法之间的区别并不总是那么清楚的, 有些是结合多种方法的多个方面而形成的混成(hybrid)方法,大多数方 法都以集合论和谓词逻辑作为其根本基础,所以,这些方法在技术上都 有一些相似性。不过,在表达能力上,这些方法之间有着一定的不同, 这也是上述分类的主要依据。此模型将软件开发的生命周期分为五个阶段:(1)需求规范一描述系统及其操作环境,特别强调系统与环境间的 接口。(2)系统规范一描述系统输入、输出以及它们之间的关系。系统规 范是待开发系统的外部特性描述,不涉及系统的内部结构。(3)体系结构设计一体系结构设计阶段描述系统的接口、功能、结 构的初步实现。(4
19、)详细设计一描述用于实现此系统的算法及数据结构。(5)实现一程序源代码,规范的一种可实现映象。形式实现技术在顺序程序上应用较广,目前也有对并发程序方面的 研究。这一技术的使用代价很高,所以主要用于高精确系统的开发,因 为高精确系统中的一个很小的错误可能会引起极大的灾难。若要使形式 实现技术能广泛地应用,还须对其做较大的改进,以提高其效率,降低 其使用代价。2.4 净室软件工程(Cleanroom Software Engineering)净室软件工程(CSE )是一种应用数学和统计学理论高效、经济地生 产高质量软件的工程技术。力图通过严格的工程化的软件过程达到开发 中的零缺陷或接近零缺陷,个人
20、觉得有点类似于“形式化开发方法(Formal Methods)”。该工程技术的基本特点是:它致力于通过防止软件缺陷来提高软件质量;它建立在严格的科学理论基础上;它强调 team-work 和 team-review;它的基本目标是:开发过程的可管理性和使用时无失效图.净室软件工程的基本模型即经由统计过程控制下的增量式开发(增量是最终软件产品的功能 子集),基于函数的规范、设计,真确性验证以及统计测试和软件测试的 技术手段,以函数和抽样为理论基础,通过防止软件缺陷来提高软件质 量的开发方式。2.5现代软件工程开发模型2.5.1极限编程(XP)极限编程是一种经过实践考验的轻量级软件开发方法学。它强
21、调软件开 发模型由四个变量组成:成本时间 质量范围极限编程开发的四个基本活动是:编码 测试倾听设计极限编程是一组简单、具体的实践,这些实践结合在一起形成了一个敏 捷软件开发模型。2.5.2基于体系结构的开发目前的软件构件技术主要还是着眼于构件实现模型和运行时互操作,缺 乏一套系统的方法以指导整个开发过程.近年来,以构件为基本单元的软件体系结 构研究取得了较大的发展.它通过对软件系统整体结构和特性的描述,为面向构件 的软件开发提供了一个自顶向下的途径。就是将软件体系结构引入到软件开发的各个阶段,作为系统开发的蓝图,利用 工具支持的自动转换机制缩小从高层设计到实现的距离,而后在构件平台的运行 支持
22、下实现自动的系统组装生成。2.5.3基于框架的软件开发架构在开发中得到广泛的应用,具有以下几方面的原因:首先,免费、开源、 有丰富的文档和稳定的开发背景。其次,便于实现系统的大规模开发和管理。由 于层次之间松散耦合,在开发过程中,层与层之间的工作几乎是完全独立的,而 不同的业务逻辑基于模块进行开发,所以便于团队开发。再者,利于系统业务的 重用和改动。基于这种架构的应用是基于模块的,表示层和业务逻辑分离,所以 不至于“牵一发而动全身”。同时,这样也便于业务逻辑的重用。第四,良好的 设计思想,很好地把业务逻辑和表示层分离;是一个小巧的实现对象关系映射的 工具,把面向对象的设计开发与关系数据库联系起
23、来了。典型的J2EE框架开发, 已然成为了大众软件开发的首选。2.5.4迭代的开发方法需求图4.迭代开发模型迭代化方法解决的主要是对于风险的控制问题,从下图可以看出,传统的开 发流程中系统的风险要到项目开发的后期(主要是测试阶段)才能够被真正降 低。而迭代化开发中的风险,可以在项目开发的早期通过几次迭代来尽快地解 决掉。在早期的迭代中一旦遇到问题,如某一个迭代没有完成预定的目标,我们 还可以及时调整开发进度以保证项目按时完成。一般到了项目开发的后期(风 险受控阶段),由于大部分高风险的因素(如需求、架构、性能等)都已经解决, 这时候只需要投入更多的资源去实现剩余的需求即可。这个阶段的项目开发具
24、 有很强的可控性,从而保证我们按时交付一个高质量的软件系统。2.5.5模型驱动开发一种新型软件设计方法一一面向模型的分析设计方法,系统一开始我们就首 先确立实体模型Entity Model,以及它们之间的关系,进而可以交由程序员分别 实现表现层、业务服务层和持久层,通过使用Jdon Framework(以下简称JF)等 模型驱动框架,结合FDD等模型驱动的工程方法,从而正确无误地、且快速高 质量地完成一个软件开发过程。2.5.6敏捷开发敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开 发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成 果都经过测试,具备可
25、视、可集成和可运行使用的特征。换言之,就是把一个大 项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软 件一直处于可使用状态。3. 传统软件工程方法与现代软件工程方法的区别比较3.1传统软件工程方法传统软件工程方法,即结构化方法面向的是过程,它按照数据变换的过 程寻找问题的结点,对问题进行分解。由于不同人对过程的理解不同,故面 向过程的功能所分割出的功能模块会因人而异。对于问题世界的抽象结论, 结构化方法可以用数据流图、系统结构图、数据辞典、状态转移图、实体关 系图来进行系统逻辑模型的描述。传统软件工程方法关心的是功能,强调以模块为中心,采用模块化、自 顶向下、逐步求精设计
26、过程,系统是实现模块功能的函数和过程的集合,结 构清晰、可读性好,是提高软件开发质量的一种有效手段。结构化设计从系 统的功能人手,按照工程标准,严格规范地将系统分解为若干功能模块,因 为系统是实现模块功能的函数和过程的集合。然而,由于用户的需求和软、 硬件技术的不断发展变化,作为系统基本成分的功能模块很容易受到影响, 局部修改甚至会引起系统的根本性变化。开发过程前期人手快而后期频繁改 动的现象比较常见。3.2现代软件工程方法现代软件工程方法从所处理的数据入手,以数据为中心来描述系统,它 把编程问题视为一个数据集合。数据相对于功能而言,具有更强的稳定性, 这样设计出的系统模型往往能较好地映射问题
27、域模型。对象、类、继承性、 多态性、动态定连概念和设施的引入使用,显然这种设计方法具有一定的优 势,能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途 径。同时,系统的分析设计是一个注重实践的领域,不仅仅依赖于一整套核 心的概念与原理,要想设计出一个成功的系统来,还需要相应的语言、工具 和技术的有力支持。在这方面,经过多年的实践和发展,适应结构化方法的 技术和开发环境已经相当成熟稳定,但仍有待于不断的完善和改进。3.3小结及现代软件工程的优势目前从导向看来,现代软件工程方法大有取代传统软件工程方法的趋势, 关于现代软件工程方法和工具(RUP / UML等)在国内迅速成为软件工程的热
28、 点话题。现在似乎不谈UML就好像不是在谈现代软件工程,RUP似乎真的能 成为“统一软件开发”,能够取代一切软件工程方法。而传统软件工程方法受 到冷落,被看成是守旧和落后的象征。但是我们冷静地发现,传统软件工程 方法仍然被大部分软件开发沿用,传统软件工程方法中的工具一数据字典、 实体一关系图、数据流图等在使用数据库的应用软件的分析和设计中,特别 是数据库的分析和设计中仍然有绝对的优势,这绝非OOSE能够解释的。大致上,现代软件工程具有以下几个方面的优势:面向对象(基于构件):将领域模型实例化为数据对象,清晰明了,降低了软件模型间的 复杂性。 UML等建模工具的兴起:StarUml等建模工具的使
29、用,使开发人员在需求分析和总体设计 阶段有了很好的工具,规范了软件开发过程。 高可用性和高复用性:构件和组件的复用和移植,使得软件开发周期大大缩短,提高了 开发的效率。模块化、形式化的开发方法:这一技术的使用代价很高,所以主要用于高精确系统的开发,因 为高精确系统中的一个很小的错误可能会引起极大的灾难。开源框架的使用:J2EE为代表的开源框架,给软件开发提供了轻量级的解决方案。敏捷开发:以用户的需求进化为核心,在保持软件一直处于可使用状态前提 下采用迭代、循序渐进的方法进行软件开发,使软件开发具有很大 程度的灵活性。成熟的设计模式:耿祥义总结有23种设计模式,工厂模式,单例模式,观察者模 式都
30、是常用的软件开发模式; 先进的测试方法和工具:黑盒白盒测试,Radom Adapted Testing 等常规测试方法,加上Bugfree、Selenium、TPTEST等常用测试工 具,现代软件测试方法层出不穷。4. 现代软件工程的合理应用下面我将针对自己前段时间参与研发的金沙江移民安置独立评估系统 简单分析一下,其中所包含的现代软件工程学的方法和技术。4.1基于组件以及组件复用方法在系统中应用整体架构方面,我们采用典型的J2EE轻量级企业开发框架,即SSH (Spring.Struts Hibernate)三大框架,分别控制MVC模型中的视图-模型-控制三个 部分,这运用了现代软件工程学基
31、于软件复用的高级软件工程方法,以及基 于(开源)框架、基于组件及组件复用的软件开发技术。4.2面向对象方法在系统中应用编程思想方面,这里采用面向对象的开发方法,例如移民安置点的道路信息,对应着数据库中Road表,也与前面框架管理的Road.java这个Javabean 对应,都代表地图中的实体“道路”这一对象,同样安置点也是一个对象, 基本实现了 “一切皆为对象”的编程原则。同时编码方法上,遵循“开放- 封闭原则”,即对于拓展开放、对修改封闭,模块的行为功能可拓展,但不 改变模块的源代码。项目管理方面,遵循了软件生命周期的历程,从前期的调研(需求分析) 撰写开发、需求文档,总体(概要)设计,详
32、细设计,到后面的编码阶段, 测试阶段,以及维护部署及维护阶段,都有相关技术人员负责,某一模块的 用例图如下所示。collection4-road-Hrtater-l-power-Kulture+Medic3lfeducatiDn+AttiibutEl+. I.watercultureMedical+l I powereducation4.3基于设计模式和框架方法在系统中应用设计模式方面,系统中体现了多种现代软件设计模式,像所有的Javabean 都按照“单例模式”进行创建,所有对象都有对应的抽象接口,这也是“工 厂模式”的一种体现,当然这也体现出“高内聚,低耦合”的现代软件开发 经验,即面向“
33、接口编程”,以及控制反转的框架技术。外观设计上,系统大部分的样式都来自于开源框架一一“DWZ”,一款国 产样式框架,提供前台交互页面的多种样式,像弹窗,Tab,风格各异的按 钮,字体等,非常便捷和轻量级,适合于这种快速开发的系统,也是属于组 件构件复用或者说基于框架的现代开发方法。4.4敏捷开发在系统中的应用同样敏捷开发的软件过程,在系统开发中也有所体现,在详细设计和编 码阶段,与客户间的交互非常频繁,客户方提出的需求不断变化,设计也相 应地进行调整,在这种敏捷的开发环境下,最终开发出让客户满意的产品。系统(单元)测试中,使用了黑盒以及白盒等多种软件测试技术,也使 用Bugfree等现代软件测
34、试工具,进行界面交互和后台数据的漏洞检测,并 不断对系统功能进行完善。4.5总结总的来说,现代软件开发应该根据现有的条件和自身的需要,根据时段 的变化和软件的开发发展情况,正确地选择使用现代软件工程技术和方法。 现代软件工程不但要求对系统的开发进度进行详细的安排,同时进行可行性 的专业评估,在传承传统软件工程的数据收集细致涉及信息量广之外,还要 对系统分析和系统设计的结果进行进一步的评估和度量,只有在通过软件质 量度量的前提下才可以投入到运行阶段。现代软件工程在大时代新浪潮的冲 击下,被时代发展赋予科学进步和意识前卫的标签,必须学会化整为零、重 新组合管理系统和软件系统,将程序专业化和深度化发
35、挥到最大的作用。目录1. 什么是传统软件工程方法11.1传统软件工程的概念21.2软件生命周期及其模型32. 现代软件工程方法有哪些42.1面向对象软件工程方法52.2面向构件(组装)、架构(复用)的软件工程方法52.3形式化开发方法62.4净室软件工程62.5现代软件工程开发模型62.5.1极限编程(XP)72.5.2基于体系结构的开发.72.5.3基于框架的软件开发72.5.4迭代的开发方法82.5.5模型驱动开发82.5.6敏捷开发83. 传统软件工程方法与现代软件工程方法的区别比较93.1传统软件工程方法83.2现代软件工程方法93.3小结及现代软件工程的优势104, 现代软件工程的合理应用114.1基于组件以及组件复用方法在系统中应用114.2面向对象方法在系统中应用104.3基于设计模式和框架方法在系统中应用104.4敏捷开发在系统中的应用104.5总结10题目:在对传统软件工程深入理解和融会贯通的基础之上,详细阐述现代软件工程 的前沿方法与技术。在此基础上,分析传统软件工程与现代软件工程的不同之 处以及现代软件工程方法的优势。并结合某实际系统,阐述并描述其中用到的 一种现代软件工程方法。
链接地址:https://www.31ppt.com/p-5006131.html