【软件工程】软件工程方法论——方法与生存期模型(持续更新中……)

halo~我是bay_Tong桐小白
本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点

【更新日志】

最近更新:

  • 暂无编辑记录,持续更新中……

软件工程方法

软件工程方法论:通常把软件开发生命周期全过程中使用的一整套技术的集合称为方法学/方法论,也称为范型
在这里插入图片描述
方法论三要素:方法、工具、过程
在这里插入图片描述
方法:为建造软件提供技术上的解决方法(即如何做)。方法覆盖面很广,包括沟通、需求分析、设计建模、编程、测试和支持
在这里插入图片描述
目前使用最广泛的软件工程方法是结构化方法和面向对象方法

【结构化方法和面向对象方法作为目前使用最广泛的软件工程方法,后续会持续进行相关内容的更新】

结构化/面向过程方法

概念: 也称为传统方法/生命周期方法/结构化范型。强调以功能组织软件,它将软件生命周期的全过程依次划分为若干个阶段,然后顺序地逐步完成每个阶段的任务

特点:

  • 强调自顶向下以模块化的方法顺序地完成软件开发的各阶段任务
  • 每个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准
  • 在每一个阶段结束之前都必须进行正式评审,评审通过之后这个阶段才结束,评审未通过就需要返工,返工之后还要评审。评审的一条主要标准就是每个阶段都应该交出高质量的工作产品,其中前面阶段的工作产品主要是文档(如需求规格说明书、软件设计说明书等),使软件开发的全过程以一种有条不紊的方式进行,从而有效保证了软件开发的质量,提高了软件的可维护性
    在这里插入图片描述
  • 每个阶段的任务比较明确且相对独立、复杂性不高,便于不同人员分工协作,从而降低整个软件开发过程的难度
  • 缺点使在适应需求变化方面不够灵活,结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。因为软件系统在本质上是信息处理系统,数据和对它的操作是密不可分的,将数据和操作人为地分离成两个独立的部分,不符合自然界事物的组成规律

面向对象方法

概念: 面向对象方法是从面向对象的程序设计发展起来的。面向对象方法把数据和行为看成同等重要,它是将数据和对数据的操作紧密地结合起来的方法,这也是面向对象方法和传统方法的重要区别

(面向过程程序设计与面向对象程序设计的区别详见桐小白专业基础专栏文章《抽象数据类型和面向过程与面向对象》

特点:

  • 面向对象方法的出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识问题和解决问题的方法与过程,从而使描述问题的问题空间与其解空间在结构上尽可能一致
  • 用面向对象方法开发软件的过程使多次反复迭代的演化过程。面向对象方法在概念和表示方法上的一致性保证了各项开发活动之间的平滑过渡,对于大型、复杂及交互性比较强的系统,使用面向对象方法更有优势
    在这里插入图片描述
    在这里插入图片描述

杂项概述:

  • 一方面,面向对象方法向软件开发的前期阶段发展,包括面向对象设计(OOD)、面向对象分析(OOA),目前面向对象方法已经应用到软件开发生命周期的各个阶段,形成一整套完善技术
  • 另一方面,面向对象方法在越来越广泛的计算机软硬件领域得以发展,如面向对象程序设计方法学、面向对象数据库、面向对象操作系统、面向对象软件开发环境、面向对象的智能程序设计、面向对象的计算机体系结构等。面向对象方法已经成为软件开发的主流技术
  • 目前使用最广泛的统一建模语言为UML,由三位著名专家Grady Booch、Ivar Jacobson和James Rumbaugh将各自独立的OOA和OOD方法中最优秀的特性组合在一起,于1996年提出,1997年被OMG(对象管理组织)采纳,成为面向对象技术的标准建模语言

【详细后续更新……】

面向服务方法(持续更新中……)

概念: 为了提升快速构建软件系统以及响应业务变化的能力,充分复用已有资源,以及实现跨平台的数据共享和业务协同,面向服务的软件工程方法应运而生。简单说,服务是指与业务相关且独立于技术的业务接口,通过组合各种服务来构建软件系统

特点:

  • 企业内部或外部的服务提供者都可以提供服务,只要这些服务符合特定的标准要求,企业就可以将这些服务有机组合起来构建软件系统
  • 服务的绑定可以延迟到这些服务被部署或者执行的时候,因此能够非常灵活地更换服务提供者以及服务
  • 由于计算密集型的处理可以迁移到外部的服务上,因此软件系统的规模会大大降低(这一点对于移动设备来说更为重要,因为移动设备的处理能力和存储空间都有限)

面向服务体系结构(SOA):

  • 万维网联盟(W3C)将SOA定义为:一套组件或者服务,能够被调用且接口描述能够被发布和发现
  • 结构化信息标准促进组织对SOA定义为:SOA是为组织和运用存在于不同所有者或领域的分布式功能而提供的一种软件架构的范例

【即SOA强调的是一种体系结构模型,根据企业的业务需求通过网络对松耦合的不同服务进行灵活的分布式部署、整合和使用,这些服务独立于编程语言、实现方式和运行平台】

SOA关键特性:

  • 服务之间的松耦合特性:不同服务的功能不要相互依赖,一个服务应该能够自己实现所提供的结构功能,而不依赖于其它的服务
  • 服务的抽象性:服务接口的定义及描述与系统实现硬件平台、操作系统和编程语言无关,服务的使用者也无须关心服务的具体实现逻辑
  • 服务的粗粒度:在相对较粗的粒度上对应用服务或业务模块进行封装与重用
  • 服务的复用性:真正复用的不是代码段或模块的复用,也不是对象或组件内部行为的复用,而是可被发布、发现和使用的服务级别的复用

面向数据方法(持续更新中……)

概念: 面向数据方法是基于数据思维,从业务逻辑的角度,强调将一切业务”数据化“;从体系结构的角度,突出”面向数据和以数据为核心“的思想

形式化方法

概念: 是一种基于形式化数学变换的软件开发方法,它将系统的规格说明转换为可执行的程序。该过程的具体描述如下(为简化模型未画出过程的迭代)
在这里插入图片描述
特点:

  • 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明
  • 软件的设计、实现和单元测试等开发过程由一个变换开发过程代替,通过一系列变换将形式化规格说明细化成为程序。细化过程如下(其中Mi表示任意变换中的阶段形态)

在这里插入图片描述
变换过程: 系统的形式化数学表示被系统地转换为更详细正确的系统表示,每一步加入一些细节,直到形式化规格说明被转换为等价的程序。

即为了确认形式化规格说明与软件需求的一致性,往往以形式化设计规格说明为基础开发一个软件原型。用户可以从人机界面和系统主要功能、性能等几个方面对原型进行评审。必要时可以对软件需求、形式化设计规格说明和原型进行修改,直到原型被确认为止。也即达成软件开发人员对形式化规格说明进行一系列变换直至生成计算机可执行的程序。

多部变换过程的独立性: 每一步变换对相关的模型描述是“封闭的”。即每一步变换的正确性仅与该步变换所依据的规格说明(Mi)以及变换后的规格说明(Mi+1)有关,在此意义上变换步骤独立于其他变换步骤。变换的独立性可以控制错误的蔓延
在这里插入图片描述

生存期模型(持续更新中……)

瀑布模型(持续更新中……)

原型模型(持续更新中……)

增量模型(持续更新中……)

螺旋模型(持续更新中……)

统一过程(持续更新中……)

敏捷过程(持续更新中……)

持续更新中……
我是桐小白,一个摸爬滚打的计算机小白

猜你喜欢

转载自blog.csdn.net/bay_Tong/article/details/109259718