第七章:敏捷开发工具方法-part1-敏捷开发基础

一、Scrum基础概念

敏捷开发背景
速度是企业竞争致胜的关键因素,软件项目的最大挑战在于一方面需要应付变动中的需求,一方面需要在有限的时间完成项目,传统的软件工程难以满足这些要求
所以软件团队除了在技术上必须日益精进,更需要运用有效的开发流程,以确保团队能够发挥综效。这正是Agile Process (敏捷的软件开发流程)于近年来兴起的主要原因。

1.1 传统开发模式与敏捷开发的区别

1、瀑布开发:

  • 预见性开发模式
  • 每一个步骤有严格产出成果
  • 设计越完美,成本损失越小
  • 不适应快速变化
    在这里插入图片描述
    2、敏捷开发
  • 人和交互重于过程和工具
  • 可工作的软件 重于全而完备的文档
  • 客户协作 重于合同谈判
  • 随时应对变化 重于 循规蹈矩
    在这里插入图片描述

1.2 传统项目管理与敏捷项目管理的区别

1、传统项目管理

  • 事先对整个项目进行估计、计划、分析
  • 反对变更,变更需要重新估计、重新规些
  • 严密的合同来减少风险,如果改变需求要走CR 流程
  • 项目作为一个“黑盒子”,对客户与供应商的可视性差
  • 文档和计划驱动的方法软件交付时间晚,意识到风险的时间晚WBS,甘特图,关键路径分析

2、敏捷项目管理

  • 对整个项目做一个粗略的估计,每一次迭代都有详细的计划
  • 鼓励变化,客户价值驱动开发
  • 信任和赋予权力;合约使变更变得简单,增加价值
  • 客户和开发人员之间是紧密的连续的合作关系
  • 每次迭代都产生可交付的软件,专注于交付软件
  • 第一次迭代就可交付能工作的版本,风险发现的早

1.3 敏捷宣言

1、敏捷宣言

  1. 个体和交互 胜于 流程和工具
  2. 可工作软件 胜于 几长的文档
  3. 与客户协作 胜于 合同的谈判
  4. 对变化响应 胜于 遵循原计划

敏捷开发的核心思想是: 以人为本,适应变化敏捷思想是:一种以人为核心、迭代、循序渐进的开发方法

2、敏捷开发12个原则

  1. 最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意
  2. 即使到了开发的后期,也欢迎改变需求。
  3. 经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的 时间间隔越短越好
  4. 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
  5. 围绕被激励起来的个人来构建项目。
  6. 在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的 交谈。
  7. 工作的软件是首要的进度度量标准。
  8. 敏捷过程提倡平稳的开发节奏;发起人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
  9. 不断地关注优秀的技能和好的设计会增强敏捷能力。
  10. 简单化是根本(不做过度设计和预测)
  11. 最好的构架、需求和设计出自于自组织的团队。
  12. 每隔一定时间,团队会在如何才能更有效地工作方面进行反思并对自己的行为进行相应调整。

1.4 敏捷开发的特征

在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。

1、敏捷的方法

敏捷方法包括:Extreme Programming(XP)极限编程、Scrum、Adaptive Software Development (ASD)自适应软件开发、Crystal Clear and Other Crystal Methodologies水晶方法、Dynamic Systems Development Method (DSDM)动态系统开发方法 等等

1、Extreme Programming(XP)极限编程

  • XP我们一般称为极限编程,是最轻量级的开发流程。每个Sprint的迭代周期大致为1-2周。
  • 最主要的精神是:在客户有系统需求时,给予及时满意的可执行程序、所以最适合需求快速变动的项目
  • 它强调客户所要的是:
    • workable的执行码,所以把与撰写程序无关的工作降至最低,并要求客户与开发人员最好以side-by-side的方式一起工作
  • XP的实践包括:
    • 完整团队、计划游戏、客户测试、简单设计、结对编程、测试驱动开发、改进设计、持续集成、集体代码所有权
    • 编码标准、隐喻、可持续的速度
      在这里插入图片描述
      2、Scrum整体框架
  • Scrum 是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开
    发过程。
  • 在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2至4周
  • 在Scrum中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。
  • 在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint backlog。在每个选代结束时,Scrum团队将递交潜在可交付的产品增量
    在这里插入图片描述

二、角色与职责

本节介绍Scrum开发方法下的角色与职责。

  • 角色包括:Product Owner(PO)产品负责人(所有者),Scrum Master 敏捷教练,Team团队
  • Artfacts工件 : Product Backlog 产品Backlog(需求清单),Sprint Backlog 迭代Backlog,Increment潜在可交付产品增量
  • Ceremonies仪式(敏捷开发过程中的会议):PB Refinement 产品需求澄清、Sprint Review 迭代计划会议、Daily Meeting 每日立会、Sprint Review 评审会议、Sprint Retrospective回顾会议
    特性Features:Courage勇气,Openness 开放、Commitment 承诺、Focus 专注、Respect 尊重

2.1 Scrum Team

Scrum 的基本单位是小团队(一般10人以下),称为Scrum Team。Scrum Team,一名Scrum MasterProduct Owner 和 Developers 组成。在 Scrum Team 中,没有子团队或层次结构。Scrum Team是具有凝聚力的专业团体,一次专注于一个目标,即 Product Goal。
Scrum Team 是跨职能的(cross-functional),这意味着团队成员具有在每个 Sprint 中创造价值而所害的全部技能。他们也是自管理的,这意味着他们在团队内部决定谁做什么、何时做以及如何做。
Scrum Team 规模足够小以保持灵活,同时足够大以便可以在 一个 Sprint 中完成重要的工作,通常只有 10 人或更少。总的来说,我们发现较小的团队沟通更好,效率更高。如果 Scrum Team变得太大,则应考虑将他们重组为多个具有凝聚力的Scrum Team,每个团队都专注于同一产品。因此,他们应该共享相同的Product Goal、Product Backlog 和 Product Owner。

1、Developers

  • 为 Sprint 创建计划,即Sprint Backlog;
  • 通过遵循 Definition of Done 来注入质量;
  • 每天根据 Sprint Goal 调整计划;
  • 作为专业人士对彼此负责。

2、Product Owner

  • Product Owner 负责将Scrum Team 的工作所产生的产品价值最大化
  • Product Owner 还负责对Product Backlog 进行有效管理,包括:
    • 开发并明确地沟通Product Goal;
    • 创建并清晰地沟通Product Backlog 条目 (items);
    • 对 Product Backlog 条目进行排序:
    • 确保 Product Backlog 是透明的、可见的和可理解的。
  • Product Ower 可以自己做上述工作,或者也可以将职责委托他人。然而无论如何,ProductOwner 是负最终责任的人。
  • 为保证 Product Owner 取得成功,整个组织必须尊重他们的决定。这些决定在Product Backlog的内容和顺序中可见,并在 Sprint Review 时透过可检视的 Increment 予以体现。

3、Scrum Master

  • 负责按照Scrum 指南的游戏规则来建立Scrum。他们通过帮助Scrum Team 和组织内Scrum Master的每个人理解 Scrum 理论和实践来做到这一点

  • Scrum Master 以多种方式服务于Scrum Team,包括:

    • 作为教练在自管理和跨职能方面辅导Scrum Team 成员;
    • 帮助 Scrum Team 专注于创建符合 Definition of Done 的高价值 Increment;
    • 促使移除 Scrum Team 工作进展中的障碍:
    • 确保所有 Scrum 事件都发生并且是积极的、富有成效的,并且在时间盒 (timebox)内完成。
  • 负责按照Scrum 指南的游戏规则来建立Scrum。Scrum Master的每个人理解 Scrum 理论和实践来做到这一点

  • Scrum Master 以多种方式服务于Product Owner,包括

    • 帮助找到有效定义Product Goal 和管理Product Backlog 的技巧;
    • 帮助 Scrum Team 理解为何需要清晰且简明的Product Backlog 条目;
    • 帮助建立针对复杂环境的基于经验主义的产品规划 (empirical product planning);
    • 当需要或被要求时,引导利益攸关者协作。
  • Scrum Master 负责按照Scrum 指南的游戏规则来建立Scrum。他们通过帮助Scrum Team 和组织内的每个人理解 Scrum 理论和实践来做到这一点

  • Scrum Master 以多种方式服务于组织,包括

    • 带领、培训和作为教练辅导组织采纳Scrum;
    • 在组织范围内规划并建议Scrum 的实施
    • 帮助员工和利益攸关者理解并实施针对复杂工作的经验主义方法 (empirical
      approach):
    • 消除利益攸关者和Scrum Teams 之间的隔阂。

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

2.2 角色职责总结

Scrum团队总结出来有:三个角色,四个仪式,三个物件
1、三个角色
- 产品负责人
- Scrum Master
- 团队
2、四个仪式
- Sprint计划会议
- 每日站会
- Sprint评审会议
- Sprint 回顾会议
3、三个物件
- 产品Backlog
- Sprint Backlog
- 燃尽图

2.3、研发阶段概览

1、Sprint计划会议

  • 团队从产品backlog中挑选他们承诺完成的条目。
  • 创建Sprint Backlog
    • 标识具体的任务并为任务做估算
    • 由团队协作完成,而不是Scrum Master
  • 考虑了高层设计
  • Sprint 计划会议会产生一些实实在在的成果
    • Sprint目标
    • 团队成员名单(以及他们的投入程度,如果不是 100%的话)
    • Sprint backlog(即 Sprint 中包括的故事列表)
    • 确定好 Sprint 演示日期
    • 确定好时间地点,供举行每日 Scrum 会议
      在这里插入图片描述

2、产品实施阶段

- 产品实施阶段工作:
	- 开发、测试、监控.
- 方法:
	- 任务看板、燃尽图、每日立会
- Sprint backlog的形式
	- Redmine、Jira、禅道、阿里云效等等
	
	**燃尽图**
> 燃尽图 (burn down chart) 是在项目完成之前,对需要完成的工作的一种可视化表示。
> 分为:Sprint燃尽图,迭代燃尽图
> Sprint燃尽图展示了以故事点表示的在本轮迭代中剩余的工作量。
> y轴:预估剩下的故事点
> x轴:日期(非工作日除外)
> y/x=生产率
燃尽图分板示例:
![在这里插入图片描述](https://img-blog.csdnimg.cn/b68feeffc2cc4541baab4d613eefdba4.png)

哪些信息可以从每日燃尽图中得到,却不能从迭代燃尽图中得到?
每日燃尽图显示了团队在某轮迭代中的进度,你可以用这个信息判断计划的工作能否在迭代结束时都能完成。

哪些情况下燃尽图会有向上的趋势
加新任务的速度比完成任务的速度快
有大量的任务被低估了

每日例会
  • 最好在每天早上开,时间一般控制在15分钟之内
  • 条件允许的话,会议最好每天都在同一时间同一地点举行
  • 谁都可以参加这个会议,但只有团队成员发言,其它人员只能旁听
  • 所有出席者都应站立(有助于保持会议简短)
  • 确定更新燃尽图
  • 会议由Scrum Master主持,在会上每个团队成员需要问3个问题
    • 我昨天完成了哪些工作
    • 我今天将要做什么
    • 我遇到哪些障碍

3、Sprint评审会议

  • 在Sprint结束时召开,会议时间控制在两小时以内
  • 开发团队展示这个Sprint中完成的功能,不需要PPT,一般是已经完成的功能DEMO
  • 客户、管理层、Product Owner以及其它开发人员都可以参加
  • 主要是对项目开发的进度通过对实际已完成产品功能的审核进行控制,由产品负责人断定实际所发两点的功能是否与既定的Sprint目标一致

4、Sprint回顾会议

  • Sprint结束后,时间在1-3个小时
  • 回顾刚结束的Sprint,对其进行总结和反思,审视和适应的能力是Scrum 的基础,在Sprint回顾会议期间,项目团队会分析Sprint中的成功经验和所遇到的阻碍,
  • 产品负责人、Scrum团队和Scrum Master参加

三、敏捷开发实践

3.1、增量迭代

每个迭代有一个大约为1~4周的时间框,在SCRUM里称为一次冲刺(超过1个月的详细计划往往偏差很大)
每次迭代都应该有明确的目标
每次迭代都应该有明确的可演示的工作成果
迭代过程中项目团队应该尽量免受打扰
迭代可以将项目的压力分解到每个小的阶段,风险也能同时分解

在这里插入图片描述

3.2、测试驱动开发

什么是测试驱动?

  • 首先创建测试用例,然后开发软件通过测试(在开发代码前,首先编写测试代码)
  • 一种设计软件的方法,而不仅仅是一种测试方法
  • 所创建的测试用例用来指导和约束项目中的各项工作,对未来的各项工作提供一个安全的保护
  • 不需要测试的工作不需要完成
  • 所创建的测试用例通常替代详细的业务和技术需求定
  • 测试也有效地驱动设计,使设计更加趋向于可行的设计
  • 通常情况下需要自动测试的支持 (EUnit,JUnit etc.).
  • 对于UI软件应用TDD方法有一定的困难

3.3、持续集成

极限编程称为“每日构建”

  • 持续集成一般利用ant,maven,jenkins等工具
  • 每日构建的好处:
    • 将集成风险降到最低
    • 降低质量风险
    • 提升士气
  • 每日构建可以看做是项目的心跳,冒烟测试就像是听诊器
  • 每日构建必须至少:成功编译、打包、发布;不含有任何明显的缺陷;通过冒烟测试

3.4、面对面交流

  • 虽然如今通讯工具花样繁多,但面对面交流在某些场合下仍然是不可替代的;
  • 敏捷开发把交流缺失问题考虑在内,要求团队成员彼此直接协作,尽量创造面对面交流的机会:
  • 尤其当业务分析师和软件开发人员一起工作的时候,面对面的交流是很重要的。
  • 署名共享需求文档只会打开曲解和误解之门更不用说书面信息比口头交流还要慢很多

其他:

  • 结对编程、每日立会、用户故事、团队工作室、频繁发布、自组织团队、重构

3.5、Scrum何时 使用更有效

  • 公司和客户一致认为应当使用敏捷方法,双方都能理解敏捷方法
  • 敏捷方法对需求不完整以及经常变换的项目比较有效
  • 项目可以划分成固定时间间隔的迭代,并且可以冻结正在进行的迭代的范围
  • 公司和客户都有能力担当角色尤其是Product Owner 和 Scrum Master
  • 项目的人员结构能够分成6到10人的团队,最好每个工作地点一个小组.(Scrum of
    Scrums,Scrum的扩展)
  • 才队成员能够以自组织的方式工作
  • 项目的合同允许变更:固定价格的项目可以使用敏捷,但应当尽量避免。最好在按时间和材料付费或者按月付费的项目中进行使用、变更项目的范围不需要高级管理层的批准
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
*******注意:由于资源较大,共分为三个分卷供下载!!*********** 编辑推荐 《轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发(超值纪念版)》适合于有较好的Java编程基础,或有初步JSP、Servlet基础的读者。尤其适合于对Struts2、Spring、Hibernate了解不够深入,或对Struts2+Spring+Hibernate整合开发不太熟悉的开发人员阅读。 作者简介 李刚,从事10年的JavaEE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。2007年3月26日的《电脑报》专访人物。现任新东方广州中心软件教学总监,并曾任广东技术师范学院计算机科学系的兼职副教授。培训的学生已在华为、立信、普信、网易、电信盈科、中企动力等公司就职。国内知名的高端IT技术作家,已出版《Spring2.0宝典》、《基于J2EE的Ajax宝典》、《轻量级J2EE企业应用实战》、《Struts2权威指南》、《RubyOnRails敏捷开发最佳实践》等著作。 目录 第1章JavaEE应用和开发环境 1.1JavaEE应用概述 1.1.1JavaEE应用的分层模型 1.1.2JavaEE应用的组件 1.1.3JavaEE应用结构和优势 1.1.4常用的JavaEE服务器 1.2轻量级JavaEE应用相关技术 1.2.1JSP、Servlet3.0和JavaBean及替代技术 1.2.2Struts2.2及替代技术 1.2.3Hibernate3.6及替代技术 1.2.4Spring3.0及替代技术 1.3Tomcat的下载和安装 1.3.1安装Tomcat服务器 1.3.2配置Tomcat的服务端口 1.3.3进入控制台 1.3.4部署Web应用 1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE应用 1.4.6导入Eclipse项目 1.4.7导入非Eclipse项目 1.5Ant的安装和使用 1.5.1Ant的下载和安装 1.5.2使用Ant工具 1.5.3定义生成文件 1.5.4Ant的任务(task) 1.6使用CVS进行协作开发 1.6.1安装CVS服务器 1.6.2配置CVS资源库 1.6.3安装CVS客户端 1.6.4发布项目到服务器 1.6.5从服务器下载项目 1.6.6同步(Update)本地文件 1.6.7提交(Commit)修改 1.6.8添加文件和目录 1.6.9删除文件和目录 1.6.10查看文件的版本变革 1.6.11提取文件以前版本的内容 1.6.12从以前版本重新开始 1.6.13创建标签 1.6.14创建分支 1.6.15沿着分支开发 1.6.16使用Eclipse作为CVS客户端 …… 第2章JSP/Servlet及相关技术详解 第3章Struts2的基本用法 第4章深入使用Struts2 第5章Hibernate的基本用法 第6章深入使用Hibernate 第7章Spring的基本用法 第8章深入使用Spring 第9章企业应用开发的思考和策略 第10章简单工作流系统
*******注意:由于资源较大,共分为三个分卷供下载!!*********** 编辑推荐 《轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发(超值纪念版)》适合于有较好的Java编程基础,或有初步JSP、Servlet基础的读者。尤其适合于对Struts2、Spring、Hibernate了解不够深入,或对Struts2+Spring+Hibernate整合开发不太熟悉的开发人员阅读。 作者简介 李刚,从事10年的JavaEE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。2007年3月26日的《电脑报》专访人物。现任新东方广州中心软件教学总监,并曾任广东技术师范学院计算机科学系的兼职副教授。培训的学生已在华为、立信、普信、网易、电信盈科、中企动力等公司就职。国内知名的高端IT技术作家,已出版《Spring2.0宝典》、《基于J2EE的Ajax宝典》、《轻量级J2EE企业应用实战》、《Struts2权威指南》、《RubyOnRails敏捷开发最佳实践》等著作。 目录 第1章JavaEE应用和开发环境 1.1JavaEE应用概述 1.1.1JavaEE应用的分层模型 1.1.2JavaEE应用的组件 1.1.3JavaEE应用结构和优势 1.1.4常用的JavaEE服务器 1.2轻量级JavaEE应用相关技术 1.2.1JSP、Servlet3.0和JavaBean及替代技术 1.2.2Struts2.2及替代技术 1.2.3Hibernate3.6及替代技术 1.2.4Spring3.0及替代技术 1.3Tomcat的下载和安装 1.3.1安装Tomcat服务器 1.3.2配置Tomcat的服务端口 1.3.3进入控制台 1.3.4部署Web应用 1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE应用 1.4.6导入Eclipse项目 1.4.7导入非Eclipse项目 1.5Ant的安装和使用 1.5.1Ant的下载和安装 1.5.2使用Ant工具 1.5.3定义生成文件 1.5.4Ant的任务(task) 1.6使用CVS进行协作开发 1.6.1安装CVS服务器 1.6.2配置CVS资源库 1.6.3安装CVS客户端 1.6.4发布项目到服务器 1.6.5从服务器下载项目 1.6.6同步(Update)本地文件 1.6.7提交(Commit)修改 1.6.8添加文件和目录 1.6.9删除文件和目录 1.6.10查看文件的版本变革 1.6.11提取文件以前版本的内容 1.6.12从以前版本重新开始 1.6.13创建标签 1.6.14创建分支 1.6.15沿着分支开发 1.6.16使用Eclipse作为CVS客户端 …… 第2章JSP/Servlet及相关技术详解 第3章Struts2的基本用法 第4章深入使用Struts2 第5章Hibernate的基本用法 第6章深入使用Hibernate 第7章Spring的基本用法 第8章深入使用Spring 第9章企业应用开发的思考和策略 第10章简单工作流系统
UML和模式应用(原书第3版) 原书名: Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) 原出版社: Prentice Hall PTR 作者: (美)Craig Larman [作译者介绍] 译者: 李洋[同译者作品] 郑龑 出版社:机械工业出版社 目录 第一部分 绪 论 第1章 面向对象分析和设计 1.1 本书的主要内容 1.2 最重要的学习目标 1.3 什么是分析和设计 1.4 什么是面向对象分析和设计 1.5 简短示例 1.6 什么是UML 1.7 可视建模的优点 1.8 历史 1.9 参考资料 第2章 迭代、进化和敏捷 2.1 什么是UP?其他方法能否对其进行补充 2.2 什么是迭代和进化式开发 2.3 什么是瀑布生命周期 2.4 如何进行迭代和进化式分析和设计 2.5 什么是风险驱动和客户驱动的迭代计划 2.6 什么是敏捷方法及其观点 2.7 什么是敏捷建模 2.8 什么是敏捷UP .2.9 UP的其他关键实践 2.10 什么是UP的阶段 2.11 什么是UP科目 2.12 如何定制过程和UP开发案例 2.13 判断你是否理解迭代开发或UP 2.14 历史 2.15 参考资料 第3章 案例研究 3.1 案例研究中涵盖的内容 3.2 案例研究策略:迭代开发+迭代学习 3.3 案例一:NextGen POS系统 3.4 案例二:Monopoly游戏系统 第二部分 初 始 阶 段 第4章 初始不是需求阶段 4.1 什么是初始 4.2 初始阶段的持续时间 4.3 初始阶段会创建的制品 4.4 何时知道自己并不了解初始阶段 4.5 初始阶段中有多少UML 第5章 进化式需求 5.1 定义:需求 5.2 进化式需求与瀑布式需求 5.3 寻找需求可以采用的方法 5.4 需求的类型和种类 5.5 UP制品如何组织需求 5.6 本书是否包含这些制品的示例 5.7 参考资料 第6章 用例 6.1 示例 6.2 定义:参与者、场景和用例 6.3 用例和用例模型 6.4 动机:为什么使用用例 6.5 定义:用例是功能性需求吗 6.6 定义:参与者的三种类型 6.7 表示法:用例的三种常用形式 6.8 示例:详述风格的处理销售 6.9 各小节的含义 6.10 表示法:有其他格式吗?两栏变体 6.11 准则:以无用户界面约束的本质风格编写用例 6.12 准则:编写简洁的用例 6.13 准则:编写黑盒用例 6.14 准则:持有参与者和参与者目标的视点 6.15 准则:如何发现用例 6.16 准则:什么样的测试有助于发现有用的用例 6.17 应用UML:用例图 6.18 应用UML:活动图 6.19 动机:用例还有其他益处吗?语境中的需求 6.20 示例:Monopoly游戏 6.21 过程:在迭代方法中如何使用用例 6.22 历史 6.23 参考资料 第7章 其他需求 7.1 如何完成这些示例 7.2 准则:初始阶段是否应该对此彻底地进行分析 7.3 准则:这些制品是否应该放在项目Web站点上 7.4 NextGen示例:(部分)补充性规格说明 7.5 注解:补充性规格说明 7.6 NextGen示例:(部分)设想 7.7 注解:设想 7.8 NextGen示例:(部分)词汇表 7.9 注解:词汇表(数据字典) 7.10 NextGen示例:业务规则(领域规则) 7.11 注解:领域规则 7.12 过程:迭代方法中的进化式需求 7.13 参考资料 第三部分 细化迭代1—基础 第8章 迭代1—基础 8.1 迭代1的需求和重点:OOA/D技术的核心 8.2 过程:初始和细化 8.3 过程:计划下一个迭代 第9章 领域模型 9.1 示例 9.2 什么是领域模型 9.3 动机:为什么要创建领域模型 9.4 准则:如何创建领域模型 9.5 准则:如何找到概念类 9.6 示例:寻找和描绘概念类 9.7 准则:敏捷建模—类图的草呼 9.8 准则:敏捷建模—是否要使用工具维护模型 9.9 准则:报表对象—模型中是否要包括“票据” 9.10 准则:像地图绘制者一样思考;使用领域术语 9.11 准则:如何对非现实世界建模 9.12 准则:属性与类的常见错误 9.13 准则:何时使用“描述”类建模 9.14 关联 9.15 示例:领域模型中的关联 9.16 属性 9.17 示例:领域模型中的属性 9.18 结论:领域模型是否正确 9.19 过程:迭代和进化式领域建模 9.20 参考资料 第10章 系统顺序图 10.1 示例:NextGen SSD 10.2 什么是系统顺序图 10.3 动机:为什么绘制SSD 10.4 应用UML:顺序图 10.5 SSD和用例之间的关系 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1 示例 11.2 定义:契约有哪些部分 11.3 定义:什么是系统操作 11.4 定义:后置条件 11.5 示例:enterItem后置条件 11.6 准则:是否应该更新领域模型 11.7 准则:契约在何时有效 11.8 准则:如何创建和编写契约 11.9 示例:NextGen POS契约 11.10 示例:Monopoly契约 11.11 应用UML:操作、契约和OCL 11.12 过程:UP的操作契约 11.13 历史 11.14 参考资料 第12章 迭代地从需求到设计 12.1 以迭代方式做正确的事,正确地做事 12.2 尽早引发变更 12.3 完成所有分析和建模工作是否需要几个星期 第13章 逻辑架构和UML包图 13.1 示例 13.2 什么是逻辑架构和层 13.3 案例研究中应该关注的层 13.4 什么是软件架构 13.5 应用UML:包图 13.6 准则:使用层进行设计 13.7 准则:模型-视图分离原则 13.8 SSD、系统操作和层之间的联系 13.9 示例:NextGen的逻辑架构和包图 13.10 示例:Monopoly逻辑架构 13.11 参考资源 第14章 迈向对象设计 14.1 敏捷建模和轻量级UML图形 14.2 UML CASE工具 14.3 编码前绘制UML需要花费多少时间 14.4 设计对象:什么是静态和动态建模 14.5 基于UML表示法技术的对象设计技术的重要性 14.6 其他对象设计技术:CRC卡 第15章 UML交互图 15.1 顺序图和通信图 15.2 UML建模初学者没有重视交互图 15.3 常用的UML交互图表示法 15.4 顺序图的基本表示法 15.5 通信图的基本表示法 第16章 UML类图 16.1 应用UML:常用类图表示法 16.2 定义:设计类图 16.3 定义:类元 16.4 表示UML属性的方式:属性文本和关联线 16.5 注解符号:注解、注释、约束和方法体 16.6 操作和方法 16.7 关键字 16.8 构造型、简档和标记 16.9 UML特性和特性字符串 16.10 泛化、抽象类、抽象操作 16.11 依赖 16.12 接口 16.13 组合优于聚合 16.14 约束 16.15 限定关联 16.16 关联类 16.17 单实例类 16.18 模板类和接口 16.19 用户自定义的分栏 16.20 主动类 16.21 交互图和类图之间的关系 第17章 GRASP:基于职责设计对象 17.1 UML与设计原则 17.2 对象设计:输入、活动和输出的示例 17.3 职责和职责驱动设计 17.4 GRASP:基本OO设计的系统方法 17.5 职责、GRASP和UML图之间的联系 17.6 什么是模式 17.7 现在我们所处的位置 17.8 使用GRASP进行对象设计的简短示例 17.9 在对象设计中应用GRASP 17.10 创建者 17.11 信息专家(或专家) 17.12 低耦合 17.13 控制器 17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象设计 18.7 总结 第19章 对可见性进行设计 19.1 对象之间的可见性 19.2 什么是可见性 第20章 将设计映射为代码 20.1 编程和迭代、进化式开发 20.2 将设计映射到代码的 20.3 由DCD创建类的定义 20.4 从交互图创建方法 20.5 代码中的集合类 20.6 异常和错误处理 20.7 定义Sale.makeLineItem方法 20.8 实现的顺序 20.9 测试驱动或测试优先的开发 20.10 将设计映射为代码的总结 20.11 NextGen POS程序简介 20.12 Monopoly程序简介 第21章 测试驱动开发和重构 21.1 测试驱动开发 21.2 重构 21.3 参考资料 第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考资料 第23章 快速地更新分析 23.1 案例研究:NextGen POS 23.2 案例研究:Monopoly 第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器(GoF) 26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和其他设计原则 26.9 外观(Facade,GoF) 26.10 观察者/发布-订阅/委派事件模型(GoF) 26.11 结论 26.12 参考资料 第五部分 细化迭代3—中级主题 第27章 迭代3:中级主题 27.1 NextGen POS案例 27.2 Monopoly案例 第28章 UML活动图及其建模 28.1 示例 28.2 如何应用活动图 28.3 其他UML活动图表示法 28.4 准则 28.5 示例:NextGen中的活动图 28.6 过程:“统一过程”中的活动图 28.7 背景 第29章 UML状态机图和建模 29.1 示例 29.2 定义:事件、状态和转换 29.3 如何应用状态图 29.4 更多UML状态机图表示法 29.5 示例:使用状态机进行UI导航建模 29.6 示例:NextGen用例的状态机图 29.7 过程:UP中的状态机图 29.8 推荐资源 第30章 用例关联 30.1 包含关系 30.2 术语:具体用例、抽象用例、基础用例和附加用例 30.3 扩展关系 30.4 泛化关系 30.5 用例图 第31章 更多的SSD和契约 第32章 精化领域模型的精化 32.1 NextGen领域模型中的新概念 32.2 泛化 32.3 定义概念超类和子类 32.4 何时定义概念子类 32.5 何时定义概念超类 32.6 NextGen POS案例中的概念类层次结构 32.7 抽象概念类 32.8 对变化的状态建模 32.9 软件中的类层次结构和继承关系 32.10 关联类 32.11 聚合关系和组合关系 32.12 时间间隔和产品价格—解决迭代1阶段的“错误” 32.13 关联角色名称 32.14 作为概念的角色与关联中的角色 32.15 导出元素 32.16 受限关联 32.17 自反关联 32.18 使用包来组织领域模型 32.19 示例:Monopoly领域模型的精化 第33章 架构分析 33.1 过程:何时开始架构分析 33.2 定义:变化点和进化点 33.3 架构分析 33.4 架构分析的常用步骤 33.5 科学:架构因素的识别和分析 33.6 示例:NextGen POS的部分架构因素表 33.7 艺术:架构性因素的解决 33.8 架构分析主题的总结 33.9 过程:UP中的迭代架构 33.10 参考资料 第34章 逻辑架构精化 34.1 示例:NextGen的逻辑架构 34.2 使用层模式的协作 34.3 有关层模式的其他问题 34.4 模型-视图分离和“向上”通信 34.5 参考资料 第35章 使用GoF模式完成更多对象设计 35.1 示例:NextGen POS 35.2 本地服务容错;使用本地缓存提高性能 35.3 处理故障 35.4 通过代理(PGoF)使用本地服务进行容错 35.5 对非功能性或质量需求的设计 35.6 使用适配器访问外部物理设备 35.7 对一组相关的对象使用抽象工厂模式 35.8 使用多态性和“Do It Myself”模式处理支付 35.9 示例:Monopoly案例 35.10 结论 第36章 包的设计 36.1 组织包结构的准则 36.2 参考资料 第37章 UML部署图和构件图 37.1 部署图 37.2 构件图 第38章 使用模式设计持久性框架 38.1 问题:持久性对象 32.2 解决方案:持久性框架提供的持久性服务 38.3 框架 38.4 持久性服务和框架的需求 38.5 关键思想 38.6 模式:将对象表示为表 38.7 UML数据建模简档 38.8 模式:对象标识符 38.9 通过外观访问持久服务 38.10 映射对象:数据库映射器或数据库代理模式 38.11 使用模板方法模式进行框架设计 38.12 使用模板方法模式的具体化 38.13 使用MapperFactory配置Mapper 38.14 模式:缓存管理 38.15 在类中合并和隐藏SQL语句 38.16 事务状态和状态模式 38.17 使用命令模式设计事务 38.18 使用虚代理实现滞后具体化 38.19 如何在表中表示关系 38.20 PersistentObject和关注分离 38.21 未决问题 第39章 架构的文档化:UML和N+1视图模型 39.1 SAD和架构视图 39.2 表示法:SAD的结构 39.3 示例:NextGen POS的SAD 39.4 示例:Jakarta Struts 的SAD 39.5 过程:迭代式架构文档 39.6 参考资料 第六部分 其 他 主 题 第40章 迭代式开发和敏捷项目管理的进一步讨论 40.1 如何计划一次迭代 40.2 适应性计划与预测性计划 40.3 阶段计划和迭代计划 40.4 如何使用用例和场景来计划迭代 40.5 早期预算的有效性(无效性) 40.6 将项目制品组织起来 40.7 何时你会发现自己并没有理解迭代计划 40.8 参考资料 参考文献
*******注意:由于资源较大,共分为三个分卷供下载!!*********** 编辑推荐 《轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发(超值纪念版)》适合于有较好的Java编程基础,或有初步JSP、Servlet基础的读者。尤其适合于对Struts2、Spring、Hibernate了解不够深入,或对Struts2+Spring+Hibernate整合开发不太熟悉的开发人员阅读。 作者简介 李刚,从事10年的JavaEE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。曾任广州电信、广东龙泉科技等公司的技术培训导师。2007年3月26日的《电脑报》专访人物。现任新东方广州中心软件教学总监,并曾任广东技术师范学院计算机科学系的兼职副教授。培训的学生已在华为、立信、普信、网易、电信盈科、中企动力等公司就职。国内知名的高端IT技术作家,已出版《Spring2.0宝典》、《基于J2EE的Ajax宝典》、《轻量级J2EE企业应用实战》、《Struts2权威指南》、《RubyOnRails敏捷开发最佳实践》等著作。 目录 第1章JavaEE应用和开发环境 1.1JavaEE应用概述 1.1.1JavaEE应用的分层模型 1.1.2JavaEE应用的组件 1.1.3JavaEE应用结构和优势 1.1.4常用的JavaEE服务器 1.2轻量级JavaEE应用相关技术 1.2.1JSP、Servlet3.0和JavaBean及替代技术 1.2.2Struts2.2及替代技术 1.2.3Hibernate3.6及替代技术 1.2.4Spring3.0及替代技术 1.3Tomcat的下载和安装 1.3.1安装Tomcat服务器 1.3.2配置Tomcat的服务端口 1.3.3进入控制台 1.3.4部署Web应用 1.3.5配置Tomcat的数据源 1.4Eclipse的安装和使用 1.4.1Eclipse的下载和安装 1.4.2在线安装Eclipse插件 1.4.3从本地压缩包安装插件 1.4.4手动安装Eclipse插件 1.4.5使用Eclipse开发JavaEE应用 1.4.6导入Eclipse项目 1.4.7导入非Eclipse项目 1.5Ant的安装和使用 1.5.1Ant的下载和安装 1.5.2使用Ant工具 1.5.3定义生成文件 1.5.4Ant的任务(task) 1.6使用CVS进行协作开发 1.6.1安装CVS服务器 1.6.2配置CVS资源库 1.6.3安装CVS客户端 1.6.4发布项目到服务器 1.6.5从服务器下载项目 1.6.6同步(Update)本地文件 1.6.7提交(Commit)修改 1.6.8添加文件和目录 1.6.9删除文件和目录 1.6.10查看文件的版本变革 1.6.11提取文件以前版本的内容 1.6.12从以前版本重新开始 1.6.13创建标签 1.6.14创建分支 1.6.15沿着分支开发 1.6.16使用Eclipse作为CVS客户端 …… 第2章JSP/Servlet及相关技术详解 第3章Struts2的基本用法 第4章深入使用Struts2 第5章Hibernate的基本用法 第6章深入使用Hibernate 第7章Spring的基本用法 第8章深入使用Spring 第9章企业应用开发的思考和策略 第10章简单工作流系统

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sophie_U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值