View on GitHub

软件系统分析与设计指南

The documents about Software Analysis & Design Team Work

软件项目过程模型与规划

1、解决问题之道

1.1 基本准则

复杂问题简单化,简单问题流程化,流程问题标准化,标准问题自动化

这是企业规范化管理的基本思想。关键在项目中落地的方法

1.2 理解软件本质,了解软件生产特殊性

软件生产本质是众智劳动,且产品范围弹性大,展现了智力产品(传统上是艺术品或计谋)与事物产品生产的本质不同

问题 解决方案 备注
复杂性 语言设计:抽象、包装、接口、…;工程方法:函数、模块(包)、对象、组件、服务; 工作量与项目规模呈指数关系,且任务完成依赖开发者的上下文知识,即人月不可互换
一致性 设计建模:软件架构设计; 迭代过程: 逐步增大规模,使得架构稳定; 工具:编译器、包管理工具、CI/CD工具自动保证 用户需要、软件需求、设计、编码…引入的缺陷,常需要在使用场景才发现,导致计划延期;修改bug,一发而动全身
易变性 适应性设计:架构设计,设计模式; 迭代过程: 逐步消除需求风险;生产管理:使用配置管理,跟踪管理变更 产品需求随使用环境变化,如使用者类型、使用者人数会导致需求变化
不可见性 迭代过程: 原型产品逐步迭代+用户参与 分析与设计建模:数据流建模,用例建模,UML, 用户难以描述需求,设计缺乏统一的表示
唯一性 用户为中心,做好项目管理 以用户思维思考产品(说易行难)

例如:同是“图书馆管理系统”,学生作业与实用系统差别巨大。学生作业能解决技术与编程问题,不能解决软件产品生产问题。

2、软件项目规划方法与开发模型选择

2.1 四象限分析法与用应用

四象限分析法是管理学用于分类事物、分析问题的种方法。它将事物的两个特征变量构成二维矩阵,然后将事物投影到举证上,研究事物分类及其特征的方法,从而找出事物的类型、特诊、主要问题及其解决方案。它简单实用,易于人类理解,得到广泛的应用。学计算机的可认为它是多维数据分类方法的特例。

根据软件本质特征,软件项目可用两个属性表示:

用于研究的软件 项目开发过程模型

注1:过程模型很多,CMM、ITIL、ISO9000、COBIT 等等都是过程模型。 这些模型用于企业生产、管理与治理。
注2:切记!!! 软件项目范围是开发者部分可控的

请给出分析图与分析结果!

2.2 基于统一过程的软件项目规划

敏捷、迭代软件过程的要点

上世纪,软件产品规模小,面对是业务规范的企业客户,我们对软件产品的假设是用一个较短的时间,如三个月,可以调查清晰用户对软件产品的需求或要求。
本世纪,多数软件需要适应个性化的自然人或众多的中小企业,产品的需求不是短时间调查清晰,即需求是开发或使用过程中逐步认清的。因此,上线后不断升级和完善是软件产品基本特征。

用 RUP 的观点:

迭代基本特征:

RUP迭代周期:

利用软件产品范围的弹性,合理规划范围(20%业务决定80%满意度),使得软件生产按 固定节奏 运行,固定迭代周期、固定开发周期、固定升级周期。

敏捷软件开发宣言

我们一直在实践中探寻更好的软件开发方法, 身体力行的同时也帮助他人。由此我们建立了如下价值观:

3、Scrum与敏捷开发支撑工具

推崇以自我管理为核心的协同管理。Scrum

必须下载阅读的教材:Scrum and XP from the Trenches 英文电子版 ,中文翻译

4、作业

1、简单题

2、实践题(不需要提交)

参考资料

  1. SCRUM 是一个用于开发和维护复杂产品的框架
  2. Henrik Kniberg,硝烟中的Scrum和XP
  3. Scoot Ambler, 规范敏捷交付-企业级敏捷软件交付的方法与实践