APP下载

浅析软件架构师在软件开发过程中的作用

2014-06-28曾水根陈海燕

科技视界 2014年11期
关键词:构架软件系统

曾水根 陈海燕

(国电南京自动化股份有限公司,江苏 南京210032)

0 引言

大部分软件企业正在遭遇“软件危机”,主要表现在:软件开发效率低,开发周期长,开发成本高,可维护性和使用性差,不能很好的满足用户个性化和频繁的业务变化的需求。而日益激烈的市场竞争和经济全球化,赋予软件工程以新的特征:有效率、有效用地满足用户个性化需求的定制,快速响应和适应市场及业务的变化,以及低成本、高收益等[1-2]。

低成本、 高收益软件工程的实现离不开软件架构(Software Architecture),软件架构是一个软件系统中的核心元素,软件架构师则是这个核心元素的实施人,是一个软件工程成败的关键。

1 关于软件架构

软件架构的定义不是唯一的,在不同的著作上,不同的作者,对于软件架构的定义也不统一,角度不同,定义不同。

在“软件构架简介”中,David Garlan 和 Mary Shaw 认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。 ”

也有观点认为软件架构考虑的是相对的宏观问题, 它是重要模块、过程和系统数据的集合,包括软件的结构、彼此的准确关系、扩展与修改方式,依赖的技术、系统性能和灵活性获得方法,以及系统实施或修改计划等。

笔者更赞同后一种观点。

2 软件架构师的定义

软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。 主导系统全局分析设计与实施、负责软件架构和关键技术决策的人员[3]。

软件架构师应能迅速抓住问题要害,并做出合理的关键决定的能力,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考,主要包括如下:

(1)对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等;

(2)具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策;

(3)拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;

(4)以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美);

(5)精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE 架构等);

(6)具备系统设计员的所有技能,但涉及面更广、抽象级别更高;活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议等。

3 软件架构师的工作

软件架构师在软件开发中的重要性日渐突出。 可以这样说,一个软件架构师工作的好坏决定了整个软件开发项目的成败。

作为软件架构的设计者是关系到软件成败的关键因素,缺少了软件架构师的工作,软件产品的生产率、上市时间、质量和成本等诸多方面就不能得到应有的保障。

(1)软件架构创建的意义

使用合适的软件架构可以在需求变动的情况下迅速的进入变动之后的软件开发。 如果拿一栋大楼来比喻整个的软件产品。 那么软件架构就好比大楼的骨架。 没有好的软件架构,软件产品的质量可想而知。 软件架构是软件产品的精髓,只有在合适的产品上采用合适的软件架构才能真正的提高软件产品的质量。

(2)软件架构的创建过程

一旦项目立项, 系统分析师把项目的需求分析提交过来之后.根据该项目的整体解决方案, 软件架构师就必须找到适合该软件的架构。

确定了软件架构之后就可以依据它来组建项目团队,并创建一个骨架系统作为增量式开发的基础,把传统的软件开发模式和敏捷开发(Agile Development)模式结合起来。

为了软件产品的升级及复用,小型的软件产品也应该设置软件架构的设置环节,大型的软件产品则必须要有软件架构的设计环节。 那么,大型软件产品的开发模式就变成了传统软件开发模式、软件架构设计和敏捷开发模式的综合。小型软件产品的开发模式就变为了软件架构设计和敏捷开发模式的综合。软件架构设计不论在大型软件产品还是小型软件产品的开发模式中所处的位置基本上是一样的.都是处在需求分析后进行软件架构的设计。对于需求不确定或者软件架构师认为变动频繁的功能模块采用敏捷开发的模式。 如果需求变动,采用敏捷开发的方式修改相应的功能模块。

(3)软件架构资源库的创建与维护

把不同的软件架构形成一种知识,供以后的项目或其它软件架构师、系统分析师使用。 软件资源库中包括所包含每一种软件架构的文档说明,实例图,使用该软件架构的软件产品等,最好能创建一个辅助工具软件来维护软件架构资源库。

(4)其它作用

随着开发进程的推进,软件架构师的职责或关注点不断地变化:

1)在需求阶段配合系统分析师;

2)需求明确后,软件架构师要进行软件架构的设计;

3)随后,软件架构师的关注点开始转移到组织开发团队成员和开发过程定义上;

4)在编码阶段,架构师则成为详细设计者和代码编写者的顾问。并且经常性地要举行一些技术研讨会、技术培训班等;

5)随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;

6)在软件维护开始时,软件架构师就要分析该软件架构在该软件产品上的实施效果,是否存在问题,为下一个软件项目的软件架构设计做准备。

4 结论

软件架构的设计和规范可以实现开发工作的简单性和系统对未来更改的适应性。所以软件企业要正确的认识软件架构师的工作,认真的对待软件架构师这个职位的必要性。

[1][美]RogerS Pressman.软件工程-实践者的研究方法[M].黄柏素,梅宏,译.北京:机械工业出版社,1999.

[2]A W Brown,K C Wallau.The current state of CRSE [J].IEEE Software,1998,15(5):37-46.

[3]张友生,李雄.软件架构师的角色和培养[J].计算机教育,2006,11.

猜你喜欢

构架软件系统
禅宗软件
WJ-700无人机系统
急诊PCI治疗急性心肌梗死的护理探索构架
基于PowerPC+FPGA显示系统
软件对对碰
高可靠全平台ICT超融合云构架的设计与实现
连通与提升系统的最后一块拼图 Audiolab 傲立 M-DAC mini
谈软件的破解与保护