前四个课时的内容是“软件体系结构概述”。
LW老师的讲课带劲,逻辑性强,也接地气,节奏不快不慢,很nice~
-
软件架构师
这门课最对口的职业是软件架构师,软件架构师是工作在项目经理和程序员之间,既要懂需求,又要懂技术。一边领着高收入,一边也要承担高风险。一个建筑工程失败,首先被问责的一定是包工头和建筑设计师,不会是某个建筑工人。同样,一个软件项目失败,最先被找的一定是项目经理和架构师。与建筑领域不同的是,一个建筑工人不会因为搬砖又快又好就成为建筑设计师,而一个软件架构师必须成长于一线程序员,起码有几年的项目经验。
有句话说,架构师要做的就是让编程从问答题变成选择题。 -
软件体系结构的意义
要想真正明白一个东西的好,得失去了才行。如果没有体系结构,软件工程会是什么样子?有句话说,软件项目越大,编程开始得越早,死得越快。可想而知,当一件事已经大到称为工程,不做设计就开始施工,必然是一种冒险。体系结构真是为填补从需求到实现之间的鸿沟应运而生。 -
本门课程涉及的内容
软件体系结构+UML统一建模语言+软件设计模式
其中软体对应SDLC中的概要设计和部分详细设计(例如算法就不包括在其中)
UML是手段,软件架构师需要以一种规范的方式将架构传达给别人。
设计模式是经过前人总结的精华,但是滥用还不如不用,真正实用设计模式的高手可以达到这样的境界:也不知道用了什么设计模式,只知道现在方案是最好的。一翻书发现用了很多设计模式。 -
软件体系结构的定义
其实业界还没有统一的定义,下面提一些认可度高的。
软体的创始人给出的定义:
Mary Shaw和David Garlan认为软件体系结构包括构成系统的设计元素的描述,设计元素的交互,设计元素组合的模式,以及在这些模式中的约束。 -
软件体系结构三要素
三要素:构件,连接件,约束。
即3C:component,connector,constraint。
5.1 构件
可预制(提前设计好)和可重用(重要目的)的软件部件,指计算单元和数据存储单元,可以是一个处理过程或数据元素。
特点:可大可小可复用。
5.2 连接件
最简单的连接件是类与类之间的互相调用。
用来建模:构件与构件之间的相互作用,控制这些相互作用的规则。
简单相互作用:
过程的调用
访问共享变量
复杂和语义相关的相互作用:
客户端-服务器协议
数据库访问协议
异步事件的多点传送
管道数据流
5.3 约束
描述了体系结构的配置和拓扑要求,配置或拓扑是指构件和连接件组成的一个连接图。
确定构件和连接件之间的连接关系:
正确的连接性
并发和分布性
符合设计的启发式和风格规则 -
软件体系结构的优势
容易理解
重用
控制成本
可分析性