浅谈软件开发中的架构设计

时间:2022-06-18 03:16:27

浅谈软件开发中的架构设计

摘要:文章主要从软件架构的定义、为何需要为软件设计架构、架构设计的核心思维、软件架构设计的几个步骤这几个方面进行阐述,以供参考。

关键词:软件开发;架构设计;需求分析

中图分类号:TP311文献标识码:A

文章编号:1009-2374 (2010)28-0009-02

软件架构是软件系统中的地基,是一个软件系统中的核心元素,它决定了一个系统的主体结构、宏观特性和具有的基本功能及其特性,它位于软件开发过程的前期阶段,架构设计的过程,是分析客户需求、挖掘非功能性需求、并将客户需求所定义的领域知识转化为软件系统模型的过程。本质上软件架构是对软件需求的一种抽象解决方案,用于指导大型软件系统各个方面的设计。正如大型建筑物设计成功的关键首先在于主体结构。同样,复杂的软件设计的成功与否在于软件系统的宏观上层结构设计的正确和合理性。但现实中,软件架构的理论和工具还没有形成系统、规范的概念和描述,不同架构师在图形符号说明上总是采用自己习惯的方式,致使软件架构设计尚未形成一个有效统一的模式知识库,未能更好地发挥架构设计本身的作用。在此,本文就软件开发的架构设计的相关内容进行探讨,以供参考。

1软件架构的定义

软件架构(Software archiecture)一组有关如下要素的重要决策:

软件系统的组织,构成系统的结构化元素,接口和它们相互协作的行为的选择,结构化元素和行为元素组合成力度更大的子系统的方式的选择,以及指导这一组织(元素及其接口、协作和组合方式)的架构风格的选择。

软件架构是对系统整体结构设计的刻画,包括全局组织与控制结构、构件间通讯、同步和数据访问的协议,设计元素的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等。

2为何需要为软件设计架构

2.1不进行架构设计将很难满足系统的品质

软件架构设计中的一个关键特性,是系统的品质是通过某些手段来实现的。软件的品质(如性能,安全性和可维护性等)在缺少统一的架构设计时是无法一一实现的,因为软件的品质并不是单一的体现在软件元素中,而是渗透在整个软件体系中的,因此我们应尽早的评估在项目开发周期中的这些品质。软件架构模型的建立,通常是为确定我们是否已经满足了软件这些品质的要求。

2.2架构设计很容易让相关人员达成一致的目标

架构设计提供了一个辩论系统解决方案的媒体,因此架构设计可以使得不同的涉众达成一致的目标。经过有效的传送,体系架构可以使系统构架师之间、软件开发人员之间或者其他新老成员之间的意见以及他们之间的视图达成一致。

2.3架构设计能够支持计划编制过程

架构设计的过程支持设计和实现活动,因为软件开发的过程是直接使用到这些活动中的,例如:细节划分、日程安排、工作分配、成本分析、风险管理和技能开发等。

2.4架构设计能够有效地管理软件复杂性

如今的软件系统越来越复杂,而这种复杂性需要我们去有效的管理。而架构设计过程考虑的是组件的递归分解。这是处理一个大的问题的很好的一个方法,它可以把这个大问题分解成很多的小问题,再逐个的解决。

2.5架构设计为复用奠定了基础

架构设计过程可以同时支持使用和建立复用资源。复用资源对于一个组织来说是有益的,因为它可以降低一个系统的成本,并且可以改进系统的质量。

架构设计为大规模开发提供了基础和规范及可重用的资产。要进行软件系统的大规模开发,需要有一定的基础和遵循一定的规范,这既是软件工程本身的要求,也是客户的要求。架构设计的过程中可以将一些公共部分抽象提取出来,形成公共类和工具类,以达到重用的目的。

2.6架构设计能够降低维护费用

架构设计过程可以在很多方面帮助我们降低维护费用。例如,架构设计过程要确保系统的维护人员是一个主要的涉众,并且他们的需求被作为首要的任务满足。一个被恰当文档化的架构不应该仅仅为了减轻系统的可维护性,还应该确保结合了恰当的系统维护机制,并且在建立体系架构的时候还要考虑系统的适应性和可扩充性。

2.7架构设计能够支持冲突分析

一个好的软件构架确定了主要的组件和它们之间的交互作用,两个组件之间的依赖性以及这些组件对于需求的可追溯性。

3架构设计的核心思维

3.1 架构设计的源泉来自于需求分析,并且它的设计重心和特点来自于质量需求而非功能性需求

任何软件系统都是以满足一定的需求为目的,因此,一个好的软件架构必须以深入全面的需求分析作为基础。然而,架构设计并没有统一的模式,任何模式的架构也只有针对问题才有意义。作为架构设计来说,在进行需求分析的过程中,系统分析员必须对需求分析有足够的解,才能有针对性地将客户需求有效的转化为计算机模型(如架构模型及视图),这样才能设计并开发出优秀的软件产品。与此同时,在需求分析的过程中,系统架构设计师还应注重挖掘系统的质量需求而非功能性需求,例如软件系统的稳定性、安全性、可扩展性、可定制化、可维护性、用户体验等。

3.2软件架构的实现还需依赖于好的项目管理

任何架构思想的完成都依靠于好的项目管理,项目管理也必须与架构思想相匹配才能够发挥真正的作用。一个好的架构设计不只需求关心成本,也需求关心时间,这样才能在商定的时间内,以不超越软件开发中的成本预算,生产出契合需求的软件产品。因而,软件架构设计时应认真探讨现代项目管理的思想和办法,吃透其中的精华,按照本身的设计思想,提进项目管理的处理方案,以期能使软件满足非功效性需求,并且可以降低开发成本及维护费用。

软件架构设计是一个系统工程,它需求软件系统构架师有很宽的知识面,从需求剖析、架构设计到类设计乃至代码完成到项目管理都需要有透彻的了解,这之间的关系是你中有我,我中有你,是不成单独分开的。软件系统设计的办法并不是一个僵化的规则,关键是在理论中实事求是的探索规律,从而找出契合实践达到要求的设计。

4软件架构设计的几个步骤

(1)需求分析和理解业务模型,并选定关键案例。软件的需求需要区分用户视角和开发人员视角,从用户的角度看,又可以分为功能性和非功能性需求,我们必须从不同的视角和级别去全面的认识需求并分析需求,理解业务模型。实践表明,常常被我们忽视的非功能性需求常会导致整个项目失败。

(2)从软件开发的各个视角来进行软件架构的设计。软件的架构设计必须考虑到各个方面,根据前期工作确立的领域模型,关键需求,系统约束等进行设计,我们应从系统用户、开发人员、系统管理员、部署管理员、数据管理员等人员的角度去分析并解决问题。

(3)解决技术面的重点问题和难题。在软件架构设计的过程中,我们往往会需要攻克一些技术面的重点问题和难题,这完全是一项极其需要扎实的理论知识和丰富的实践经验支撑的工作。

(4)架构设计评审是极其重要的一环,在进行架构设计之前我们开架构设计评审会议进行同行评审。

(5)针对关键案例在设计的架构上实现功能来验证架构。

(6)交付给客户评审让客户理解并接受架构设计方案,在架构设计得到客户的认可后,便可进入大规模的开发。

5结语

综上所述,架构设计是软件开发过程的重要组成部分,它不是单纯的技术,也不具有一种特定的形式,而是源于客户需求,其实现依赖于好的项目管理等。良好的软件架构能够服务于整个开发过程,有效地降低项目风险,确保项目能够朝着健康的方向发展。因此,我们必须重视架构设计在软件开发中的重要作用。

参考文献

[1] 陈晴阳.正视架构设计的重要作用[J].软件世界,2007,(13).

[2] 陆莉祯,尹晓强,柳军飞.面向模式的系统架构设计[J].计算机应用与软件,2005,(6).

[3] 高焕堂.架构设计的How-to[J].程序员,2009,(4).

上一篇:有关计算机网络安全的探讨 下一篇:浅谈如何保障三网融合的综合布线质量