软件工程 软件开发方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程之软件开发方法
常用软件开发方法: 结构化方法、原型法、面向对象方法.
结构化方法:
结构化方法是应用最为广泛的一种开发方法。按照信息系统生命周期,应用结构化系统开发方法,把整个系统的开发过程分为若干阶段,一步一步地依次进行,前一阶段是后一阶段的工作依据;每个阶段又划分详细的工作步骤,顺序作业。每个阶段和主要步骤都有明确详尽的文档编制要求,各个阶段和各个步骤的向下转移都是通过建立各自的软件文档和对关键阶段、步骤进行审核和控制实现的。它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。以数据流图、数据字典、结构化语言、判定表、判定树等图形表达为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。
结构化方法方法具有如下特点:
(l)遵循用户至上原则。
(2)严格区分工作阶段,每个阶段有明确的任务和取得的成果。
(3)强调系统开发过程的整体性和全局性。
(4)系统开发过程工程化,文档资料标准化。
该方法的优点是:理论基础严密,它的指导思想是用户需求在系统建立之前就能被充分了解和理解。由此可见,结构化方法注重开发过程的整体性和全局性。
该方法的缺点是:
(1)开发周期长;
(2)文档、设计说明繁琐,工作效率低;
(3)要求在开发之初全面认识系统的信息需求,充分预料各种可能发生
的变化,但这并不十分现实;
(4)若用户参与系统开发的积极性没有充分调动,造成系统交接过程不
平稳,系统运行与维护管理难度加大。
原型法:
原型法的基本思想与结构化方法不同,原型法认为在很难一下子全面准确地提出用户需求的情况下,首先不要求一定要对系统做全面、详细的调查、分析,而是本着开发人员对用户需求的初步理解,先快速开发一个原型系统,然后通过反复修改来实现用户的最终系统需求。是在投入大量的人力,物力之前,在限定的时间内,用最经济的方法开发出一个可实际运行的系统模型,用户在运行使用整个原型的基础上,通过对其评价,提出改进意见,对原型进行修改,统一使用,评价过程反复进行,使原型逐步完善,直到完全满足用户的需求为止。适用范围:处理过程明确、简单系统;涉及面窄的小型系统.不适合于:大型、复杂系统,难以模拟;存在大量运算、逻辑性强的处理系统;管理基础工作不完善、处理过程不规范;大量批处理系统
原型应当具备的特点如下。
(1)实际可行。
(2)具有最终系统的基本特征。
(3)构造方便、快速,造价低。
原型法的特点在于原型法对用户的需求是动态响应、逐步纳入的,系统分析、设计与实现都是随着对一个工作模型的不断修改而同时完成的,相互之间并无明显界限,也没有明确分工。系统开发计划就是一个反复修改的过程。适于用户需求开始时定义不清的系统开发,开发方法更宜被用户接受;但如果用户配合不好,盲目修改,就会拖延开发过程。
面向对象方法:
面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。随着应用系统日益复杂庞大和面向对象程序设计语言的日益成熟,面向对象的系统开发方法以其直观、方便的优点获得广泛应用。
是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。
面向对象方法从对象出发,发展出对象,类,消息,继承等概念。
面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。
敏捷开发方法:
是一种应对快速变化的需求的开发方法,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
敏捷开发的价值观:人和(人与人的)交互优先于过程和工具;可以工作的软件优先于求全责备的文档;客户协作优先于合同谈判;随时应对变化优先于循规蹈矩。
敏捷开发的原则:对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要;我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势;经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好;业务人员和开发者应该在整个项目过程中始终朝夕在一起工作;围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务;在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈;可以工作的软件是进度的主要度量标准;敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏;对卓越技术与良好设计的不断追求将有助于提高敏捷性;简单——尽可能减少工作量的艺术至关重要;最好的架构、需求和设计都源自自我组织的团队;每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。