粗略学习《Agile Guide》后的总结
碍于个人能力极度欠佳,所以即使我大致了解了一下何谓“Agile Guide”(敏捷开发),也不很能理解其中的软件工程思想,只能大概谈一下我的理解。
我所理解的“敏捷开发”,应该是一种特殊的、相较于传统开发方式更值得程序开发人员重视和推崇的软件工程开发方法。这种开发方法之所以能赢得更多程序开发人员、青睐,主要原因就在于,这种方式摒弃了原来up-front的设计方案,拒绝正在过时的“瀑布式开发”,而是让开发人员通过“敏捷建模”的方式,从“简单、可持续、沟通”等等多个方面入手,旨在将目标项目划分成可以独立设计和调试、但又相互联系的子项目,并进行持续集成,从而减少错误、提高效率,更快更好地构建目标工程。而同时,“敏捷建模”是允许客户以项目开发的成员的身份,参与到项目实现的过程中的,如此一来,程序的直接开发人员便能在不断地优化程序的过程中,更好地满足客户的需求;另外的,客户参与到子项目的测试中,有利于检验子程序是否符合自己的需求,并让程序开发人员及时地重构程序,避免在集成项目的过程中,因为个别项目的失败导致主要项目的失败。这实际上是一个迭代过程,如此一来能真正提高工程实现的效率!
就该文章的叙述而言,我并不是很好地理解了“敏捷开发”的核心,所以我便直接在网上搜索了部分资料,了解到“敏捷开发”及对应的“敏捷建模”都有其对应的核心价值,包括“沟通、简单、反馈、勇气、谦逊”,其中前四点也是“极限编程”(XP)的核心价值观。虽然字面上有些抽象,但其实不难理解。这几点正好就反映了“敏捷开发”的开发特色,即:主张统一,使用统一的编码库和编程规范,便于程序开发人员沟通交流;主张简单,以最简单的设计方式实现分割的独立的子程序,并在融合了客户需求的基础上不断集成,在持续集成的过程中,开发人员根据客户的要求和设计人员的设计,快速地高效率地不断地构建或者重构项目,从而以最高效的方式实现目标工程;而这个目标工程是抛弃了一切不必要的设计的,因为“简单”原则要求如此;同时这又是一个可持续优化地项目,开发人员将根据设计者的要求进一步完善工程。
另外,关于“设计已死”的命题,原文作者也说了,这并不是正确的。虽然“敏捷开发”在某种程度上是拒绝在工程实现开始便对工程的每个步骤进行详尽的筹划和设计,因为正如文章所说,预先考虑的问题并不能保证全面,如此设计,可能导致在实现工程的过程中,不断遇到新的问题,不断进行调试,从而导致工程越来越复杂;但实际上,“敏捷开发”并不意味这放弃设计,也就是说,所谓的“敏捷开发”与UML等设计技术是不相互排斥的,只是使用的方式有所不同罢了。“敏捷开发”采取了Planned Design的方法,由设计者自行设计、再由程序实现人员实现程序。而对于每个单元,有其自己的单元设计,在“敏捷开发”的过程中,不同单元的设计都能最终聚合在一起,从而最终实现工程!
在查阅资料的过程中,我看到,原来结对编程也是“敏捷开发”的一个阶段。通过结对编程,开发人员在同一台机子上进行程序编写,这样便能在写的同时又另一人监视,降低出错的概率。想来我和我的结对伙伴在编程时,倒也没有发现这其中的用处,只是相互商量,相互检查而已。不过,在以后的团队工作中,我们可以按照分配好的任务,各自完成自己的任务,从而更好地实现我们的工程!我们的团队成员已经按照一定的规则分配了相应的任务,接下来,我们便要好好地利用“敏捷开发”的方式,进行我们的程序设计。我们会争取让设计成员提前对我们的任务进行一定的简单设计,然后再有编程经理带领编程人员进行开发;另外,作为软件工程学习的一部分,我们团队虽然是开发人员,但也可以把自己定位为客户,由此去进行程序的优化和深层设计,这样就相当于让客户也参与到程序开发中了!如此一来,便能更好地提高我们团队的工作效率!
还有,我还了解到有一种类似的迭代式增量软件开发过程管理方法,称为Scrum。这也是可用于管理软件开发项目的。所以我们团队也肯能有所参考和学习,这将由我们讨论研究后再下定论!
以上,是11061169林谋武同学粗略学习“敏捷开发”的心得。
粗略学习《Agile Guide》后的总结的更多相关文章
- C语言学习一个月后感想
		
C语言学习一个月后感想 感谢李晓东老板及计算机工程师联盟的学长学姐和某神秘同级同学的辛勤指导,感谢宋雨田的督促和陪伴. 初识C的1..体会 我本以为凭借瓜皮思维和花里胡哨操作可以让我熟练地学习语言,现 ...
 - seajs学习一天后的总结归纳
		
公司项目最近需要将js文件迁移到seajs来进行模块化管理,由于我以前主要接触模块化开发是接触的AMD规范的requireJS,没有接触过CMD规范,而且在实际项目中还没有用过类似技术.于是,我非常兴 ...
 - AngularJs学习笔记--Guide教程系列文章索引
		
在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看 ...
 - linux学习 命令ll后字段的解释(转)
		
原文链接:http://jz20080153.blog.sohu.com/161554070.html ls -l 列表信息详解 我们平时用ls -l 命令查看一个目录下的文件和子目录的详悉信息时,会 ...
 - YII学习笔记-登录后的session的总结
		
在YII框架的默认的登录后的session数据是id,name,__states这三个数据. 在搭配好YII框架环境后,可以使用admin/admin,来登录系统.如果在protected/views ...
 - leetcood学习笔记-58-最后一个单词的长度
		
题目描述: 第一次解答: class Solution: def lengthOfLastWord(self, s: str) -> int: L=s.strip().split(" ...
 - mysql的粗略学习
		
输入root进入mysql 试着输入了两个语法都没动静,输入\h终于有反应了 语法错误 show databases; //显示数据库 为什么没有人告诉我还有个英文下的分隔符号... 查的资料不是没有 ...
 - webpack学习笔记——打包后直接访问页面,图片路径错误
		
我说的这种图片路径错误是这样的,运行webpack-dev-server,一切正常,没有错误.当webpack之后,直接打开index页面,报错,图片找不到,找不到的原因是路径错误. 先看我的项目代码 ...
 - 学习完HTML后的5大测试题----9.18
		
考试题目 第一题: 布局出该效果 提示:使用DIV的border样式,调整边框粗细出现该效果,保留上边框,其它三个方向的边框需设置:border-left:100px solid transpar ...
 
随机推荐
- 《C语言程序设计》指针篇<二>
			
通过指针引用多维数组 如何理解二维数组元素的地址? 要知道,这本书用了整整两页的内容来讲解这方面的知识,从这里足以看出来理解通过指针来引用二维数组是一件比较麻烦的事情,但是我认为理解并不难. 什么是二 ...
 - 记一次诡异的bug
			
使用django做项目,在视图函数中需要查询,查询前构造一个查询参数的模型来过滤参数防止报错,然后调用模型的方法返回一个字典,包括了所有查询的字段和值,发现只要查询过一次之后,后续的访问查询结果会在之 ...
 - BM25 调参调研
			
1. 搜索 ES 计算文本相似度用的 BM25,参数默认,不适合电商场景,可调整 BM25 参数使其适用于电商短文本场景 2. k1.b.tf.L.tfScore 的关系如下图红框内所示(注:这里的 ...
 - pyqt 渲染html
			
from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtWebE ...
 - 环境变量.JAVA_HOME
			
1.资料:(我的文章) http://www.cnblogs.com/cppskill/p/8341263.html 2. 2.1.界面 2.2.代码 unit formMain; interface ...
 - Codeforces 260D - Black and White Tree
			
260D - Black and White Tree 思路:把两种颜色先按值sort一下,最小值肯定是叶子,然后把这个叶子和另外一中颜色的一个最小值的节点连接起来,再把这个节点变成叶子,把值减掉就可 ...
 - Python获取脚本所在目录的正确方法(转)
			
1.以前的方法如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数.如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者 ...
 - java服务突然被挂掉,停止服务处理方案
			
一.问题背景 该问题出现在我们测试环境.测试环境部署了很多java应用. 其中一个数据服务(主要提供订单交易数据聚合查询),用着用着就服务挂掉了也就是进程没有了. 二.分析过程 1.了解服务器配置 ...
 - 20170801xlVBA含有公式出现弹窗合并
			
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Sub GatherD ...
 - mysql5.7执行sql语句出现only_full_group_by错误
			
在/etc/my.cnf的[mysqld]组中添加 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISI ...