碍于个人能力极度欠佳,所以即使我大致了解了一下何谓“Agile Guide”(敏捷开发),也不很能理解其中的软件工程思想,只能大概谈一下我的理解。

我所理解的“敏捷开发”,应该是一种特殊的、相较于传统开发方式更值得程序开发人员重视和推崇的软件工程开发方法。这种开发方法之所以能赢得更多程序开发人员、青睐,主要原因就在于,这种方式摒弃了原来up-front的设计方案,拒绝正在过时的“瀑布式开发”,而是让开发人员通过“敏捷建模”的方式,从“简单、可持续、沟通”等等多个方面入手,旨在将目标项目划分成可以独立设计和调试、但又相互联系的子项目,并进行持续集成,从而减少错误、提高效率,更快更好地构建目标工程。而同时,“敏捷建模”是允许客户以项目开发的成员的身份,参与到项目实现的过程中的,如此一来,程序的直接开发人员便能在不断地优化程序的过程中,更好地满足客户的需求;另外的,客户参与到子项目的测试中,有利于检验子程序是否符合自己的需求,并让程序开发人员及时地重构程序,避免在集成项目的过程中,因为个别项目的失败导致主要项目的失败。这实际上是一个迭代过程,如此一来能真正提高工程实现的效率!

就该文章的叙述而言,我并不是很好地理解了“敏捷开发”的核心,所以我便直接在网上搜索了部分资料,了解到“敏捷开发”及对应的“敏捷建模”都有其对应的核心价值,包括“沟通、简单、反馈、勇气、谦逊”,其中前四点也是“极限编程”(XP)的核心价值观。虽然字面上有些抽象,但其实不难理解。这几点正好就反映了“敏捷开发”的开发特色,即:主张统一,使用统一的编码库和编程规范,便于程序开发人员沟通交流;主张简单,以最简单的设计方式实现分割的独立的子程序,并在融合了客户需求的基础上不断集成,在持续集成的过程中,开发人员根据客户的要求和设计人员的设计,快速地高效率地不断地构建或者重构项目,从而以最高效的方式实现目标工程;而这个目标工程是抛弃了一切不必要的设计的,因为“简单”原则要求如此;同时这又是一个可持续优化地项目,开发人员将根据设计者的要求进一步完善工程。

另外,关于“设计已死”的命题,原文作者也说了,这并不是正确的。虽然“敏捷开发”在某种程度上是拒绝在工程实现开始便对工程的每个步骤进行详尽的筹划和设计,因为正如文章所说,预先考虑的问题并不能保证全面,如此设计,可能导致在实现工程的过程中,不断遇到新的问题,不断进行调试,从而导致工程越来越复杂;但实际上,“敏捷开发”并不意味这放弃设计,也就是说,所谓的“敏捷开发”与UML等设计技术是不相互排斥的,只是使用的方式有所不同罢了。“敏捷开发”采取了Planned Design的方法,由设计者自行设计、再由程序实现人员实现程序。而对于每个单元,有其自己的单元设计,在“敏捷开发”的过程中,不同单元的设计都能最终聚合在一起,从而最终实现工程!

在查阅资料的过程中,我看到,原来结对编程也是“敏捷开发”的一个阶段。通过结对编程,开发人员在同一台机子上进行程序编写,这样便能在写的同时又另一人监视,降低出错的概率。想来我和我的结对伙伴在编程时,倒也没有发现这其中的用处,只是相互商量,相互检查而已。不过,在以后的团队工作中,我们可以按照分配好的任务,各自完成自己的任务,从而更好地实现我们的工程!我们的团队成员已经按照一定的规则分配了相应的任务,接下来,我们便要好好地利用“敏捷开发”的方式,进行我们的程序设计。我们会争取让设计成员提前对我们的任务进行一定的简单设计,然后再有编程经理带领编程人员进行开发;另外,作为软件工程学习的一部分,我们团队虽然是开发人员,但也可以把自己定位为客户,由此去进行程序的优化和深层设计,这样就相当于让客户也参与到程序开发中了!如此一来,便能更好地提高我们团队的工作效率!

还有,我还了解到有一种类似的迭代式增量软件开发过程管理方法,称为Scrum。这也是可用于管理软件开发项目的。所以我们团队也肯能有所参考和学习,这将由我们讨论研究后再下定论!

以上,是11061169林谋武同学粗略学习“敏捷开发”的心得。

粗略学习《Agile Guide》后的总结的更多相关文章

  1. C语言学习一个月后感想

    C语言学习一个月后感想 感谢李晓东老板及计算机工程师联盟的学长学姐和某神秘同级同学的辛勤指导,感谢宋雨田的督促和陪伴. 初识C的1..体会 我本以为凭借瓜皮思维和花里胡哨操作可以让我熟练地学习语言,现 ...

  2. seajs学习一天后的总结归纳

    公司项目最近需要将js文件迁移到seajs来进行模块化管理,由于我以前主要接触模块化开发是接触的AMD规范的requireJS,没有接触过CMD规范,而且在实际项目中还没有用过类似技术.于是,我非常兴 ...

  3. AngularJs学习笔记--Guide教程系列文章索引

    在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看 ...

  4. linux学习 命令ll后字段的解释(转)

    原文链接:http://jz20080153.blog.sohu.com/161554070.html ls -l 列表信息详解 我们平时用ls -l 命令查看一个目录下的文件和子目录的详悉信息时,会 ...

  5. YII学习笔记-登录后的session的总结

    在YII框架的默认的登录后的session数据是id,name,__states这三个数据. 在搭配好YII框架环境后,可以使用admin/admin,来登录系统.如果在protected/views ...

  6. leetcood学习笔记-58-最后一个单词的长度

    题目描述: 第一次解答: class Solution: def lengthOfLastWord(self, s: str) -> int: L=s.strip().split(" ...

  7. mysql的粗略学习

    输入root进入mysql 试着输入了两个语法都没动静,输入\h终于有反应了 语法错误 show databases; //显示数据库 为什么没有人告诉我还有个英文下的分隔符号... 查的资料不是没有 ...

  8. webpack学习笔记——打包后直接访问页面,图片路径错误

    我说的这种图片路径错误是这样的,运行webpack-dev-server,一切正常,没有错误.当webpack之后,直接打开index页面,报错,图片找不到,找不到的原因是路径错误. 先看我的项目代码 ...

  9. 学习完HTML后的5大测试题----9.18

    考试题目   第一题: 布局出该效果 提示:使用DIV的border样式,调整边框粗细出现该效果,保留上边框,其它三个方向的边框需设置:border-left:100px solid transpar ...

随机推荐

  1. 获取String类型汉字乱码,如何进行编码

    本文为博主原创,未经允许不得转载: 在解析properties文件中的汉字时,在java代码中解析得到的是一个乱码字符,形如图下: 导致乱码原因:由于在jdk中,默认为gbk编码方式进行编码盒接收的, ...

  2. 【TCP/IP详解 卷一:协议】第二十二章 TCP的坚持定时器

    这两章来到了TCP的定时器部分,在 TCP的超时与重传 和 TCP的三握四挥 我们介绍了 TCP的重传定时器 和 TCP的2MSL定时器. 本随笔介绍 防止返回ACK丢失的死锁情况 的 坚持定时器 和 ...

  3. Linux(CentOS 6.5) 下安装MySql 5.7.18 二进制版本粗浅攻略

    鉴于Linux和mysql因不同版本,安装方式也不同,所以在阅读本攻略前,请确保各位同学的版本和我的Linux.MySql 版本一致. 如果不一致,只能参考. 我的版本: Linux CentOS 6 ...

  4. Linux——shell简单学习(二)

    流控制语句: for…done语句 格式:for  变量   in   名字表 do  命令列表 done 例子: #!/bin/sh for DAY in Sunday Monday Tuesday ...

  5. Cocos2d-x学习笔记(三)main方法

    0. UNREFERENCED_PARAMETER(X)避免编译器关于未引用参数的警告. 下边代码用于屏蔽单个函数的警告: #pragma warning( push ) #pragma warnin ...

  6. Linux-Ubuntu14.04下mongodb安装部署

    mongo 下载:https://www.mongodb.com/download-center/community?jmp=nav 创建目录,将下载的文件放在如下位置 xxx@ubuntu:/usr ...

  7. python 元组列表转为字典

    #create a list l = [(), (), (), (), (), ()] d = {} for a, b in l: d.setdefault(a, []).append(b) prin ...

  8. resource not found : rosbridge_server

    1.放到src下,改名字为rosbridge_server,编译catkin_make git clone https://github.com/RobotWebTools/rosbridge_sui ...

  9. python json格式转xml格式

    import xmltodict #json转xml函数 def jsontoxml(jsonstr): #xmltodict库的unparse()json转xml xmlstr = xmltodic ...

  10. [ios][swift]swift中如果做基本类型的转换

    在swift中如果做基本类型的转换的?比如Int -> Float(Double)Double -> 保留两位小数String -> IntDouble -> String 有 ...