潍坊市论坛

注册

 

发新话题 回复该主题

软件架构设计 [复制链接]

1#
上海市名中医王庆其教授我治疗重度口腔溃疡 http://www.beishacan.com/bsspz/6176.html

对于软件架构设计,我有·很多博客文章都专门谈及过,今天再次拿出来谈下,做为一个软件架构师,做架构设计是必须要考虑的内容。

架构师是整个软件工程和软件生命周期里面相当重要的一个角色,介于软件需求和开发之间的一个承上启下的关键角色,即能够实现业务需求和场景到最终软件实现的第一次高度抽象建模。在更早的阶段一般会谈系统分析员角色,那么这个角色往往会同时兼顾软件需求和软件架构的工作。

软件架构简单来说就是将业务或软件需求进行高度抽象,形成静态和动态的模型,通过形式化的模型来表达和阐述真实的业务需求。同时这个抽象化的模型又能够很好的指导后续的开发实现。

软件架构要做三个方面的工作:

第一:针对软件需求中的业务场景和流程,功能性需求进行功能性架构设计,其中包括了核心的功能架构设计,子系统和模块的划分,接口和集成模式的设计,数据架构和数据模型的设计等。即通过概念模型,类图或数据库设计等静态模型+用例,序列图等动态模型共同来抽象表达出完整的业务需求。

第二:通过软件需求中的非功能性需求,来考虑整个系统的技术架构设计,技术架构本身又包括了类似消息,缓存,安全,日志等关键技术的实现,也包括了IT基础设施和部署架构的设计,同时还包括了类似高可用,高可靠,高性能,高扩展等非功能性需求满足的架构设计。

第三:对于软件生命周期和软件工程域标准内容的设计,其中包括了开发框架,技术选型,软件生命周期,持续集成模式,架构标准规范,开发规范,测试规范,以及各种架构规约和约束等方面的内容设计。同时还需要基于上面内容进行相应的架构原型搭建和验证工作,确保架构设计内容能够真正落地。

要能够做好上面三方面的内容,一个真正架构师必须既懂技术又懂业务,而对于当前很多互联网应用,由于本身工作相对细分,可以看到很多架构师往往仅仅只需要专研深核心技术领域的技术和某一垂直业务场景即可。在这点上企业内部信息化架构师和互联网本身还是存在区别,企业内部架构师更加强调业务+技术综合能力。

架构设计的核心目的是全面的理解业务需求后给出整体的技术方案,避免后续在开发实现中遗漏。架构设计内容不仅仅是指导后续的详细设计和开发,同时更加重要的是通过组件和划分和接口的设计,让后续的开发工作真正能够并行起来,最终再进行集成,以降低软件研发的复杂度,同时又缩短软件开发周期提升效率。

能够把一个复杂的大系统真正想清楚和透彻,同时还能够把大系统拆散为松耦合的多个模块,最终又在各个模块独立并行完成开发后,能够通过预先定义的接口将这些模块又组装和集成起来,这就是一个真正架构师应该做的事情。我们也可以看到,一个好的建筑工程师往往就具备如上能力。

技术最终是解决业务问题和为业务服务,也正是整个原因,一个好的架构师不应该陷入到技术驱动,而是业务驱动;不是选择最新,最热的技术或框架,而是应该选择当前最合适的技术和框架。架构师应该避免过度设计和技术狂热,而是真正做好业务和技术的适配,成本和收益的分析工作。

胸有成竹,那么一定是自己已经画过无数次的竹子,也正是这个原因架构师往往都是从一线技术开发多年的实践积累后组建锻炼出来的,好的架构师一定来源于实践而非理论,只有这样既保证了架构设计的高屋建瓴,又确保了最终的架构设计能够真正落地。长期脱离实践的架构师往往很容易犯经验主义错误,设计出空中楼阁式的架构,看起来完美,实质上却虚于表面。

预览时标签不可点收录于话题#个上一篇下一篇
分享 转发
TOP
发新话题 回复该主题