2014年21期 科技一向导 ◇科技论坛◇ 有关软件开发中的架构设计探究 景雅智 (同济大学中国上海201804) 【摘要】文章主要从软件架构的定义、为何需要为软件设计架构、架构设计的核 思维、软件架构设计的几个步骤这几个方面进行阐述 以供参考。 【关键词】软件开发;架构设计;需求分析 软件架构是软件系统中的地基.是一个软件系统中的核心元素. 目的。 它决定了一个系统的主体结构、宏观特性和具有的基本功能及其特 性,它位于软件开发过程的前期阶段。架构设计的过程.是分析客户 需求、挖掘非功能性需求、并将客户需求所定义的领域知识转化为 软件系统模型的过程 本质上软件架构是对软件需求的一种抽象解 决方案.用于指导大型软件系统各个方面的设计 正如大型建筑物 设计成功的关键首先在于主体结构。同样,复杂的软件设计的成功 与否在于软件系统的宏观上层结构设计的正确和合理性 但现实 中,软件架构的理论和工具还没有形成系统、规范的概念和描述。不 同架构师在图形符号说明上总是采用自己习惯的方式.致使软件架 构设计尚未形成一个有效统一的模式知识库.未能更好地发挥架构 设计本身的作用 在此.本文就软件开发的架构设计的相关内容进 行探讨.以供参考。 1.软件架构的定义 软件架构(Software archiecture)一组有关如下要素的重要决策:软 件系统的组织,构成系统的结构化元素.接口和它们相互协作的行为 的选择.结构化元素和行为元素组合成力度更大的子系统的方式的选 择,以及指导这一组织(元素及其接口、协作和组合方式)的架构风 格的选择。 软件架构是对系统整体结构设计的刻画.包括全局组织与控制结 构、构件间通讯、同步和数据访问的协议,设计元素的功能分配,物理 分布.设计元素集成.伸缩性和性能.设计选择等。 2.为何需要为软件设计架构 2.1不进行架构设计将很难满足系统的品质 软件架构设计中的一个关键特性.是系统的品质是通过某些手段 来实现的。软件的品质f如性能,安全性和可维护性等)在缺少统一的架 构设计时是无法一一实现的.因为软件的品质并不是单一的体现在软 件元素中,而是渗透在整个软件体系中的.因此我们应尽早的评估在 项目开发周期中的这些品质。软件架构模型的建立.通常是为确定我 们是否已经满足了软件这些品质的要求 2.2架构设计很容易让相关人员达成一致的目标 架构设计提供了一个辩论系统解决方案的媒体.因此架构设计可 以使得不同的涉众达成一致的目标 经过有效的传送.体系架构可以 使系统构架师之间、软件开发人员之间或者其他新老成员之间的意见 以及他们之间的视图达成一致 2-3架构设计能够支持计划编制过程 架构设计的过程支持设计和实现活动.因为软件开发的过程是直 接使用到这些活动中的,例如:细节划分、13程安排、工作分配、成本分 析、风险管理和技能开发等 2.4架构设计能够有效地管理软件复杂性 如今的软件系统越来越复杂.而这种复杂性需要我们去有效的管 理。而架构设计过程考虑的是组件的递归分解。这是处理一个大的问 题的很好的一个方法.它可以把这个大问题分解成很多的小问题.再 逐个的解决 2.5架构设计为复用奠定了基础 架构设计过程可以同时支持使用和建立复用资源 复用资源对于 一个组织来说是有益的.因为它可以降低一个系统的成本.并且可以 改进系统的质量 架构设计为大规模开发提供了基础和规范及可重用的资产 要进 行软件系统的大规模开发.需要有一定的基础和遵循一定的规范.这 既是软件工程本身的要求.也是客户的要求 架构设计的过程中可以 将一些公共部分抽象提取出来.形成公共类和工具类.以达到重用的 142 2.6架构设计能够降低维护费用 架构设计过程可以在很多方面帮助我们降低维护费用 例如.架 构设计过程要确保系统的维护人员是一个主要的涉众.并且他们的需 求被作为首要的任务满足 一个被恰当文档化的架构不应该仅仅为了 减轻系统的可维护性.还应该确保结合了恰当的系统维护机制.并且 在建立体系架构的时候还要考虑系统的适应性和可扩充性。 3.架构设计的核心思维 3.1架构设计的源泉来自于需求分析.并且它的设计重心和特点 来自于质量需求而非功能性需求 任何软件系统都是以满足一定的需求为目的.因此.一个好的软 件架构必须以深人全面的需求分析作为基础 然而.架构设计并没有 统一的模式.任何模式的架构也只有针对问题才有意义 作为架构设 计来说.在进行需求分析的过程中.系统分析员必须对需求分析有足 够的解.才能有针对性地将客户需求有效的转化为计算机模型f如架 构模型及视图),这样才能设计并开发出优秀的软件产品 与此同时, 在需求分析的过程中.系统架构设计师还应注重挖掘系统的质量需求 而非功能性需求,例如软件系统的稳定性、安全性、可扩展性、可定制 化、可维护性、用户体验等。 3.2软件架构的实现还需依赖于好的项目管理 任何架构思想的完成都依靠于好的项目管理.项目管理也必须与 架构思想相匹配才能够发挥真正的作用 一个好的架构设计不只需求 关心成本.也需求关心时间,这样才能在商定的时间内.以不超越软件 开发中的成本预算.生产出契合需求的软件产品 因而.软件架构设计 时应认真探讨现代项目管理的思想和办法.吃透其中的精华.按照本 身的设计思想.提进项目管理的处理方案.以期能使软件满足非功效 性需求.并且可以降低开发成本及维护费用 软件架构设计是一个系统工程.它需求软件系统构架师有很宽 的知识面,从需求剖析、架构设计到类设计乃至代码完成到项目管 理都需要有透彻的了解,这之间的关系是你中有我.我中有你,是不 成单独分开的。软件系统设计的办法并不是一个僵化的规则.关键 是在理论中实事求是的探索规律.从而找出契合实践达到要求的设 计。 4.软件架构设计的几个步骤 f1)需求分析和理解业务模型,并选定关键案例。软件的需求需要 区分用户视角和开发人员视角.从用户的角度看.又可以分为功能性 和非功能性需求.我们必须从不同的视角和级别去全面的认识需求并 分析需求。理解业务模型。实践表明.常常被我们忽视的非功能性需求 常会导致整个项目失败 (2)从软件开发的各个视角来进行软件架构的设计。软件的架构设 计必须考虑到各个方面,根据前期工作确立的领域模型,关键需求,系 统约束等进行设计,我们应从系统用户、开发人员、系统管理员、部署 管理员、数据管理员等人员的角度去分析并解决问题 f3懈决技术面的重点问题和难题 在软件架构设计的过程中.我 们往往会需要攻克一些技术面的重点问题和难题.这完全是一项极其 需要扎实的理论知识和丰富的实践经验支撑的工作 f4)架构设计评审是极其重要的一环.在进行架构设计之前我们应 召开架构设计评审会议进行同行评审 (51针对关键案例在设计的架构上实现功能来验证架构。 f61交付给客户评审让客户理解并接受架构设计方案.在架构设计 得到客户的认可后.便可进规模的开发 5.结语 (下转第225页)