自学内容网 自学内容网

软考高级系系统分师和架构师常考知识点总结一

为什么要参加软考:

软考最近几年也逐渐火了起来,作为一个从事软件相关工作10多年的老人,工作也从开发逐渐过度到项目管理,网上很多讲软考的老师都有三、四个高级证,因此考一些证书也是经验和实力的体现,还能有评高级职称机会(以考代评,今年高级证上高级改为高级资格,虽然不一定被聘用),还有抵税福利,其他我就不多说了。

本人在2024年5月和2025年5月的考试连续通过系统架构师、系统分析帅考试,而且备考时间都是在1个月内,其中架构用了1个月,教材是23年使用的新版,但系统分析师几乎是裸考,且2025年是系统分析师教程改版第一次使用。通过有运气的成分(系统分析论文有个题目是基于模型开发方法(抽象化)和低代码自动化平台,本人带领团队基于jeecg平台开发好多年了,用过好几个项目,开源和商业版都用过,此处是不是该有推广费?开个玩笑)。网上有那么多的文章,我把自己总结的硬核知识分享给大家,对系分和架构都很有用,希望对大家也有所帮助,知识点中我熟悉的或者觉得不重要的就没总结 ,大家可根据自己的情况参考或补充。计划分三期总结,这是第一期。
(这些知识是来自软件工作之类的书籍,如果有疑问,请联系作者及时删除)

第 1 章:软件体系结构概论

构件获取
在建立基于构件的软件开发(Component-Based Software Development,CBSD)中,构件获取可以有多种不同的途径:
(1)从现有构件中获得符合要求的构件,直接使用或作适应性(flexibility)修改,得到可重用的构件。
(2)通过遗留工程(legacy engineering),将具有潜在重用价值的构件提取出来,得到可重用的构件。
(3)从市场上购买现成的商业构件,即COTS(Commercial Off-The-Shell)构件。
(4)开发新的符合要求的构件。
领域工程过程可划分为领域分析、领域设计和领域实现等多个活动,其中的活动与结果如图1-2所示。
在这里插入图片描述

软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织(organization)结构和拓扑(topology)结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
目前,已有的构件分类方法可以归纳为三大类,分别是关键字分类法、刻面分类法和超文本组织方法。
构件开发的目的是重用,为了让构件在新的软件项目中发挥作用,库的使用者必须完成以下工作:检索与提取构件,理解与评价构件、修改构件,最后将构件组装到新的软件产品中。
构件组装是指将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。构件组装技术大致可分为基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。
系统构件组装分为三个不同的层次:定制(Customization)、集成(Integration)、扩展(Extension)。这三个层次对应于构件组装过程中的不同任务。
体系结构设计有两大类方法:过程驱动方法和问题列表驱动方法。前者包括:
(1)面向对象方法,与OOA/OOD相似,但更侧重接口与交互。
(2)“4+1”模型方法。
(3)基于场景的迭代方法。
面向对象的分析设计”原话: 面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;
设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。
类(实体类/控制类/边界类)
实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息,例如,在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。
控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词”或“名词+动词”)转化来的名词,例如,用例“身份验证”可以对应于一个控制类“身份验证器”它提供了与身份验证相关的所有操作。
边界类用于封装在用例内、外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口,以及与其他系统的接口。

第 2 章:软件体系结构建模

“4+1”视图模型从五个不同的视角(逻辑视图、进程视图、物理视图、开发视图和场景视图)–逻进物开场来描述软件体系结构。
软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。目前,常见的软件开发模型大致可分为三种类型:
(1)以软件需求完全确定为前提的瀑布模型。
2)在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,例如,螺旋模型、增量模型、敏捷方法、统一过程等。
3)以形式化开发方法为基础的变换模型。

研究软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。根据建模的侧重点不同,软件体系结构的模型分为五种:结构模型、框架模型、动态模型、过程模型和功能模型。在这五个模型中,最常用的是结构模型和动态模型。
(1)结构模型。这是一个最直观、最普遍的建模方法。这种方法以体系结构的构件、连接件(connector)和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质等。研究结构模型的核心是体系结构描述语言。
(2)框架模型。框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
(3)动态模型。动态模型是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。例如,描述系统的重新配置或演化。动态可以指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。
(4)过程模型。过程模型研究构造系统的步骤和过程,因而结构是遵循某些过程脚本的结果。
(5)功能模型。功能模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。
它可以看作是一种特殊的框架模型。

“4+1”视图模型——从五个不同视角
在这里插入图片描述

逻辑视图(logic view)主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图(class diagram)来描述逻辑视图。可以从Booch标记法中导出逻辑视图的标记法,只是从体系结构级的范畴来考虑这些符号,用Rational Rose进行体系结构设计。图2-2是逻辑视图中使用的符号集合。
在这里插入图片描述

开发视图(development view)也称模块视图(module view),主要侧重于软件模块的组织和管理。
在开发视图中,最好采用4-6层子系统,而且每个子系统仅仅能与同层或更低层的子系统通讯这样可以使每个层次的接口既完备又精练,避免了各个模块之间很复杂的依赖关系。而且,设计时要充分考虑,对于各个层次,层次越低,通用性越强,这样,可以保证应用程序的需求发生改变

进程视图(process view)也称为并发视图,侧重于系统的运行特性,主要关注一些非功能性的需求,例如系统的性能和可用性。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。它也定义逻辑视图中的各个类的操作具体是在哪一个线程(thread)中被执行的。
物理视图(physical view)主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通讯等问题。
场景(scenarios)可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象
体系结构的核心模型由五种元素组成:构件、连接件、配置configuration)、端口(port)和角色(role)。其中构件、连接件和配置是最基本的元素。
软件体系结构的生命周期模型
对于软件项目的开发来说,一个清晰的软件体系结构是首要的。传统的软件开发过程可以划分为从概念直到实现的若干个阶段,包括问题定义、需求分析、软件设计、软件实现及软件测试等。软件体系结构的建立应位于需求分析之后,软件设计之前。在建立软件体系结构时,设计师主要从结构的角度对整个系统进行分析,选择恰当的构件、构件间的相互作用以及它们的约束,最后形成个系统框架以满足用户的需求,为软件设计奠定基础。

1、需求分析阶段 2、建立软件体系结构阶段 3、设计阶段 4、实现阶段
在这里插入图片描述

软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能否达到体系结构级的软件重用。也就是说,能否在不同的软件系统中,使用同一体系结构。基于这个目的,学者们开始研究和实践软件体系结构的风格和类型问题。

第 3 章:软件体系结构风格

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式(idiomatic paradigm)。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构建系统的规则。
讨论体系结构风格时要回答的问题是:
(1)设计词汇表是什么?
(2)构件和连接件的类型是什么?
(3)可容许的结构模式是什么?
(4)基本的计算模型是什么?
(5)风格的基本不变性是什么 ?
(6)其使用的常见例子是什么 ?
(7)使用此风格的优缺点是什么?
(8)其常见的特例是什么?
这些问题的回答包括了体系结构风格的最关键的四要素内容,即提供一个词汇表、定义一套配置规则、定义一套语义解释原则和定义对基于这种风格的系统所进行的分析。Garlan和Shaw根据此框架给出了通用体系结构风格的分类
(1)数据流风格:批处理序列、管道与过滤器.
(2)调用/返回风格:主程序与子程序、面向对象风格、层次结构。
(3)独立构件风格:进程通讯、事件系统.
(4)虚拟机风格:解释器、基于规则的系统。
(5)仓库风格:数据库系统、超文本系统、黑板系统。
在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行。

黑板系统由三部分组成:知识源、黑板数据结构、控制
在这里插入图片描述

与二层C/S结构相比,在三层C/S体系结构中,增加了一个应用服务器。
三层C/S体系结构是将应用功能分成表示层、功能层和数据层三个部分
OOD将OOA的模型作为OOD的问题论域部分(PDC),并增加其他三个部分:人机交互部分(HIC)、任务管理部分(TMC)和数据管理部分(DMC)。各部分与PDC一样划分为五个层次,但是针对系统的不同方面。
在这里插入图片描述

当前,已有三种分布式构件标准:Microsoft的DCOM、OMG的CORBA和Sun的JavaBeans。
Windows 98/2000和Windows NT/2000,采用在这些平台上具有较高效率的支持DCOM的ActiveX方式实现客户端和应用服务器的程序。
伺服对象(Servant):CORBA对象的真正实现,负责完成客户端请求。
对象适配器(Object Adapter):用于屏蔽 ORB 内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用 ORB 内部的某些功能。
对象请求代理(Object Request Broker):解释调用并负责查找实现该请求的对象,将参数传给找到的对 象并调用方法返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制。
与C/S体系结构相比,B/S体系结构也有许多不足之处,例如:
(1)B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能.
(2)B/S体系结构的系统扩展能力差,安全性难以控制。
(3)采用B/S体系结构的应用系统,在数据査询等响应速度上,要远远地低于C/S体系结构。
(4)B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理( OnLine Transaction Processing,OLTP)应用.

HMB风格的构件模型包括了接口、静态结构和动态行为三个部分,
异构结构风格:1内外有别模型 2查改有别模型
DSSA的建立过程分为五个阶段:(1)定义领域范围 (2)定义领域特定的元素 (3)定义领域特定的设计和实现需求约束 (4)定义领域模型和体系结构 (5)产生、搜集可重用的产品单元

第 4 章:软件体系结构描述

ADL是这样一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。其三个基本元素是:
(1)构件:计算或数据存储单元。
(2)连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则。
(3)体系结构配置:描述体系结构的构件与连接件的连接图。
ADL即架构描述语言,其基本构成要素包括:组件、组件接口、连接件、架构配置。组件(构件)是一个计算单元或数据存储。也就是说,组件是计算与状态存在的场所。在架构中,一个构件可能小到只有一个过程或大到整个应用程序。是连接件是用来建立组件间的交互以及支配这些交互规则的架构构造模块。架构配置或拓朴是描述架构的组件与连接件的连接图。
还有许多语言没有整理:主要的体系结构描述语言有Aesop、MetaH、C2、Rapide、SADL、Unicon和Wright等
Aesop支持体系结构风格的应用,MetaH为设计师提供了关于实时电子控制软件系统的设计指导,C2支持基于消息传递风格的用户界面系统的描述,Rapide支持体系结构设计的模拟并提供了分析模拟结果的工具,SADL提供了关于体系结构加细的形式化基础,Unicon支持异构的构件和连接类型并提供了关于体系结构的高层编译器,Wright支持体系结构构件之间交互的说明和分析。这些ADL强调了体系结构不同的侧面,对体系结构的研究和应用起到了重要的作用,但也有负面的影响。每一种ADL都以独立的形式存在,描述语法不同且互不兼容,同时又有许多共同的特征,这使设计人员很难选择一种合适的ADL,若设计特定领域的软件体系结构又需要从头开始描述。


原文地址:https://blog.csdn.net/jiguang127/article/details/149133344

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!