《软件架构设计》温昱著读后感(一)

弄懂了2个关键概念,如下:

啥是软件架构(Software Architecture)?

软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。组件的外部可见属性是指其他组件对该组件所做的假设。

软件架构设计就是从宏观上说明一套软件系统的组成与特性。

软件架构设计是一系列有层次的决策 ,比如:功能与展现的决策;技术架构的决策;自主研发还是合作;商业软件还是开源软件 。

说白了就和盖房子一样,卧室设计成什么样,客厅设计成什么样,厕所设计成什么样,上述中的“卧室”,“客厅”,“厕所”就相当于软件中的各个模块,软件架构确定局部模块采用什么技术,确定整体采用哪种技术将他们统一起来。

为啥要进行软件架构设计?

计算机科学和程序设计的飞速发展,使得软件设计应用到从航空航天到日常生活的方方面面。单个人开发一段小程序的做法早就过时,大范围协作的工程化时代随即到来。

随着大范围协作的效率问题和软件复杂度的爆炸式增长,管理和技术方面的各种不确定性也爆发性增加,导致软件开发的质量无法得到有效保证,周期和成本无法得到有效控制。

人们一直在寻求找到这些问题的解决办法。然而 Fred Brooks 在 1975 年出版的软件工程圣经《人月神话》中说,没有(能解决所有问题的)银弹(There is no silver bullet)。

自此,人们发展了项目研发过程管理来控制管理活动的不确定性,同时也发展了软件架构设计方法来控制技术方面的不确定性。

进而在实践中不断的总结和改进,用于有效指导和最大程度的保障软件开发的质、周期和成本。

通俗来说,现在不是单个代码英雄的时代,现在的软件不可能一个人独立完成,那就得协作,协作就会出现一系列问题,如何进行管理,如何使开发的质量得到保证,如何不至于软件开发延期,这就需要引入软件架构设计来解决。

posted @ 2020-03-08 13:19  _小白兔  阅读(782)  评论(0编辑  收藏  举报