初识软件体系结构(1-4课时)

news/2024/7/5 4:01:48

前四个课时的内容是“软件体系结构概述”。
LW老师的讲课带劲,逻辑性强,也接地气,节奏不快不慢,很nice~

  1. 软件架构师
    这门课最对口的职业是软件架构师,软件架构师是工作在项目经理和程序员之间,既要懂需求,又要懂技术。一边领着高收入,一边也要承担高风险。一个建筑工程失败,首先被问责的一定是包工头和建筑设计师,不会是某个建筑工人。同样,一个软件项目失败,最先被找的一定是项目经理和架构师。与建筑领域不同的是,一个建筑工人不会因为搬砖又快又好就成为建筑设计师,而一个软件架构师必须成长于一线程序员,起码有几年的项目经验。
    有句话说,架构师要做的就是让编程从问答题变成选择题。

  2. 软件体系结构的意义
    要想真正明白一个东西的好,得失去了才行。如果没有体系结构,软件工程会是什么样子?有句话说,软件项目越大,编程开始得越早,死得越快。可想而知,当一件事已经大到称为工程,不做设计就开始施工,必然是一种冒险。体系结构真是为填补从需求到实现之间的鸿沟应运而生。

  3. 本门课程涉及的内容
    软件体系结构+UML统一建模语言+软件设计模式
    其中软体对应SDLC中的概要设计和部分详细设计(例如算法就不包括在其中)
    UML是手段,软件架构师需要以一种规范的方式将架构传达给别人。
    设计模式是经过前人总结的精华,但是滥用还不如不用,真正实用设计模式的高手可以达到这样的境界:也不知道用了什么设计模式,只知道现在方案是最好的。一翻书发现用了很多设计模式。

  4. 软件体系结构的定义
    其实业界还没有统一的定义,下面提一些认可度高的。
    软体的创始人给出的定义:
    Mary Shaw和David Garlan认为软件体系结构包括构成系统的设计元素的描述,设计元素的交互,设计元素组合的模式,以及在这些模式中的约束。

  5. 软件体系结构三要素
    三要素:构件,连接件,约束。
    即3C:component,connector,constraint。
    5.1 构件
    可预制(提前设计好)和可重用(重要目的)的软件部件,指计算单元和数据存储单元,可以是一个处理过程或数据元素。
    计算单元可以是数据库里的一张表,也可以是整个数据库。
    构建可以小到一个类,大到一个子系统。
    特点:可大可小可复用。
    5.2 连接件
    用来建模:构件与构件之间的相互作用,控制这些相互作用的规则。
    最简单的连接件是类与类之间的互相调用。
    简单相互作用:
    过程的调用
    访问共享变量
    复杂和语义相关的相互作用:
    客户端-服务器协议
    数据库访问协议
    异步事件的多点传送
    管道数据流
    5.3 约束
    描述了体系结构的配置和拓扑要求,配置或拓扑是指构件和连接件组成的一个连接图。该连接图用于描述软件体系结构的构成,确定构件和连接件之间的连接关系:
    正确的连接性
    并发和分布性
    符合设计的启发式和风格规则

  6. 软件体系结构的优势
    6.1. 容易理解
    所谓一图抵千言
    ①它从一个高层设计的抽象层次来表征一个系统
    简化了我们理解庞大系统的能力
    6.2.重用
    ①重用大的构件
    ②重用一些集成构件的框架
    ③特定领域的软件体系结构
    (像银行系统侧重安全性,医疗系统侧重可靠性和稳定性)
    ④设计模式(设计模式诞生之初就是为了重用)
    6.3.控制成本
    容易想到,理解越深入,控制越精准
    系统维护者可以更好的理解变更带来的影响,因而可以更加精确的估算变更所需的成本。
    6.4.可分析性
    ①对系统的一致性检查提供高层次的视图
    ②研究系统是否与某种体系结构风格相符合
    ③对符合特定风格的特定领域系统的体系结构分析
    ④分析依赖于其中的构件


http://lihuaxi.xjx100.cn/news/242263.html

相关文章

计算机网络分类ip地址子网划分,IP地址分类和子网划分(示例代码)

IP地址:地址范围    网络地址规律      子网掩码    私有地址          保留地址A类地址:从1.0.0.0 到126.0.0.0     第1个字节的第一位总是O   255.0.0.0   …

git 维护

2019独角兽企业重金招聘Python工程师标准>>> git子模块维护 Qt5模块维护 google repo meta-boot2qt 转载于:https://my.oschina.net/assange/blog/757314

WildFly评估之WildFly的模块化系统

感谢朋友【吴杰】投递本文。 WildFly,前身是JBoss AS,从V8开始为区别于JBoss EAP,更名为WildFly。Wildfly 8主要具备如下特性: Java EE7的参考实现(2013年7月止尚未得到Java EE7兼容认证)启动速度更快&…

软件测试中的白盒测试是什么?

软件测试中的白盒测试是什么?软件测试培训需要学习的知识有很多,白盒测试就是其中的一种,白盒测试也叫结构测试或逻辑驱动测试。了解产品内部工作流程,通过试验可以检测出产品的内部活动是否按规定进行。 根据程序内部结构检测程序&#xff…

贺州学院计算机协会,2019年广西高等教育学会数学教学专业委员会年会暨学术交流会在贺州学院召开...

2019年12月27日至29日,由广西高等教育学会数学教学专业委员会主办、贺州学院数学与计算机学院承办的2019年广西高等教育学会数学教学专业委员会年会暨学术交流会在贺州学院召开。广西高等教育学会数学教学专业委员会理事长、南宁师范大学党委副书记侯代忠&#xff0…

对于正交频分复用的异构网络的理解

正交 来看百度百科的定义—— 物理中:运动的独立性,也可以用正交来解释。正交频分复用 来看百度百科的定义—— 将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通…

【Android 基础】Animation 动画介绍和实现

转载自:http://www.cnblogs.com/yc-755909659/p/4290114.html1.Animation 动画类型Android的animation由四种类型组成:XML中alph渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画效果JavaCode中Alp…

怎样找到适合自己的UI设计培训班

UI设计这个行业近几年有越来越多的人都比较关注,市面上的UI设计培训机构也越来越多,很多零基础同学都在寻找适合自己的UI设计培训机构,那么怎样找到适合自己的UI设计培训班呢?来 怎样找到适合自己的UI设计培训班? 一、看课程内容 UI设计行业…