在讲到软件架构的概念时,首先我们要了解到,架构是在做什么样的事情,它在整个软件开发周期中所属什么样的位置。
之前学习软件工程时,我们学到了开发模型,里面涉及到需求分析,概要设计,详细设计,编码,测试。但事实上,没有提到架构这个东西。
为什么这么重要的东西没有在软件开发模型体现呢,其实是因为软件架构的兴起是滞后于软件开发模型的。比如瀑布模型,是用结构化的方式设计的,也就是面向过程的程序,那时候是没有涉及到架构的概念的。
其实架构设计就放在原来的需求分析之后,软件设计之前。因为需求分析比较偏向于业务的(一般需求来自于客户的业务),而软件设计是偏向技术,就是利用技术去完成需求所定义的内容。这个之间就很可能出现断代鸿沟,因为客户方更懂业务,需求分析是大量跟客户做对接,而技术人员就是拿着这个需求规格说明说去实现,但是技术人员不懂业务,就可能出现一个需求规格书转化为技术的过程会出现问题,因为各自的技术人员实现出来的东西不一样。
所以就需要架构设计这个环节,架构师需要理解需求,然后将需求砍成多个板块,然后把每个板块去完成一部分需求,从而简化需求。