详谈软件工程之软件开发方法(一)

  • 一、软件开发方法
    • 1、结构化法:
    • 2、面向对象方法:
    • 3、面向服务方法:
    • 4、原型法: 其适用于需求不明确的场景,包括抛弃型原型和演变型原型。
  • 二、软件开发模型
    • 1、瀑布模型:
    • 2、增量与螺旋模型:
    • 3、V模型:
    • 4、喷泉模型:
    • 5、快速应用开发(RAD):
    • 6:构件组装模型:
  • 三、统一过程(UP/RUP)
  • 四、敏捷开发
  • 五、逆项工程
  • 六、净室工程
    • 更多资讯请扫描以下二维码或关注微信公号“愿为最亮星”,为您提供更深层次的解答。

软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。
本章节主要讲的是软件工程中的软件开发方法论。其主要的考点在于软件开发方法和软件开发模型模块(主要是考各个模型的特点是什么,具体在哪些场景中会使用到),其他的逆向工程和净室软件工程考的比较少,最多出现一两分的综合知识题,其需要掌握的内容如下:

注意:在实际项目的使用场景中,我们不会单独的运用到某一种开发方法或者模型,都是综合多种模型以及开发方法,提取他们的优点来加以使用。

一、软件开发方法

其用到的方法依据时间的变化主要分为结构化法、面向对象法、面向服务法以及原型法。也有些人把敏捷开发和统一过程(UP/RUP)也称之为软件开发方法。

1、结构化法:

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

2、面向对象方法:

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

3、面向服务方法:

面向服务方法是面向对象法法的延伸。其服务建模又分为服务发现(分析)、服务规约(约定规范)、和服务实现(具体实现)三个阶段。
SO方法主要有三个级别(操作、服务、业务流程);
SOAD分为三个层次:基础设计层(底层的构建)、应用服务层(服务之间的接口和服务级的协调)、业务组织层(业务流程的建模和服务流程的编排)

4、原型法: 其适用于需求不明确的场景,包括抛弃型原型和演变型原型。

抛弃型原型:业务做完之后原型就已经没有用处了;
演变型模型:在原来的模型基础之上逐步修改并一直沿用;

二、软件开发模型

IT行业中软件开发模型五花八门,在此我只罗列出比较常用的几种开发模型,其主要的经典开发模型如下图:

上图中以瀑布模型以及原型为基础延伸,以迭代思想贯穿全过程,体现了迭代模型。其中原型分为两个阶段。第一个阶段用原型获取需求;第二个阶段再把系统开发起来。在我们实际开发中,一般 是在第二个阶段的时候再次使用瀑布模型来完成开发。

1、瀑布模型:

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

2、增量与螺旋模型:

增量模型采用随时间的线性序列,每一个线性序列产生一个可交付的产品,慢慢的迭代以达到最终的要求。
螺旋模型分为四个阶段即:制定计划、风险分析、实施工程以及客户评估。以原型为基础,加上瀑布模型重复沿着以上几个步骤进行开发。

3、V模型:

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

4、喷泉模型:

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

5、快速应用开发(RAD):

RAD是一个增量型的软件开发模型,其强调的是极短的开发周期。是瀑布模型的一个高速变种,通过使用大量的可复用的构件,采用基于构件的方法赢得快速开发。
RAD的流程可分为:
①、业务建模:以什么信息驱动业务过程运作?要生成什么信息?想达到什么效果?可以使用数据流程图来回答上述问题(相当于需求分析,理解需求);
②、数据建模:为支持业务的数据流找到数据对象集合,定义数据对象属性,并与其他数据对象关系构成数据模型,可以辅以E-R图(相当于创建业务对象,找出对象之间的关系)。
③、过程建模:使数据对象在信息流中完成各业务功能,即细化数据流图中的处理窗(相当于功能模块的实现,比如CRUD等业务)。
④、应用生成:打通各个功能模块的关系,构造出整个应用系统。
⑤、测试与交互。

6:构件组装模型:

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

三、统一过程(UP/RUP)

统一过程又称为UP、或RUP,是基于构件的。统一过程是一个通用的过程框架,可以用于各种各样的软件项目。
特点:用例驱动、以基本架构为中心、迭代和增量。
基于UP的软件过程是一个迭代的过程,他有四个阶段,分别是:
a、初始阶段:为系统建立业务模型并确定项目的边界;
b、细化阶段:分析问题领域,建立健全的架构基础 。主要是要完成系统的架构。
c、构件阶段:开发剩余的构件和应用程序功能,形成产品并且进行详细的测试
d、交互阶段:主要任务是进行β测试(用户环境,用户做的测试)

四、敏捷开发

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

敏捷开发方法发展的过程中,出现了很多不同的流派,例如:
1、极限编程(XP):是所有敏捷型方法中最引人瞩目的方法,提出了四大价值观、五大原则、12大最佳实践。在对一些费用控制很严格的公司最为适用。
b、自适应软件开发:
c、水晶方法:讲究的是用最少的纪律约束而仍能成功的方法
d、特性驱动开发(FDD):强调特征驱动,快速迭代,即能保证快速开发,又能保证适当文档和质量



Scrum 开发模型基本思想是两到四周完成一轮冲刺(Sprint),首先大致研究整个项目大致需要做哪些功能和业务(Pruduct Backlog),然后从中抽取一块功能业务作为最近一轮冲刺需要完成的目标(Sprint Backlog),通过两到四周的工作来完成(Sprint 4 weeks),每天通过扁平化的会议来了解工作的进展;然后再进行下一轮的任务来做冲刺或者是完成整个项目的功能。在这过程中迭代和增量贯穿了整个过程。

五、逆项工程

逆向工程讲的是把整个过程逆转过来,一般的用在已有系统的大版本迭代以及重做场景中。其有四个抽象级别,逻辑图如下:

六、净室工程

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

更多资讯请扫描以下二维码或关注微信公号“愿为最亮星”,为您提供更深层次的解答。

详谈软件工程之软件开发方法(一)相关推荐

  1. atitit.软件开发方法总结O6

    atitit.软件开发方法总结O6 #--cmm/cmmi  都晓得这个. #--IPD集成产品开发 结构化的流程 IPD工具:包括业务及技术上的共工具. 5.考评:包括团队和个人绩效考核两个方面:首 ...

  2. 编程学习笔记(第一篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(1)...

    软件工程的课程,对于从事大中型的软件开发是至关重要的一门课程. <面向对象技术高级课程>深入.系统.完整地讲解当今主流的面向对象软件开发方法的分析.设计.实现及重构方法,深入讲解UML语言 ...

  3. 编程学习笔记(第三篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(3)软件开发的现状、UML扩展...

    一.软件开发的现状 软件领域正在发生一个巨变,特别是近几年来,软件领域正在发生翻天覆地的变化. 这一变化主要以这个云 + 端大数据, 这些是随着目前最先进的一些技术的产生而产生的. 随着这些新的技术以 ...

  4. 几种软件开发方法对比

    综述 软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程. 本文对净室方法.结构化方法.面向对象方法.原型法.逆向工程等方法进行梳理,并对各种开发方法特点.优点进行对比. 净室 ...

  5. 插件体系结构软件开发方法研究

    插件体系结构软件开发方法研究 计算机软件与理论专业 研究生 一觉亮天 随着计算机技术的发展,软件体系结构和开发方法也在发生着重大变化.为了高效率地进行软件开发,并且开发出高质量的产品,人们一直在寻求更 ...

  6. 一文详解为什么Serverless比其他软件开发方法更具优势

    本文定义并解释了Serverless与其他应用程序架构的不同之处,然后"证明"了Serverless应用程序架构在实施得当的情况下会优于非Serverless架构.最后总结了很多经 ...

  7. 快速通读《现代软件工程——构建之法》

    在快速通读<现代软件工程--构建之法>后,我有如下问题: Q1:第一章通过形象的例子告诉我们什么是软件工程,介绍了软件工程的各个阶段,对软件工程的概念及它的特性做了较为生动而详细的介绍,那 ...

  8. 软件工程-构建之法 团队

    软件工程-构建之法 团队 团队名称:yousa_team 团队宣言:认真做事 团队博客:http://www.cnblogs.com/yousa-team/ 团队队长:王天宁 队长博客链接:http: ...

  9. 小强怎样练成——读《现代软件工程——构建之法》第三章有感

    小强怎样练成 ----读<现代软件工程--构建之法>第三章有感 一.知道自己吃几碗干饭 先秦时期的"革命家"告诉我们"知人者智,自知者明",&quo ...

  10. 现代软件工程—构建之法》第一章 中出现的计算机专业术语

    现代软件工程-构建之法>第一章 中出现的计算机专业术语 软件 程序 软件工程 二叉树 遍历算法 数据结构 算法 应用软件 软件服务 源程序 软件架构 软件设计与实现 依赖关系 编译参数 链接参数 ...

最新文章

  1. svn服务器搭建和使用 ubuntu_Ubuntu下 SVN 服务器搭建及使用
  2. MobileNet Unet
  3. Bochs调试及相关仿真工具的使用方法
  4. 用神经网络分类左和右
  5. 三维数组地址计算_科学计算NumPy
  6. ARM 之十四 ARMv9 架构前瞻
  7. 高级数据结构与算法 | LRU缓存机制(Least Recently Used)
  8. 一个页面从输入URL到加载显示完成,发生了什么?
  9. 关于 C语言的 按位取反 ~
  10. sklearn学习 5.降维算法PCA和SVD
  11. 彼得定律与员工职业生涯规划(该提拔谁,职业规划,知人善用)
  12. Numpy——数组分割
  13. 对象创建的过程 java_Java 对象创建过程
  14. Salesforce新增Einstein AI支撑的自动化功能
  15. 冒泡排序 C语言(从大到小排序)
  16. 直接选择排序算法时间 / 空间复杂度
  17. 免费自制app软件:在线生成APP只需一个URL
  18. Box Cox Transformation
  19. Golang Gin接入支付宝H5网页支付
  20. Excel-REPT重复处理字符

热门文章

  1. 扒一个超棒的stm32的开源usb-can项目,canable及PCAN固件
  2. 计算适应度函数(目标函数)(单目标)
  3. 如何安装windows NT虚拟机
  4. Biztalk AS2开发经验总结
  5. 2021年最新程序员培训机构排名,学习前避坑必看
  6. 云计算就业前景究竟好不好 零基础如何学云计算
  7. 【贵州大学计算机考研1】三本学生考研上岸贵州大学软件工程专硕(附带真题与答案)
  8. 利用PPT表格对图片进行矩形分割
  9. 姑娘美丽人体日志博客_60个美丽诱人的博客设计
  10. 造成服务器不稳定的原因有哪些