Java 建模: 子整体软件开发,第二部分
Java 建模: 子整体软件开发,第二部分 | 英文原文 | |||
需求收集:工作的恰当过程 Granville Miller(rmiller@togethersoft.com)
在上一个专栏中,我开始讨论子整体软件开发,它是一种注重对过程进行革新的开发方法。 这是我的信仰,正如我在上个月的宣言中所述,子整体软件开发有潜力让开发者取得非凡的成就。但是,这并不意味着我鼓吹完全排除过程。我看待过程的哲学可以总结如下:
这个月,我将讨论子整体软件开发和过程的应用。尤其是,我们将谈到需求收集 — 任何软件开发周期的基础,还将谈到子整体方法 — 一种在开发周期中动态实现大量过程和方法的手段 — 如何能够增强您的需求收集过程。 软件不可见性问题 Frederick Brooks 把那些难以概念化和描述的新软件应用程序的属性称为软件不可见性。虽然其它如硬件之类的领域存在物质表现形式,但软件领域没有。我们可以看得见或者评测出软件应用程序的效果,不过其系统表现形式本质上却是思维的。这就是我们创建并依赖于软件模型的许多原因之一。模型赋予软件物理维度使我们得以更好的了解和表达它的方向。 任何软件建模工作的中心是需求收集。实现需求收集过程的选择依赖于开发项目更大的环境。 这个环境可以在需求收集过程自身中找到,也可以在另一个受到好评的模型中找到。在某些情况下,这个环境甚至可以在可交付使用的过程中找到。通过对我们探讨的不同需求可能性的地方进行考察,我们总能够辨别出系统的需求环境驻留在什么地方。需求环境是我们与软件不可见性对抗的领域。 恰当工作过程的选择 这里将探讨的需求收集过程抽象自三个一流的软件开发方法:“Rational 统一过程”( Rational Unified Process(RUP)),“功能驱动开发”(Feature-Driven Development(FDD))和“极端编程”( Extreme Programming(XP))。每种方法都提供大量极好的工具以协助需求收集工作。为符合子整体开发方法,我们将更多的着眼于必要的部分 — 与每种方法相关的需求收集过程 — 而不是整个方法自身。 除此之外,我们还会看看是否能够组织起一个更动态更可变的需求收集过程。继续讨论前,请用一些时间阅读这篇补充文章“子整体软件开发的十项准则”,看看子整体方法在理论上如何包含我们已知的东西。 四种最常见的需求收集过程是传统的软件收集规范(software requirements specification,SRS)、用例(use cases)、功能特性(features)和用户情景(user stories)。在随后的几个小节,我们将考虑每个过程,请特别注意需求环境 — 就是说,每个过程提供的用于将价值最大化的恰当情况和每个过程给开发项目带来的独特动力。有关以下概括的每个过程的应用的详细信息,请参阅参考资料。 软件需求规范 SRS 背后的思想是创建一个解决方案空间 — 也就是这样一个空间,其中开发小组已经设定了目标,但是,实现这些目标的行动的秩序和本质可以非常自由。因此,SRS 通常不试图指定单个解决方案,而是指定一系列可行的解决方案。然后,开发小组有足够的灵活性对解决正被创建系统问题的有效方法进行革新。 灵活性对于 SRS 来说,是缺点,也是优点。如果一个软件开发小组精通他们为之创建系统的这个领域,这个小组就可以轻松使用 SRS 最大限度的对这个领域进行革新。但是,在开发小组在他们不熟悉的领域进行日常工作的时代,传统的 SRS 作为需求收集过程可能有所欠缺。典型用户试图处理给定领域中的正常情况时,他们采取的步骤很可能是小组成员不了解的。因此,小组成员确定并创建的系统对于用户社区来说,可能不是最优的。 传统的 SRS 最适用于已被充分了解的领域和非常了解自己所处工作领域的开发小组 — 或者领域之外的专业知识能够很轻松就理解的开发环境。SRS 允许几乎不需任何技术就可以调整解决方案空间以管理系统中的更改。 用例 用例反应我们试图使用软件系统以达到目的时可能出现的所有事件。因为大部分软件系统支持多个目的,大部分用例模型由多个用例组成。例如,“支付逾期费”(Pay Late Fee)用例描述了录像带出租系统的用户遇到要支付逾期费这种情况时会发生的事。 用例中信息正确的水平是成功建立应用程序的必要条件。它根据环境不同而不同。如果领域的专家参与开发过程,用例就可以只勾画系统的路线。如果领域专家不参与项目,用例就有必要提供更多信息。用例是交流需求的最佳过程。但是,就像传统的 SRS,用例更适合已被很好了解的领域。用例可以经受一定程度的更改,但其它过程更能适应更改。
功能特性
一个示例功能特性可以是:
在每个功能特性保持在最小状态时,基于功能特性的方法效果最好。一个小组能在两星期或更少时间内实现的功能特性就是理想的功能特性。 用名为功能集(feature set)的组将功能特性组织起来。功能集包含描述给定目的或领域的功能特性。功能集和它的功能特性仅对需求进行了概述。作为描述需求的机制,功能特性必需和额外的环境相结合。 在“功能驱动开发”方法中,环境被精心设计成介于功能集和一个被称为“领域中立组件”(domain neutral component)的色彩标记类图表之间。 领域中立组件是个描述跨领域公共关系的语义模板。领域中立组件由瞬间间隔(moment-interval)、角色(role)、主题(subject)(当事人(party)、地点或事务)以及描述(description)组成。瞬间间隔是那些领域的短时间要素,如处于订货执行系统的一个订单。角色是个用户,系统和他交互并必须能识别出他。主题是形成领域的要素。描述是一种抽象,它集合了这些对象的元信息。图 1 是个录像带出租的领域中立组件。 图 1. 录像带出租方案的领域中立组件 作为一种需求收集过程,“功能驱动开发”非常灵活,它有助于在开发周期中更改管理。这一过程让您在项目进行过程中轻松检查并记录新的、更改的和已除去功能特性的数目。因为一般来说功能特性小, 更改现存功能特性或添加新功能特性不大可能要求在项目级上大量的返工。功能特性还有助于挑战软件不可见性,因为作为跟踪领域中立组件中的系统实体间交互结果的新功能特性可能被揭示。 功能特性可以用于熟悉给定领域的个体间的需求交流。以这种方式使用,基于功能特性的方法很可能是最节约的需求收集过程。但是,这些功能特性可能太依赖领域专业知识了,这是许多开发小组都没有的奢侈品。 用户情景 图 2. 销售用户情景的要点 用户情景包含的信息往往比功能特性包含的信息多,尽管这不是必要条件。“极端编程”方法中,用户情景要求一个现场的客户提供部分环境。现场客户向开发小组描述理想的系统。然后,这个小组一点一点建立系统,给客户充分的机会定期查看结果。客户“监督着”这个可交付使用过程,并且在新用户情景中提出对系统的修改建议。整个环境由现场客户的反馈和递增的过程及交付相结合。 用户情景对于处理软件不可见性风险最高的项目来说,是最佳的方法。像功能特性一样,它们都足够小,能被轻松更改。 因为它们的环境基于运作的系统和客户,一经实现或不再有效都会被丢弃。但是,并不是每个项目都可以引入现场客户,因此用户情景并不适用于每个项目。这种方法因其缺少客户交互而丧失了它的优势。 结论 补充文章“子整体软件开发的十项最佳准则”讨论了模块性。模块性允许两种目的相同的活动可以互相代替。当用一种需求收集活动代替另一种时,重要的是把需求环境考虑在内。开发周期中途更改活动很可能会引入一组新的动力到项目。如果没有考虑到环境,这种行动可能会成为灾难。但是,仔细的计划和执行后,引入新活动就能帮助创建新的动力,从而促进了项目的成功。 下个月,我们来谈 Web 服务基础架构的建模。随着我们调查这个软件开发中新兴的领域,我将提供更多具体的技术示例和上两个专栏一直在讨论的最佳准则,所以,请别离开! 参考资料
|
Java 建模: 子整体软件开发,第二部分相关推荐
- Java 建模:子整体软件开发
Java 建模:子整体软件开发 英文原文 内容: 灵活软件开发 过程是第一位吗? 子整体(holon) 子整体软件 开发 培训模型 没有安全网的软件开发 过程?什么过程? 结论 参考资料 关于作者 对 ...
- java学习方法-浅谈软件开发的神速进步
中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有葵花宝典才是最厉害的,也只有掌握了葵花宝典,才能称为"不败". 1浅谈软件开发的神速进步 1.1什么才是软件开发的葵花 ...
- 《统计建模与R软件》第二章课后作业解题答案
自学R语言,学习完了之后做一做习题,是对知识的一些巩固,也希望可以帮到正在学习的童鞋们. x<-c(1,2,3);y<-c(4,5,6);e<-c(1,1,1) z=2*x+y+e; ...
- 【统计建模与R软件】第二章 R软件的使用 课本课后习题 答案 解析 代码
题目 解析 # 2.1 x = matrix(c(1,2,3),byrow=F) y = matrix(c(4,5,6),byrow=F)# (1) # A * B 对应元素相乘 # A %*% B ...
- er图用什么软件_从软件开发生命周期看商业智能 BI 数据仓库建模
关于商业智能 BI 的介绍面对不同的企业客户可以从很多不同的角度展开,比如从业务角度.管理角度.数据架构角度.IT 信息化建设角度.BI 实施方法论角度等,不同的视角可以帮助企业更加全面的了解商业智能 ...
- 通过造车来了解软件开发模式
看到 好的 东西, 老是忍不住收藏一下,谢谢作者:伯乐在线 - 艾凌风 的文章, 若有不妥,请留言. 1913 年,美利坚工业之神--亨利福特,发明了世界上第一条流水线,汽车工业从此进入了大规模生产的 ...
- springboot基于JAVA的电影推荐系统的开发与实现毕业设计源码112306
目 录 摘要 Abstract 第1章前言 1.1研究背景 1.2研究现状 1.3系统开发目标 第2章技术与原理 2.1 JSP介绍 2.2 JAVA技术 2.3 MySQL数据库 2.4 ...
- (附源码)springboot基于JAVA的电影推荐系统的开发与实现 毕业设计112306
目 录 摘 要 4 Abstract 5 第1章 前 言 6 1.1 研究背景 6 1.2 研究现状 6 1.3 系统开发目标 6 第2章 技术与原理 8 2.1 JSP介绍 8 2.2 JAVA技术 ...
- springboot基于JAVA的电影推荐系统的开发与实现 附源码-毕业设计112306
目 录 摘要 4 Abstract 5 第1章前言 6 1.1研究背景 6 1.2研究现状 6 1.3系统开发目标 6 第2章技术与原理 8 2.1 JSP介绍 8 2.2 JAVA技术 8 ...
最新文章
- 0012-求滑动距离
- python3.7.2下载-Python编程神器 v3.7.2 最新免费版
- WebService大讲堂之Axis2(1):用POJO实现0配置的WebService
- HTML Canvas
- english learning websites
- 算法 --- 插入排序的JS实现
- 第4章 Python 数字图像处理(DIP) - 频率域滤波7 - 二维DFT和IDFT的一些性质 - 傅里叶频谱和相角
- 信息学奥赛一本通 2073:【例2.16 】三角形面积
- Python Windows安装
- 【诗和远方】一个蒟蒻的年初展望
- adbe Air/flash swf中不能正常显示系统字体问题的解决方案
- MyBatis历史、MyBatis特性、MyBatis下载、MyBatis和其他持久层技术的比较
- Oracle 字段 中文英文拆分
- 八爪鱼采集器使用方法
- 十一大排序算法的实现
- DP4809国产双通道耳机音频功率放大器芯片兼容替代LM4809
- ios-emoji的显示
- 初学C语言,还在犹豫如何选择入门教材吗?这几本书籍建议收藏
- 如何评测软件系统的安全性
- 最新Kafka教程(包含kafka部署与基本操作、java连接kafka、spring连接kafka以及使用springboot)
热门文章
- 利用ssh-copy-id复制公钥到多台服务器
- 动画原理——用户交互:移动物体
- phoneGap工程的创建
- 多个集合合并成没有交集的集合-实现
- 网站登录入口| 网站收录入口| 网站登录大全
- python实现简易聊天需要登录博客园zip下载_Python基于Socket实现简易多人聊天室的示例代码...
- 绝了!这款工具让 Spring Boot 不在需要 Controller、Service、DAO、Mapper 了
- Guava - 拯救垃圾代码,写出优雅高效,效率提升N倍
- 还在使用if else写代码?试试 “策略模式” 吧!
- autopoi升级到4.0版本修改方法