1、北京理工大学软件学院北京理工大学软件学院软件工程软件工程北京理工大学软件学院北京理工大学软件学院 课课 名:软件工程名:软件工程参考参考教材教材:1、张海藩,软件工程导论(第5版),清华大学出版社,20082、齐治昌等,软件工程(第二版),高等教育出版社,20063、郑人杰等,软件工程概论,机械工业出版社,2010教学方式:授课实验教学方式:授课实验课时:课时: 4040北京理工大学软件学院北京理工大学软件学院教学目的和要求:(1) 掌握软件工程的基本概念(2)学会软件工程项目开发过程的分析、设 计、编码要求以及测试、维护的基本策 略和方法(3)了解软件工程项目管理的基本内容和方 法北京理工大
2、学软件学院北京理工大学软件学院主要内容为:(1)软件工程概述: 软件工程发展、过程模型.(2) 软件工程技术: 软件工程分析方法、软件工程系统设计方法、软件测试技术(3)软件维护:软件的可维性、软件维护的任务及过程、 软件维护的副作用(4) 软件项目管理技术: 软件项目管理的基本概念、项目计划、 风险分析、软件质量保证、软件配置管理北京理工大学软件学院北京理工大学软件学院第一章软件工程概软件工程概述北京理工大学软件学院北京理工大学软件学院第一章第一章 软件工程概软件工程概述述的内容的内容1.1 1.1 引言引言 1.21.2 软件基本概念、分类、特点软件基本概念、分类、特点1.3 1.3 软件
3、工程的发展过程软件工程的发展过程 1.4 1.4 软件工程的活动软件工程的活动 1.51.5 软件过程模型软件过程模型 1.61.6 Rational Rational统一过程模型统一过程模型 北京理工大学软件学院北京理工大学软件学院北京理工大学软件学院北京理工大学软件学院北京理工大学软件学院北京理工大学软件学院1.2.1 软件1.2软件基本概念、分类、特点 软件是计算机系统中与硬件相互依存的另一软件是计算机系统中与硬件相互依存的另一 部分,包括程序、数据及相关文档的完整集合。部分,包括程序、数据及相关文档的完整集合。三要素三要素程序:程序:按事先设计的功能、性能要求执行的指令按事先设计的功能
4、、性能要求执行的指令 (语句语句)序列;序列;数据:数据:使程序能正常操纵信息的数据结构;使程序能正常操纵信息的数据结构;文档:文档:与程序开发、维护和使用有关的图文资料。与程序开发、维护和使用有关的图文资料。可可执执行行的的北京理工大学软件学院北京理工大学软件学院计算机软件定义计算机软件定义(GB) 与计算机系统的操作有关的计算机程与计算机系统的操作有关的计算机程序、规程、序、规程、规则,以及可能有的文件、文档及数据。规则,以及可能有的文件、文档及数据。其中其中:I=(i1,i2, ,in) 输入集合。输入集合。I Ij j表示一个抽象的输入数据类型表示一个抽象的输入数据类型 O=(O1,O
5、2,On) 输出集合。输出集合。Oj表示一个抽象的输出数据类型表示一个抽象的输出数据类型E=(e1,e2,en) 构成集合。构成集合。ei表示一个子系统或一个构件表示一个子系统或一个构件R=(r1 1,r2 2,rn n) 构件关系集合构件关系集合. .ri表示一个关系。表示一个关系。 软件表示软件表示 S = ( I, O, E, R )S = ( I, O, E, R )北京理工大学软件学院北京理工大学软件学院1.2.2 软件的特点软件的特点1. 1. 是逻辑实体,非物理实体,具抽象性;是逻辑实体,非物理实体,具抽象性;2. 2. 没有明显的制作过程;没有明显的制作过程;3. 3. 运行、
6、使用期间不存在磨损、老化;运行、使用期间不存在磨损、老化;4. 4. 软件的开发、运行受计算机系统的限制;软件的开发、运行受计算机系统的限制;5.5.复杂性高,成本昂贵。复杂性高,成本昂贵。6.6.涉及社会因素。涉及社会因素。北京理工大学软件学院北京理工大学软件学院1.2.3 软件分类软件分类软件从设计、实现、维护和传统工程有相同的基础软件从设计、实现、维护和传统工程有相同的基础2. 2. 基于软件工作方式:基于软件工作方式:* * 实时处理实时处理* * 分时处理分时处理* * 交互处理交互处理* * 批处理批处理1 1. . 基于软件大的功能框架:基于软件大的功能框架: * * 系统软件系
7、统软件 * * 支撑(工具)软件支撑(工具)软件 * * 应用软件应用软件北京理工大学软件学院北京理工大学软件学院管理者的错误观点:我们已经有标准和规程了我们已经有好的开发平台和工具了我们可以在开发进度得不到保障时,可增加开发人员我们可以外包一部分项目,缓解项目的压力用户的错误观点:因为知道项目的目标,可先编程序。不考虑项目将来怎样,以后要变改就行了开发者的错误观点:开发者的错误观点:编完程序就大功告成编完程序就大功告成程序未运行前,没有质量问题程序未运行前,没有质量问题最后项目完成只提交程序最后项目完成只提交程序软件工程,就是写文档,增加开软件工程,就是写文档,增加开发成本发成本1软件开发的
8、软件开发的错误观点错误观点开发者管理者用户 1.2.4 软件开发技术面临的问题北京理工大学软件学院北京理工大学软件学院 1.2.5 1.2.5 软件危机软件危机F概括地说,软件危机包含下述两个方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。F在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。北京理工大学软件学院北京理工大学软件学院 1.2.6.软件危机的主要特点u软件开发周期大大超过规定日期软件开发周期大大超过规定日期; ;u软件系统开发成本高,周期长,质量差,满软件系统开发成本高,周期长,
9、质量差,满足不了市场需求足不了市场需求; ;u 软件质量无保证软件质量无保证u软件系统开发人员数量少,质量低软件系统开发人员数量少,质量低u软件系统维护难度大软件系统维护难度大u软件开发缺乏合适的工具和方法软件开发缺乏合适的工具和方法u软件的版权问题得不到保证软件的版权问题得不到保证北京理工大学软件学院北京理工大学软件学院1.2.7 yet, Success Hasn1.2.7 yet, Success Hasn t Come Easilyt Come Easily31%31%53%53%成功争议失败16%16%成功的标准:s用户在使用用户在使用s用户使用软件很容易用户使用软件很容易做完要做的
10、事做完要做的事 开发人员写出的软件达不到用户要求:开发人员写出的软件达不到用户要求:F 人的能力问题人的能力问题. .F 当前技术发展问题当前技术发展问题F 系统平台问题系统平台问题失败的根本原因北京理工大学软件学院北京理工大学软件学院1.3 1.3 软件工程的发展软件工程的发展1.3.1 软件的发展软件的发展在软件危机形式下,软件工程诞生了,在软件危机形式下,软件工程诞生了,19681968年在北大年在北大西洋公约组织(西洋公约组织(NATONATO)的德国开的学术会议上,)的德国开的学术会议上,软件软件工程工程术语首次提出术语首次提出北京理工大学软件学院北京理工大学软件学院( (Softw
11、are Life Cycle) ) 软件产品或软件系统从设计、投入使用到被淘汰的全过程软件产品或软件系统从设计、投入使用到被淘汰的全过程北京理工大学软件学院北京理工大学软件学院北京理工大学软件学院北京理工大学软件学院1.3.3 1.3.3 硬件、软件生命周期的比较硬件、软件生命周期的比较硬件故障率曲线硬件故障率曲线软件实际故障率曲线软件实际故障率曲线生生命命初初期期磨磨损损后后理想曲线理想曲线实际曲线实际曲线由于副作用造成由于副作用造成的故障率提高的故障率提高修修改改故故障障率率故故障障率率时间时间时间时间北京理工大学软件学院北京理工大学软件学院 改正一个问题需付出的代价需求分析结构设计详细设
12、计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)北京理工大学软件学院北京理工大学软件学院1.4 软件工程的定义1 IEEE93对软件工程定义: 软件工程是(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护。即将工程化应用于软件。(2)在(1)中所述方法的研究IEEE:美国电气和电子工程师学会:(Institute of Electrical and Electronics Engineers)学会设各种专门技术分会,软件标准分技术委员会为SESS2 定义给的四个要点:定义给的四个要点
13、:软件工程方法和性质-系统化、严格约束、可量化的方法软件工程方法的作用和范围-软件的开发、运行和维护软件工程方法的目标-即将工程化应用于软件软件工程方法的趋势-方法的研究北京理工大学软件学院北京理工大学软件学院在给定成本、进度的前提下,开发出有可修改性、有效性、可在给定成本、进度的前提下,开发出有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满可追踪性和可互操作性且满 足用户需求的产品足用户需求的产品 。技术的观点:包括:软件项目的分析、设计、编码、测试、维护等技术方法。按软件技术理论,
14、以高效、健壮、可复用、可维护为目的,研究软件体系结构、组成以及构造方式、等观点:包括:软件项目招标、合同、实施、监督、验收推广等。以经济管理科学为依据,研究软件工程的规划策略和经济收益等工程问题管理的观点:包括:软件项目开包括:软件项目开发人员组织控制、发人员组织控制、进度风险分析和质进度风险分析和质量保证体系等方面量保证体系等方面。以科学性、高效。以科学性、高效可行及可测量性为可行及可测量性为目标来研究工程项目标来研究工程项目管理目管理4 4 软件工程软件工程的的三视图三视图北京理工大学软件学院北京理工大学软件学院5 软件工程基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、
15、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组的人员应该少而精7、承认不断改进软件工程实践的必要性北京理工大学软件学院北京理工大学软件学院北京理工大学软件学院北京理工大学软件学院 1.5 软件过程模型软件工程学的基础是软件工程学的基础是软件过程软件过程贯穿于软件生命周期中软件工程学中的方法用于软件工程学中的方法用于软件过程的各阶段的各项活动中活动中北京理工大学软件学院北京理工大学软件学院1 软件过程定义工具工具方法方法过程过程质量焦点质量焦点Software engineering layers:支持软件工程的根支持软件工程的根基就在于对质量的关注。基就在于对质量
16、的关注。软件工程的过程将技术软件工程的过程将技术层结合在一起,使计算机软层结合在一起,使计算机软件合理和及时开发出来。件合理和及时开发出来。:涵盖一系列的任务:需:涵盖一系列的任务:需求分析、设计、编程、测试求分析、设计、编程、测试和维护。和维护。:对过程、方法提供自动:对过程、方法提供自动或半自动的支持。例或半自动的支持。例CASECASE集集成软件、硬件或一个软件工成软件、硬件或一个软件工程数据库程数据库。根据不同的项目来定义贯穿于软件生命周期之中的一组关键活动区域。也称过程模型2 2 软件过程的位置和作用软件过程的位置和作用北京理工大学软件学院北京理工大学软件学院3. 瀑布模型 ( (线
17、形顺序模型线形顺序模型) )可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维护运行维护测试测试定义定义阶段阶段开开发发阶阶段段维护阶段维护阶段开发软件的特点:F过程具有顺序性和依赖性过程具有顺序性和依赖性F不适应需求不确定的项目不适应需求不确定的项目F错误最后才发现错误最后才发现F开始进程呈阻塞情况开始进程呈阻塞情况 承接上一项活动中接收本项活动所需的对象作为输入承接上一项活动中接收本项活动所需的对象作为输入F 利用输入进行本项活动。利用输入进行本项活动。F 把本项的活动成果传送下一项把本项的活动成果传送下一项F 对本项工作进行评审,若评审正确才能进行下一项工作对本项工作
18、进行评审,若评审正确才能进行下一项工作确定:确定:系统功能系统功能系统性能系统性能设计:设计:数据结构数据结构体系结构体系结构接口接口算法算法开发软件的原则分析:分析:系统需求系统需求软件需求软件需求北京理工大学软件学院北京理工大学软件学院4 原型模型听取用听取用户意见户意见建造建造/ /修修改原型改原型用户测试用户测试运行原型运行原型原型模型带来的问题原型模型带来的问题:原型时期的质量问题原型时期的质量问题用户如何理解进度用户如何理解进度先入为主的非最佳方式先入为主的非最佳方式不适合原型开发不适合原型开发的领域的领域: : 实时控制软件实时控制软件 数值计算软件数值计算软件原型产生的步骤原型
19、产生的步骤需求分析和定义规格需求分析和定义规格 软件设计的一种工具软件设计的一种工具 解决不确定性的工具解决不确定性的工具 一种实验工具一种实验工具 开发同时开发同时, ,作为同步培作为同步培训工具训工具原型演化为最终系统原型演化为最终系统软件维护的辅助工具软件维护的辅助工具应用领域应用领域北京理工大学软件学院北京理工大学软件学院需求需求设计设计编码编码测试测试集成集成运运行行、试试用用核心系统开发核心系统开发设计设计需求需求编码编码测试测试集成集成运运行行、试试用用第二次迭代第二次迭代反馈反馈反馈反馈5 演化(迭代)模型需要足够的人力资源用户和设计都成为关键适用于MIS形式的系统开发过程开发
20、过程(1) (1) 根据用户要求开发出核心系统根据用户要求开发出核心系统(2)(2)用户试用后,提出精化系统、增强系统能力的需求,开发人用户试用后,提出精化系统、增强系统能力的需求,开发人员实施开发的迭代过程员实施开发的迭代过程北京理工大学软件学院北京理工大学软件学院6 增量模型(递增模型、增殖模型) 先完成一个系统子集的开发,再先完成一个系统子集的开发,再按同样的开发步骤增加功能按同样的开发步骤增加功能 ( (系统系统子集子集),),如此递增下去直至满足全部如此递增下去直至满足全部系统需求。系统需求。 系统的总体设计在初始子集设计阶段系统的总体设计在初始子集设计阶段就应作出设想。就应作出设想
21、。北京理工大学软件学院北京理工大学软件学院分析分析 增量模型设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 增量增量1 1增量增量2 2增量增量3 3增量增量4 4交付的交付的增量增量1 1交付的交付的增量增量2 2交付的交付的增量增量3 3交付的交付的增量增量4 4日历时间日历时间北京理工大学软件学院北京理工大学软件学院7.螺旋模型l 瀑布模型和增量模型相瀑布模型和增量模型相结合,增加风险分析结合,增加风险分析l 用来指导大型软件项目用来指导大型软件项目的开发的开发l 将开发划分为制定计划、将开发划
22、分为制定计划、风险分析、实施工程、客风险分析、实施工程、客户评估四类活动户评估四类活动l 沿螺旋线每转一圈,表沿螺旋线每转一圈,表示开发出一个更完善的新示开发出一个更完善的新的软件版本的软件版本要点:相似要点:相似于增量模型于增量模型,是顺序,是顺序模型与原型过程的统一,强调版模型与原型过程的统一,强调版本的升级。本的升级。活动化分不同活动化分不同更强调:计划、风险分析、用户评估更强调:计划、风险分析、用户评估与增量模型与增量模型的区别:的区别:北京理工大学软件学院北京理工大学软件学院8. 喷泉模型演化演化分析分析设计设计实现实现确认确认维护维护l1990年年B.H.Sollers和和J.M.
23、Edwards提出提出l主要用于采用面向对象技术的项目主要用于采用面向对象技术的项目l喷泉体现迭代和无间隙的特征喷泉体现迭代和无间隙的特征l软件的某些部分常常被重复工作多软件的某些部分常常被重复工作多次,相关对象在每次迭代中随之加次,相关对象在每次迭代中随之加入渐进的软件成分入渐进的软件成分l在分析、设计、实现等各项活动之在分析、设计、实现等各项活动之间无明显边界间无明显边界北京理工大学软件学院北京理工大学软件学院9.9.构件集成模型构件集成模型 构件库构件库问题域问题域识别构件识别构件查找构件查找构件生成构件生成构件组装系统组装系统查到构件查到构件未查到构件未查到构件模型要点:模型要点: 基
24、于软件复用性基于软件复用性 形成统一开发过程形成统一开发过程 采用统一建模语言采用统一建模语言35北京理工大学软件学院北京理工大学软件学院基本需求基本需求螺旋螺旋螺旋模型螺旋模型第第n次迭代次迭代原型原型建造原型建造原型第第n次迭代次迭代维护维护运行系统运行系统需求分析需求分析设计设计编码编码测试测试132578614944GT4GT4GT1010111213组合模型组合模型要点:几种模型配合使用以一种模型为主,嵌入其它模型由开发者选择开发路径北京理工大学软件学院北京理工大学软件学院已经有先例的项目已经有先例的项目 问题明确且时间紧的项目问题明确且时间紧的项目 规模较大且时间紧的项目规模较大且
25、时间紧的项目 需求不确定的项目需求不确定的项目 带有突破性技术的项目带有突破性技术的项目 客户难以沟通和理解的项目客户难以沟通和理解的项目 明显复用潜力的项目明显复用潜力的项目项目适应模型的规律(一般情况)项目适应模型的规律(一般情况) 项目情况项目情况适用模型适用模型瀑布模型瀑布模型增量模型增量模型演化模型演化模型原型模型原型模型螺旋模型螺旋模型原型模型原型模型构件模型构件模型37北京理工大学软件学院北京理工大学软件学院Rational统一过程RUPFRUP是由IBM公司开发和维护的过程产品F它提供了在开发机构中分派任务和责任的方法F它的目的是在可以预见的日程和预算前提下确保满足最终用户需求
26、的高质量软件的产生北京理工大学软件学院北京理工大学软件学院RUP的优越性F提高了团队的生产力F创建并维护模型F为如何有效地使用UML提供了指导F是一个可配置的过程F吸收了许多在商业上得到证明的软件开发的最佳实践经验北京理工大学软件学院北京理工大学软件学院RUP所吸收的最佳工程实践经验F迭代地开发软件F需求管理F使用基于组件的体系结构F可视化的软件建模F验证软件质量F控制软件的变化北京理工大学软件学院北京理工大学软件学院RUP的二维结构北京理工大学软件学院北京理工大学软件学院软件工程方法学软件工程方法学 F通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也
27、称为范型(paradigm)。F软件工程方法学包括三个要素,这就是方法、工具和过程。F目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。北京理工大学软件学院北京理工大学软件学院43结构化方法 PK 面向对象方法北京理工大学软件学院北京理工大学软件学院44结构化方法 PK 面向对象方法F传统的结构化开发方法是以功能分析和数据分析为基础,采用分解和抽象的方法找出软件功能模块及其之间的连接关系,并找出数据的表或视图以及它们之间的关联。F但是,该方法使得人们对现实世界的认识与编程之间存在理解上的鸿沟,整个系统的变动和修改十分困难,不便于软件重用,并且难以适应以突出控制特性的系统要求。
28、 北京理工大学软件学院北京理工大学软件学院45结构化方法 PK 面向对象方法F面向对象方法是从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。它运用人类在日常的逻辑思维中经常采用的思想方法与原则,F例如抽象、分类、继承、聚合、封装等,将其贯穿于整个分析和设计过程,实现了客观世界到计算机系统的平滑过渡,容易为人们所理解,并使得软件的复用在面向对象的设计中成了自然而然的事情。 北京理工大学软件学院北京理工大学软件学院46什么是CASEFCASE( Computer Aided Software Engineering) 计算机辅助软件工程是一组工具和方法的集合
29、,用于辅助软件开发、维护、管理过程中的各项活动,促进软件过程的工程化和自动化 所有软件工程方法都需要CASE的相应技术支持u用于系统模型的图形编辑器u管理设计实体的数据字典u生成用户界面的GUI软件u支持程序纠错的调试器u代码生成器u北京理工大学软件学院北京理工大学软件学院47CASE 工具FIBM Rational公司产品(http:/) 开发管理软件过程: RUP 需求管理: Requisite Pro 可视化建模: Rose 自动测试: Robot, Test Realtime, TestManager, XDE Tester 项目管理: ProjectConsole 配置管理: Cle
30、arCase, ClearQuestF开源CASE工具: (http:/ ) CVS: 应用广泛的版本管理工具 UML Modeler:UML模型图形编辑工具 UML2EJB: 将XML表示的UML模型转换成EJB代码的转换器北京理工大学软件学院北京理工大学软件学院48进一步说明北京理工大学软件学院北京理工大学软件学院49软件工程面临的挑战F遗留系统的问题 遗留系统是指那些过时或存在问题的计算机系统,通常是许多年以前开发的 挑战:既要以合理的成本维护和更新系统,又要能够继承系统中重要的商业信息和服务F异构系统的问题 网络环境下包含不同的硬件平台和软件系统 挑战:需要提出新的开发技术,能够使所开
31、发的软件系统运行在不同的硬件平台和系统环境下北京理工大学软件学院北京理工大学软件学院50软件工程面临的挑战F高可信软件开发的要求 软件的重要作用要求正确性、可靠性、安全性等可信性质 挑战:如何在软件的开发和运行中保证其具有高可信的性质F软件开发方式的变化 网络时代带来的冲击 挑战:研究分布式的软件体系结构和开发模式,探索与之相适应的软件工程策略北京理工大学软件学院北京理工大学软件学院51软件工程知识体系F软件工程知识体系(SWEBOK) IEEE计算机学会发起研究,从而促进软件工程发展成为独立的专业学科 2001年5月完成,发布“SWEBOK指南V1.00 (试用版)”FSWEBOK的组成 将
32、软件工程知识分解成若干知识域,形成层次化的组成结构 10个知识域u软件需求、软件设计、软件构造、软件测试、软件维护u软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量北京理工大学软件学院北京理工大学软件学院52北京理工大学软件学院北京理工大学软件学院53软件工程及其相关学科F软件工程是应用计算机科学、 数学与管理科学等基本原理, 开发软件的工程。它借鉴传 统工程的原则和方法,以提 高质量,降低成本为目的F计算机科学和数学用于构造 软件的模型与算法;工程科 学用于制定规范、设计范型、 评估成本及确定权衡;管理 科学用于计划、资源、质量、 成本等管理北京理工大学软件学院北京理工
33、大学软件学院54软件工程与计算机科学F软件工程与计算机科学的区别 计算机科学u研究构成计算机和软件系统基础的有关理论和方法u举例:数据结构、离散数学、算法分析等 软件工程u研究开发和发布软件的实际问题u举例:飞行控制软件F软件工程的研究与实践包括两方面,一是扎根于计算机科学,二是表现为一种工程学科北京理工大学软件学院北京理工大学软件学院55思考与讨论F以下系统适合采用什么样的软件过程模型?为什么? 在一种新型机器上,为一种已知语言开发一个普通的编译器F瀑布模型 该项目的语言是已知的,需求是明确的和稳定的,整个系统属于中小规模,因此适合采用瀑布模型进行软件开发北京理工大学软件学院北京理工大学软件
34、学院56案例分析 大学教务管理系统,准备替换现有的系统增量模型从该系统的具体情况来看,系统的需求是比较容易明确的,整个系统的结构需要重新设计,但是原有的遗留系统中有些部分是可以重用的,因此我们可以采用增量模型实施软件开发北京理工大学软件学院北京理工大学软件学院57案例分析 快速原型模型 本项目的主要问题在于用户需要方面,该系统与最终用户的交互是十分关键的,但是在项目初期用户的需求基本上是不知道的,因此适合采用快速原型方法来确定用户需求,在需求确定的基础上再开发最终系统大学校园的虚拟漫游系统,这是该大学首次使用该系统北京理工大学软件学院北京理工大学软件学院小结小结F软件、软件工程的概念F软件的特点F软件危机的表现形式F软件工程模型:瀑布、原型、演化、构件、RUPF软件过程模型的选择依据F两种软件工程方法学的比较