IBM AI Developer 专业证书专项课程-Introduction to Software Engineering-软件架构介绍,面向对象分析与设计, 应用程序架构方法, 生产部署

主题: 软件架构介绍

软件架构定义
  • 概念:软件架构是系统的组织结构,作为软件系统的蓝图,指导程序员开发软件的交互组件。
  • 组成:包括软件系统的基本结构,并解释系统的行为。
  • 功能:定义组件间的交互方式、操作环境以及设计软件的原则。
软件架构的重要性
  • 利益相关者需求平衡:满足不同利益相关者的需求,并作为团队成员间沟通的基础。
  • 设计决策:架构代表早期的设计决策,这些决策会影响后续的编码实现。
  • 适应性:良好设计的架构允许在需求变化时保持敏捷。
  • 软件系统寿命:即使实现细节发生变化,也能延长软件系统的寿命。
软件架构的影响
  • 非功能性需求:如性能、可扩展性、可维护性、互操作性、安全性和管理性。
  • 技术栈选择:架构设计指导技术栈的选择,技术栈包括软件、编程语言、库和框架。
  • 生产环境:架构推动关于软件发布环境的决策,包括运行和交付应用程序给最终用户的基础设施,如服务器、负载均衡器和数据库。
软件架构设计产生的成果物
  • 软件设计文档(SDD):包含技术规范,指明设计应如何实现,提供软件的功能描述和设计考虑。
  • 架构图:展示组件、它们之间的交互、约束和范围,显示设计中使用的架构模式。
  • 统一建模语言(UML)图:使用通用的、与编程语言无关的符号来沟通结构和行为。
总结
  • 软件架构:作为应用程序的蓝图,代表其底层组织结构。
  • 良好架构设计的重要性:作为团队成员间沟通的基础,代表早期设计决策,一旦开发开始难以改变,并适应开发过程中的需求变化。
  • 架构设计的影响:影响技术栈选择、生产环境,产生的成果物包括SDD、架构图和UML图。

主题: 软件设计与建模

软件设计概述
  • 定义:在开发之前记录软件的结构组件和行为属性的过程。
  • 目的:通过建模来表达其设计,包括创建软件解决方案及其子组件的可视化或图表表示,以及它们之间的交互。
结构化设计(Structured Design)
  • 概念:将软件问题概念化为组织良好的较小解决方案元素,称为模块和子模块。
  • 重点:强调组织以实现解决方案,模块应具有高内聚和低耦合。
  • 耦合:模块间的通信,系统应设计为模块间的弱关联,以便一个组件的变化对另一个组件的影响最小。
  • 应用:常用于服务导向架构和基于微服务的架构模式。
行为模型(Behavioral Models)
  • 定义:描述系统的行为,而不解释如何实现该行为。
  • UML(统一建模语言):一种标准化的建模语言,用于可视化表示复杂软件系统的架构、设计和实现。
  • 优点
    • 规划功能,节省时间和金钱。
    • 帮助新团队成员快速上手。
    • 促进技术与非技术受众之间的沟通。
    • 帮助开发者轻松导航源代码。
UML图
  • 分类:结构图和行为图。
  • 结构图:描述系统的静态方面,如系统的组件、它们之间的关系和环境。
  • 行为图:描述系统的动态方面,如状态转换图和交互图。
状态转换图(State Transition Diagram)
  • 定义:一种UML图,包含状态和事件的集合,描述系统的不同状态以及引起状态变化的事件。
交互图(Interaction Diagram)
  • 定义:用于模拟软件系统的动态性质,帮助可视化对象及其关系。
  • 序列图:一种交互图,显示对象之间的通信相对于时间的关系。
总结
  • 结构化设计:将软件问题分解为组织良好的较小解决方案元素。
  • 行为模型:描述系统的行为,不解释实现方式。
  • UML图:帮助开发者在编码前快速了解项目,提前规划功能,轻松导航源代码。
  • 状态转换图:描述系统状态和引起状态变化的事件的行为模型。
  • 交互图:描述交互对象之间的通信。

主题: 面向对象分析与设计(OOAD)

面向对象编程(OOP)基础
  • 核心概念:OOP 语言(如 Java、C++、Python)中,对象包含数据和定义对象可以执行的行为。
  • 示例:创建代表病人的对象,包含取消预约的行为。
类(Classes)与对象(Objects)
  • :对象的通用版本,作为对象的蓝图或模板,包含属性(properties)和方法(methods)。
  • 实例化(Instantiation):在代码中创建特定对象的过程,此时类的通用属性被赋予具体值。
  • 对象:从类创建的具体实体,具有具体的数据和行为。
面向对象分析与设计(OOAD)
  • 应用:适用于可以被分解为相互作用的对象的系统,便于多名开发者同时在应用的不同部分工作。
  • UML 图:用于展示系统的静态结构和动态行为,包括行为和结构图。
类图(Class Diagrams)
  • 定义:一种结构化的 UML 图,用于展示对象之间的关系。
  • 组成
    • :每个框代表一个类,显示其属性。
    • 属性:对象的数据和可用行为(方法)。
    • 关系:显示类之间的继承和其他关系。
  • 继承:子类继承父类的属性,并且可以添加额外的属性和方法。
示例
  • 医疗人员类图:护士、医生和技术员是医疗人员的子类;专科医生是医生的子类。
总结
  • OOAD:基于交互对象的行为规划软件系统的过程。
  • 对象:包含数据和定义其行为的实体。
  • :作为对象蓝图的实体。
  • 类图:展示对象间关系的 UML 结构图。

主题: 应用程序架构方法

组件(Components)
  • 定义:组件是封装功能的个体单元,作为应用程序的一部分与其他组件一起工作。
  • 特性
    • 可重用性:设计用于在不同应用程序中重复使用。
    • 可替换性:应易于用另一个组件替换。
    • 独立性:设计上不依赖其他组件。
    • 可扩展性:能够添加行为而不改变其他组件。
    • 封装性:将数据和方法捆绑在一起,隐藏内部状态,不暴露具体实现。
    • 非上下文特定性:设计使其在不同环境中运行,通过传递数据设置内部状态。
组件示例
  • API:可作为组件,如果它能在多个系统和应用程序中重用。
  • 数据访问对象:数据库的接口,可以在应用程序不知情的情况下切换用户到不同的数据库。
  • 控制器(controller):决定特定事件需要调用哪些其他组件的组件,控制数据在两个其他组件间的流动。
组件化架构(Component-Based Architecture)
  • 重点:设计分解为逻辑组件,提供比面向对象设计更高的抽象级别。
  • 要求:定义、组合和实现松散耦合的独立组件,使它们协同工作创建应用程序。
服务(Services)
  • 定义:类似于组件,也是功能的单元,但设计为独立部署并被多个系统重用。
  • 业务需求:专注于解决业务需求。
  • 关键区别:服务只有唯一、始终运行的实例,多个客户端与之通信。
服务示例
  • 信用检查:检查客户信用的服务。
  • 贷款计算:计算月度贷款支付的服务。
  • 抵押贷款处理:处理抵押贷款申请的服务。
服务导向架构(SOA)
  • 定义:服务松散耦合,通过网络上的通信协议相互通信。
  • 特点:支持构建分布式系统,通过通信协议向其他应用程序提供服务。
分布式系统(Distributed Systems)
  • 定义:多个服务位于不同机器上的系统,通过通信协议(如HTTP)传递消息来协调交互。
  • 特性
    • 对最终用户来说,表现为单一的、连贯的系统。
    • 共享资源,如硬件、软件和数据。
    • 容错性,即使某个节点或服务失败,系统也继续运行。
    • 多个活动并发运行,减少延迟,提高吞吐量。
    • 可扩展性,随着用户数量的增加而扩展。
节点(Nodes)
  • 定义:网络上任何可以识别、处理和传输数据到其他节点的设备。
  • 组成:分布式系统由多个相互连接的节点组成,节点在SOA中运行一个或多个服务。
架构类型
  • 分布式系统:可能使用客户端-服务器、三层、对等或微服务等基本类型的架构。
总结
  • 组件:具有可重用性、独立性、可替换性、可扩展性、封装性和非上下文特定性。
  • 组件化架构:将系统分解为逻辑独立组件。
  • 服务:由组件构成,独立部署,可被多个系统重用。
  • SOA:服务通过网络上的通信协议松散耦合并相互通信。
  • 分布式系统:在不同机器上运行多个服务,对最终用户来说表现为单一的、连贯的系统。

主题: 软件架构模式

架构模式定义
  • 架构模式:在软件架构中重复使用的解决方案,突出系统内部元素和结构的共性。
架构模式类型
  1. 两层架构(2-tier)

    • 定义:也称为客户端-服务器架构,服务器托管和管理大多数资源与服务,客户端通过界面请求数据或服务。
    • 示例:文本消息应用、数据库客户端与数据库服务器的连接。
  2. 三层架构(3-tier)

    • 定义:由多个水平层组成,每层只与直接相邻的层通信,分为表示层、中间层(业务逻辑处理)、数据层。
    • 示例:Web应用程序,使用Web服务器提供用户界面,应用服务器处理用户输入,数据库服务器处理数据管理。
  3. 对等架构(Peer-to-Peer, P2P)

    • 定义:由既是客户端又是服务器的节点组成的去中心化网络,节点之间直接共享资源。
    • 示例:文件共享、即时消息、协作、高性能计算,如加密货币(比特币、以太坊)。
  4. 事件驱动架构

    • 定义:侧重于事件的生产者和消费者,生产者监听并响应触发器,消费者处理事件。
    • 示例:网约车应用(如Lyft和Uber),客户发出乘车请求事件,该事件被路由到服务提供者。
  5. 微服务架构

    • 定义:将应用程序功能分解为模块化组件(服务),通过API进行通信。
    • 示例:社交媒体网站,用户账户可以请求多种服务,如添加朋友、目标广告推荐、显示内容。
架构模式特点
  • 两层架构:客户端和服务器。
  • 三层架构:三个互相交互的层。
  • 事件驱动:由消费者响应的动作。
  • 对等:由充当客户端和服务器的去中心化节点网络组成。
  • 微服务:作为单一系统行为的松散耦合的独立服务,服务间通信由编排处理。
模式组合
  • 组合性:两种或以上的模式可以结合使用,但并非所有模式都能相互兼容(如P2P和2-tier不兼容)。
总结
  • 架构模式是解决软件架构问题的重复性解决方案。
  • 不同架构模式可能共享相关特性。
  • 架构模式的选择取决于系统架构师对软件系统需求的判断。

主题: 应用程序部署环境

应用程序环境定义
  • 组成:包括运行应用程序所需的硬件和软件资源,如应用代码、软件栈、依赖的库、第三方应用、中间件、操作系统、网络组件、物理或虚拟硬件、内存和存储。
预生产环境
  • 开发环境:开发者的工作站,积极编码应用程序的平台。
  • QA/测试环境:QA团队测试应用程序组件的环境。
  • 暂存环境:尽可能复制生产环境的平台,但不面向普通用户。
生产环境
  • 定义:包括运行应用程序的完整解决方案堆栈,包括硬件、软件和额外的基础设施组件。
  • 用户:面向所有用户。
  • 要求:必须考虑应用程序的负载、安全性、可靠性和可扩展性等非功能性需求。
  • 复杂性:比预生产环境更复杂。
部署选项
  1. 本地部署(On-Premises Deployment)

    • 位置:系统及其基础设施位于组织内部,通常在防火墙之后。
    • 责任:组织负责系统、硬件、相关基础设施和运行应用程序所需的维护。
    • 成本:通常比云部署更昂贵。
  2. 云部署

    • 公有云:在云服务提供商拥有的硬件上,通过互联网使用软件支持的基础设施,硬件和服务与其他公司共享。
      • 提供商:Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform、IBM Cloud。
    • 私有云:云基础设施专为单一组织独家使用,可以在本地运行或由服务提供商拥有、管理和操作。
      • 优势:增强安全性,提供完全定制的灵活性。
    • 混合云:公有云和私有云的结合,优化成本、安全性、可扩展性和灵活性。
总结
  • 应用程序环境:包括开发、测试/QA、暂存和生产环境。
  • 生产环境:必须考虑负载、安全性、可靠性和可扩展性等非功能性需求。
  • 部署选项:可以在传统的本地硬件上部署,或在公有云、私有云或混合云平台上部署。

主题: 生产部署组件

生产环境部署组件
  • 定义:生产环境中部署应用程序所需的常见组件。
防火墙(Firewall)
  • 目的:监控网络之间的流量,基于一组安全规则允许或阻止请求数据。
  • 功能:作为网络间的屏障,阻止病毒、恶意软件和黑客访问内部网络。
负载均衡器(Load Balancer)
  • 目的:在多个服务器(服务器场)之间高效分配网络流量。
  • 位置:位于客户端和服务器之间。
  • 功能:防止服务器流量过载,确保没有单个服务器超负荷工作,管理并发客户端请求,并快速可靠地返回正确数据。
服务器类型
  1. Web 服务器

    • 功能:提供网页、文件、图像和视频等内容给客户端。
    • 响应:主要响应来自Web浏览器的超文本传输协议请求。
  2. 应用服务器

    • 功能:运行业务逻辑,将应用程序提供给客户端,而不是客户端自己运行应用程序。
    • 主要任务:启用客户端与服务器端应用程序代码之间的交互。
  3. 代理服务器

    • 功能:作为中间服务器,处理两个层级之间的请求。
    • 用途:负载均衡、系统优化、缓存、作为防火墙、隐藏请求源、加密、扫描恶意软件等。
数据库服务器
  • 定义:存储在计算机上的相关数据集合,可通过多种方式访问。
  • 管理:通常由数据库管理系统(DBMS)控制。
  • 功能:控制数据的流动和存储,DBMS连接数据库服务器和应用程序,以便应用程序可以检索或操作数据库中存储的数据。
总结
  • 生产环境组件:包括防火墙、负载均衡器、Web和应用服务器、代理服务器以及数据库服务器。
  • 防火墙:监控网络间流量的安全设备。
  • 负载均衡器:在服务器之间分配网络流量。
  • Web 服务器:向客户端提供内容。
  • 应用服务器:运行业务逻辑并提供应用程序。
  • 数据库服务器:通过数据库管理系统存储和控制数据流动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值