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

软件生命周期

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

软件开发方法

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

(1)结构化法:

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

(2)原型法

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

(3)面向对象法

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

(4)面向服务法

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

软件开发模型

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

(2)演化模型:
一个演化模型可以看做若干次瀑布模型的迭代,软件在迭代过程中得以演化、完善。根据不同的迭代特点,演化模型可以演变为螺旋模型、增量模型和原型法开发。

(3)增量模型:
在系统的技术架构成熟、风险较低的时候,可以采用增量的方式进行系统开发,这样可以提前进行集成测试和系统测试,缩短初始版本的发布周期,提高用户对系统的可见度。
在这里插入图片描述
(1)原型和瀑布模型是互补关系,原型是为了解决用户需求分析难以把控即需求不明确而提出的,该模型即:先做出初步模型,然后让用户使用,以便于用户进一步明确自己的需求,是一种抛弃式的模型,因为需求一旦明确就会被抛弃

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

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

(4)螺旋模型: 将瀑布模型和演化模型结合而来,强调了风险分析。
螺旋模型的每一周期都包括需求定义、风险分析、工程实现和评审 4 个阶段
在这里插入图片描述
(5)V模型(强调测试)
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

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

  1. 起始阶段:该阶段专注于项目的初创活动
  2. 精化阶段:精化阶段在理解了最初的领域范围之后进行需求分析和架构演进
  3. 构建阶段:该阶段关注系统的构建,产生实现模型
  4. 移交阶段:关注软件提交方面的问题,产生软件增量
    在这里插入图片描述

喷泉模型与RAD(了解)
喷泉模型
1.概述:该模型最大的特点是面向对象
2.特点:基于面向对象的迭代和无间隙
迭代意味着模型中的开发活动常常需要多次重复,每次重复都会增加或明确一些目标系统的性质,但却不是对先前工作结果的本质性改动。无间隙是指在开发活动(如分析、设计、编程)之间不存在明显的边界,而是允许各开发活动交叉、迭代地进行。

快速应用开发模型:RAD模型
1.概述:该模型最大的特点是能够快速构建业务系统(基于构件开发
2.内容:包括:业务建模、数据建模、过程建模、应用生成、测试与交付

敏捷方法

该方法是一类方法,其特点是快捷,该类方法包括:自适应开发、水晶方法、特征驱动开发、SCRUM、极限编程;他们都遵循一些基本原则和价值观,该类方法适用于做小型项目

极限编程(XP)

四大价值观:沟通、简单、反馈、勇气

  • 沟通:鼓励大家进行口头交流、通过交流解决问题,提高效率。
  • 简单:系统尽量地简单化,只要今天够用就行
  • 反馈:通过持续、明确的反馈来暴露软件状态的问题。
  • 勇气:有勇气来面对快速开发,面对可能的重新开发。

十二个最佳实践

特征驱动开发(FDD)

FDD 是一个迭代的开发模型。每一步都强调质量,不断地交付可运行的软件,并以很小的开发提供精确的项目进度报告和状态信息。

FDD 角色定义:
(1)项目经理。
(2)首席架构设计师。
(3)开发经理。
(4)主程序员。
(5)程序员。
(6)领域专家。

核心过程:

  • 开发整体对象模型:系统地完整地面向对象建模
  • 构造特征列表:采用动作、结果和目标来描述特征,特征的粒度最好可以在两周之内实现。
  • 计划特征开发:
  • 特征设计:程序员带领特征小组对特征进行详细设计
  • 特征构建:特征构建和特征设计两个阶段反复地迭代,直到完成全部的开发。

Scrum

Scrum 是一个用于开发和维持复杂产品的框架,是一个增量的、迭代的开发过程。

Scrum 主要包括:产品待办事项列表梳理、Sprint 计划会议、每日 Scrum 会议、Sprint评审会议、Sprint 回顾会议等五个活动。

  1. 产品待办事项列表梳理
  2. Sprint 计划会议:在这个会议中,Scrum 团队共同选择和理解在即将到来的 Sprint 中要完成的工作。
  3. 每日 Scrum 会议:开发团队通过每日 Scrum 会议来确认他们仍然可以实现 Sprint的目标。
  4. Sprint 评审会议:Scrum 团队和相关人员一起评审 Sprint 的产出。
  5. Sprint 回顾会议:回顾一下团队在流程人际关系以及工具方面做得如何。

水晶方法

该方法认为每一个不同的项目都需要一套不同的策略、约定和方法论

并列争球法

使用迭代的方法,其中把每三十天一次的迭代成为一个冲刺,并按需求的优先级来实现产品,多个自组织和自治小组递增实现产品,并通过简短的日常情况会议进行协调

开放式源码

程序开发人员在地域上分布很广,查错排障(debug)的高度并行性,任何人发现了错误都可将改正源码的“补丁”文件发给维护者。
在这里插入图片描述

软件重用

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

软件重用形式:

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

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

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

构件技术

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

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

形式化方法

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

净室软件工程(CSE)

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

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

逆向工程

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

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

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

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

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

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

软件开发环境

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

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

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

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值