明晰软件架构与数据结构
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师却误以为软件架构就完全是关于数据结
千家信息网最后更新 2026年11月02日明晰软件架构与数据结构相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师却误以为软件架构就完全是关于数据结构,这就不对了。之所以将软件架构与数据结构在本文中并提讨论,是为了让我们对之有更清晰的认识。读者后面会明白,这种清晰的认识对于我们的工作是有益的。 数据结构在Wikipedia上的定义是:为了有效使用数据而在计算机中存储和组织数据的特定方法。这一定义说明了为什么我们又称之为算法。同样是在Wikipedia上,我们能找到对于软件架构的定义:一个系统所需结构的集合,包括软件元素(element)、元素间的关系和属性。定义中的"元素"是一个很宽泛的称呼,即可以指软件组件(component),也可以指一个独立的子设备。
单从定义来看,软件架构与数据结构具有不同的抽象层次,前者更放眼于功能,后者更着力于效率。为了读者能更好地理解这种层次之别,让我们以软件开发流程中的两个关键步骤为例加以说明。软件开发的设计阶段存在概要设计和详细设计两大步骤,概要设计应重点阐述软件架构,而详细设计应着力于解释数据结构。我们都知道,在开发过程中概要设计先于详细设计,因而可以推测出软件架构处于更高的抽象层次。我看到过不少软件概要设计文档一上来就讲数据结构,这是文档的作者对于软件架构与数据结构没有加以明晰的缘故。
做软件设计首当其冲的不是数据结构设计,而是架构设计,这一点无论怎样规模的软件都正确。架构设计强调的是设计概念(我有时也称之为模型),即软件"长什么样"。对于实现同样功能的软件模块,在有概念和没有概念时所设计出来的数据结构会很不一样。即使采用的算法相同,但命名很有可能不同,且有概念的命名更具可读性。因此,"先架构后结构"的方法,有助于写出更具可维护性的代码。现实中,之所以存在大量难以维护的代码,正是因为设计者省去了概念塑造这一步骤。
另一点需要指出的是,软件架构设计与数据结构设计对工程师的能力要求并不完全相同。软件架构设计需要更多的是概念能力,即将细节进行一定的抽象和概括的能力。数据结构设计所需的能力却是对于计算机体系结构、编程语言和各种算法的掌握。
分清软件架构与数据结构的意义在于: 1) 方便沟通。不至于他人在说软件架构时,我们却只想着数据结构。 2) 明白架构设计的重要性。架构设计用于引导数据结构设计,数据结构设计是用来表达架构的。 3) 理解架构设计与数据结构设计所需的能力之别,而不至于认为"数据结构是软件的一切"。
单从定义来看,软件架构与数据结构具有不同的抽象层次,前者更放眼于功能,后者更着力于效率。为了读者能更好地理解这种层次之别,让我们以软件开发流程中的两个关键步骤为例加以说明。软件开发的设计阶段存在概要设计和详细设计两大步骤,概要设计应重点阐述软件架构,而详细设计应着力于解释数据结构。我们都知道,在开发过程中概要设计先于详细设计,因而可以推测出软件架构处于更高的抽象层次。我看到过不少软件概要设计文档一上来就讲数据结构,这是文档的作者对于软件架构与数据结构没有加以明晰的缘故。
做软件设计首当其冲的不是数据结构设计,而是架构设计,这一点无论怎样规模的软件都正确。架构设计强调的是设计概念(我有时也称之为模型),即软件"长什么样"。对于实现同样功能的软件模块,在有概念和没有概念时所设计出来的数据结构会很不一样。即使采用的算法相同,但命名很有可能不同,且有概念的命名更具可读性。因此,"先架构后结构"的方法,有助于写出更具可维护性的代码。现实中,之所以存在大量难以维护的代码,正是因为设计者省去了概念塑造这一步骤。
另一点需要指出的是,软件架构设计与数据结构设计对工程师的能力要求并不完全相同。软件架构设计需要更多的是概念能力,即将细节进行一定的抽象和概括的能力。数据结构设计所需的能力却是对于计算机体系结构、编程语言和各种算法的掌握。
分清软件架构与数据结构的意义在于: 1) 方便沟通。不至于他人在说软件架构时,我们却只想着数据结构。 2) 明白架构设计的重要性。架构设计用于引导数据结构设计,数据结构设计是用来表达架构的。 3) 理解架构设计与数据结构设计所需的能力之别,而不至于认为"数据结构是软件的一切"。
设计
软件
结构
数据
架构
数据结构
概念
能力
概要
结构设计
元素
工程
工程师
步骤
算法
开发
不同
相同
之所以
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
科技互联网产品
金融科技还是互联网
互联网 科技公司
顺玮阁互联网科技
国外互联网科技网站
衡水科技产业互联网平台
广西拼得多互联网科技有限公司
哈尔滨秒房互联网科技有限公司
央行互联网金融科技公司
科技与互联网哪个更好
中化能源互联网科技招聘
福建科技产业互联网发展
互联网还是高科技吗
广州新华互联网科技学校电竞方面
云南省自由互联网科技有限公司
西安有哪些互联网高科技企业
恒生科技指数 中概互联网
科技互联网专业务虚会材料
青岛互联网科技园
百单网互联网科技有限公司怎么样
科技互联网项目
互联网为科技
科技互联网的估值
互联网媒体平台算高科技产业
科技类公司包括互联网吗
互联网科技的全部知识
互联网公司属于科技吗
广西泛欧互联网科技有限公司
现代科技的标志之一的互联网