初识软件体系结构(架构)
对于架构这一概念一直以来都是一知半解,老师提到很多,对自己而已仅仅只是耳熟而已。对于一个在校大学生而言,我们所做的系统没有那么复杂,架构似乎很遥远,在我们的编程过程中没有涉及到相关知识,而所做的系统也仅仅只是实现功能。
随着不断的深入学习,我们会在大量的编码过后发现,可以将代码分模块编写,而编程的效率也大大提高,那么这是不是对代码的架构?今天有幸得老师推荐了知识库9篇关于架构的文章,通过阅读,也算是对架构有了一个粗浅的理解。
什么是架构?
文章第一部分以人为例,通过人类社会生产活动的发展来解释架构。结合作者的观点我来谈谈自己对于架构的认识。
以一块手表为例,人们最开始使用手表的时候,也许只有时针,比较笼统的给出大概的时间范围,而随着人们对时间精度的要求,时针所代表的小时范围太大,如何能将小时细分更好的显示时间,这个时候我们定义了一个新的指针——分针,将每一小时更加精确的显示。这个时候就产生了分工,将时间的显示分成两部分构成,同时这两部分之间又有着密切的联系,时分组成一个整体完成一块表所具有的活动,这就是架构。
对架构做一下总结:
1.规定目标系统的范围(即边界),这样做的好处在于对需要架构的系统有一个整体的认知。
2.对目标系统进行切分时遵循的原则应该是利于不同的系统,同时对于切分出来的部分,并行关系效率更高。
3.对于切分出来的部分应当互有联系,不能成为一个独立的个体。
4.这些部分之间通过联系,作为一个整体完成工作。
什么是软件架构?
读完作者第六章的内容,对于什么是软件架构还是云里雾里,在这里谈谈我自己的理解:首先软件架构依旧是架构,它具有架构的一切特点,而它相对于架构来说更加具体,有自己需要解决的问题。那么对于软件来说,必然是要完成某个特定的功能,而这个功能必然有着自己在现实生活中的对照,即流程。那么我们的目标应该就是要分析软件的业务问题,将业务模块化,切分成不同的部分,再辅以代码进行实现。所谓软件架构,应当是在宏观的角度将软件过程分解,切分,不关注具体的实现,为编码人员构架一个具体的框架,即边界,而具体内容的实现,由编码人员负责。
架构切分的原则:
架构的切分是内部活动,对系统所要解决的问题没有任何影响。
所有的架构分拆,应当形成树状的结果,不应该变成有向图,树的层数越多沟通越多,效率越低,分层要越少越好。
为何要架构?
归根到底,架构的目的在于提高效率,获取更大的利益,也就是成本为王!架构,将系统细分的同时能够及时而有效的解决出现的麻烦。
一个系统功能越强大,则它的内部环境越发精巧,而架构正是将内部环境精巧化的过程。
架构师解决的是别人的问题,不是自己完成工作的问题。