前四个课时的内容是“软件体系结构概述”。
LW老师的讲课带劲,逻辑性强,也接地气,节奏不快不慢,很nice~
-
软件架构师
这门课最对口的职业是软件架构师,软件架构师是工作在项目经理和程序员之间,既要懂需求,又要懂技术。一边领着高收入,一边也要承担高风险。一个建筑工程失败,首先被问责的一定是包工头和建筑设计师,不会是某个建筑工人。同样,一个软件项目失败,最先被找的一定是项目经理和架构师。与建筑领域不同的是,一个建筑工人不会因为搬砖又快又好就成为建筑设计师,而一个软件架构师必须成长于一线程序员,起码有几年的项目经验。
有句话说,架构师要做的就是让编程从问答题变成选择题。 -
软件体系结构的意义
要想真正明白一个东西的好,得失去了才行。如果没有体系结构,软件工程会是什么样子句话说,软件项目越大,编程开始得越早,死得越快。可想而知,当一件事已经大到称为工程,不做设计就开始施工,必然是一种冒险。体系结构真是为填补从需求到实现之间的鸿沟应运而生。 -
本门课程涉及的内容
软件体系结构+UML统一建模语言+软件设计模式
其中软体对应SDLC中的概要设计和部分详细设计(例如算法就不包括在其中)
UML是手段,软件架构师需要以一种规范的方式将架构传达给别人。
设计模式是经过前人总结的精华,但是滥用还不如不用,真正实用设计模式的高手可以达到这样的境界:也不知道用了什么设计模式,只知道现在方案是最好的。一翻书发现用了很多设计模式。 -
软件体系结构的定义
其实业界还没有统一的定义,下面提一些认可度高的。
软体的创始人给出的定义:
Mary Shaw和David Garlan认为软件体系结构包括构成系统的设计元素的描述,设计元素的交互,设计元素组合的模式,以及在这些模式中的约束。 -
软件体系结构三要素
三要素:构件,连接件,约束。
即3C:component,connector,constraint。
5.1 构件
可预制(提前设计好)和可重用(重要目的)的软件部件,指计算单元和数据存储单元,可以是一个处理过程或数据元素。
计算单元可以是数据库里的一张表,也可以是整个数据库。
构建可以小到一个类,大到一个子系统。
特点:可大可小可复用。
5.2 连接件
用来建模:构件与构件之间的相互作用,控制这些相互作用的规则。
最简单的连接件是类与类之间的互相调用。
简单相互作用:
过程的调用
访问共享变量
复杂和语义相关的相互作用:
客户端-服务器协议
数据库访问协议
异步事件的多点传送
管道数据流
5.3 约束
描述了体系结构的配置和拓扑要求,配置或拓扑是指构件和连接件组成的一个连接图。该连接图用于描述软件体系结构的构成,确定构件和连接件之间的连接关系:
正确的连接性
并发和分布性
符合设计的启发式和风格规则 -
软件体系结构的优势
6.1. 容易理解
所谓一图抵千言
①它从一个高层设计的抽象层次来表征一个系统
②简化了我们理解庞大系统的能力
6.2.重用
①重用大的构件
②重用一些集成构件的框架
③特定领域的软件体系结构
(像银行系统侧重安全性,医疗系统侧重可靠性和稳定性)
④设计模式(设计模式诞生之初就是为了重用)
6.3.控制成本
容易想到,理解越深入,控制越精准
系统维护者可以更好的理解变更带来的影响,因而可以更加精确的估算变更所需的成本。
6.4.可分析性
①对系统的一致性检查提供高层次的视图
②研究系统是否与某种体系结构风格相符合
③对符合特定风格的特定领域系统的体系结构分析
④分析依赖于其中的构件
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!