软件设计模式与体系结构-软件体系-调用-返回风格软件体系结构

软件体系结构概述

  1. 调用-返回风格软件体系结构
  2. 数据流风格软件体系结构
  3. 基于事件的软件体系结构
  4. 层次软件体系结构
  5. MVC软件体系结构

概述

软件体系结构是指软件系统在高层次上的整体结构和组织方式,它定义了软件系统中各个组件的关系、交互方式以及对外部环境的接口。软件体系结构提供了一个抽象的框架,用于指导系统的设计和开发过程,并确保系统具有所需的功能、性能、可靠性和可维护性。

软件体系结构的设计通常基于系统的需求和功能要求,以及对系统的性能、可扩展性、安全性等方面的考虑。它描述了系统的整体组织结构,包括系统中的模块、组件、层次关系、通信方式、数据流和控制流等。

常见的软件体系结构模式包括:

  1. 分层体系结构(Layered Architecture):将系统划分为若干层次,每个层次负责不同的功能,并通过明确定义的接口进行通信。

  2. 客户端-服务器体系结构(Client-Server Architecture):将系统分为客户端和服务器端,客户端发送请求,服务器端处理请求并提供响应。

  3. 主从体系结构(Master-Slave Architecture):一个主节点负责协调和控制,多个从节点执行任务并向主节点汇报结果。

  4. 发布-订阅体系结构(Publish-Subscribe Architecture):组件可以发布消息,其他组件可以订阅并接收感兴趣的消息。

  5. 数据驱动体系结构(Data-Driven Architecture):基于数据流的驱动,组件根据输入数据的变化进行计算和处理。

  6. 事件驱动体系结构(Event-Driven Architecture):组件通过事件的触发和处理进行通信和协作。

软件体系结构的选择取决于系统的需求和特点,不同的体系结构模式适用于不同的应用场景。一个好的软件体系结构能够提供良好的系统结构和组织,支持系统的可扩展性、可维护性和性能要求,同时能够满足用户的功能需求和用户体验。在设计和实现过程中,需要综合考虑系统的需求、技术限制和开发团队的能力,选择适合的体系结构模式,并进行合理的划分和组织。

一、调用-返回风格软件体系结构

其主要思想是:将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性

概念

  1. 每个软件构件都设计为有一个唯一的程序执行起点和一个唯一的程序执行终点;
  2. 程序从其执行起点开始执行该构件的代码,程序执行结束,将控制返回给程序调用构件,
  3. 其中,程序构件通常叫做子程序,
  4. 从一个构件到另外一个构件的控制传递叫做子程序调用。

在这里插入图片描述
调用-返回风格体系结构可以被组织成任何形式。但层次结构的组织形式更清晰
层次结构的设计被称为共享数据的主程序-子程序软件体系结构

代码

调用-返回风格软件体系结构(Call-Return Architecture)是一种基于消息传递的软件架构,其中系统的各个组件通过相互调用和返回来协同工作。该体系结构适用于分布式系统和并发环境,它提供了一种结构化的方式来处理组件之间的通信和协作。

以下是一个简单的示例,展示了调用-返回风格软件体系结构的代码结构和调用关系:

# 组件A
def component_A():
    # 执行一些操作
    result = component_B()  # 调用组件B并获取返回结果
    # 处理组件B的返回结果
    # 执行其他操作

# 组件B
def component_B():
    # 执行一些操作
    result = component_C()  # 调用组件C并获取返回结果
    # 处理组件C的返回结果
    # 执行其他操作
    return result

# 组件C
def component_C():
    # 执行一些操作
    result = 42  # 返回一个结果
    return result

# 主程序
component_A()  # 调用组件A

在上面的示例中,组件A调用了组件B,并从组件B获取了返回结果。组件B在执行过程中又调用了组件C,并从组件C获取了返回结果。这样,通过不同组件之间的调用和返回,整个系统形成了一个协同工作的链条。

调用-返回风格软件体系结构的特点包括:

  • 消息传递:组件之间通过调用和返回消息进行通信。
  • 分离关注点:不同组件专注于自己的功能,通过调用其他组件来完成更复杂的任务。
  • 结构化设计:系统的各个组件形成了一个有序的调用链,便于理解和维护。
  • 并发执行:不同组件可以并发执行,提高系统的性能和响应能力。

调用-返回风格软件体系结构在分布式系统和并发环境中具有广泛应用,特别适用于需要协调多个组件之间的任务和数据流的场景。它提供了一种结构化的方式来管理组件之间的调用关系,使系统更具可扩展性和可维护性。

主程序-子程序软件体系结构

主程序-子程序软件体系结构在设计上使用层次化的划分方法,该体系结构中使用由编程语言直接支持的单一的控制线程。
子程序的结构是明确的,子程序通常组成程序模块。子程序的调用呈现层次状,其正确与否往往取决于其调用的子程序的正确与否。
相比于非结构化编程,主程序-子程序软件体系结构能够较好地支持系统的可改变性和可伸缩性等性能,其采用分而治之的策略

在这里插入图片描述

自顶向下的设计方法的问题

功能演化困难

现实中的系统功能不容易描述

功能化设计丢掉了数据与数据结构

由功能设计得到的软件产品的可复用的代码较少

结构化设计的优缺点

优点

  1. 逻辑设计与物理设计分离
  2. 开发过程中形成一套规范化的文档,便于将来修改和维护

缺点

  1. 开发周期长,开发过程复杂
  2. 系统难于适应环境变化
  3. 经验表明,较小的程序(小于10万行)适合于结构化开发

面向对象体系结构

封装性
继承性
多态

面向对象设计的优缺点

优点

  1. 容易维护
  2. 可复用性好
  3. 映射现实世界
  4. 容易对一个系统进行剖分

缺点

  1. 面向对象程序占用内存较大
  2. 一个对象要和另外一个对象交互,该对象必须知道另外一个对象的身份,包括对象名、方法名和参数类型等。

主程序-子程序与面向对象体系结构

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

相似

在这里插入图片描述

差异

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

课程作业

在这里插入图片描述
结构化设计、面向对象设计
结构图、
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 系统概述 火车订票管理系统是一个C/S风格的客户端软件,主要功能是为用户提供火车票的在线订购、查询、退改等服务。该系统包括客户端和服务器端两部分,客户端提供用户界面和交互功能,服务器端提供数据管理和业务逻辑处理。 2. 客户端软件体系结构 客户端软件采用MVC(Model-View-Controller)架构模式,将系统分为三个部分: 2.1 模型层(Model) 模型层负责数据的存储和管理,包括用户信息、车票信息、订单信息等。模型层采用DAO(Data Access Object)模式,将数据的访问和操作封装在数据访问对象中,提供给控制器层调用。模型层还负责数据的校验和验证,保证数据的完整性和正确性。 2.2 视图层(View) 视图层负责用户界面的设计和展示,包括登录界面、订票界面、订单查询界面等。视图层采用MVP(Model-View-Presenter)模式,将界面和控制器分离,通过Presenter来处理用户的输入和输出。视图层还负责用户的输入检查和提示,保证用户的正确操作。 2.3 控制器层(Controller) 控制器层负责业务逻辑的处理和交互的控制,包括用户登录、订票、查询订单等。控制器层采用MVC模式,将视图和模型分离,通过控制器来调用模型层和视图层的方法,实现业务逻辑的处理和界面的交互。控制器层还负责处理异常和错误,保证系统的稳定性和安全性。 3. 系统架构图 客户端软件的系统架构如下图所示: ![image](https://user-images.githubusercontent.com/58036255/134384415-3a1f0f7a-8f42-4d2c-8a67-0b69d5d9a16a.png) 4. 总结 本文介绍了火车订票管理系统C/S风格客户端软件体系结构的设计,采用MVC架构模式,将系统分为模型层、视图层和控制器层三个部分,实现了数据管理、用户界面和业务逻辑的分离。该系统具有良好的可扩展性和可维护性,能够满足用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VengaZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值