`

敏捷开发方法和结构化开发方法是否可以共存

阅读更多
                编辑概论
                 敏捷开发和结构化开发:可以共存?
                          Pekka Abrahamsson   Unisiverty of Helsinki
                          Muhammad Ali Babar  IT Unisiverty of Copenhagen
                          Philippe Kruchten University of British Columbia
     敏捷开发在很大程度上影响了工业软件开发的做法。但是,尽管敏捷开发的广泛流行,对软件架构师在敏捷开发中充当的角色和重要性越来越使人感到困惑。对于庞大而复杂系统,提倡架构在达到高质量软件目标的人们怀疑任何其他不太注重结构化开发方法的可扩展性。这尤其适合于汽车、电信、财政和医疗设备领域。那些习惯于结构化开发的公司认为敏捷开发是业余的,未经证实的和对于小型基于web的社会技术系统是有限制的。
     反过来,敏捷开发的支持者通常认为系统的前期设计和架构评估对系统用户的价值不大。他们感觉软件架构是过去时了,和BDUF(Big design up-front 导致繁琐的文档和一些完全没有必要实现的特征)没有什么区别。他们相信结构化设计的价值不大,一个在大多数情况下都满足的比喻,一个架构应该作为成功的小重构一步一步渐渐出现。
     区分关于敏捷开发和结构化开发方法共存的必要性、重要性、有利条件和不利条件的事实和神话的兴趣逐渐增长,这就是这个问题的主题。
     任何讨论、争论或者评估结合敏捷开发和结构化开发方法的努力都应该以这样的一些问题开始:这些观点是矛盾的、相对的或者是互补的?区分敏捷开发和结构化开发是否有一些意义?什么样的步骤将会使项目组从不关心没必要的价值和要求中获益呢?
     悖论、矛盾、完全相反?
     Jim Highsmith将敏捷开发定义为一个组织创造和为了从混乱的业务环境中获取利益而做出对变化的反应的一种能力。Sanjiv Augustine认为敏捷开发方法,如极限编程(XP)、Scrum、特征驱动开发、lean、Crystal等等有一些共同的特征,如下:
      增量迭代的生命周期
      关注于小的发布
      并行的团队
      一个基于发布计划的计划策略,该发布计划以一个特征或者是产品背景
      一个处理任务的迭代计划
他们或多或少的依赖于Agile Manifesto的价值。
      统一软件开发过程(RUP)将软件架构定义为软件系统组织所做出的有意义的决定的集合、以及组成该系统的结构元素和接口和相互协作元素之间的行为,这些结构元素组成的模块在日益增长的子系统之间的行为,这个组织、这些结构元素、接口、它们之间的合作、它们组成的小模块等的架构风格。软件架构不只是关注架构和行为,还关注软件的可用性、功能性、性能、弹性、重复使用性、易理解性以及经济性和技术限制、综合权衡和美学方面。
      拉力似乎位于改造和预料的轴心上。敏捷方法想坚决的适应:在最后时刻或者是变化发生时作出决定。敏捷方法认为软件架构花费太大的努力在前期预料阶段:在前期阶段计划太多。或许我们可以找到一个在这两个极端方法和思维方式中间的平衡点。
      错误的区分?
      当讨论这个特别问题的方向时,Craig Larman声称敏捷开发和结构化之间的紧张情况是一个错误的分歧。实际上,有很多像这样的认为的区分。一些被忽视了,一些事有意的,为了支持一个特定的信息:敏捷开发vs瀑布开发或者敏捷开发vs原则开发。像其他许多在实验室或者是实际应用中的软件开发一样,一个好的集中于架构的软件开发方法不与任何敏捷开发方法相对立。各种敏捷开发方法的支持者都同意这个观点。按照如此方法,Satoshi Basaki指出,开上去很多敏捷开发方法的用户都误解了敏捷开发方法的实际含义,不顾架构,把一味的重构作为唯一的灵丹妙药。
       我们还有来自于第一次迭代的“向利益相关者分发金钱的权利”。但是如果开发这是这个利益相关的人,而不是最终的用户呢?Alistair Cockburn开发了开始行走的骨架的策略,然后进一步的完善它。Mary 和 Tom Poppendieck提出可拆分系统架构的见解。最后,Kent Beck的建议是架构在极限编程中的重要性和在其他任何软件架构中的重要性是一样的。架构的一部分被系统隐喻(一个极限编程的实践方式)所占据。我们必须开始解决什么问题呢?
      发现问题的所在?
      可以从多个级别理解敏捷开发和结构化开发的表面上的冲突:语义、范围、生命周期、角色、文档、方法和价值。
      阐明语义
      一个项目架构的详细说明意味着什么呢?这个概念的边界模糊。特别的,不是所有的设计都是架构。达成一个一致定义是一个有用的实践和一个好的起始点。
分享到:
评论

相关推荐

    敏捷开发专辑

    敏捷开发的最佳实践包括每日站会、持续集成、自动化测试、代码审查和用户故事驱动的开发。这些实践有助于保持代码的清洁、文档的更新和团队的沟通,从而提高软件质量。 ![图2. 敏捷开发过程及质量控制](此处插入...

    软件质量与管理2020期中试卷(参考答案)1

    软件开发方法中,CMMI和SPICE属于过程改进框架,XP和SCRUM是敏捷开发方法,而Cleanroom、Gate和TSP则代表不同的过程改进实践。软硬件一体化阶段,系统兼容性至关重要,而看板方法的实践包括可视化工作流、站立会议和...

    双模云管平台助力银行实现开发运维一体化.pptx

    这种平台的设计目标是实现开发运维一体化(DevOps),以促进技术创新和业务敏捷性。双模IT概念主要由两部分构成:企业级应用和互联网应用。 **企业级应用**通常具有明确的需求、长期稳定的特点,强调稳健发展和成熟...

    浅议.NET遗留应用改造.doc

    6. **风险与成本**:处理遗留代码会延长开发周期,增加成本,因此在改造过程中,需要有明确的优先级和里程碑,同时考虑采用敏捷或迭代的方法来降低风险。 7. **技术选型**:在.NET环境中,可能需要考虑将应用迁移到...

    软件定义汽车.pptx

    这要求采用DevOps等敏捷开发模型,以便更好地支持持续集成和部署。 ##### 趋势二:手动操作到工具驱动 - **现状**:当前汽车软件开发过程中存在着大量的手动操作,包括设计、开发、测试等多个环节。这种方式效率...

    数据中心云化最佳实践探讨.pptx

    企业私有云架构的演进路径通常是从传统竖井式结构逐步过渡到应用驱动的虚拟化、大规模共享资源池,最终形成混合、异构、共存的软件定义架构。这种架构强调资源的多租户共享,通过资源API实现服务的灵活交付和管理。...

    springBoot和sharding-jdbc、mybatis整合demo

    同时,使用了单元测试来验证Controller和Service层的功能,这符合敏捷开发的最佳实践,保证了代码的质量和可维护性。 项目的整合步骤大致如下: 1. **添加依赖**:在SpringBoot的`pom.xml`文件中,引入SpringBoot...

    企业混合云解决方案.pdf

    在云化过程中,企业需要平衡云原生应用和传统应用的共存,目标是逐步将微服务体系结构应用于新旧应用。IBM云解决方案遵循五大设计原则:混合、多云、安全、开放和管理,旨在提供统一的云架构,支持高可扩展和安全的...

    Microservice Architecture ALIGNING PRINCIPLES, PRACTICES, AND CULTURE

    4. **持续学习与改进**:鼓励团队不断学习新技术、工具和方法,并将其应用于实践中,以不断提高工作效率和产品质量。 5. **开放交流**:促进团队内部以及团队之间的开放交流,以便快速解决问题和分享最佳实践。 ###...

    构件图的云计算应用.pptx

    综上所述,构件图在云计算领域的应用非常广泛,不仅能够提高软件开发的效率和质量,还能帮助企业实现敏捷开发、高效运维和智能化管理。通过充分利用云计算的优势,构件图可以为企业带来更多的商业价值和发展机会。

    MongoDB北京2014 - MongoDB介绍 - Kamal Brar

    该数据库特别适用于需要处理大量非结构化或半结构化数据的应用场景。 #### 二、MongoDB的优势与应用领域 MongoDB在多个行业中都有广泛应用,包括但不限于金融服务、电子、媒体娱乐、零售、电信和技术公司以及医疗...

    李云-Dubbo+Mesh+-+Service+Mesh的本质、价值和应用探索.pdf

    - **增强服务框架的自主性和敏捷性**:Service Mesh 的独立性允许服务框架独立于业务逻辑进行升级和扩展。 - **提高业务开发效率**:开发者可以专注于业务逻辑而无需关心服务间的通信细节,例如安全性、灰度发布等。...

    H C数据中心网络架构.docx

    随着信息化进程的加速和数据量的急剧增长,传统数据中心的网络架构已无法满足高效、敏捷和易于管理的需求。 在融合方面,HC新一代数据中心解决方案旨在打破数据网、存储网和HPC集群网之间的界限。以太网被看作是...

    首都经济贸易大学经济学院贸易经济专业.doc

    18. 城市市场开拓与世界差异化市场建立:探讨城市市场开发的策略和全球市场的多样性。 19. 外资商企在中国的本土化发展研究:分析外资企业如何适应中国市场并实现本土化。 20. 北京消费市场发展态势分析及预测:对...

Global site tag (gtag.js) - Google Analytics