系统架构设计师-系统架构设计基础知识

目录

软件架构概念

软件架构设计与生命周期

1.需求分析阶段

2.设计阶段

3.实现阶段

4.构件组装阶段

5.部署阶段

6.后开发阶段


一. 软件架构概念

软件架构是系统的结构化表述,它定义了系统构件、它们的外部属性及相互关系。它是软件开发的高层设计蓝图,用于指导软件的详细设计与构建,同时帮助评估和优化系统的功能与非功能需求。

软件架构和软件体系结构(下文提到)是同一个意思,只是翻译上的区别而已

二. 软件架构设计与生命周期

1.需求分析阶段

需求分析阶段的SA(Software Architecture 研究还处于起步阶段。在本质上,需求分析和SA设计面临的是不同的 对象:一个是问题空间;另一个是解空间。

需求分析阶段,主要任务是:1.明确系统需要解决的问题及其功能和非功能需求,2.深入理解用户的实际需求,3.定义系统的功能边界,4.并通过详细的需求文档进行规范化表述。

需求分析的结果不仅要准确描述用户的期望,还要为后续的软件架构设计提供清晰的指导,确保需求能够被追踪和转换为系统的具体实现。

这个阶段的核心目标是为系统提供明确的方向,并确保需求与最终解决方案的一致性。

2.设计阶段

在设计阶段,软件架构(SA)研究主要包括SA模型的描述、设计与分析方法,以及设计经验的总结与复用。有关SA模型描述的研究分为3个层次:(1)SA的基本概念。(2)体系结构描述语言 (Architecture Description Language,ADL)。(3)SA模型的多视图表示

典型多视图方案:

  • 4+1模型:包括

    • 逻辑视图:对接开发人员和设计人员,描述系统的功能性需求和主要构件,关注于系统中的类、对象和它们之间的关系。

    • 开发视图:对接编程人员,描述系统的模块化结构和开发过程中的各个模块如何组织

    • 进程视图:对接系统集成人员,描述系统的运行时结构,特别是并发、分布和任务调度等方面

    • 物理视图:对接系统工程人员,描述系统的硬件结构和组件如何部署在物理设备上

    • 场景视图:对接所有相关方,包括客户、需求分析师和设计人员,提供系统所有视图的统一视角,确保架构设计满足所有功能性需求。

    记得对比UML的4+1视图:逻辑视图、实现试图、进程视图、部署视图和用例视图

  • Hofmesiter的4视图模型:包含概念视图、模块视图、执行视图和代码视图。

  • CMU-SEI的Views and Beyond模型:由模块视图、构件和连接子视图、分配视图组成。

3.实现阶段

在实现阶段,软件架构(SA)研究从较高层次的设计、描述和验证,逐步转向如何将SA设计有效转换为实际实现,主要研究方向包括:

  1. 基于SA的开发过程支持:如项目组织结构、配置管理等,确保开发团队的组织结构与SA模型相对应,从而提升开发效率和质量。

  2. 从SA到实现的过渡:通过引入程序设计语言元素、模型映射、构件组装和中间件平台等技术,促进高层架构设计向底层实现的转换。

  3. 基于SA的测试技术:开发相应的测试技术,确保按照架构蓝图实现的系统符合预期。

为应对大型软件系统中的复杂性,SA通过引入版本管理可选择项(Options)等信息,提升配置管理的能力,如UniCon和xADL等工具支持不同构件版本和连接子演化的管理。

为缩小高层SA模型与底层实现之间的差距,可通过封装底层的实现细节模型转换精化等手段缩小概念之间的差距。典型的策略包括:

  • 在SA模型中引入实现阶段的概念,如程序设计语言元素。

  • 通过模型转换技术,将高层架构逐步精化为可支持实现的模型。

  • 封装底层实现细节为大粒度构件,借助中间件平台,在SA指导下通过构件组装实现系统。

4.构件组装阶段

构件组装阶段,在软件架构(SA)设计模型的指导下,组装可复用构件以实现系统的高效构建。主要研究内容包括:

  1. 支持可复用构件的互联

    • 连接子的实现:SA设计模型中规约的连接子(如UniCon中的Pipe、FileIO、ProcedureCall等)需要在实现阶段转化为具体的程序代码或系统实现。这些连接子在设计阶段被实例化,并在实现阶段通过工具转化为具体的实现机制,如过程调用、文件操作、远程过程调用等。

    • 中间件的支持:中间件遵循特定构件标准(如CORBA、J2EE、COM),提供构件之间的跨平台交互能力和公共服务(如安全服务、命名服务),增强系统的通信完整性和质量属性。中间件的选择可以基于SA模型中的连接子规约,如选择提供消息通信机制的中间件平台。

  2. 检测并消除体系结构失配

    • 失配定义:失配是指由于复用构件对体系结构和环境的假设实际情况不一致而导致的冲突。主要包括:

      • 构件失配:由于系统对构件基础设施、控制模型或数据模型的假设与实际情况不符。
      • 连接子失配:由于系统对构件交互协议或连接子数据模型的假设与实际情况不符。
      • 全局体系结构失配:系统成分对整体体系结构的假设与实际情况不符。
    • 解决方案:需要检测失配问题并通过适当手段加以解决,以确保构件组装的正确性和系统的整体一致性。

这些研究方向旨在提高构件组装的效率,确保系统在构建过程中能够遵循架构设计蓝图,减少失配问题,提升最终系统的质量和稳定性。

5.部署阶段

部署阶段,软件架构(SA)研究逐渐独立于开发过程,成为软件生命周期中的一个关键阶段。开发人员只要全身心投入到代码中,听命行事,疯狂敲键盘就可以,可是部署人员要考虑的事情就很多了(bushi),如待部署软件构件的互联性、硬件的拓扑结构、硬件资源占用(如 CPU、 内存)等。为了确保分布式软件满足性能、可靠性等质量属性,部署需要考虑以下方面:

  1. 高层体系结构视图:SA提供了描述部署阶段软硬件模型的高层视图,帮助在部署过程中明确系统的结构和要求。

  2. 部署方案的质量属性分析:基于SA模型,可以分析不同部署方案的质量属性,如性能和可靠性,从而选择最合适的部署方案。

当前,SA在软件部署中的应用主要集中在组织和展示部署阶段的SA模型,以及评估和分析部署方案。这些分析通常停留在定性层面,并需要部署人员的实际参与,以确保部署方案的有效性和系统的整体性能。

6.后开发阶段

后开发阶段,即软件部署安装之后,软件架构(SA)研究主要集中在维护、演化和复用等方面。典型的研究方向包括动态软件体系结构和体系结构恢复与重建:

  1. 动态软件体系结构

    • 动态变化:传统SA认为体系结构是静态的,但现实中,软件体系结构往往在运行时发生变化。变化可以是内部执行引起的(如服务器端根据请求创建新构件)或外部请求引起的(如系统在运行时进行升级或修改)。

    • 研究内容

      1. 设计阶段支持:描述变化、生成修改策略、描述修改过程、保证修改的可行性及影响分析。

      2. 运行时支持:维护体系结构、确保修改在约束范围内、提供运行时信息、分析修改后的体系结构、正确映射构件变化到实现模块、保持系统重要子系统的状态和执行,以及系统分析和测试。

  2. 体系结构恢复与重建

    • 背景:许多系统的开发是基于已有的遗产系统,这些系统在开发时没有考虑SA。因此,从这些系统中恢复或重构体系结构是有必要的。

    • 方法

      1. 手工重建:通过人工方法获取体系结构视图。

      2. 工具支持的手工重建:利用工具辅助手工重建,如KLOCwork inSight工具从源代码中获得SA构件视图,并通过图形界面操作SA模型。

      3. 自动建立聚集:使用逆向工程工具分析源代码,将体系结构信息存入数据库,通过查询语言显示体系结构。

      4. 其他技术:如数据挖掘等方法,用于获取和分析体系结构信息。

这些研究方向旨在提高软件系统的可维护性、适应性和复用能力,确保系统在运行时能够有效应对动态变化,并从遗产系统中提取和重建有效的体系结构。

你可能感兴趣的:(系统架构设计师,系统架构)