前言:为什么敏捷开发(Agile)逐渐进入到Android世界呢? 因为Android已经跨越单机开发,迈入多机整合、多屏互动的领域了。尤其是当今兵家必争的智慧家庭,以及新兴的智能城市领域。Android的项目日益扩大、复杂化。于是大型开发项目需要加入新潮的软件工程、新一代的架构设计思维和模式。
为什么敏捷开发与Android是个很好的搭配呢? 理由之一是:Android有完善的测试框架,有利于建立TDD测试机制来推动迭代过程。理由之二是:Android平台架构是一个多层框架(Layered Framework)体系,框架内涵是代码,满足敏捷原则:”各项架构设计决策都必须迅速落实为代码”;有利于密切配合敏捷迭代过程。
大型的Android开发项目和团队,应该如何采用敏捷过程、如何基于创新型的架构设计,让项目经理(PM)有效地组织开发、设计及测试人员,灵活敏捷地面对复杂多变的需求,维持高度的用户体验。
本书缘由:高焕堂于2013年在日本退休之前,基于日本师徒制的要求而传承给下一代架构师的架构思考技术(俗称设计心法)。25年来他专精于A段(投资决策前)架构设计,退休闲暇将之写成中文,欢迎大家指教。
目录:請看目錄
欢迎访问 ==>高老师的博客网页
高焕堂:MISOO(大数据.大思考)联盟.台北中心和东京(日本)分社.总教练
ee ee
[#2251] #敏捷开发&设计思考# 敏捷开发,就客户或业主而言,代码是目的,而团队的协作&沟通,以及架构设计都是手段。然而,对于团队而言,代码和TDD(拿需求来测试代码)则是手段,借之来调整、促进团队有效协作&沟通,以及促进架构迅速重构,得出有效的架构设计;则是目的。欢迎访问:http://t.cn/8Fo3z3r
[#2252]自从1995年之后,在计算机语言上,基类/子类之关系,就逐渐从内涵转向形。例如,在Java里,基类/子类之间的keyword就是用extends了;其可包容组合与继承两种涵意。
[#2253]组合与继承都是领域的内涵,再抽像出共通之形,就看出EIT造形了。 //KorukH:通过组合来实现的话,可能更好? //高焕堂: EIT是一种造形,Inherit关系是一种内涵;extend关系是另一种内涵。就像唐诗七言绝句的造形,无论李白或杜甫的诗都能以"七言绝句"的形来呈现。
[#2254]大型系统或产品,参与的架构师团队人数也愈多,如何让架构设计活动敏捷起来,是个关键。以代码造形为出发点的架构设计思路,能让架构设计活动敏捷起来。当设计与开发是基于一致的形时,最能够支持Scrum的"设计一点、开发一点"的基本原则。因此,大系统也能顺利采用敏捷了。
[#2255]为什么我提出的EIT造形,能化解敏捷开发里,架构师与开发者之间的衔接问题呢? 答案是:因为EIT代码造形,既是代码,又是设计模式。它是架构设计师(建筑师)心中的"砖块";也是开发者(营建商)心中的砖块。前者是设计单元;后者是施工单元。两者同出而异名,是敏捷和谐的基础。玄之又玄、众妙之门。
[#2256]架构设计者、代码开发者、TDD测试者,是敏捷开发里的三个重要角色(Role)。小团队里,可以有一个人兼任三种角色。在大团队里,则分别有不同团队担任。如何维持开发项目的顺畅运行,架构设计的角色就非常重要了。
[#2257]兹举个例子,就刘备而言,当皇帝的愿景(Vision)是目的,而找到可行的大策略是手段。然而,对于诸葛亮而言,刘备的愿景则是手段,借之来引导找出先三分天下,而后统一天下的大策略;则是诸葛亮的目的。领悟其背后的思维和道理,就能深刻领悟敏捷开发,并让敏捷开发落地。
[#2258]#EIT架构设计思考# 虽然敏捷鼓励软件开发要迅速落实为代码(Code),这是合理的(外在)情境。但是,我们心中可以有多种视角(View)去看它。我建议的视角是:将代码看成架构的外貌。因此,架构师如何让 "架构" 搭配敏捷跌代的过程,而逐渐成长,就是焦点谜题了。http://t.cn/8Fo3z3r
[#2259] Android基于其开源开放,而主宰了多云融合、多机整合、多屏互动的系统平台(物的层面)。函盖了一动互联网、物联网、移动终端。敏捷则涉及开发团队(人的层面)的合作和讨论。而架构则确保人事物三方的和谐推进和目标的圆满达成。
[#2260]回复申导: 例如,小孩想吃鱼,对小孩而言,鱼是目的;而对母亲而言,应该将鱼变成为手段,重构出更优化的钓鱼模式则是目的;因而会钓到更多的鱼,将小孩的目的实现得更好。
[#2261]我的EIT软件代码造形的设计,是完全非专利,是社会公共财。能不能将非专利的创作,与专利创作两者进行有机结合呢? 两道菜,一道收钱,另一道不收钱,相辅相成,这样结合有可落地性吗?
[#2262] #EIT架构设计思考# 架构师是设计师,其职责是从复杂、不完整、不明确的问题处境中,找出简单的跌代起点。可是如何找出简单呢? 华人非常依赖"抽象"思维,而针对什么而抽象呢? 基于完整的客户具象的需求而抽象。然而,敏捷又从需求尚未完整时就起步,又何来的完整又具象的需求呢? 这是冲突点。
[#2263] #EIT架构设计思考# 如果敏捷团队有困难时,如果从团队管理视角去求解,而无效时;很可能是架构设计是问题所在,应该去调整架构设计师的视角。
[#2264]回复TriChaos: Java的Thread基类,它的子类(Subclass)角色是Task。还有Java的基类/子类之关系,其keyword是 "extends" 而不是 "inherit"。 //TriChaos:一般来说,组合关系不会表达为继承,第一个图中应该是菱形更合适。另外,组合和继承经常可以结合一起使用,如典型的bridge模式。
[#2265] #IT+Design Thinking# 现在主要的议题是:如何培养架构师的思维去设计这种组合架构,来配合敏捷跌代,提升敏捷的流畅性。更多新思维:http://t.cn/8Fo3z3r
[#2266] 1986年C++是传统;1996 年java语言的 子类(Sub-class) extends 基类(Super-class),一般称为非原本的 inheritance 类体系 架构师以组合思维,让架构以有机方式,从小而大组合而成大架构,这称为organic growth。 //606Qin:这和敏捷有关系?
[#2267]回复KorukH: <类似于Android里的setOnClickListener(),传入的接口实现就是轮胎。> 涵义上是的;但使用 {子类 / 基类} 的extends 关系,而不是 inherit关系而已。 //高焕堂:架构师以组合思维,让架构以有机方式,从小而大组合而成大架构,这称为organic growth。 //606Qin:这和敏捷有关系?
欢迎访问 ==>高老师的博客网页
高焕堂:MISOO(大数据.大思考)联盟.台北中心和东京(日本)分社.总教练
ee ee