软件工程方法论

软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。

一、软件开发方法

        1、结构化法

                即面向过程的开发方法。其基本思想是“自上而下,逐步求精”,把一个复杂的系统拆分,化繁为简,形成一个个的构件。其讲究的是用户至上,系统开发过程工程化、文档化、以及标准化。严格的区分来工作阶段,每个阶段都有明确的任务和应得额成果。

        2、面向对象方法

                面向对象的开发方法是自底而上的,主要表现为和现实事物结合起来,把世间万物抽象出来,形成一个个的抽象对象。相比结构化法有更好的复用性,分析、设计、实现三个阶段界限不明确,其关键点在于建立一个全面的、合理的、统一的模型。

        3、面向服务方法

                面向服务方法是面向对象法法的延伸。其服务建模又分为服务发现(分析)、服务规约(约定规范)、和服务实现(具体实现)三个阶段。

                SO方法主要有三个级别(操作、服务、业务流程);

                SOAD分为三个层次:基础设计层(底层的构建)、应用服务层(服务之间的接口和服务级的协调)、业务组织层(业务流程的建模和服务流程的编排)

        4、原型法

                4.1、抛弃型原型

                        业务做完之后原型就已经没有用处了

                4.2、演变型原型

                        在原来的模型基础之上逐步修改并一直沿用

二、软件开发模型

        1、瀑布模型

                瀑布模型也称之为生命周期法,是结构方法中最常用的开发模型,其讲究的是从需求获取到开发到测试像瀑布样顺流而下。缺点是不灵活比较死板,其适用于需求明确、或二次开发的场景下使用。

        2、增量与螺旋模型

                增量模型采用随时间的线性序列,每一个线性序列产生一个可交付的产品,慢慢的迭代以达到最终的要求。

                螺旋模型分为四个阶段即:制定计划、风险分析、实施工程以及客户评估。以原型为基础,加上瀑布模型重复沿着以上几个步骤进行开发。

        3、V模型

                V模型是以测试驱动的模型,测试贯穿的整个始终。

        4、喷泉模型

                喷泉模型主要支持面向对象的开发方法,系统某部分常常重复工作多次,相关功能在每次迭代中完善,其主要体现了迭代和无间隙性特征。所谓无间隙指的是在开发活动中,分析、设计、和编码没有明确的界限。

        5、快速应用开发(RAD)

                RAD是一个增量型的软件开发模型,其强调的是极短的开发周期。是瀑布模型的一个高速变种,通过使用大量的可复用的构件,采用基于构件的方法赢得快速开发

        6:构件组装模型

                构件组装模型指的是在整个应用开发的过程中,把各个功能模块抽取出来组成一个个可复用的构件,以便于重复使用。类似于积木一样,把整个构件整合起来,形成一个个的应用系统。

三、统一过程(UP/RUP)

        统一过程又称为UP、或RUP,是基于构件的。统一过程是一个通用的过程框架,可以用于各种各样的软件项目。

        特点:用例驱动、以基本架构为中心、迭代和增量。

        基于UP的软件过程是一个迭代的过程,他有四个阶段,分别是:

                a、初始阶段:为系统建立业务模型并确定项目的边界;

                b、细化阶段:分析问题领域,建立健全的架构基础 。主要是要完成系统的架构。

                c、构件阶段:开发剩余的构件和应用程序功能,形成产品并且进行详细的测试

                d、交互阶段:主要任务是进行β测试(用户环境,用户做的测试)

四、敏捷开发

        适用于中小型项目,理论上是不适用大型项目。但是在实际开发中,往往我们会把大型项目拆分为多个小型项目,然后使用敏捷开发方法。

五、逆项工程

        逆向工程讲的是把整个过程逆转过来,一般的用在已有系统的大版本迭代以及重做场景中

六、净室工程

        净室工程是软件开发一种形式化方法,可以生成高质量的软件,主要强调模型的重要性,其目标和结果是非常高低的出错率,这是使用非形式化方法难以实现或者不能达到的。

你可能感兴趣的:(软件工程方法论)