前段时间听丛斌博士的公开课,里边谈到了中国国内最缺的人才就是软件架构师。我们经常提到软件架构,但到底什么才是软件架构?软件架构和产品设计,需求分析和编码到底有什么关系?
另一个近期发生在自己身边的真实案例:
去年和一个朋友聊天,谈起来他负责的一个公共服务平台建设项目的进展,他说他聘请了一个架构师,已经把软件架构设计完毕了,然后要了一笔钱,说下边应该找个专业的需求分析把需求分析做一做,然后找个编码团队把代码编一下就可以交付了。我听后就觉得我朋友被骗了。
很多人对架构师有些误解,认为架构师就应该高屋建瓴,设计一个框架(类似邓公那样,在一个特定地点画一个圈_)给团队说:你们就按我说的做去吧……然后架构师就算完成任务了。而实际上架构师根本不是这样的,或者说这些只是架构师工作的很小的一部分。
什么是软件架构
那到底什么是软件架构?
大神Grady Booch是这样解释的:
“所有架构都是设计,但并非所有的设计都是架构”。
“架构反映了使一个系统成型的重要设计决策,而重要性则通过改变的成本来衡量”。
说的直白点,其实就是设计中的重要决策就是架构。
架构涉及的内容,可能会涵盖但不限于如下几个方面:
- 子系统/分系统的划分与实现方式
- 软件系统的结构
- 框架选择
- 设计方法与模式
- 软件生命周期模型的选择
软件为什么要有架构
我是在十几年前开始做第一个软件项目,用C++写的一个监控程序,规