序言:在做自动化测试的过程中,曾努力的对软件设计学习过一段时间,间间断断的,突然发现接触到了软件流程,软件建模(包括数据库建模)、web设计,当然,更多的是用的java设计(数据结构、模式应用、算法等)。虽然不够深入,但是将这些细碎连接起来,在软件架构上也有了自己的一点思考和总结,其实不管做测试也好、做自动化测试也好,还是进行软件设计,都有着一套理念类似的架构学。
一、生活中的架构
相信大家都知道“马斯洛需求层次理论”,在其理论中,把人类需求分成生理需求、安全需求、归属与爱的需求、尊重需求和自我实现需求五类,依次由较低层次到较高层次排列。这里不讨论其理论的正确性,这也是一种架构,将人类需求实现的各个层次进行了细分,每一个层次之间都有详细的职责细分,每个层次之间都有清晰的关系接口,因此普通人能够快速基于此架构拓展自己的特性需求。
在我想来,人的思想意识也需要自己的架构,你的最底层是你的原则,也就是做人方式,是固定的,不会轻易更改,变动越大,影响越大,然后依次是做事方式和表现方式,可以随着环境的不同进行适应。
二、软件设计架构
1、软件设计流程:
一般的软件设计基本流程会是:需求分析—架构设计—系统设计—系统开发—测试上线。当然,从产品整体上而言,需求分析前期还有战略制订以及可行性研究,上线后期还包括应用数据分析等。
2、软件架构介绍:
软件架构简单而言,觉得有一句话说的很好:在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。其实说的简单点:软件架构就是从整体上定义软件系统的运作流程、各个模块以及模块间的接口。
3、软件架构作用
软件框架的作用是使软件设计层次清楚,可以达到不同模块细分到不同个人开发的效果,各个接口之间能够无缝连接。但是架构虽好,也需要看实际情况,不能一味为了追求花哨的架构,而忽视了其成本。软件架构的真正作用是分离关注点、提升软件需求灵活性和维护性。但是相应的,其前期复用的成本效益也显著提高。因此,需要根据软件项目的规模综合考虑,选择一套合适自己的架构,只是为了临时住而搭建一个草房子,就没必要又是设计地基、又是设计扩展性等问题了。
4、软件架构师发展
从一个从软件实现角度上说,写代码并不是其最重要的工作,最重要的工作就在于其架构的设计,当架构设计好之后,其具体代码细节则是一个填充的过程。就像做房子,房子图形架构都设计好了,那么水泥和各材料就只是按照其形式搭建而已。
而根据我的总结,要成为一名软件架构师:则必须经历这么一个过程:
软件业务学习——开始能够写函数和类(即能够写得了过程性的函数和对象性的类集合,能够应用数据结构和算法实现)———写模块和引擎(能够写一些给外部调用的模块和引擎,能够应用模式,能够定义好自己的接口)——写框架与平台(能够应用抽象思想,善于利用各种架构以及搭建自己的架构,能够区分和选择技术重点、快速验证技术实践等)。自我认为自己还在第一个阶段。反思以前开发的测试项目,大都接口定义太少,更多的是面向类实现的编程,而不是面向接口的编程,最近一直在看java的源代码,才深有体会面向接口的编程和一些简单模式的真正应用——软件业务分析。