■如何实现敏捷软件开发?

敏捷开发究竟是什么?通俗地讲 , 他就是将项目分为多个独立运行 , 但又存在联系地小项目 , 通过分别完成实现快速开发 。整体来看 , 它的优势就是高效!
■如何实现敏捷软件开发?
文章图片

文章图片

在软件工程领域 , 有过很多软件开发模型 , 如瀑布模型、快速原型模型、增量模型、螺旋模型、演化模型、喷泉模型、RAD模型、敏捷软件开发模型、XP极端模型 。这么多的模型各有各的应用场景、各有各的适用范围 , 但我认为最实用开发模型还是敏捷软件开发 。
中国式软件开发思路是什么样的呢?从我接触过的大多软件项目来看 , 基本都有一个共同特点——就是必须快 , 客户都是急脾气 , 恨不得今天立项 , 明天就要你拿出产品来 。
面对公司和客户如此快节奏的要求 , 我们有办法吗?人们从生产、生活中总结出来一套即高效又优质的开发模式——敏捷软件开发 。
一、什么是敏捷软件开发呢?
敏捷开发是以用户的需求进化为核心 , 采用迭代、循序渐进的方法进行软件开发 。在敏捷开发中 , 软件项目在构建初期被切分成多个子项目 , 各个子项目的成果都经过测试 , 具备可视、可集成和可运行的特征 。换言之 , 就是把一个大项目分为多个相互联系、而又可以独立运行的小项目 , 并分别完成 , 从而实现快速开发的目的 。
二、敏捷开发是如何实现的?1. 将大的系统拆分成子项目
以前我们接受过的思想是立项后先要需求调研、分析 , 调研后出各种调研报告及需求说明书 , 需求搞定后 , 再进行概要设计(UE设计、UI设计、交互设计、数据库设计、框架设计) , 概要设计完成后再进行详细设计……这样一个周期下来 , 耗费太长 , 当进度进入下一阶段 , 当上一阶段有问题时 , 会影响到整个项目流程的各个阶段 。
而敏捷方法是会将大的系统拆分成一个个子项目 , 再把子系统拆分成子模块 , 尽量减少模块间的耦合性、增加其内聚性 , 这样我们可以把团队分成多个小组 , 各组可以同时作业 。另外 , 当一个模块需求发生变化时 , 对其它模块的影响也不会太大 , 以实现降低开发难度的目的 。
在之前提到的房产信息网平台建设中 , 我们就将系统拆分成自行成交、经纪成交、用户权限管理、建委等外部接口、大宗资产、交易管理、平台后台管理、网站前端等模块分别进行需求讨论 , 需求讨论后再将各模块拆分成各个对象 , 对象与对象间只是通过公有变量传递信息 , 尽量减少与外部对象间产生关系 。
总结:化整为零个个击破
2. 团队与客户呆在一起
为了降低沟通成本 , 我们团队所有人员直接开到客户现场 , 随时与客户沟通 , 通过面对面的沟通 , 减少了理解偏差 。
在项目的各个阶段 , 我们一直与客户保持零距离接触 , 随时交流、沟通 。通过这种办法 , 可以第一时间获取需求、第一时间解决问题 , 减少出错的可能性 , 提高开发效率 , 保证开发质量 。
而且 , 通过这种方式会更容易取得客户信任 , 客户能够随时了解到项目的工作状态、工作进度 。当相互间具备了信任关系后 , 余下的工作也会变得轻松、愉快 。
在房产项目里 , 我们在客户现场办公 , 定期开会讨论需求和设计 , 当有一些小的不确定问题 , 团队成员会直接找到客户相关人确认 。在整个项目周期中没有发生过大的需求变化 。
总结:与客户面对面的交流 , 降低交流成本 , 促进相互信任 。
3. 用建模方式沟通
利用模型与客户沟通 , 用模型来获取用户需求 , 而不是通过大量的文档 , 编写文档费时费力 , 而且效果不好 。实际 , 对于我们大多数人来说并不喜欢花大量时间看各种文字和参数 , 而模型则会更直观和立体 。这里我说的模型不是单指我们平时设计的原型 , 它包括用例图、类图、部署图、状态图、活动图、包图、对象图、原型图、效果图、E-R图等 , 利用不同图形表达出产品的不同维度 , 使产品丰富而立体 。


推荐阅读