目 录CONTENT

文章目录

系统架构师-论文范文-系统设计

路口、下车
2026-01-22 / 0 评论 / 0 点赞 / 6 阅读 / 0 字
温馨提示:
本文最后更新于2026-01-22,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

论面向对象的软件设计——UML 在面向对象软件架构中的应用

摘要

自“软件危机”出现过后,工程化软件开发方法不断发展,采用什么方法对大规模软件进行设计并保证软件的质量。在这样背景下,人们开始从面向数据流过程开发法中不断思考,进而引入对象的概念。对象是数据与行为的封装,对象既是自然界中的对象,这种方法不仅易理解也符合事物本身结构,对象之间通过消息进行交互。面向对象的分析与设计不断发展,UML 成了面向对象分析与设计的形式化表示方法。本人在2016年,采用面向对象的方法,对XX 航空公司的航路费及机场费核算[RAFS]系统进行了分析与设计,并取得了成功,通过本项目让我认识到面向对象软件分析与设计的应用场景,面向对象分析与设计的过程,方法。并且加深了对面向对像理念的理解,如用例在需求阶段的重要作用,领域概念模型构建的方法,类识别方法等。

正文

1、面向对象分析
面向对象分析方法的核心是用例和用例图。用例是用户与系统交互的功能集合的说明,这里用户是一种角色,可以是其他系统,也可以是第三方系统接口。用例核心是一种功能分解方法,主要用于捕获软件需求。用例的核心是用例描述,用例描述中的主要内容有,用例名,用例编号,用例角色,主流程,异常流程,错误处理,用途描述及特征,前置条件,后置条件等。
1.1 确定用例
通过对使用RAFS系统用户及交互系统的调研与分析,RAFS 系统包括以下用例:用户认证与授权,机场费航路费起降规则编辑,机场费航路费计算,报表与查询等模块。其中核心用例为机场费航路费规则编辑,机场费航路费计算。费用规则编辑的复杂性存在于,每个国家的机场费航路费的收费规则相差很大。首先计费规则复杂。比如,有的机场跟据不同时间段,飞机的不同起飞重量进行计费;也有根据不同的时间段以不同费率收取噪音费;也有是固定费率进行计算;航路费指航线所经过的国家领空,这个国家收取的费用。费用规则一般是按里程固定费率计算。其次,一个费用有多个计费规则,有“并”关系也有“或”关系。因此决定规则编辑界面规则的设计变得困难。
1.2复杂用例的流程描述
活动图主要用于描述对象的操作流程与事件处理,状态图用于描述对象的状态。活动图与状态图可以用于描述用例的动态形为及用例中核心对象的状态转换。在RAFS系统中,通过对各国机场费,航路费收费规则文档的分析,发现规则可以分为条件和结果。条件则相对固定几类:1,算术运算条件;2,固定费用选择类;3,单项条件类,4多选条件类。这正符合界面组件的面向对象设计。条件组件是一个界面组件,有自己的生命周期,因此对条件对象绘制了状态图,确定条件对象有初始状态,展现状态,编辑状态,结速状态。条件对象有始化,装入数据,渲染,数据更新,重绘界面,提交数据,销毁等过程。针对条件中的飞行数据则来自于第三方系统,为了便于在规则界面组装成条件,架构组对这些数据进行了分析,将核
心字段提取出来形成数据因子,用于构成条件规则。费用计算用例主要是根据配置的规则,结合实际的飞机飞行数据,算出费用。难点在于根据规则中配置的因子,找到因子对应的实际飞行数据,将数据应用于规则,算出实际费用。
1.3 构建用例图
根据识别到的用例,架构组构建了用例图,用例进一步细化出了如下用例。费用编辑用例细化出了,配置因子,配置费用规则。费用计算用例又细分出,航路费计算,起降费计算。用户认证授权细分出,用户身分识别,用户权限管理用例。进过与客户多次沟通,最终确定了用例图,用例描述,核心用例的流程,
1.4构建领域模型
识别出用例后,根据用例,架构组将用例中的使用到的名词,全部写到卡片上,然后将卡片和用例发给架构组成员,让成员确定最重要的名词,和不需要名词。最后进行架构组会议,确定了高层的领域对象。确定高层次的领域对象后,架构组对每个对象进行属性提取。这一步操作过后,是确定领域对象之间的关系。RAFS系统初步识别出如下对象:因子,条件,表达式,规则,结果,费用,飞机型号,国家,城市,飞机制造商等对象。
1.5顶层架构图
通过对用例,领域对象的分类,形成 UML包图,构建出粗粒度的架构图,确定各模块之间的关系。为接下来的工作打好基础。根据客户的非功能性需求,此系统必须用浏览器进行访问。因此架构组认为除费用计算用例以外的用例整合为一个基于B/S架构风格的系统,采用 MVC 为核心处理模式。MVC,主要是将展现与控制进行有效分工,模型保存业务数据。模型的变化会通知视图更改界面,视图通过控制器处理业务或者调用后端业务层接口,根据业务需要选择不同的视图,将视图展现给用户。经过以上的分析与处理,最终确定了系统的功有需求列表,确定了需求范围。形成了需求定义说明书,其中包含了所有用例,用例图。每个用例使用单独的用例说明文档。
2,面向对象设计
通过OOA过程后,系统进入设计阶段。设计阶段主要包括以下过程。实现用例方案;设计技术支撑方案;设计用户界;精化设计。本节只对各个过程中的核心子过程进行描述。
2.1类识别
根据需求分析文档、用例定义文档及初步的领域模型,提取边界面,控制类,实体类,辅助类。这一过程,RAFS系统识别出以下界面组件,规则编辑界面类,规则编辑界面类,规则条件界面类(包含算术条件类,单选条件类,复选条件类,固定费用条件类),用户登录界面类,计算进度显示等界面类。控制类:界面组件控制基类;4个条件控制类 等其他控制类。实体类主要是精化领域模型中抽象出的模型类。另外还抽取出规则业务处理辅助类,因子业务处理辅助类,数据访问等相关类。同时还对相类的关系进行的标识,如规则类是条件类的聚合,条件组件抽象类是4个条件类的泛化等等。
2.2 构造交互图
根据用例中的流程说明(主要流程,辅助流程,异常流程)对系统中的对象间的调用时序关系进行了视图化。也同时应用活动图描述了一些对象之间的业务流程。并确定了对相控制类,辅助类中的相关方法。
2.3技术选型
通过以上几个阶段,架构组对.net平台,java 平台进行了评估。就以下几个方面进行讨论与权衡:
1.平台成熟度,及大型项目中的成功案例
2.平台的基础服务的成熟度
3. 开发人员招聘的难易成度
4. 与企业现有系统的技术的互操作程度
最终选择Java 平台作为项目开发的基础平台。在前端规则界面数据的存储与传输中采用XML 格式。界面组件采用ZK8.0。在 JDK1.7,版本的基础上使用 Spring MVC为表现层,Spring 作为轻量级的业务层集成框架,使用 hibernate, O/R mapping的方式进行数据访问。费用计算采用成熟的规则引擎 Drools,采用模板引擎将将规则文件(XML)转成 Drools 的规则文件。因子数据的存储采用星型结构提高因子数据的访问效率。为了便于后期的扩展,本系统中所有功能以接口的方式进行定义,真正做到对修改关闭。同时在模块设计中制定了上层仅依赖下层原则保证模块的独立性。
3,架构文档化
经过需分析与设计最终确定的开发中使用的技术,明白了目标系统概念模型,功能模型。形成了以类图,用例图,活动图,交互图,状态图,构件图,部署图为中心的UML架构文档。并结合4+1视图对整体架构进行了描述。最终形成了架构设计说明书,架构质量规格说明书,并交付客户。
通过本项目,本人进一步理解了面向对象的需求分过和设计过程,对 UML的静态模型图,动态模型图的运用有了新的体会。通过本项目我认为面向对象的分析与设计,核心是抓信用例图,然后针对用例的描述对静态模型,动态模型进行细化。最终根据设计模型的特点选择实现技术。并且这个过程不是一次性的而是迭代多次,不断精确的过程。最终根据选择的技术特点及系统设计,业务要求采用合适的开发方式。

论软件的设计模式

2016年,我所在的公司承担了某部网络靶场的研发任务。我作为公司的技术总监,希望能打造基于网络靶场的系列产品,参与到项目的设计中,以期开发扩展性和可维护性良好的网络靶场,为以后的产品开发打下基础。网络靶场是网络安全技术研究的基础支撑平台,它利用虚拟的和实物的设备,模拟出满足用户需求的具有一定逼真度的网络环境,供网络安全技术研究、武器装备效能评估、攻防演练和人员培训使用。本文先讨论了软件的设计模式中的工厂抽象、构件者、单例、适配器、桥接、责任链、解释器和观察者模式,再简介网络靶场项目中对这些设计模式的使用情况和解决的问题。通过网络靶场项目,我深刻体会到,选择合适的设计模式,能优化系统结构,便于扩展、维护。目前,网络靶场项目已在多家单位使用,取得了一定成绩。
2016年,公司承担了某部网络靶场项目。网络靶场是支撑网络安全技术研究、武器装备效能评估、攻防演练和人员培训的基础支撑平台,在高校、公安、国安和部队有一定的需求。我作为公司的技术总监,希望通过这个项目,打造出一款扩展性和可维护性良好的网络靶场的产品,针对高校、公安、国安和部队的特点,推出不同的版本,在项目中,我作为技术负责人和系统架构师,负责产品的总体架构设计。
网络靶场是网络安全技术研究和人才培养的基础支撑平台。2014年,乌克兰电网断电事件和棱镜门事件震惊世界,各国都认识到了网络安全技术的重要性,纷纷开展了网络靶场的建设,美英日法加澳都发布了网络靶场建设的计划。我国也成立了中央网信办,并在 2016年推出了网络靶场关键技术研究的项目。我们公司承接的项目属于该计划的一部分。
在功能上,网络靶场通过接收用户对网络环境的需求,利用底层的计算资源和网络资源,构建满足用户需求的模拟网络环境,并支撑该网络环境的运行和用户对网络环境的访问,提供对网络环境的生命周期的管理和以运行状态的管理,并为用户采集网络环境中的节点状态信息、流量信息和网络流量信息,提供对采集数据的一般处理和基于规则的分析评估,以帮助用户了解模拟网络环境的运行状态。网络靶场系统
主要使用了微服务的架构,便于裁剪于组合,也便于扩展和维护。在具体实现上,网络靶场系统使用了工厂抽象、构件者、单例、适配器、桥接、责任链、解释器和观察者等设计模式。下面,我先介绍以上各种设计模式及其特点,再介绍这些设计模式在网络靶场中的使用情况,以及其解决的问题和达到的效果。
工厂抽象、构件者和单例模式属于创建性模式,其特点是利用抽象类来将对象的实例化封装起来,使得使用者可以在不明确知道具体的类的情况下使用类。工厂抽象定义了一个工厂抽象类和多个接口,利用抽象类的创建方法产生多个相关联的实现了接口的实例,并利用接口访问这些实例。这样,在工厂类和其创建的接口实现类变化的情况下,可以保持使用这个定义的客户端不变,做到了解耦调用和实现的目的。
构件者模式将组成一个整体的各个部分分开创建,便于问题的分解。单例模式使得在一个进程中,只有某个类的一个实例存在,便于实现集中的管理,解决如限定对某项资源的使用的问题。桥接和适配器模式属于结构型模式。其特定是封装了多个类和他们的组合关系的细节,形成了一个大的具有组合特点的结构。桥接模式将有关联的部分拆开,使其可以独立地变化,便于发展多样性,易于扩展。适配器模式将不同的接口转换为统一的接口,便于客户端采用相同的模式访问,便于将某类相同的事物的不同表述标准化。
责任链、解释器和观察者模式属于行为型模式。其特点使将责任在不同的部件之间分配,协作完成任务。责任链模式将组合中的对象以链条的方式连接,在执行时,链条中的某个符合条件的对象完成任务处理。解释器则是推出一个语言的语法处理规则,将输入的数据解释执行。观察者模式将某个类的特定的属性的变化广播给关注了该属性的所有类,完成了一种广播通知的功能。
工厂抽象模式主要使用在构成网络环境的元素的创建上,以便于扩展新的元素类型。在网络靶场项目中,把构成网络环境的元素抽象成了主机、交换机、路由器和连线。主机是一个基类,可以基于主机定义出虚拟主机、实物主机、容器主机、攻击机、防火墙、WAF等多种用途和配置的主机,但是其都需要实现创建、启动、停止、重启和销毁等操作。同样,交换机、路由器和连线也可以定义多种。但是,主机、交换机、路由器之间的连接关系是固定。因此,采用了工厂抽象模式来定义各类的主机、交换机、路由器和连线的产生,但是,他们之间的约束关系是不变的,便于了网络环境的元素的扩展。
单例模式主要使用在线程池的管理上,以便于控制线程的数量,防止系统过载。在网络靶场项目中,象部署网络环境这样的任务是一个耗时长的任务,采用异步的方式执行。用户在浏览器发出请求,服务端接到请求后,开启一个线程来完成用户的请求,并把结果通过异步的方式传回到客户端。如果用户请求太多,服务端开启太多的线程,会导致系统资源不够而崩溃。为防止这种情况,设置了线程池来管理线程,在请求太多的时候,只存储请求,而不启动线程,线程池采用单例模式,保证系统中只有一个线程池。
构建模式主要用在网络环境上。网络环境由基础网络、主机节点和网络规则五部分组成。在构建网络环境时,先读取用户设计的网络连接、交换机和路由器情况构建网络,再读取主机节点信息和节点与交换机的连接信息创建主机对象,最后读取网络规则创建网络策略对象,用于配置路由规则和防火墙规则。
桥接模式主要用于某类设备的扩展上。如虚拟主机,既可以是用作防御用的防火墙,也可以是用作攻击用的攻击机,这类设备在部署上是一样的,但是,在采集数据、数据分析和展示上是不一样的,因此,采用了桥接模式,将采集、数据分析和展示分开,便于各自的扩展。
适配器模式主要使用在硬件设备的接口上。不同厂家的交换机具有不同的接口形式,我们使用适配器模式,对各种厂家的交换机进行了封装,转换成相同的接口,供上层的应用模块使用,完成硬件的配置与管理和监控。
责任链模式主要使用在采集数据的处理上。在网络靶场中,不同用户的网络环境中的数据,都是由同一个采集程序采集的。因此,采集的数据需要划分给不同的用户,完成用户定义的规则的数据处理。因此,在采集处理程序中针对每个用户都有一个采集数据处理类,按该用户的规则处理接收到的数据。采集数据处理类会判断是否是该用户的网络环境中采集的数据,是则进行处理,否则跳过。
解析器模式主要使用在采集数据的分析。由于网络靶场项目中,用户的数据分析是需要按用户的意图来进行,因此,系统定义了分析规则描述语言。用户按语言的要求配置分析规则,系统按配置的分析规则处理数据,从而实现了按用户意图进行分析处理。
观察者模式主要使用在态势展示上。由于系统的态势展示使用了3D技术来展示网络拓扑,在网络拓扑规模比较大的情况下,如果使用传统的读取数据并遍历页面上的所有节点并改写展示状态的方式来展示的话,速度很慢,会花屏,达不到展示效果。因此是用了数据与页面对象绑定的模式,页面对象关注数据的变化,在数据变化时,页面的对象会监听到数据的变化,并根据变化展示。这样的设计,提高了展示的性能,具有良好的用户体验。
经过一年多的努力,我们在2017年地完成了网络靶场项目的验收,几年来,基于网络靶场的产品也陆续推向了市场,取得了一定的经济效益。通过网络靶场项目,我认识到,各种设计模式的综合应用是设计扩展性和可维护性良好的产品的基础,也是产品生命力的保障。

0

评论区