5. 如何进行软件架构设计 软件系统架构设计方法步骤 基于体系架构的软件设计模型把软件过程划分为体系架构需求、设计、文档化、复审、实现和演化6个子过程,现逐一简要概述如下 。
体系架构需求 。即将用户对软件系统功能、性能、界面、设计约束等方面的期望(即“需求”)进行获取、分析、加工,并将每一个需求项目抽象定义为构件(类的集合) 。
体系架构设计 。即采用迭代的方法首先选择一个合适的软件体系架构风格(如C/S、B/S、N层、管道过滤器风格、C2风格等)作为架构模型,然后将需求阶段标识的构件映射到模型中,分析构件间的相互作用关系,最后形成量身订做的软件体系架构 。
体系架构文档化 。即生成用户和研发人员能够阅读的体系架构规格说明书和体系架构设计说明书 。
体系架构复审 。即及早发现体系架构设计中存在的缺陷和错误,及时予以标记和排除 。
体系架构实现 。即设计人员开发出系统构件,按照体系架构设计规格说明书进行构件的关联、合成、组装和测试 。
体系架构演化 。如果用户需求发生了变化,则需相应地修改完善优化、调整软件体系结构,以适应新的变化了的软件需求 。
6. 什么是软件架构 软件架构 软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计 。
软件架构是一个系统的草图 。软件架构描述的对象是直接构成系统的抽象组件 。
各个组件之间的连接则明确和相对细致地描述组件之间的通讯 。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象 。
在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现 。软件体系结构是构建计算机软件实践的基础 。
与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础 。软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难 。
特别是,很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征 。在“软件构架简介”中,David GArlan 和 Mary Shaw 认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题 。
结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择 。”[GS93] 但构架不仅是结构;IEEE Working Group on Architecture 把其定义为“系统在其环境中的最高层概念”[IEEE98] 。
构架还包括“符合”系统完整性、经济约束条件、审美需求和样式 。它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑 。
在 Rational Unified ProcESs 中,软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互 。从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟 。
一个软件架构师需要有广泛的软件理论知识和相应的经验来事实和管理软件产品的高级设计 。软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作、逻辑和流程 。