第5章 信息系统工程-架构设计
信息系统工程是用系统工程的原理、方法来指导信息系统建设与管理的一门工程技术学科,它是信息科学、管理科学、系统科学、计算机科学与通信技术相结合的综合性、交叉性、具有独特风格的应用学科。当前信息系统工程的主要任务是研究信息处理过程内在的规律,以及基于计算机、互联网和云计算等信息技术手段的形式化表达和处理规律。其基本概念、原理和方法对实际分析、设计、开发、运行和服务一个信息系统,从理论、手段、方法、技术等多方面提供了一套完整、科学、实用的研究与工程体系,具有十分重要的应用价值,对信息系统建设有着重要的理论指导意义。
5.1 软件工程
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。 电气与电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE) 对软件工程的定义是:将系统的规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
软件工程由方法、工具和过程三个部分组成:①软件工程方法是完成软件工程项目的技术手段,它支持整个软件生命周期;②软件工程使用的工具是人们在开发软件的活动中智力和体力的扩展与延伸,它自动或半自动地支持软件的开发和管理,支持各种软件文档的生成;软件工程中的过程贯穿于软件开发的各个环节,管理人员在软件工程过程中,要对软件开发的质量、进度和成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本估算、质量保证和配置管理等。
5.1.1 架构设计
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成。软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。
软件架构虽脱胎于软件工程,但其形成同时借鉴了计算机架构和网络架构中很多宝贵的思想和方法。近年来,软件架构已完全独立于软件工程,成为计算机科学的一个最新的研究方向和独立学科分支。软件架构研究的主要内容涉及软件架构描述、软件架构风格、软件架构评估和软件架构的形式化方法等。解决好软件的复用、质量和维护问题,是研究软件架构的根本目的。
1.软件架构风格
软件架构设计的一个核心问题是能否达到架构级的软件复用,也就是说,能否在不同的系统中使用同一个软件架构。软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式(ldiomatic Paradigm)。架构风格定义了一个系统“家族”,即一个架构定义、一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而约束指出系统是如何将这些构件和连接件组合起来的。架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
Garlan 和 Shaw 对通用软件架构风格进行了分类,他们将软件架构分为:①数据流风格。数据流风格包括批处理序列和管道/过滤器两种风格。②调用/返回风格。调用/返回风格包括主程序/子程序、数据抽象和面向对象,以及层次结构。③独立构件风格。独立构件风格包括进程通信和事件驱动的系统。④虚拟机风格。虚拟机风格包括解释器和基于规则的系统。⑤仓库风格。仓库风格包括数据库系统、黑板系统和超文本系统。
2.软件架构评估
软件架构设计是软件开发过程中的关键一步。没有一个合适的架构而要有一个成功的软件设计几乎是不可想象的,尤其是针对庞大且复杂的系统来说。不同类型的系统需要不同的架构.甚至一个系统的不同子系统也需要不同的架构。架构的选择往往会成为一个系统设计成败的关键。但是,怎样才能知道为系统所选用的架构是否恰当呢,如何确保按照所选用的架构能顺利地开发出成功的软件产品呢,要回答这些问题并不容易,因为它受到很多因素的影响,需要专门的方法来对其进行评估。软件架构评估可以只针对一个架构,也可以针对一组架构。在架构评估过程中,评估人员所关注的是系统的质量属性。
在分析具体架构评估方法之前,我们先来了解两个概念,分别是敏感点 (Sensitivity Point)和权衡点(Trade-off Point)。敏感点是一个或多个构件 (或之间的关系)的特性,权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。例如,改变加密级别可能会对安全性和性能产生非常重要的影响。提高加密级别可以提高安全性,但可能要耗费更多的处理时间,影响系统性能。如果某个机密消息的处理有严格的时间延迟要求,则加密级别可能就会成为一个权衡点。
从目前已有的软件架构评估技术来看,可以归纳为三类主要的评估方式,分别是基于调查问卷(或检查表)的方式、基于场景的方式和基于度量的方式。这三种评估方式中,基于场景的评估方式最为常用。
基于场景的方式主要包括:架构权衡分析法(Architecture Trade-off Analysis Method,ATAM)软件架构分析法(Software Architecture Analysis Method,SAAM)和成本效益分析法(Cost Benefit Analysis Method,CBAM)中。在架构评估中,一般采用刺激(Stimulus)、环境(Environment)和响应 (Response)三方面来对场景进行描述。刺激是场景中解释或描述项目干系人怎样引发与系统的交互部分,环境描述的是刺激发生时的情况,响应是指系统是如何通过架构对刺激做出反应的。
基于场景的方式分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。例如,用一系列对软件的修改来反映易修改性方面的需求,用一系列攻击性操作来代表安全性方面的需求等。这一评估方式考虑到了所有与系统相关人员对质量的要求,涉及的基本活动包括确定应用领域的功能和软件架构之间的映射,设计用于体现待评估质量属性的场景,以及分析软件架构对场景的支持程度。
不同的系统对同一质量属性的理解可能不同,例如,对操作系统来说,可移植性被理解为系统可在不同的硬件平台上运行,而对于普通的应用系统而言,可移植性往往是指该系统可在不同的操作系统上运行。由于存在这种不一致性,对一个领域适合的场景设计在另一个领域内未必合适,因此,基于场景的评估方式是特定于领域的。这一评估方式的实施者一方面需要有丰富的领域知识,以对某一质量需求设计出合理的场景;另一方面,必须对待评估的软件架构有一定的了解,以准确判断它是否支持场景描述的一系列活动。