敏捷开发架构_敏捷开发 团队架构 - CSDN
  • 敏捷开发对软件架构设计产生了一定的影响,让人产生敏捷开发中“轻架构设计”的印象。文章就笔者经验,和大家一起讨论一下敏捷中的架构设计这个话题。 首先,笔者认为敏捷开发是一种软件过程方法和工具,敏捷...

    敏捷开发对软件架构设计产生了一定的影响,让人产生敏捷开发中“轻架构设计”的印象。文章就笔者经验,和大家一起讨论一下敏捷中的架构设计这个话题。

    浅谈敏捷开发中的架构设计!(干货)

     

    首先,笔者认为敏捷开发是一种软件过程方法和工具,敏捷开发本身并不能代表架构设计。这就好比建筑架构设计和建筑工程管理之间的差别一样,两者是建筑的两个方面。相同的软件行业也是类似的情况,软件架构设计描述的是事物本身,而敏捷开发描述的是创建这个事物的过程。所以敏捷开发和架构是没有直接替代关系的两个范畴。

    但敏捷开发后,架构设计(内容和形式上)还是有了一定程度的变化。

    1. 敏捷开发中架构设计的方式

    这里的架构设计方式,指什么时候进行架构设计,并以什么样的方式进行架构设计,如Iteration中新需求引入时,重构的方式,Code is Design的方式等。

    下图描述了敏捷开发前和后架构方式:

    浅谈敏捷开发中的架构设计!(干货)

     

    上图中,敏捷开发后软件架构设计的方式产生了变化:敏捷开发把原先软件过程前期的架构设计,分散到了整个敏捷开发软件过程中

    看到敏捷开发中分散化的架构设计,想起公司财务中的"马克威茨资产组合理论",用马克威茨这个诺贝尔大师的理论来解释敏捷开发中的分散架构形式,却也行得通。

    “马克威茨资产组合理论”中说道:可以通过分散投资使收益率不变而方差(风险)减少。通俗一点讲也就是不要把鸡蛋放在一个篮子里。资产组合分散化后,可以做到收益率不变的情况下,风险减少。

    这里的风险指的是波动,也就是方差。这和软件工程中的风险有异曲同工之意,即软件工程中的风险指:需求的波动,数学化后就是需求的方差。然后可以按照统计定理推论出,把架构设计组合化,并分散化,有益于收益率不变的情况下,减少软件风险。(中间的推导过程省略,有兴趣的朋友参考相应文献)。

    如果按照资产组合理论,下面这些就是软件架构设计中的组合,把一次性软件过程前期30%(甚至更多)的架构设计,换成如下的软件架构组合:

    (1)引入新需求后的架构。每个Iteration中,新需求引入前,都可以进行构思和架构。

    (2)重构产生架构。先让软件运行,再重构其代码。那么软件的架构随着重构自然而然的在软件过程中产生

    (3)开发过程中的设计:以前是设计完后开发,现在是边设计边开发。

    (4)其他

    所以敏捷开发不是轻架构设计,而是依然注重架构设计。只不过架构的方式变化了,变得更加有效且风险更小。

    2. 敏捷开发中架构设计的内容

    传统的架构设计,包括架构和设计两个方面、其中设计可以包含详细设计,如详细的UML图(详细的类图,顺序图等),详细的API设计以及接口描述,存储层数据库表字段设计等等。

    出于下面两个方面的考虑,敏捷开发不适合这种架构设计内容:

    (1)在当今的快速变化的社会中,业务需求和技术也都快速变化着,在软件过程前期花费30%(甚至更多)的时间进行架构设计,要么开发出来的软件不符合市场需求,要么就是一旦需求变动,造成较大的改动成本。如,作者了解的一个电子商务产品,当前所做的功能都是两年前规划设计的,而且如有新需求发生,需要下个版本才会采纳,导致整个产品脱离市场和客户的需求。

    (2)架构设计包含两个方面,一是:架构,二是:设计。其中设计中的详细设计需要大量的时间,包含详细的流程,API,数据结构等设计。但软件开发阶段的Code编码阶段,同样蕴含了很多详细设计的内容,所以二者之间存在着Repeat Yourself的情况。换句话说,现在敏捷开发提倡Code is design,而以前是Design is code。但问题是,软件开发人员维护一套Design,外加一套Code,不堪重负,效率低。所以,现在是Code is Design盛行,敏捷盛行。

    基于这两种原因,敏捷中将传统的架构设计分成:架构 + 设计

    (1)敏捷开发的架构保留架构部分

    (2)转移设计到Code编码阶段、重构阶段、Unit Test阶段等。

    分离后,敏捷开发中的架构就轻装上阵,内容可以包括:

    (1)软件的架构层次,层次化是软件产品架构中很重要的一部分。

    (2)产品和技术选型

    (3)各个组件的结构,以及的关系

    (4)重要模块,和重要类的说明。但无需设计全部的类,和类的方法。

    而详细设计阶段,则在Code编码和UT单元测试阶段进行。这个阶段重构很重要,重构使你的软件架构和组件结构自然呈现

    所以在敏捷开发中架构设计的内容发生了变化:敏捷开发中止于架构,轻详细设计。但详细设计不是消失不见了,而是转移到了开发阶段,也即是:Code is design。这样既能拥抱变化,又规避风险,又Don't Repeat Yourself。

    3. 敏捷开发中架构设计的人员

    敏捷开发后,软件过程变化了,架构形式变化了,随之相应的人员的责任和需要素质也会变化。

    这里不说整个软件过程中的人员角色,以及职责和能力,如组长,经理,测试人员,开发人员等。这不是说这些的地方。可以另外的文章再继续。

    这里强调的是,敏捷开发架构设计变化后,对开发人员提出了更高的要求,要超越Code is Code阶段,达到Code is Design的要求。如上面我们分析,敏捷开发中架构设计内容变化后,一部分的设计职责转移到了开发人员身上。所以开发人员不仅需要是技术专家,不仅能够写很好的程序,还需要有架构设计思想和能力,能够在开发过程中不断重构出Design。

    浅谈敏捷开发中的架构设计!(干货)

     

    总结

    架构描述的是软件本身的结构,敏捷开发描述的是制造这个软件的过程,他们二者是软件科学的两条脉络,互相影响。不管敏捷与否,架构设计依然软件中最重要之一,是软件开发人员的进阶目标。

    展开全文
  • 敏捷开发对软件架构设计产生了一定的影响,让人产生敏捷开发中“轻架构设计”的印象。文章就笔者经验,和大家一起讨论一下敏捷中的架构设计这个话题。 首先,笔者认为敏捷开发是一种软件过程方法和工具,敏捷开发...

    原文地址:http://developer.51cto.com/art/200907/134068.htm



    敏捷开发对软件架构设计产生了一定的影响,让人产生敏捷开发中“轻架构设计”的印象。文章就笔者经验,和大家一起讨论一下敏捷中的架构设计这个话题。

    首先,笔者认为敏捷开发是一种软件过程方法和工具,敏捷开发本身并不能代表架构设计。这就好比建筑架构设计和建筑工程管理之间的差别一样,两者是建筑的两个方面。相同的软件行业也是类似的情况,软件架构设计描述的是事物本身,而敏捷开发描述的是创建这个事物的过程。所以敏捷开发和架构是没有直接替代关系的两个范畴。


    但敏捷开发后,架构设计(内容和形式上)还是有了一定程度的变化。


    1. 敏捷开发中架构设计的方式


    这里的架构设计方式,指什么时候进行架构设计,并以什么样的方式进行架构设计,如Iteration中新需求引入时,重构的方式,Code is Design的方式等。


    下图描述了敏捷开发前和后架构方式:


    敏捷开发前和后架构方式


    上图中,敏捷开发后软件架构设计的方式产生了变化:敏捷开发把原先软件过程前期的架构设计,分散到了整个敏捷开发软件过程中


    看到敏捷开发中分散化的架构设计,想起公司财务中的"马克威茨资产组合理论",用马克威茨这个诺贝尔大师的理论来解释敏捷开发中的分散架构形式,却也行得通。


    “马克威茨资产组合理论”中说道:可以通过分散投资使收益率不变而方差(风险)减少。通俗一点讲也就是不要把鸡蛋放在一个篮子里。资产组合分散化后,可以做到收益率不变的情况下,风险减少。


    这里的风险指的是波动,也就是方差。这和软件工程中的风险有异曲同工之意,即软件工程中的风险指:需求的波动,数学化后就是需求的方差。然后可以按照统计定理推论出,把架构设计组合化,并分散化,有益于收益率不变的情况下,减少软件风险。(中间的推导过程省略,有兴趣的朋友参考相应文献)。


    如果按照资产组合理论,下面这些就是软件架构设计中的组合,把一次性软件过程前期30%(甚至更多)的架构设计,换成如下的软件架构组合:


    (1)引入新需求后的架构。每个Iteration中,新需求引入前,都可以进行构思和架构。


    (2)重构产生架构。先让软件运行,再重构其代码。那么软件的架构随着重构自然而然的在软件过程中产生


    (3)开发过程中的设计:以前是设计完后开发,现在是边设计边开发。


    (4)其他


    所以敏捷开发不是轻架构设计,而是依然注重架构设计。只不过架构的方式变化了,变得更加有效且风险更小。


    2. 敏捷开发中架构设计的内容


    传统的架构设计,包括架构和设计两个方面、其中设计可以包含详细设计,如详细的UML图(详细的类图,顺序图等),详细的API设计以及接口描述,存储层数据库表字段设计等等。


    出于下面两个方面的考虑,敏捷开发不适合这种架构设计内容:


    (1)在当今的快速变化的社会中,业务需求和技术也都快速变化着,在软件过程前期花费30%(甚至更多)的时间进行架构设计,要么开发出来的软件不符合市场需求,要么就是一旦需求变动,造成较大的改动成本。如,作者了解的一个电子商务产品,当前所做的功能都是两年前规划设计的,而且如有新需求发生,需要下个版本才会采纳,导致整个产品脱离市场和客户的需求。


    (2)架构设计包含两个方面,一是:架构,二是:设计。其中设计中的详细设计需要大量的时间,包含详细的流程,API,数据结构等设计。但软件开发阶段的Code编码阶段,同样蕴含了很多详细设计的内容,所以二者之间存在着Repeat Yourself的情况。换句话说,现在敏捷开发提倡Code is design,而以前是Design is code。但问题是,软件开发人员维护一套Design,外加一套Code,不堪重负,效率低。所以,现在是Code is Design盛行,敏捷盛行。


    基于这两种原因,敏捷中将传统的架构设计分成:架构 + 设计


    (1)敏捷开发的架构保留架构部分


    (2)转移设计到Code编码阶段、重构阶段、Unit Test阶段等。


    分离后,敏捷开发中的架构就轻装上阵,内容可以包括:


    (1)软件的架构层次,层次化是软件产品架构中很重要的一部分。


    (2)产品和技术选型


    (3)各个组件的结构,以及的关系


    (4)重要模块,和重要类的说明。但无需设计全部的类,和类的方法。


    (5)….


    而详细设计阶段,则在Code编码和UT单元测试阶段进行。这个阶段重构很重要,重构使你的软件架构和组件结构自然呈现


    所以在敏捷开发中架构设计的内容发生了变化:敏捷开发中止于架构,轻详细设计。但详细设计不是消失不见了,而是转移到了开发阶段,也即是:Code is design。这样既能拥抱变化,又规避风险,又Don't Repeat Yourself。


    3. 敏捷开发中架构设计的人员


    敏捷开发后,软件过程变化了,架构形式变化了,随之相应的人员的责任和需要素质也会变化。


    这里不说整个软件过程中的人员角色,以及职责和能力,如组长,经理,测试人员,开发人员等。这不是说这些的地方。可以另外的文章再继续。


    这里强调的是,敏捷开发架构设计变化后,对开发人员提出了更高的要求,要超越Code is Code阶段,达到Code is Design的要求。如上面我们分析,敏捷开发中架构设计内容变化后,一部分的设计职责转移到了开发人员身上。所以开发人员不仅需要是技术专家,不仅能够写很好的程序,还需要有架构设计思想和能力,能够在开发过程中不断重构出Design。


    总结


    架构描述的是软件本身的结构,敏捷开发描述的是制造这个软件的过程,他们二者是软件科学的两条脉络,互相影响。不管敏捷与否,架构设计依然软件中最重要之一,是软件开发人员的进阶目标。

    
    展开全文
  • android 敏捷开发系列(二)——《敏捷开发架构图》 首先为大家解释里面的几个概念 Frame 整个项目的框架、组织者。里面并没有实际的代码,只是通过配置文件决定了项目需要哪几个模块 Model 模块,项目的组成部分,...

    原创作品,转载请注明出处http://blog.csdn.net/baodinglaolang/article/details/10042857

    android 敏捷开发系列(二)——《敏捷开发架构图》


    书接上回,首先奉上敏捷开发的架构图



    首先为大家解释里面的几个概念


    Frame 整个项目的框架、组织者。里面并没有实际的代码,只是通过配置文件决定了项目需要哪几个模块

    Model 模块,项目的组成部分,通常表示单一或部分功能集合

    Component 组件,包含Model的UI以及需求逻辑,在android敏捷开发中包含(Activity、Service、BroadCast Receiver、Provider

    Lib lib库,为Component提供了具体的实现,封装了其需要的各种方法


    从图中我们看到,

    首先Frame包通过配置文件决定项目的模块,这样来满足我们上话提到的各种需求,

    此处的Model是我强加来的,其实Frame只需要依赖Component即可以构成项目,因为从依赖链看往往Component会依赖一个特定Lib,但是从逻辑看Component + Lib才完整。所以建议大家把Component + Lib想象成一个Model。

    然后每一个模块又通常被分为独立的组件和Lib,这样的好处很明显,通常变化的只有组件,而Lib一但完成只需要维护其稳定即可,当项目界面需要大变化的或需要我们向三方提供此模块功能的时候可以直接提供此Lib,也就是我们说的SDK

    最后是我们项目积累封装好的各中jar包,例如图上提到的HTTP、FILE等工具类,可以直接被依赖进来,提高了复用率,我们还可以随时丰富其接口,供大家使用。


    敏捷开发的的架构基本是这样,他充分体现了灵活、高效,怎么样,赶快阅读博主的第三篇《android 敏捷开发 环境搭建》,一起开始我们的敏捷开发之旅!

    传送门

    android 敏捷开发系列(一)——《啥是敏捷开发

    android 敏捷开发系列(三)——《环境部署》
    展开全文
  • 一、什么是敏捷开发敏捷开发就是一种办事流程,加快产品等研发。敏捷就是少文档,多迭代,多交流,更多的责任放到了工程师、项目管理者身上,从而加快产品的研发周期。说白了,就是如何在Team中,组织大家更快...

    一、什么是敏捷开发?

           敏捷开发就是一种办事流程,加快产品等研发。敏捷就是少文档,多迭代,多交流,更多的责任放到了工程师、项目管理者身上,从而加快产品的研发周期。说白了,就是如何在Team中,组织大家更快更好地做事情,不过其主要应用在软件项目管理上。

    https://www.cnblogs.com/itbuyixiaogong/p/9056918.html(重点)

    http://www.cnblogs.com/vijozsoft/p/3512676.html

    https://blog.csdn.net/x1021333506/article/details/81937375 

     

    二、敏捷开发联盟

    https://www.csdn.net/article/2010-12-16/284011中国敏捷软件开发联盟2010年正式成立

    https://www.jianshu.com/p/2217b05d9b51 2010年Martin Fowler等17人,正式提出了Agile(敏捷开发)这个概念,并共同签署了《敏捷宣言》

    三、推荐敏捷必备工具

    https://blog.csdn.net/devopscsdn/article/details/78708923 看完这篇博客,你可以找到主流的敏捷开发工具。

    AutoHotKey http://www.autohotkey.com 几乎可以将任何手动能完成的功能改为用脚本自动完成。

    四、敏捷开发方法

    主要理论:

    https://www.sohu.com/a/225413029_114819

    https://zhidao.baidu.com/question/1387782203020441540.html

    你可购买一些书本看看:

     

     

    五、C#敏捷开发

    六、总结

           C#明捷开发,应用在架构设计中——C#.架构设计(二)c# 项目中包含了多个模块或多个功能,如何灵活打开/关闭、添加/删除某个模块或功能

    展开全文
  • 本博将通过 讲解敏捷开发概念->敏捷开发架构思想->开发环境搭建->项目源码敏捷开发构建、拆分 等逐步带您走进android敏捷开发的世界。 学敏捷开发,开启 架构师之路..(夸张了呵呵,其实没有,这是基础) 注:本系列...
  • 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和...
  • 微软澳大利亚的解决方案架构师Tom Hollander,在TechEd Australia大会上举行了一场题为“敏捷团队中的架构师角色”的演讲。在演讲中,他讨论了他作为领导敏捷团队的架构师所做的工作。  在谈到架构师的角色时,...
  • https://gitee.com/shuzheng/zheng web开源框架
  • 本文将会讨论如何协调公司内各个工程师团队之间的合作,从而高效地保持系统的弹性和灵活性,以满足敏捷开发的需求。本文选自《Node.js微服务》。
  • 但是对于敏捷开发中的架构师因该如何展开工作以及他们的工作职责是什么,查了一些资料,结合自己的实践做一些总结: 1、将系统分割成更小的部分,以及合理的架构边界和相互之间的接口  在项目的执行任何时期...
  • 在精益敏捷开发中, 如何进行软件架构设计, 一直是个有趣的话题◦ 此份材料主要便是在探讨, 在精益敏捷开发中运用简单, 轻量级, 视觉化的工具, 使得精益敏捷开发的团队成员, 可共同的协作, 以更高效的方式, 设计出...
  • 关于敏捷开发的文章很容易给人留下这样的印象:构架并不重要,它只是偶然形成的一个晦涩的词语而已。本文则要解释的正是架构的重要作用、它在开发周期中的意义、它与开发人员的关系,以及对系统成本消耗的影响。 ...
  • 敏捷开发流程总结

    2010-07-20 15:36:00
    Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望。敏捷开发在其他业界的应用是否理想不得而知,但以下总结了我所在公司的敏捷开发试验,希望可以...
  •  敏捷开发是一种以用户的需求进化为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个...
  • 敏捷架构的冲突

    2011-10-03 04:14:56
    英文原文:Agile and Architecture Conflict 实施敏捷方法和设计企业...敏捷开发强调随着对业务领域的深入理解,逐步调整设计和计划。架构设计则要求建立起技术架构(technology stack)。它可以满足质量属性(qualit
  • 迭代+自适应构成了敏捷的核心,进一步来说包括:短周期迭代交付,可视化,自适应调整,开放式及时沟通,敏捷实践的基本都围绕这些展开。何为架构?在技术领域,架构需要保证高度的概念完整性,否则...
  • 搭建轻量级的架构,没有轻量级的开发原则是不行的。 传统的软件工程理论是统一软件过程,统一软件过程说的简单点就是沟通,建模,开发,维护。 大家注意,这是一个一次性的过程,也就是每个阶段必须要...
1 2 3 4 5 ... 20
收藏数 62,667
精华内容 25,066
关键字:

敏捷开发架构