明晰软件架构与数据结构
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师却误以为软件架构就完全是关于数据结
千家信息网最后更新 2025年01月24日明晰软件架构与数据结构相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师却误以为软件架构就完全是关于数据结构,这就不对了。之所以将软件架构与数据结构在本文中并提讨论,是为了让我们对之有更清晰的认识。读者后面会明白,这种清晰的认识对于我们的工作是有益的。 数据结构在Wikipedia上的定义是:为了有效使用数据而在计算机中存储和组织数据的特定方法。这一定义说明了为什么我们又称之为算法。同样是在Wikipedia上,我们能找到对于软件架构的定义:一个系统所需结构的集合,包括软件元素(element)、元素间的关系和属性。定义中的"元素"是一个很宽泛的称呼,即可以指软件组件(component),也可以指一个独立的子设备。
单从定义来看,软件架构与数据结构具有不同的抽象层次,前者更放眼于功能,后者更着力于效率。为了读者能更好地理解这种层次之别,让我们以软件开发流程中的两个关键步骤为例加以说明。软件开发的设计阶段存在概要设计和详细设计两大步骤,概要设计应重点阐述软件架构,而详细设计应着力于解释数据结构。我们都知道,在开发过程中概要设计先于详细设计,因而可以推测出软件架构处于更高的抽象层次。我看到过不少软件概要设计文档一上来就讲数据结构,这是文档的作者对于软件架构与数据结构没有加以明晰的缘故。
做软件设计首当其冲的不是数据结构设计,而是架构设计,这一点无论怎样规模的软件都正确。架构设计强调的是设计概念(我有时也称之为模型),即软件"长什么样"。对于实现同样功能的软件模块,在有概念和没有概念时所设计出来的数据结构会很不一样。即使采用的算法相同,但命名很有可能不同,且有概念的命名更具可读性。因此,"先架构后结构"的方法,有助于写出更具可维护性的代码。现实中,之所以存在大量难以维护的代码,正是因为设计者省去了概念塑造这一步骤。
另一点需要指出的是,软件架构设计与数据结构设计对工程师的能力要求并不完全相同。软件架构设计需要更多的是概念能力,即将细节进行一定的抽象和概括的能力。数据结构设计所需的能力却是对于计算机体系结构、编程语言和各种算法的掌握。
分清软件架构与数据结构的意义在于: 1) 方便沟通。不至于他人在说软件架构时,我们却只想着数据结构。 2) 明白架构设计的重要性。架构设计用于引导数据结构设计,数据结构设计是用来表达架构的。 3) 理解架构设计与数据结构设计所需的能力之别,而不至于认为"数据结构是软件的一切"。
单从定义来看,软件架构与数据结构具有不同的抽象层次,前者更放眼于功能,后者更着力于效率。为了读者能更好地理解这种层次之别,让我们以软件开发流程中的两个关键步骤为例加以说明。软件开发的设计阶段存在概要设计和详细设计两大步骤,概要设计应重点阐述软件架构,而详细设计应着力于解释数据结构。我们都知道,在开发过程中概要设计先于详细设计,因而可以推测出软件架构处于更高的抽象层次。我看到过不少软件概要设计文档一上来就讲数据结构,这是文档的作者对于软件架构与数据结构没有加以明晰的缘故。
做软件设计首当其冲的不是数据结构设计,而是架构设计,这一点无论怎样规模的软件都正确。架构设计强调的是设计概念(我有时也称之为模型),即软件"长什么样"。对于实现同样功能的软件模块,在有概念和没有概念时所设计出来的数据结构会很不一样。即使采用的算法相同,但命名很有可能不同,且有概念的命名更具可读性。因此,"先架构后结构"的方法,有助于写出更具可维护性的代码。现实中,之所以存在大量难以维护的代码,正是因为设计者省去了概念塑造这一步骤。
另一点需要指出的是,软件架构设计与数据结构设计对工程师的能力要求并不完全相同。软件架构设计需要更多的是概念能力,即将细节进行一定的抽象和概括的能力。数据结构设计所需的能力却是对于计算机体系结构、编程语言和各种算法的掌握。
分清软件架构与数据结构的意义在于: 1) 方便沟通。不至于他人在说软件架构时,我们却只想着数据结构。 2) 明白架构设计的重要性。架构设计用于引导数据结构设计,数据结构设计是用来表达架构的。 3) 理解架构设计与数据结构设计所需的能力之别,而不至于认为"数据结构是软件的一切"。
设计
软件
结构
数据
架构
数据结构
概念
能力
概要
结构设计
元素
工程
工程师
步骤
算法
开发
不同
相同
之所以
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳销售软件开发收费
wow美服数据库
网络安全从我做起手抄报四年级
数据库安全性常用技术
数据库大量数据问题
服务器运行fluent自动关闭
万得数据库下载限制
服务器硬盘接口转接卡
软件开发测试爱情观
苏州c语言软件开发价位
宿城区个性化网络技术价格查询
mysql数据库建表格式
my sql数据库安装
公安网络安全监察大队职责
redis统计数据库
国外网络技术现状
方舟搜索服务器
邯郸python软件开发有用吗
我的世界服务器通信加密
每年网络安全受害有多少人
mc服务器房子
软件开发和数控
服务器中最大硬盘容量什么意思
运维人员测试训练服务器
数据库工程师一个月多少钱
1u服务器高度
本科毕业设计 网络安全靶场
融媒体与网络安全
mysql创建职工数据库
临沂港软件开发