软件开发过程 引言 统一过程 敏捷方法介绍
软件开发过程 引言 统一过程 敏捷方法介绍
内容提要 ▣软件开发存在的问题 ▣软件开发过程:Unified Process ▣迭代开发(Iterative development) ▣敏捷方法(Agile Practices)
内容提要 软件开发存在的问题 软件开发过程: Unified Process 迭代开发(Iterative development) 敏捷方法(Agile Practices)
Software Development Tasks Place Order Problem Inventory Shipping Space Descriptions of problem Business Process (Human:Requirements) Natural Language A Gap between two Spaces Descriptions of solution Programming Language (Human:Designing Program Execution of program 建造 Solution Computer System Space
Software Development Tasks Problem Space Business Process Place Order Inventory Shipping Computer System Descriptions of problem (Human: Requirements) Natural Language Descriptions of solution (Human: Designing Program ) Programming Language Solution Space Execution of program A Gap between two Spaces
Problems 当前软件开发存在的问题: 症状 原因 对用户要求的理解不正确 需求管理不充分 难于适应变化的需求 交流含糊、不严密 模块组合性差 架构脆弱 软件难于维护和扩展 复杂性没有控制和管理 软件致命缺陷发现晚 在需求、设计和实现间存在不一致 软件质量差 测试差 软件性能差 评估主观 开发团队成员间难于配合 瀑布式开发模式 构造和发布过程不可信 没有有效地控制变更 自动化程度不高
Problems
以往软件开发经验: ▣用户需求总是在变化→修改代码 口改动一个函数乃至函数使用的数据→引起对 其他函数的严重破坏 ▣维护和调试阶段的大天部分时间不是化在修改 错误上,而是化在寻找错误和考虑如何避免 在修改中再次引发错误BUG上 →如何适应用户变化的需求?
以往软件开发经验: 用户需求总是在变化 Æ 修改代码 改动一个函数乃至函数使用的数据 Æ引起对 其他函数的严重破坏 维护和调试阶段的大部分时间不是化在修改 错误上 ,而是化在寻找错误和考虑如何避免 在修改中再次引发错误BUG 上 Æ 如何适应用户变化的需求 ?
软件开发需要建模 ▣如何理解模型? 模型是现实的简化,同一系统,需要多个模 型来描述。每个模型只描述系统的一个方面。 ▣建模的目的 更好的理解我们正在开发的系统,人对复杂 系统的理解力是有限的。通过建模,缩小研 究问题的范围,一次只研究它的一个方面。 这就是“各个击破"的策略
软件开发需要建模 如何理解模型 ? 9 模型是现实的简化 ,同一系统,需要多个模 型来描述。每个模型只描述系统的一个方面。 建模的目的 9 更好的理解我们正在开发的系统 ,人对复杂 系统的理解力是有限的。通过建模,缩小研 究问题的范围,一次只研究它的一个方面。 这就是 “各个击破 ”的策略
软件开发:建模的原则 ▣准确的原则:模型必须准确地反映软件系统的真实情况。 模型必须准确,意味着在软件开发的整个周期内模型必 须和产品始终保持一致。 ▣分层的原则:在建模的过程中,必须有不同的模型,以不同的 抽象程度,反映系统的不同侧面。 ■ 在软件构筑的不同阶段,不同的开发相关人员 (stakeholders),如:投资者、管理者、设计者、程序 员、测试者,使用者,看待软件的侧重面有所不同。 因此,软件系统的建模需要不同的模型以反映系统的不 同侧面。如: 类模型描绘系统的外部边界和行为 >另一类模型描绘系统的内部逻辑关系
软件开发: 建模的原则 准确的原则:模型必须准确地反映软件系统的真实情况。 模型必须准确,意味着在软件开发的整个周期内模型必 须和产品始终保持一致。 分层的原则:在建模的过程中,必须有不同的模型,以不同的 抽象程度,反映系统的不同侧面。 在软件构筑的不同阶段,不同的开发相关人员 (stakeholders),如:投资者、管理者、设计者、程序 员、测试者,使用者,看待软件的侧重面有所不同。 因此,软件系统的建模需要不同的模型以反映系统的不 同侧面。 如: ¾ 一类模型描绘系统的外部边界和行为 ¾ 另一类模型描绘系统的内部逻辑关系
软件开发建模的原则(续) 分治的原则:不可能单独用一个模型来反映整个系统的任何侧面。 ■ 软件系统是复杂的 ■ 对于软件模型的任意一个侧面,不可能用一个模型来反映所有 内容,需要把问题分解为不同的子模型,分别处理。 这些模型相对独立,但又互相联系,综合起来构成了此侧面的 个完整的模型。 标准的原则:模型必须在某种程度上是通用的。 建模的基本目的是交流 > 一个开发队伍内部的交流 >同一软件的不同时期的版本的开发队伍的交流 不同软件的开发队伍的交流 以实现最大程度的软件复用 交流需要语言 语言是通用的、是标准
软件开发建模的原则 ( 续 ) 分治的原则:不可能单独用一个模型来反映整个系统的任何侧面。 软件系统是复杂的 对于软件模型的任意一个侧面,不可能用一个模型来反映所有 内容, 需要把问题分解为不同的子模型,分别处理。 这些模型相对独立,但又互相联系,综合起来构成了此侧面的 一个完整的模型。 标准的原则:模型必须在某种程度上是通用的。 建模的基本目的是交流 ¾ 一个开发队伍内部的交流 ¾ 同一软件的不同时期的版本的开发队伍的交流 ¾ 不同软件的开发队伍的交流 以实现最大程度的软件复用 ¾ 交流需要语言 ¾ 语言是通用的、是标准
软件开发:建模方法 面向过程的建模:把过程看作系统模型的基本部分, 数据是随着过程而产生的。 面向数据的建模:把模型的输入输出看成是最为重要 的,因此,首先定义的是数据结构,而过程模块是从 数据结构中导出的,即功能跟随数据。 面向信息的建模:从整个系统的逻辑数据模型开始 的,通过一个全局信息需求视图来说明系统中所有基 本数据实体及其相互关系逐步构造整个模型,其目的 是设计和实现满足系统信息需求的数据库结构,即数 据建模支持系统设计。 面向决策的建模:决策支持系统模型需要反映的问题 是系统的决策制订原则和机理、系统的组织机构和人 员配置。 面向对象的建模
软件开发: 建模方法 面向过程的建模:把过程看作系统模型的基本部分, 数据是随着过程而产生的。 面向数据的建模:把模型的输入输出看成是最为重要 的,因此,首先定义的是数据结构,而过程模块是从 数据结构中导出的,即功能跟随数据。 面向信息的建模:从整个系统的逻辑数据模型开始 的,通过一个全局信息需求视图来说明系统中所有基 本数据实体及其相互关系,逐步构造整个模型,其目的 是设计和实现满足系统信息需求的数据库结构,即数 据建模支持系统设计。 面向决策的建模:决策支持系统模型需要反映的问题 是系统的决策制订原则和机理、系统的组织机构和人 员配置。 面向对象的建模
什么是软件开发过程? (software development process) Describe an approach to building,deploying and possibly maintaining software Define who is doing what,when to do it, and how to reach a certain goal. 目 The Unified Process (UP)has emerged as a de facto industry standard. ▣什么是统一过程UP? ▣什么是Rational Unified Process? ▣什么是敏捷的UP?
什么是软件开发过程? (software development process) Describe an approach to building, deploying and possibly maintaining software Define who is doing what, when to do it, and how to reach a certain goal. The Unified Process (UP) has emerged as a de facto industry standard. 什么是统一过程UP ? 什么是Rational Unified Process? 什么是敏捷的UP?