其他分享
首页 > 其他分享> > 软件体系结构

软件体系结构

作者:互联网

软件工程

研究软件生产的一门学科,采用工程的概念,原理,方法,技术来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够的到的最好的技术方法结合起来。

软件工程的基本要素

软件开发的过程

问题定义 —>需求开发—》软件设计----》软件构建—》软件测试

软件工程的基本方法

软件过程

软件过程就是将用户需求变为软件产品的过程。

软件过程的模型主要类型

瀑布模型的特定

  1. 以预测为原则
  2. 以文档为驱动
  3. 以过程控制为核心。

为什么要使用迭代化开发:

  1. 快速开发产品。
  2. 追求产品创新。
  3. 需求不确定性高。
  4. 需要快速响应用户的变化。
  5. 关注用户的行为。

软件结构影响因素

架构设计流程

  1. 创建系统的业务用例。
  2. 理解用户需求。
  3. 创建或选择合适架构。
  4. 为架构建立文档。
  5. 分析评价架构。
  6. 实现基于架构的系统。
  7. 确保系统实现符合架构。

良好架构的特征

  1. 弹性。

  2. 简单。

  3. 可实现。

  4. 功能职责的清晰分解。

  5. 平衡职责分布。

  6. 平衡经济和技术约束。

软件体系结构构成(核心模型)

软件体系结构包括构成系统的设计元素的描述,设计元素之间的交互,设计元素的组合模式以及这些模式中的约束。

软件体系结构的目标:

风格,模式和框架

体系结构风格:用于描述某一特定应用领域中系统组织的惯用模式,反映了领域领域中众多系统所共有的结构和语义特性。

设计模式:描述了软件系统设计过程中常见问题的一些解决方案,通常是从大量的成功实践中总结出来的且被广泛的实践和认识。

软件框架:软件框架是由开发人员定制的应用的骨架,是整个或部分系统的可重用设计,由一组抽象构件和构件实例的交互方式组成。

框架和体系结构的关系

体系结构的呈现方式是一个设计规约,而框架则是“半成品”的软件。

体系结构的目的是指导软件系统的开发,而框架的目的是设计复用。

框架和设计模式的关系

框架给出的是整个应用系统的体系结构,而设计模式则给出了单一设计问题的解决方案,且可以在不同的应用程序或者框架中应用。

设计模式的目标是改善代码的结构,提高程序的结构质量,框架强调的是设计的重用性和系统的可扩展性,以缩短开发周期,提高开发质量。

构件的获取和管理

构件获取

架构模型定义

架构模型实现四个目标

架构模型的分类

Kruchten4+1模型概述

Rational的4+1视图模型

统一建模语言

模型的意义

UML目标

客户,产品经理,架构师,程序员,测试员,质量保证,项目经理,产品运维。

UML特点

UML构成简介

事物

关系

在这里插入图片描述

UML图形是模型元素集的图形表示, 通常是由顶点和边相互连接构成,其 中顶点表示模型元素,边表示关系。

• 常见的UML图形包括:

• 用例图(Use Case Diagram)

• 类图(Class Diagram)

• 对象图(Object Diagram)

• 交互图(Interaction Diagram)

​ • 顺序图、通信图和定时图

• 状态图(State Chart Diagram)

• 活动图(Activity Diagram)

• 构件图(Component Diagram)

• 部署图(Deployment Diagram)
在这里插入图片描述

在这里插入图片描述

用例图

组成要素

用例定义

系统、子系统或类与外部参与者交互的动作序列的说明,包括各种活动序列及出错 序列。

参与者

关系

在这里插入图片描述

类图

类图的作用

类图的组成

  1. 类名: 类的名字,代表该类抽象出来 事物的主要特点。
  2. 属性: 抽象出来的类的特征。
  3. 操作: 抽象出来的类的行为。

属性格式

在这里插入图片描述

操作的格式

在这里插入图片描述

类图的关系

在这里插入图片描述

关联关系
聚合关系
组合关系
泛化关系
实现关系
依赖关系

顺序图

软件体系风格

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。

经典的体系结构风格

主程序-子程序

主程序-子程序风格是结构化设计的一种典型风格,从功能的观点设计系统,通过逐步分解和细化,形成整个系统的体系结构。

面向对象风格

系统被看作是对象的集合,每个对象都有自己的功能集合;数据集作用在数据上的操作被封装成抽象数据类型。只通过接口和外界交互,内部的设计决策则被封装起来。

面向对象风格的优点

因为对象对其他区对象隐藏它的存在,所以可以改变一个对象的表示,而不影响其它的对象。

设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合。

面向对象风格的缺点

为了是一个对象和另一个对象通过过程调用进行交互,必须知道对象的标识,只要有一个对象的标识改变了,就必须改变所以其他明确调用的对象。

必须修改所有显式调用的其它对象,并由此带来的一些副作用。

管道过滤风格

把系统任务分成若干个连续的处理步骤,这些步骤通过系统的数据流连接起来,一个步骤都输出是下一个步骤的输入。

管道过滤风格的优点
过滤器风格的缺点

分层风格的优点

支持基于抽象程度递增的系统,使设计者可以把一个复制系统按递增的方式进行拆解。

支持功能增强

支持重用

分层风格的缺点

事件风格

事件系统是将应用看成一个构件集合,每个构件直至发生对它有影响的事件时才有所动作。

策略之一:选择广播模式

策略二:察者模式。

事件风格的优点

为软件重用提供了强大的支持。

为改进系统带来了方便。

事件风格的缺点

Web体系风格结构

两层C/S结构

胖客户:客户端执行大部分的数据处理操作。

瘦客户端:客户端具有很少或没有业务逻辑。

三层C/S结构

表示层:包括所有的与客户机交互的边界对象,如窗口,表单,网页等。

功能层,包括所有的控制和实体对象,实现应用程序的处理逻辑个规则。

数据层:实现对数据库的存储,查询和更新。

三层C/S结构的优点
三层结构的缺点

软件设计过程

软件总体设计

系统设计目标

确定子系统或模块

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

微服务和SOA的主要区别

SOA实现微服务架构实现
企业级,自顶向下开展实施团队级,自底向上开展实施
服务由多个子系统组成,粒度大一个系统被拆分为多个服务,粒度细
企业服务总线,集中式的服务架构无集中式总线,松散的服务架构
集成方式复杂集成方式简单
单块架构系统,相互依赖,部署复杂服务都能独立部署

相比传统SOA的服务实现方式,微服务更具有灵活性、可实施 性以及可扩展性,其强调的是一种独立测试、独立部署、独立 运行的软件架构模式 。

标签:关系,模型,系统,视图,软件体系结构,构件,事物
来源: https://blog.csdn.net/humorious/article/details/112548396