-
Notifications
You must be signed in to change notification settings - Fork 37
/
160-java-10.html
223 lines (199 loc) · 11.8 KB
/
160-java-10.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>葡萄藤PPT</title>
<link rel="stylesheet" href="./css/reveal/reveal.css">
<!-- PPT主题,可以在/css/reveal/theme/中选择其他主题,目前暂时只能使用该模板 -->
<link rel="stylesheet" href="./css/reveal/theme/ptt.css">
<!-- syntax highlighting 代码高亮主题 -->
<link rel="stylesheet" href="./lib/reveal/css/zenburn.css">
<!-- 打印和PDF输出样式 -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? './css/reveal/print/pdf.css' : '../css/reveal/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<img src="./img/demo/logo.png" alt="" usemap="#pttmap" class="base-logo">
<map name="pttmap">
<area shape="rect" coords="0,0,276,58" href="http://www.jnshu.com" alt="" target="_blank"/>
</map>
<div class="reveal">
<div class="slides">
<section>
<h2>什么是敏捷开发流程</h2>
<p></p>
<h3>java小课堂</h3>
<p>分享人:刘家铭</p>
</section>
<section>
<p>1.背景介绍</p>
<p>2.知识剖析</p>
<p>3.常见问题</p>
<p>4.解决方案</p>
<p>5.编码实战</p>
<p>6.扩展思考</p>
<p>7.参考文献</p>
<p>8.更多讨论</p>
</section>
<section>
<h3>1.背景介绍</h3>
</section>
<section>
<p>敏捷开发是什么?</p>
<p style="text-align:left">1:敏捷开发不是指某一种具体的方法论、过程或框架,而是一组价值观和原则,可以指导我们更加高效的开发</p>
<p style="text-align:left">2:敏捷开发是以用户的需求进化为核心,采用迭代,循序渐进的方法进行软件开发.</p>
<p style="text-align:left">3:在敏捷开发中,软件项目在构件初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视,可集成和可运行使用的特征.
换言之,就是把一个大项目分为多个互相联系,但也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态</p>
</section>
<section>
<p>敏捷开发的特征</p>
<p style="text-align:left">1:迭代式开发。即整个开发过程被分为几个迭代周期,每个迭代周期是一个定长或不定长的时间块每个迭代周期持续的时间一般较短,通常为一到六周。</p>
<p style="text-align:left">2:增量交付。产品是在每个迭代周期结束时被逐步交付使用,而不是在整个开发过程结束的时候一次性交付使用。每次交付的都是可以被部署到用户应用环境中被用户使用的、能给用户带来即时效益和价值的产品。</p>
<p style="text-align:left">3:开发团队和用户反馈推动产品开发。敏捷开发方法主张用户能够全程参与到整个开发过程中。这使需求变化和用户反馈能被动态管理并及时集成到产品中。同时,团队对于用户的需求也能及时提供反馈意见。</p>
</section>
<section>
<p style="text-align:left">4:持续集成。新的功能或需求变化总是尽可能频繁地被整合到产品中。一些项目是在每个迭代周期结束的时候集成,有些项目则每天都在这么做。</p>
<p style="text-align:left">5:开发团队自我管理。拥有一个积极的、自我管理的、具备自由交流风格的开发团队,是每个敏捷项目必不可少的条件。人是敏捷开发的核心。敏捷开发总是以人为中心建立开发的过程和机制,而非把过程和机制强加给人。</p>
</section>
<section>
<h3>2.知识剖析</h3>
</section>
<section>
<p>敏捷开发原则</p>
<p style="text-align:left">1:快速迭代:就是小版本更新发布,更符合如今的需求</p>
<p style="text-align:left">2:需求评审:定义有效需求,将需求分组,定义优先级.</p>
<p style="text-align:left">3:编写story/验收标准,story是根据用户场景编写的文档</p>
<p style="text-align:left">4:多沟通,减少文档</p>
<p style="text-align:left">5:做好产品原型:通过图形的方式向用户阐明一个操作界面</p>
<p style="text-align:left">6:及早考虑测试</p>
</section>
<section>
<p>需求讲解</p>
<p style="text-align:left">需求讲解阶段需要参加的人员是PM和所有负责开发项目的人</p>
<p>需要做到的是</p>
<p style="text-align:left">1:讲需求时理解透彻,与产品经理交流,提问以确保理解上没有偏差.</p>
<p style="text-align:left">2:当需求讲出来时,当场判断这个需求可不可做得到,有没有不合理和逻辑混乱的地方.</p>
<p style="text-align:left">3:细节方面有没有遗漏</p>
</section>
<section>
<p>Story划分</p>
<p style="text-align:left">产品根据UI做出来的原型图给开发人员讲解系统构成和运行,将整个网站按照功能划分成一个个细粒度的story来说明,开发人员需要明白自己应该关注那些关键点。</p>
<p>人员划分</p>
<p style="text-align:left">主要是项目小组的leader 根据story划分,给前端和后端开发人员划分story,开发人员根据自己的情况去估算所需时间。</p>
</section>
<section>
<p>方案设计</p>
<p style="text-align:left">设计表,设计sql语句</p>
<p style="text-align:left">定义接口文档,接口是前后端一起定义的</p>
<p style="text-align:left">拆解task,从story变成task</p>
<p style="text-align:left">方案评审成功后,必须是能用excel表格生成代码,且不会出错</p>
</section>
<section>
<p>性能测试</p>
<p style="text-align:left">正常来说,一个单独的接口请求,复杂的不超过200毫秒,简单的不超过50毫秒一般用jmeter来做测试</p>
<p>coderevivew需要完成的三个点</p>
<p style="text-align:left">1:是否符合代码规范</p>
<p style="text-align:left">2:项目中存在的风险</p>
<p style="text-align:left">3:是否与方案评审时一致,如果一致为正常</p>
<p>codeerevivew可以找比自己水平高的leader,或者架构师来做</p>
</section>
<section>
<p>测试阶段</p>
<p>运维执行开发人员的指令,把代码部署到开发环境,测试环境要求稳定,不能随时变更.测试人员进行测试.找出bug,bug优先级,负责追踪bug解决程度.测试做完后发布上线</p>
</section>
<section>
<p>demo环节</p>
<p>如果需求讲解是pm把需求交给研发团队,demo就是研发团队把成品交给pm或整个公司</p>
<p>demo是指把pm交给的功能完完全全的完成了,pm来验收,leader需要来验收,测试来验收,demo由项目开发人员发起</p>
<p>demo要保证没有肉眼可见bug</p>
</section>
<section>
<h3>3.常见问题</h3>
<p>为什么需要敏捷开发?</p>
</section>
<section>
<h3>4.解决方案</h3>
<p>为什么需要敏捷开发</p>
<p style="text-align:left">1:在用户需求不断变化的情况下,能够保证软件开发的质量,把大的时间点变成小的时间点</p>
<p style="text-align:left">2:把团队中职责定义清楚,发挥最大效率</p>
</section>
<section>
<h3>5.编码实战</h3>
</section>
<section>
<h3>6.扩展思考</h3>
<p>java成员的开发流程是怎样的</p>
</section>
<section>
<p style="text-align:left">1:听pm讲流程,进行沟通确保理解不发生偏差</p>
<p style="text-align:left">2:若是负责人,则创建xxx项目的人员分工</p>
<p style="text-align:left">3:前后端沟通对接口,负责人开会讨论出结果后,在wiki上生成标准接口文档,然后传给前端负责人,有问题继续改,没问题就开始后续步骤</p>
<p style="text-align:left">4:根据原型及定义接口,做方案设计,对有难度或疑点的接口,尽量给出多个合理方案,且写明每个方案的优缺点</p>
<p style="text-align:left">5:进行方案评审</p>
<p style="text-align:left">6:在禅道拆分自己的任务,单个任务时间不要超过4小时,要拆分得详细</p>
</section>
<section>
<p style="text-align:left">7:搭服务器,根据禅道上的任务,按时完成自己的开发工作,具体做了什么写在日报上.每天10点开一次进度会议,如果有延迟现象,拿出解决方案.保证按禅道上的时间点完成.数据库索引方面,经常查询的,数据散列度比较高的,做一般索引,不要建联合索引.数据必须保持唯一的,建唯一索引.</p>
<p style="text-align:left">8:每天至少发布一次代码到开发环境,并保证发布后程序没问题</p>
<p style="text-align:left">9:对每个接口做好性能测试,响应时间超过200ms的,做优化,尽量缩小到200ms内</p>
</section>
<section>
<p style="text-align:left">10:做好压力测试报告</p>
<p style="text-align:left">11: 发demo邮件,收件人包括产品,测试,前后端相关开发人员,主题为XX项目demo通知.内容为时间地点参会人员.
主讲人为某个开发人员,回答会议途中产品和测试提出的问题.</p>
<p style="text-align:left">发布线上环境并停止开发环境和测试环境</p>
</section>
<section>
<h3>7.参考文献</h3>
<p>wiki文章、老大的视频和live</p>
</section>
<section>
<h3>8.更多讨论</h3>
</section>
<section>
<h4>鸣谢</h4>
<p>感谢观看,如有出错,恳请指正</p>
<p><small>BY : 刘家铭</small></p>
</section>
</div>
</div>
<script src="./lib/reveal/js/head.min.js"></script>
<script src="./lib/reveal/reveal.js"></script>
<script>
// 以下为常见配置属性的默认值
// {
// controls: true, // 是否在右下角展示控制条
// progress: true, // 是否显示演示的进度条
// slideNumber: false, // 是否显示当前幻灯片的页数编号,也可以使用代码slideNumber: 'c / t' ,表示当前页/总页数。
// history: false, // 是否将每个幻灯片改变加入到浏览器的历史记录中去
// keyboard: true, // 是否启用键盘快捷键来导航
// overview: true, // 是否启用幻灯片的概览模式,可使用"Esc"或"o"键来切换概览模式
// center: true, // 是否将幻灯片垂直居中
// touch: true, // 是否在触屏设备上启用触摸滑动切换
// loop: false, // 是否循环演示
// rtl: false, // 是否将演示的方向变成RTL,即从右往左
// fragments: true, // 全局开启和关闭碎片。
// autoSlide: 0, // 两个幻灯片之间自动切换的时间间隔(毫秒),当设置成 0 的时候则禁止自动切换,该值可以被幻灯片上的 ` data-autoslide` 属性覆盖
// transition: 'default', // 切换过渡效果,有none/fade/slide/convex/concave/zoom
// transitionSpeed: 'default', // 过渡速度,default/fast/slow
// mouseWheel: true, //是否启用通过鼠标滚轮来切换幻灯片
// }
// 初始化幻灯片
Reveal.initialize({
history: true,
dependencies: [
{ src: './plugin/markdown/marked.js' },
{ src: './plugin/markdown/markdown.js' },
{ src: './plugin/notes/notes.js', async: true },
{ src: './plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
]
});
</script>
</body>
</html>