系统架构师(六)开发方法

软件生命周期

软件生命周期划分为 8 个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现、集成测试、确认测试、使用和维护。

软件开发方法

软件工程中系统化的方法有时候也叫软件过程,是制作软件产品的一组活动以及结果,主要由软件人员完成,包含四项基本活动:软件描述、软件开发、软件有效性验证和软件进化

(1)结构化法:

  • 用户至上
  • 严格区分工作阶段,每阶段都有任务和结果
  • 强调系统开发过程的整体性和全局性
  • 系统开发过程工程化,文档资料标准化
  • 自顶向下、逐步分解

(2)原型法

  • 适用于需求不明确的开发
  • 包括抛弃型原型和进化型原型

(3)面向对象法

  • 更好的复用性
  • 关键在于建立一个全面、合理、统一的模型
  • 分析、设计、实现三个阶段、界限不明确

(4)面向服务法

  • SO方法有三个主要的抽象级别:操作、服务、业务流程
  • SOAD分三个层次:基础设计层(底部服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
  • 服务建模:分为服务发现、服务规约和服务实现三个阶段

软件开发模型

(1)瀑布模型: 面向文档的软件开发模型。
软件要经过需求分析、总体设计、详细设计、编码、调试、集成测试和系统测试阶段才能够被准确地实现。

(2)演化模型即是一种渐进式的原型,即它采取原型的设计模式,但不会将其抛弃,而是在此基础上进一步进行设计

(3)增量模型:是一种递增式设计,将产品一步一步进行设计,每完成一步就交由客户审视,这样也可以使得下一步的设计更为明确

(4)螺旋模型: 将瀑布模型和演化模型结合而来,强调了风险分析。
螺旋模型的每一周期都包括需求定义、风险分析、工程实现和评审 4 个阶段

(6)构件组装模型(CBSD):

统一过程(UP、RUP): 初始 、 细化 、 构建和交付

基本特征是用例和风险驱动,以架构为中心,受控的迭代式的增量开发。这样做的好处是在软件开发的早期就可以对关键的、影响较大的风险进行处理。
统一过程模型定义了四个技术阶段及其制品,包括:

  1. 起始阶段:该阶段专注于项目的初创活动
  2. 精化阶段:精化阶段在理解了最初的领域范围之后进行需求分析和架构演进
  3. 构建阶段:该阶段关注系统的构建,产生实现模型
  4. 软件重用

    软件重用指的是利用已经存在的软件元素建立新的软件系统,这其中的软件元素既可以是软件产品、源程序,也可以是文档、设计思想甚至是领域知识。
    软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。

    软件重用形式:

    • 源代码重用
    • 架构重用
    • 应用框架的重用
    • 业务建模的重用
    • 文档及过程的重用
    • 软构件的重用
    • 软件服务的重用

    按照重用活动是否跨越相似性较少的多个应用领域,软件重用可以区别为横向重用和纵向重用

    • 横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法和人机界面构建等。
    • 纵向重用是指在一类具有较多公共性的应用领域之间进行软部件重用。纵向重用活动的主要关键点是域分析:根据应用领域的特征及相似性预测软部件的可重用性。

    构件技术

    构件又称为组件,是一个自包容、可复用的程序集。

    自包容指的是构件的本身是一个功能完整的独立体,构件内部与外部的功能界限清晰明确,可以独立配置与使用。而可重用既是构件的特点,也是构件出现的目的。

    形式化方法

    形式化方法是指采用严格的 数学方法,使用形式化规约语言来精确定义软件系统。从而允许对系统和开发过程做严格处理和论证,适用于那些系统安全级别要求极高的软件的开发。
    用形式化语言书写的大型应用问题的软件规格说明往往过于细节化,并且难于为用户和软件设计人员所理解。

    净室软件工程(CSE)

    净室软件工程是软件开发的一种形式化方法,可以开发较高质量的软件。它使用盒结构规约进行分析和建模,并且将正确性验证作为发现和排除错误的主要机制,使用统计测试来获取认证软件可靠性所需要的信息。CSE强调在规约和设计上的严格性,还强调统计质量控制技术,包括基于客户对软件的预期使用测试。

    非形式化的开发方法是通过自然语言、图形或表格描述软件系统的行为和特性,然后基于这些描述进行设计和开发,而形式化开发则是基于数学的方式描述、开发和验证系统。

    逆向工程

    是指软件开发过程的逆向过程,即从可运行的程序系统出发,对目标文件进行反汇编,得到其汇编代码,然后对汇编代码进行理解和分析,从而得出对应的源程序、系统结构以及相关设计原理和算法思想等。

    所谓软件的逆向工程,就是分析已有的程序,寻求比源代码更高级的抽象表现形式。一般认为,凡在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动都可成为逆向工程

    逆向工程导出的信息可分为4个抽象层次:

    • 实现级:包括程序的抽象语法树、符 表、过程的设计表示
    • 结构级:包括反映程序分量之间相互依赖关系的信息,例如:调用图、结构图、程序和数据结构
    • 功能级:包括反映程序段功能及程序段之间的关系信息,例如数据和控制流模型
    • 领域级:包括反映程序分量或程序实体与应用领域概念之间对应关系的信息,例如实体关系模型

    应用系统构建中可以采用多种不同的技术

    • 逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式,在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动;
    • 重构是指在同一抽象级别上转换系统描述形式;
    • 设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计的信息;
    • 再工程是在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本

    软件开发环境

    软件开发环境具有集成性、开放性、可裁减性、数据格式一致性、风格统一的用户界面等特性,因而能大幅度提高软件生产率。
    软件开发环境是支持软件产品开发的软件系统。它由软件工具集成和环境集成机制构成;

    • 软件工具集成:用来支持软件开发的相关过程、活动和任务年;

    • 环境集成:为工具集成和软件开发、维护和管理提供统一的支持,

      • 数据集成机制:提供了存储或访问环境信息库的统一的数据接口规范;
      • 界面集成机制:采用统一的界面形式,提供统一的操作方式;
      • 控制集成机制:支持各开发活动之间的通信、切换、调度和协同工作。

    集成机制根据功能的不同,可划分为环境信息库、过程控制与消息服务器、环境用户界面三个部分。

    1. 环境信息库。是软件开发环境的核心,用以存储与系统开发有关的信息,并支持信息的交流与共享。环境信息库中主要存储两类信息:
      • 一类是开发过程中产生的有关被开发系统的信息,例如,分析文档、设计文档和测试 告等;
      • 另一类是环境提供的支持信息,例如,文档模板、系统配置、过程模型和可复用构件等。
    2. 过程控制与消息服务器。是实现过程集成和控制集成的基础。过程集成是按照具体软件开发过程的要求进行工具的选择与组合,控制集成使各工具之间进行并行通信和协同工作。
    3. 环境用户界面。包括环境总界面和由它实行统一控制的各环境部件及工具的界面。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月6日
下一篇 2022年8月6日

相关推荐