当前课程知识点:软件工程 >  第11章 软件系统设计 >  11.5 软件体系结构风格(三) >  讲授视频

返回《软件工程》慕课在线视频课程列表

讲授视频在线视频

下一节:讲授视频

返回《软件工程》慕课在线视频列表

讲授视频课程教案、知识点、字幕

大家都用过集成开发环境

来编写和调试代码

你知道这个软件的体系结构

是什么类型吗

我们来看一下

程序调试器的工作过程

首先

在调试器设置一个断点

编译器 文本编辑器

和变量监视器

通过注册的方式

和断点发生关联

程序运行到断点处的时候

系统就会触发文本编辑器

和变量监视器

也就是说

是断点事件隐含地

造成它们的调用

这个时候

文本编辑器滚动屏幕到断点处

变量监视器刷新变量的当前值

这是一种事件风格的系统

事件驱动分成显式调用

和隐式调用两种类型

顾名思义

在显式调用中

各个构件之间的互动

是显式地调用函数

或者程序来实现的

而且调用的过程和次序

也是预先设定不变的

在隐式调用中

调用过程并不固定

而且事先不可知

各个构件之间

是通过事件的方式来进行互动

在事件风格的系统中

隐式调用是一种常见的形式

系统把应用

看成是一个构件的集合

作为事件源的构件

并不是直接调用其他构件

而是触发或者广播一个

或多个事件

其他响应事件的构件

是作为事件处理器

预先在事件中进行注册

当事件被触发的时候

事件管理器就会调用

这些已经注册的构件

进行事件的处理

在前面的程序调试器例子中

事件源是调试器

编辑器和变量监视器

是事件的处理器

集成开发环境是事件管理器

编辑器和变量监视器

向调试器进行注册

接收断点事件

遇到断点的时候

是由调试器来发布事件

进而就触发了编辑器

和变量监视器

实现事件处理的第一种方式

是发布订阅模型

在这个模型中

有两种角色

分别是发布者和订阅者

订阅者可以订阅一个

或多个频道

而发布者可以向指定的频道

来发送消息

所有订阅了这个频道的订阅者

就会收到这个消息

但是没有预定的程序

不会收到这个消息

另一种实现方式是观察者模式

观察者被注入到被观察者中

进行事件的监听

随时对被观察者的变化

做出反应

这种方式

和发布订阅模式的不同在于

发布订阅模式是在观察者

和被观察者中间

增加了一层间隔

二者之间是一种松耦合的关系

前面我们介绍了几种

常见的体系结构风格

但是在实际应用时

需要借助丰富的经验

来进行判断和选择

一般情况下

大部分的实际系统

往往是几种体系结构的组合应用

在系统分析和设计过程中

我们首先要把整个系统

作为一个功能体来进行分析

和权衡

得到一个最顶层的体系结构

如果系统中的元素

还是比较复杂

那就继续进行分解

再得到某一部分的局部体系结构

也就是说

我们要把焦点集中在系统的

总体结构上

避免过多地考虑实现细节

在体系结构的选择上

我们需要考虑技术因素

和质量因素两个方面

技术因素包括

使用什么样的构件和连接件

运行的时候

构件之间的控制机制

是如何实现

数据如何通讯

数据和控制是如何交互

质量因素包括

可修改性

要考虑到算法 数据表示

和系统功能的变化和扩展

性能 以及可复用性等

根据实际的开发经验

我们可以总结一些

体系结构的选择原则

比如说

一般层次化在任何系统

都是要使用的

如果系统的功能

可以分解成

一系列连续的处理步骤

那么就可以考虑批处理

或者管道-过滤器风格

如果系统的核心问题

是数据管理

而且数据是持续存储的

那么可以使用仓库结构风格

如果任务之间的控制流

是可以预先设定的

可以考虑主程序 子程序

或者面向对象的风格

对于任务需要高度灵活可配置

或者任务是被动的

就可以考虑事件系统

或者客户机/服务器的结构

如果设计了一种计算

但是没有机器可以支持它的运行

可以考虑使用虚拟机

或者解释器的体系结构

体系结构的选择和应用

需要丰富的经验

也需要不断的创新

同学们可以在实际的项目开发中

参考已有的成熟方案

在实践的过程中加以运用和掌握

软件工程课程列表:

第1章 初识软件工程

-1.1 软件无处不在

--讲课视频

-1.2 软件的本质特性

--讲授视频

-1.3 软件工程的产生与发展

--讲授视频

-1.4 软件工程的基本概念

--讲授视频

-1.5 软件质量实现

--讲授视频

-1.6 业界人士谈软件工程

--海芯科技创始人施侃乐访谈

-测验题--作业

-讨论题

--讨论题

-作业题

--第一张 作业题

第2章 编写高质量代码

-2.1 编程过程与规范

--讲课视频

-2.2 良好的编程实践

--讲课视频

-2.3 Python集成开发环境

--讲课视频

-2.4 代码静态检查

--讲课视频

-2.5 代码性能分析

--讲课视频

-2.6 结对编程实践

--讲课视频

-2.7 刘贺谈软件工程

--讲课视频

--讨论

-测验题--作业

-作业题

--第二章 作业题

第3章 单元测试

-3.1 单元测试概述

--讲课视频

-3.2 黑盒测试方法

--黑盒测试方法

-3.3 白盒测试方法

--基本概念

--代码覆盖标准

--基本路径测试

-3.4 单元测试工具

--单元测试工具

--html

-测验题--作业

-作业题

--第三章 作业题

--作业题附件

第4章 软件开发过程

-4.1 软件过程

--讲课视频

-4.2 软件过程模型

--讲课视频

-4.3 敏捷开发过程

--讲课视频

-4.4 微软公司开发过程

--邹欣经理自我介绍

--微软开发过程之一

--微软开发过程之二

-测验题--作业

第5章 团队开发管理

-5.1 团队组织与管理

--讲课视频

-5.2 项目沟通管理

--讲课视频

-5.3 软件项目计划

--讲课视频

-5.4 软件项目估算

--讲课视频

-测验题--作业

-讨论题

--讨论

第6章 敏捷开发与配置管理

-6.1 敏捷开发之Scrum

-- 敏捷开发之Scrum

--html

-6.2 用户故事与估算

--讲课视频

-6.3 团队协作工具Tower

--Tower工具介绍(1)

--Tower工具介绍(2)

-6.4 配置管理

--讲课视频

-6.5 配置管理工具Git

--讲课视频

-测验题--作业

-作业题--作业

第7章 需求获取

-7.1 需求工程师

--讲课视频

-7.2 需求定义

--讲课视频

-7.3 需求的类型

--讲课视频

--讲课视频(2)

-7.4 需求工程过程

--讲课视频

-7.5 需求的主要来源

--讲课视频

-7.6 需求获取技术

--讲课视频

--讲课视频二

--讲课视频三

-7.7 撰写需求文档

--讲课视频

-测验题--作业

-讨论题

--讨论

第8章 用例建模

-8.1 用例建模概念

--讲课视频

-8.2 用例建模过程

--讲课视频

-8.3 用例建模精讲

--讲课视频

-8.4 建模工具介绍

--讲课视频

-8.5 微信抢票应用案例

--讲课视频

-测验题--作业

-讨论题

--讨论

第9章 面向对象分析与设计

-9.1 面向对象分析

--讲课视频

-9.2 CRC卡片分拣法

--讲课视频-1

--讲课视频-2

-9.3 面向对象设计

--讲课视频-1

--讲课视频-2

-9.4 类图建模

--讲课视频-1

--讲课视频-2

-第9章 面向对象分析与设计--测验题

-讨论题

--讨论

第10章 行为建模

-10.1 顺序图概念

--讲课视频

-10.2 顺序图建模

--讲课视频

-10.3 顺序图风格

--讲义视频

-10.4 状态建模

--讲课视频

-10.5 状态图

--讲课视频

-10.6 状态图精讲

--讲义视频

-测验题--作业

-讨论题

--讨论

第11章 软件系统设计

-11.1 软件体系结构概念

--讲授视频

-11.2 软件设计原则

--讲授视频

-11.3 软件体系结构风格(一)

--讲授视频

-11.4 软件体系结构风格(二)

--讲授视频

-11.5 软件体系结构风格(三)

--讲授视频

-11.6 软件设计过程

--讲授视频

-11.7 Web系统架构设计

--讲授视频

-11.8 数据库选择策略

--讲授视频

-测验题--作业

-作业题

--html

--html

--html

-作业题--作业

第12章 软件交互设计

-12.1 交互设计概述

--讲授视频

-12.2 交互设计目标

--讲授视频

-12.3 GUI设计原则

--讲课视频

-12.4 KLM效率模型

--Video

-12.5 Fitts定律

--讲授视频

-12.6 交互设计过程

--讲授视频

-测验题--作业

第13章 软件系统测试

-13.1 软件测试概念

--讲课视频

-13.2 软件测试类型

--讲课视频

-13.3 软件功能测试

--讲课视频

-13.4 软件性能测试

--讲课视频

-测验题--作业

第14章 软件交付与维护

-14.1 软件部署与交付

--讲课视频

-14.2 软件演化与维护

--讲课视频

-测验题--作业

第15章 期末考试与总结

-第一部分:基础知识

-第二部分:编程与测试(选做)

--编程与测试(选做)

讲授视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。