1.软件架构设计的WhatWhy
●啥是软件架构(SoftwareArchitecture)?
软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。组件的外部可见属性是指其他组件对该组件所做的假设。
软件架构设计就是从宏观上说明一套软件系统的组成与特性。
软件架构设计是一系列有层次的决策,比如:功能与展现的决策;技术架构的决策;自主研发还是合作;商业软件还是开源软件。
●为啥要进行软件架构设计?
业务需求层出不穷;软件系统越来越复杂;参与的人越来越多;共性和特殊性的问题越来越多;技术发展日异月新;……
2.软件架构师2.1.软件架构师是干什么的介于需求与开发的中间人良好的沟通能力能够统领全局的大牛良好的大局观能够将需求转换为技术洞悉前沿与市场嗅觉能够为软件研发提供指导见多识广的大牛需要全面思考软件系统方方面面的问题缜密地思考问题能够攻关和搞定重要技术难题公司可信赖的支柱2.2.架构师的素质
全局思维
从业务、市场,到技术实现;
从软件的过去、现在,到将来;
从外部客户,到内部研发;
从软件研发,到硬件部署;
从功能实现,到运行效率
战略思维
在所在行业的发展战略;
在业务领域的发展战略;
在技术方向的发展战略;
在潜在市场的发展战略。
前瞻思维
市场趋势的发展动向;
前沿技术的发展动向;
竞争对手的发展动向;
合作伙伴的发展动向。
抽象思维
各项业务需求:抽象成功能模块;
各项功能的实现:抽象成软件架构。
逆向思维
假如不实现会怎样?
假如没搞定会怎样?
假如没有它会怎样?
假如被延期会怎样?
2.3.架构师的分类
随着行业和社会的发展,架构师的定义和分类越来越广泛和细分,广泛和细分其实并不矛盾,如果“广泛”是x轴,“细分”是y轴,则二维坐标系x和y轴中间的任一点就是一种架构师类别。但总体来说,或目前来说,集合业界的大致认知,总结如下:
No.分类描述1解决方案架构师与客户探讨业务需求,将业务、市场,与技术、产品结合起来,为客户提供解决他们需求的方案。2系统架构师也称应用架构师。最终确认和评估系统需求,并将业务转换为技术,为研发人员制订核心框架与技术规范为研发工作澄清技术细节并扫清技术障碍。3平台架构师这里的平台其实包括两个平台,一个是系统平台,也就是负责搭建多个系统整合的系统应用平台;另外一个其实是基础平台,是专门负责搭建基础技术平台;两者其实区别蛮大,也经常容易被从业人员混乱。举个简单例子,金蝶有平台架构师一职,但是金蝶BOSS应用和金蝶中间件两者招聘的对象和技术要求是截然不同的。4业务架构师业务架构其实已经开始脱离技术层面了,但是它要求架构师有跨越多系统的大局观,去整合和组织不同系统的技术平台与交互模式。其实这个职位的未来也就是CIO了。5网络架构师过去,我们可能听的最多的是网络工程师。不错,一个优秀的网络架构师必须有足够的网络技术基底,并且它的