NoteDeep

软件工程设计和软件体系结构

软件设计的目标

时间个各类环境资源的限制下,最大限度的满足用户的需求。
  • 便于维护和升级,因而应该是模块化
  • 设计应该是便于移植的(移植比重新设计花费要小多)
  • 设计应该具有适应性
  • 设计过程应该受到理性的控制
  • 设计应该表现出概念的完整性
  • 内在结构
  • 外在表现

针对问题提出的软件设计思想

  • 强调信息隐藏的单元概念:把系统的行为看作是具有关联关系的部件间的行为作用
  • 应用基于操作和数据封装构成的单元设计技术实现系统可组装性
  • 应用专门的机制可靠地处理并发控制和分布系统问题:降低这类系统设计实施的复杂度
  • 提出基于模型的系统结构和设计方法:模式、框架、体系结构风格等
  • 明确提出软件体系结构的设计思想:关乎复杂系统设计成败和代价的关键设计步骤

什么是软件体系结构

  • 需求<企业
  • ABC(构架商业周期,Architecture Business Cycle):系统<-架构<-需求<-目标

软件体系结构的定义

  • 现代定义
  • 一个程序或计算系统的软件体系结构是一种结构,或者一种系统结构,它由软件元素、这些元素的外在可见性质以及元素之间的关系组成。
  • 软件体系结构被定义为系统的基本组织结构,包括构件、构件之间的关系环境以及管理系统设计演化的原则
  • 传统的定义
  • 软件体系结构是设计过程的一个层次,它处理那些超越算法和数据结构的设计,研究整体结构的设计和描述的方法。
  • 软件体系结构由具有特定形式的体系结构元素或设计元素构成,包括处理元素数据元素连接元素三类。
  • 一个软件或计算机系统的软件体系结构即组成该系统的一个或多个结构,他们构成软件的各个部分,形成这些构件的外部可见属性及相互间的联系。
  • 体系结构 = 组件 + 连接件 + 约束

当前对软件体系结构的认识

  • 体系结构是由软部件和部件之间的联系组成,软部件又有自身的体系结构。
  • 部件描述有3个方面:计算功能、结构特性、其他特性
  • 关于软件体系结构的不同认识表现在两个方面:
  • 关于范畴
  • 关于描述形式

各种术语和相关概念

Architecure Styles

体系结构风格:根据结构组织模式构成的软件系统族,表达了部件和他们之间的关系。偏重于计算机概念
分类:
  1. 数据流风格:批处理序列、管道/过滤器等;
  2. 调用/返回风格:主程序/子程序、面向对象风格、层次结等。
  3. 独立构件风格:进程通讯、事件系统等;
  4. 虚拟机风格:解释器、基于规则的系统等;
  5. 仓库风格:数据库系统、超文本系统、黑板系统等。
  6. 新的体系结构风格:客户/服务器(Client /Server)结构、浏览器/服务器(Browser/Server)结构、正交(Orthogonal)结构、专用领域(Domain Specific Styles)、MVC、微核(Microkernel)、反射( Reflection )、代理( Proxy )等。

Design Pattern

  • 它提供一个用于细化软件系统子系统或构件,或他们之间关系的图示。它描述通信构件的公共再现结构,通信构件可以解决特定语境中的一个一般设计问题。
  • 建立在结构化程序设计基础之上,针对OOP设计的实践和经验而提出的,是处理特定问题的高效和成熟的设计模板
  • 设计模式偏重于具体问题
  • 设计模式分为三个类型
  1. 构造型模式:孤子模式 etc.
  2. 结构型模式:代理 etc.
  3. 行为型模式:解释器 etc.
  • SA 受其启发,提出了面向模式的软件体系结构

Framework

  • 框架又称为应用框架,整体应用性结构的“固定”
  1. 冷点 Frozen Spots
  2. 热点 Hot Spots
  • Framework偏重于具体问题,所以常称为:应用框架
  • 从设计模式角度来看,框架为大粒度的可复用的部件
  • 从体系结构角度来看,框架是一个领域体系结构

软件体系结构的意义和目标

软件体系结构在软件开发中的意义

  • 软件体系结构是软件开发过程初期的产品,对于开发进度和软件质量的,一切资金和劳务投入,可以获得最好的回报。
  • 体系结构设计是形成的投资高汇报的重要因素。
  • 正确有效的体系结构设计会给软件开发带来极大的便利

软件体系结构的目标

  • 外向目标:建立满足终端用户要求的系统需求
  • 内向目标:建立满足后期设计者需要以及易于系统实现、维护和扩展的系统部件构成。

软件体系结构在风险承担和早期设计中的作用

  • 软件体系结构对风险承担者交流起的作用。
  • 软件体系结构是早期设计决策的产品。
  • 软件体系结构对应用系统的影响:SA制约着质量,工业化的必由之路。

软件体系结构的研究范畴

体系结构描述语言与工具

  1. ADL(Architeture Description Language):为体系结构提供概念性框架,也提供描述的具体语法,也提供解析、显示、编译、分析或者仿真体系结构描述使用的工具
  2. 工具建模:设计符号为体系结构建模

产品线与标准

  • 软件产品线是一个工程问题,它由一组软件密集型家族系统共享公共的、可管理的特征。
  • 软件产品线体系结构。

软件体系结构风格及风格应用

  • 软件体系结构风格是指一组设计词典、有关词典如何运用的限制条件、及词典语义的假设
  • 每个风格的应用仅适合于一定的目标,而不适用于其他目标。

体系结构文档化

  • 体系结构文档化的过程就是用一个或者多个视图来描述一个系统结构的过程。
  • 4个视图:
  1. Context-based Views
  2. Code-based Views
  3. Run-time Views
  4. Hardware-based Views


评论列表

    软件工程设计和软件体系结构什么是软件体系结构软件体系结构的意义和目标
    软件体系结构的研究范畴