明晰软件架构与数据结构
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师却误以为软件架构就完全是关于数据结
千家信息网最后更新 2024年11月26日明晰软件架构与数据结构相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师却误以为软件架构就完全是关于数据结构,这就不对了。之所以将软件架构与数据结构在本文中并提讨论,是为了让我们对之有更清晰的认识。读者后面会明白,这种清晰的认识对于我们的工作是有益的。 数据结构在Wikipedia上的定义是:为了有效使用数据而在计算机中存储和组织数据的特定方法。这一定义说明了为什么我们又称之为算法。同样是在Wikipedia上,我们能找到对于软件架构的定义:一个系统所需结构的集合,包括软件元素(element)、元素间的关系和属性。定义中的"元素"是一个很宽泛的称呼,即可以指软件组件(component),也可以指一个独立的子设备。
单从定义来看,软件架构与数据结构具有不同的抽象层次,前者更放眼于功能,后者更着力于效率。为了读者能更好地理解这种层次之别,让我们以软件开发流程中的两个关键步骤为例加以说明。软件开发的设计阶段存在概要设计和详细设计两大步骤,概要设计应重点阐述软件架构,而详细设计应着力于解释数据结构。我们都知道,在开发过程中概要设计先于详细设计,因而可以推测出软件架构处于更高的抽象层次。我看到过不少软件概要设计文档一上来就讲数据结构,这是文档的作者对于软件架构与数据结构没有加以明晰的缘故。
做软件设计首当其冲的不是数据结构设计,而是架构设计,这一点无论怎样规模的软件都正确。架构设计强调的是设计概念(我有时也称之为模型),即软件"长什么样"。对于实现同样功能的软件模块,在有概念和没有概念时所设计出来的数据结构会很不一样。即使采用的算法相同,但命名很有可能不同,且有概念的命名更具可读性。因此,"先架构后结构"的方法,有助于写出更具可维护性的代码。现实中,之所以存在大量难以维护的代码,正是因为设计者省去了概念塑造这一步骤。
另一点需要指出的是,软件架构设计与数据结构设计对工程师的能力要求并不完全相同。软件架构设计需要更多的是概念能力,即将细节进行一定的抽象和概括的能力。数据结构设计所需的能力却是对于计算机体系结构、编程语言和各种算法的掌握。
分清软件架构与数据结构的意义在于: 1) 方便沟通。不至于他人在说软件架构时,我们却只想着数据结构。 2) 明白架构设计的重要性。架构设计用于引导数据结构设计,数据结构设计是用来表达架构的。 3) 理解架构设计与数据结构设计所需的能力之别,而不至于认为"数据结构是软件的一切"。
单从定义来看,软件架构与数据结构具有不同的抽象层次,前者更放眼于功能,后者更着力于效率。为了读者能更好地理解这种层次之别,让我们以软件开发流程中的两个关键步骤为例加以说明。软件开发的设计阶段存在概要设计和详细设计两大步骤,概要设计应重点阐述软件架构,而详细设计应着力于解释数据结构。我们都知道,在开发过程中概要设计先于详细设计,因而可以推测出软件架构处于更高的抽象层次。我看到过不少软件概要设计文档一上来就讲数据结构,这是文档的作者对于软件架构与数据结构没有加以明晰的缘故。
做软件设计首当其冲的不是数据结构设计,而是架构设计,这一点无论怎样规模的软件都正确。架构设计强调的是设计概念(我有时也称之为模型),即软件"长什么样"。对于实现同样功能的软件模块,在有概念和没有概念时所设计出来的数据结构会很不一样。即使采用的算法相同,但命名很有可能不同,且有概念的命名更具可读性。因此,"先架构后结构"的方法,有助于写出更具可维护性的代码。现实中,之所以存在大量难以维护的代码,正是因为设计者省去了概念塑造这一步骤。
另一点需要指出的是,软件架构设计与数据结构设计对工程师的能力要求并不完全相同。软件架构设计需要更多的是概念能力,即将细节进行一定的抽象和概括的能力。数据结构设计所需的能力却是对于计算机体系结构、编程语言和各种算法的掌握。
分清软件架构与数据结构的意义在于: 1) 方便沟通。不至于他人在说软件架构时,我们却只想着数据结构。 2) 明白架构设计的重要性。架构设计用于引导数据结构设计,数据结构设计是用来表达架构的。 3) 理解架构设计与数据结构设计所需的能力之别,而不至于认为"数据结构是软件的一切"。
设计
软件
结构
数据
架构
数据结构
概念
能力
概要
结构设计
元素
工程
工程师
步骤
算法
开发
不同
相同
之所以
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全模式如何联网
go 高并发下载服务器
小黄鸟下载服务器
jstor期刊数据库
数据库实现二级响应
企业服务器的硬件配置有哪些
糖尿病肾病数据库
咸宁订制软件开发企业
惠州无线软件开发报价行情
戴尔服务器做网口聚合
清除表格内特定数据库
计算机网络技术课程教学内容
数据库建设 需求分析
网络安全法几年
苏州云服务器有什么区别
服务器资源管理器可以测试
word链接数据库
服务器机房用 天花机吗
达维的圣契六零数据库
如何用excel做个小型数据库
绝地求生服务器选哪个
湖南标准软件开发市场报价
网络安全类专业研究生好考吗
数据库技术中er图三要素
穿越火线与服务器断开
长城公司基础软件开发岗
数据库批量删除卡死
不属于网络安全策略的组成
网络技术公司业务
目前处于前端的网络技术