软件开发中的3P和1A(四)-architecture总结

一.什么是架构
   多个产品抽象出来的共性部分,进行有机的联系,成为架构。
   目前我们抽象的主要是技术方面的共性部分,名为sea。
   sea架构描述的是一个软件中包含的要素以及要素之间的关系,形成一个骨架,可以在此基础上搭建多个产品。
   架构是一个静态的成果,可以体现在文档上,也可以体现在支持库及开发工具中。

二.为什么要提出架构
   我们准备围绕若干业务领域开发多个产品,再从这些基准版本客户化,形成客户化版本,
这样,我们将会有一个庞大的产品树,根据以往的经验,非常容易出现产品混乱的情况,以及重复开发的情况,
我们想通过架构及其之上的开发、管理工具来进行保障,避免出现上述情况。

三.架构能起到什么作用
   目前我们在sea架构进行多个产品的开发,可以发挥如下作用:
   1.软件通用和专有部分的分离
     sea架构是一个开放的体系,在后续的开发过程中,将会继续吸收一些通用的部分。
   2.技术上难易的分离
     大部分技术问题已经被sea屏蔽,应用产品开发人员主要精力集中在业务上。
   3.网络版和单机版的开发一致性
     sea架构屏蔽了网络层,对于应用开发人员来说,按照单机程序进行编码、调试、单元测试,
     发布时可以通过工具生成网络版。

四.架构的不同视图
   对于一个架构,可以从多个对比的角度来分析:
   1.开发/运行
     软件以两种形态存在:开发版;运行版;
     开发版视图涉及到如何组织、操作开发版本。
     运行版视图涉及到执行文件的组织及软件如何运行。
   2.逻辑/物理
     物理指的是针对某个具体的技术平台。
     逻辑指的是技术平台无关。
   3.静态/动态
     源代码的组织、执行文件的组织,这些都属于静态的范畴。
     开发版如何转换为运行版,软件如何运行则属于动态的范畴。
   4.技术/业务
     软件是技术和业务的综合体,技术和业务是构成软件的两个维度。
     目前sea属于技术架构,业务是否能提炼出架构,有待研究,可以参考领域。
   

   各个角度可以综合,进行精确描述。
   例:物理开发静态视图描述的是某个技术平台上开发版的源代码组织。
       物理开发动态视图描述的是某个技术平台上开发版的设计成果和源代码如何转换为运行版。

五.架构需要考虑的因素
   目前考虑到的:
   1.复用体系
   2.运行安全
   3.版权安全
   4.错误处理体系
   5.调试体系
   6.日志体系
   7.界面框架
   8.OR map
   9.工作流

六.我们希望架构能够达到的高度
   1.业务架构
   2.架构能够支持外部协作

你可能感兴趣的:(Architecture)