敏捷开发是一种以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在软件工程课程的项目实践中,私以为也用到了这种方法,当然我们的用户交流远不如真实的敏捷开发多,迭代次数也仅有开题、中检、结题而已,其他各部分也尚不如要求的那么多,那么严格,执行上也存在问题。
相关历史:
在2001年召开的研讨软件过程未来发展趋势的一次会议上,17位业界专家就什么是“敏捷”达成一致意见。这次会议的一个成果是成立了“敏捷联盟”并发布了联盟敏捷宣言。
首先,我们来看《敏捷软件开发宣言》的价值观:
- 个体和互动 高于 流程和工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 响应变化 高于 遵循计划
也就是说,尽管右项有其价值,我们更重视左项的价值。再不断的摸索发展中,其又主要遵循以下12条原则:
- 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
- 欣然面对需求变化,即使在开发后期也一样。
为了客户的竞争优势,敏捷过程掌控变化。 - 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
- 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
- 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
- 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
- 可工作的软件是进度的首要度量标准。
- 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
- 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 以简洁为本,它是极力减少不必要工作量的艺术。
- 最好的架构、需求和设计出自自组织团队。
- 团队定期地反思如何能提高成效,并依此调整自身的举止表现。
更加详细的原则解释可以参考敏捷开发之 12条敏捷原则
下图给出敏捷开发的流程图,并根据本组项目进行相应的说明:
软件工程的小组项目开发题目为“网页表格数据提取”,总用时10周,含开题、中检、结题。前期准备时间3周,包括获取需求、方案讨论、确定目标等,开发用时7周,包括一期迭代及中检后的二次迭代至结题。
前期准备包括与扮演用户的老师获取需求、小组讨论确定实施方案,最终确定使用django框架、python语言;小组三人采用MVC的方式进行合作开发,一人负责V(view)即项目前端试图部分,所用语言html、css、js等;一人负责M(model)含数据库等开发,另一人负责C(control)后台逻辑部分;项目启动在学期第七周开始,合作方式为小组讨论、组长分配,代码用github管理(如图项目启动会)
迭代开发过程使用燃尽图、每周一会、定期提交代码等方式来进行团队管理,尤其是后台部分每人各自开发都进行相关测试,保持质量产出,中检交付模型已完成基本功能,数据表格提取出来并显示(如图 交付评审),通过并获得反馈意见均为前端页面部分视觉效果的修改意见;二轮迭代加入表格操作功能及数据导出等,并优化界面效果;集成测试由小组成员和真实用户进行,FR完成、NFR可靠性、相关性能等测试结束,部署在云端服务器结题。(注:图中迭代开发部分为N次迭代)
附:小组项目地址