首页 > 编程知识 正文

个人软件开发接单,产品开发流程8个步骤

时间:2023-05-06 03:35:06 阅读:53604 作者:4014

软件开发的11种模式

1,边做边改模型(Build-and-Fix-Model)

该模型既没有说明也没有设计规格,软件已根据客户的需要进行了一次又一次的修改。 在该模型中,开发人员获得项目后立即根据需要编写程序,并在调试通过后生成软件的第一个版本。 提供给用户后,如果程序发生错误或用户提出新请求,开发人员将重新检查代码,直到用户和测试等满意为止。

这是类似研讨会的开发方式,一边制作一边改变模型的优点无疑是前期效果快。

虽然编写不需要逻辑严格的小程序仍然可以应对,但这种方法对任何规模的开发都不是令人满意的。 主要问题包括:

(1)缺少规划和设计环节,随着软件结构不断修改而恶化,无法再修改;

)2)忽视需求给软件开发带来很大风险。

)3)没有考虑测试和程序的可维护性,没有文档,软件维护非常困难。

2,瀑布模型(Waterfall-Model)

瀑布模型对软件的生命周期进行了分类。 制定了规划、需求分析、软件设计、程序编制、软件测试、运营维护六项基本活动,确定了自上而下、相互联系的一定顺序。 像瀑布的流动一样,阶段性地下降。

在瀑布模型中,软件开发的各项活动严格线性进行,当前活动接受前一项活动的工作结果,实施完成所需的工作内容。 必须验证当前活动的工作结果。 如果验证成功,则结果作为下一个活动的输入进入下一个活动,否则返回修改。

优点:严格按照事先计划的步骤进行,有步骤地进行一切。

(1)为项目提供了分阶段的检查点

)2)一个阶段结束后,只需关注下一个阶段

)3)可以将瀑布模型应用于迭代模型

缺点:缺乏灵活性,过于线性理想化,不适合现代软件开发

)各阶段分隔完全固定,各阶段之间产生大量文档,工作量大幅增加;

)2)由于开发模型是线性的,用户在过程结束之前无法看到开发成果,增加了开发的风险。

)3)初期错误要到开发后期测试阶段才能发现,可能带来严重后果。

)4)各软件生命周期的协同工作需要时间,团队成员沟通成本较大。

)5)瀑布式方法在需求不明、项目进行中可能发生变化时基本上是不可能的。

3,快速原型模型(Rapid-Prototype-Model)

快速原型的第一步是构建一个快速原型,使客户或未来的用户能够与系统进行交互。 用户或客户评估原型,以进一步完善开发软件的需求。 通过逐步调整原型以满足客户的要求,开发人员可以确定客户的真正需求。在第2步中,根据第1步开发客户满意的软件产品。

显然,快速成型方法克服了瀑布模型的缺点,降低了软件需求不明确带来的开发风险,具有明显的效果。

快速创建原型的关键是尽可能快速地创建软件原型。 一旦确定了客户的真正需求,所创建的原型将被销毁。 因此,原型系统的内部结构并不重要,重要的是必须快速创建原型,并相应地快速修改原型以反映顾客的需求。

快速原型模型具有整合“边制作边改变”和“瀑布模型”的优点的意义。

好处:

(1)生命周期短

)2)整合“边改”和“瀑布模型”的优势

)3)软件需求不明确降低开发风险

)4)适用于小型、交互式系统,是大型系统的一部分

缺点:

)1)系统设计差、效率低,可能难以维护

4http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /

在增量模型中,软件被设计、实现、集成和测试为一组增量组件。 每个组件都由代码片段组成,这些代码片段由多个交互模块组成,提供特定功能。

增量模型提供子集可执行产品,以满足客户的需求,而不是提供完整的可执行产品。 整个产品被分解成几个部件,开发者按部件交付产品,具有软件开发能够很好地应对变化,不断看到客户开发的软件,从而降低开发风险的优点。 但是,增量模型也有以下缺点。

)1)每个组件都将嵌入到现有的软件体系结构中,因此,要嵌入组件,必须避免破坏构建的系统部分,这需要软件具有开放的体系结构。

)2)开发过程中,需求的变化是不可避免的。 与瀑布模型和快速原型模型相比,增量模型的灵活性可以大大提高适应这一变化的能力,但在制作的同时容易退化为变更模型,失去了软件过程控制的整体性。

使用增量模型时,第一个增量模型往往是实现基本需求的核心产品。 核心产品交付用户使用后,经过评价形式

成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。

例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。

优点:

(1)人员分配灵活,一开始不需要投入大量人力

(2)先推出核心的产品,在后续增加相应的功能

(3)增量能够有计划的管理技术风险

(4)适用于需求经常变更的软件开发过程

缺点:

(1)如果增量包之间存在相交的情况未很好的处理,则必须做全盘的系统分析

 

5,迭代模型(Stagewise-Model)(迭代增量式开发/迭代进化式开发)

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。

迭代和版本的区别,可理解如下:迭代一般指某版本的生产过程,包括从需求分析到测试完成;版本一般指某阶段软件开发的结果,一个可交付使用的产品。

优点:

(1)降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。

(2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。

(3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。

(4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。因此复用性更高

 

6,螺旋模型(Spiral-Model)


1988年,刻苦的秋天(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。

螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:

(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

(3)实施工程:实施软件开发和验证;

(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。

螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:

(1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。

(2)如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。

(3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险

一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。

 

7,敏捷开发模型(Agile-Development-Model)

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发小组主要的工作方式:

(1)作为一个整体工作;

(2)按短迭代周期工作;

(3)每次迭代交付一些成果,关注业务优先级,检查与调整。

敏捷开发的4个核心思想:

(1)强调面对面的沟通,人和人的相互交流胜于任何流程和工具

(2)把精力集中在可执行的程序上,可以运行的产品胜于编制综合性文档,强调了原型、模型、demo等的重要性

(3)团队合作和团队激励,合作胜于谈判,敏捷开发能将需求、开发、测试等全部团队成员融合成一个整体,大家都是一条线上的蚂蚱

(4)超强的适应能力,适应变化胜于按部就班,敏捷开发的特点就是快速

敏捷软件开发要注意项目规模,规模增长,团队交流成本就上去了,因此敏捷软件开发暂时适合不是特别大的团队开发,比较适合一个组的团队使用。

 

8,演化模型(Evolutionary-Model)

主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。

在开发模式上采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。于是,设计就不断地演化出新的系统。 实际上,这个模型可看作是重复执行的多个“瀑布模型”。

“演化模型”要求开发人员有能力把项目的产品需求分解为不同组,以便分批循环开发。这种分组并不是绝对随意性的,而是要根据功能的重要性及对总体设计的基础结构的影响而作出判断。有经验指出,每个开发循环以六周到八周为适当的长度。

 

9,喷泉模型(Fountain-Model)

以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目

喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

优点:

(1)可以提高软件项目开发效率,节省开发时间,适用于面向对象的软件开发过程

缺点:

(1)由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理

(2)这个模型要求严格管理文档,使得审核难度加大,尤其是面对随时加入各种需求

 

10,智能模型(四代技术4GL)

智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。

 

11,混合模型(Hybrid-Model)

过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。

 

 大概对比了部分的模型方法

模型名称

技术特点

适用范围

瀑布模型

简单,分阶段,阶段间存在因果关系,

各个阶段完成后都有评审,允许反馈,不支持

用户参与,要求预先确定需求

需求易于完善定义且不易变更的软件系统

快速原型模型

不要求需求预先完备定义,支持用户参与,

支持需求的渐进式完善和确认,能够适应用户需求的变化

需求复杂、难以确定、动态变化的软件系统

增量模型

软件产品是被增量式地一块块开发的,

允许开发活动并行和重叠

技术风险较大、用户需求较为稳定的软件系统

迭代模型

不要求一次性地开发出完整的软件系统,将软件

开发视为一个逐步获取用广需求、完善软件产品的过程

需求难以确定、不断变更的软件系统

螺旋模型

结合瀑布模型、快速原型模型和迭代模

型的思想,并引进了风险分析活动

需求难以获取和确定、软件开发风险较大的软件系统

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。