考虑后续优化如何进行。 ②缺乏文档,大型项目时的交接过程会出现很大困难。
(4)敏捷开发 V.S.瀑布式开发
工作方式:瀑布式强调过程文档,将项目开发周期划分为几个固定阶段,上一阶段输出
为下一阶段输入;敏捷开发强调人的协作,在高度协作的环境中用迭代方式进行增量开发,
用户可对每次迭代成果提出意见,开发人员进行调整完善。
优点:瀑布式阶段明确,有助于提高阶段效率,文档清晰;敏捷开发阶段成果可被查验,
降低风险,且灵活性高,可以随时进行需求变更。
缺点:瀑布式文档多,工作量大;项目开始需要明确需求,后期才能展示成果,增加开
发风险;需求变更成本高;敏捷开发高水平协作需要大量准备和沟通,最终交付内容无法
预测。
适用:瀑布式适用于软件需求十分明确且不会有频繁变化的项目;敏捷开发适用于需求不
明确,有创新性或需要抢占市场的项目。
(5)敏捷开发 V.S. 迭代开发
区别:①开发模型不同,敏捷开发对应 Scrum 等开发方法,迭代开发对应瀑布模型、螺
旋模型等。②性质不同,迭代开发是软件开发周期模型,每次迭代都是一个完整的模型,
是一种开发过程;敏捷开发是多种软件开发项目管理的集合,是一种开发方法。③需求要
求不同,迭代开发适合需求信息不明确的项目,敏捷开发是紧紧围绕用户需求,以用户为
导向,快速开发、验证、修正。
联系:①开发方法,都有采用迭代的方法进行软件开发。②实际应用中,迭代开发适合
需求不明确项目,这一优势符合敏捷开发的拥抱变化;敏捷开发是整体概念,而迭代式开
发是其采用的基础实践,敏捷开发除迭代式开发外,还包含其他管理与工程技术实践。
【附:迭代开发 V.S. 增量开发
迭代开发的过程时软件功能不断细化的过程,是质的提升;增量开发按照重要程度办事,
其过程是软件功能不断加入的过程,是量的叠加】
5.软件复用、基于构件开发、软件再工程
(1)软件复用
① 出现原因:需求+能力:
需求:大多软件针对具体应用开发,大量的软件都经历需求分析、涉及、实现、测试、最
后交付,出现了大量同类软件。重复开发浪费资源,软件质量整体较低。
能力:构件相关技术发展;
② 概念:通过已有软件的各种有关知识来建立新的软件,这些知识包括:领域知识、开发
设计经验、体系结构、需求、设计、编码、测试和文档等。严格意义上的软件复用是指:
重复使用“为了复用目的而设计的软件”的过程。
③ 维度:软件复用行为主要发生在三个维度。
1)时间维:用旧软件版本作为新版本的基础,加入新功能、适应新需求,即软件维护;
2)平台维:以某平台上软件为基础,修改该平台相关部分,使软件适应新平台,即软件
移植。
3)应用维:将某软件或其中构件用于其他应用系统中,新系统具有不同功能和用途,即
真正的软件复用。
④ 复用的作用:
(1)作用/意义:软件复用是提高软件生产率及软件质量的最有效的途径。【生产率提高:
用现成的;质量提高:使用多,几乎无错】