2012年下半年试题一:论基于架构的软件设计方法及应用

server/2024/11/17 5:48:52/

论文库链接:系统架构设计师论文


论文题目

       基于架构的软件设计(Architecture Based Software Design,ABSD)方法以构成软件架构的商业、质量和功能需求等要素来驱动整个软件开发过程。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求,并强调在架构设计过程中使用软件架构模板。采用ABSD方法,设计活动可以从项目总体功能框架明确后就开始,因此该方法特别适用于开发一些不能预先决定所有需求的软件系统,如软件产品线系统或长生命周期系统等,也可为需求不能在短时间内明确的软件项目提供指导。

       请围绕“基于架构的软件开发方法及应用”论题,依次从以下三个方面进行论述。

       1.概要叙述你参与开发的、采用ABSD方法的软件项目以及你在其中所承担的主要工作。

       2.结合项目实际,详细说明采用ABSD方法进行软件开发时,需要经历哪些开发阶段,每个阶段包括哪些主要活动。

       3.阐述你在软件开发的过程中都遇到了哪些实际问题及解决方法。

论文模板

论基于架构的软件设计方法及应用

摘要   

      2022年4月,本人所在单位计划研发生态集装箱管理控制平台项目。该平台主要用于现有公司生态集装箱产品做对接,达到远程控制、平台管理,为集装箱生态种植提质提效的目的。本人在项目中担任架构师,负责系统的架构设计。本文以生态集装箱管理平台项目为例,主要论述基于架构的软件设计方法在该项目中的应用。在架构需求阶段,我们采用了用例图、类图等进行用例模型和分析模型的建立,完成需求分析问题。在架构设计阶段,我们采用了架构权衡分析方法(简称ATAM),完成了架构的质量和功能评估,评审架构可能存在的风险以及缺陷。经过合理有效地运用基于架构的软件设计方法,本项目得以成功上线,并获得客户的一致好评。

正文   

       2022年4月,本人所在的单位按照既定的企业系统战略规划,同时经过市场调研与分析,决定研发生态集装箱管理控制平台。生态集装箱为无尘的水培作物环境,以本地嵌入式系统为核心调控各种环境参数。在产品的使用中,生态集装箱的本地操作与控制,状态检测等工作对使用者极为不便,对其进行物联网化改造成了急需解决的需求问题。生态集装箱管理控制平台项目主要完成集装箱的远程监控、远程操作、协作管理等,在方便用户使用,提高集装箱产物的产量与品质的同时,缩减培育成本,降低损耗。平台系统的主要功能模块包含位置服务模块、事件提醒模块、环境控制模块、统计分析模块、系统配置模块等。位置服务模块包括集装箱定位功能和电子栅栏功能。事件提醒模块主要负责环境参数异常、集装箱故障、集装箱位置异常、控制异常等信息的告警,并将告警信息通知相关的负责人。环境控制模块包含温湿度控制、灯光控制、二氧化碳控制、营养液控制等,其中营养液分别包含PH和EC浓度调控两个子模块。统计分析模块是对生态集装箱的耗能和各模块的控制统计分析。系统配置模块则包含了账号权限、系统规则的设置。本人在该项目中担任系统架构师,负责系统架构的设计工作。

       在确定使用基于架构的软件开发方法(简称ABSD)开发生态集装箱控制平台后,项目组对该方法进行了更深入的研究和实践。基于架构的软件开发方法是强调由业务、质量和功能需求的组合驱动的架构设计,该方法将开发过程分为六个阶段:架构需求、架构设计、架构文档化、架构复审、架构实现以及架构演化。其中架构需求的活动包含了需求获取、标识构件和需求评审活动。架构设计的活动包括提出架构模型、映射构件、分析构件相互作用、产生架构、设计评审活动。架构文档化则用于将架构设计的成果进行文档输出,主要输出文档有架构设计规格说明书和用于测试架构需求的质量设计说明书。架构复审则是对架构设计进行复审,找出可能存在的风险和缺陷。架构实现的活动包括了架构分析与设计、构件实现、构件组装、系统测试。架构演化主要包括需求变化归类、架构演化计划、构件变动、更新构件的相互作用、构件组装和测试、技术评审一系列活动。

       基于架构的软件设计方法很适合我们这种前期需求不明确、不稳定,后期需要进行不断迭代演化的项目。下面我将结合生态集装箱控制管理平台项目,说明ABSD方法在应用过程中遇到的问题以及实际解决过程。

       一、架构需求阶段

      该阶段使用用例图和类图解决需求分析问题。在项目开发过程中,我们遇到了如何有效而又准确地完成需求分析问题。面对已经获取的需求,完成准确有效的分析是项目开发的重要步骤之一。我们建立用例模型和分析模型,对需求进行深入而细致的分析。用例模型由用例图实现。根据需求说明,首先我们识别出参与者,即系统使用的人员,之后合并需求获得用例。使用文档对用例进行详细描述,便于其他人员的阅读与理解。最后进行用例的调整与优化。用例模型表明了我们系统所需要实现的功能。

       完成了用例模型的建立,我们可进一步地完成分析模型,分析模型由类图实现。我们通过定义概念类,即识别出系统地实体类、边界类与控制类。随后分析研究各种类之间的关系,同时抽取公共类,优化类设计。然后建立文档说明类的职责,便于开发人员的理解和交流。架构需求阶段的最后以交互图的形式体现相互关系。经过用例模型,分析模型的分析与研究后,我们将研究完成的类进行分组,并打包成构件,完成架构需求中的标识构件工作。

       二、架构设计阶段

       该阶段使用面向对象设计方法解决系统设计问题。在架构设计阶段,重点是完成一个好的架构设计。好的系统设计能减少大量的开发工作,提高开发效率。经过讨论分析,我们决定采用面向对象的设计方法。面向对象的设计方法技术成熟,应用广泛,可以给系统的设计予以很好的指导。例如在进行异常消息提醒和控制调控设计时,我们采用了观察者模式。监控模块作为事件的发布者,消息提醒模块和控制调控模块作为订阅者联动响应。当生态集装箱内部由于夜间植物呼吸作用导致二氧化碳浓度过高,而有可能威胁人的安全时,监控系统采集实时数据后发布异常信号,消息提醒模块订阅后收到消息推送给相关工作人员进行提醒警示。而控制调控模块收到订阅消息则立即打开换气风扇进行换气以降低室内二氧化碳的浓度。面向对象的设计方法能更好地让系统与现实世界对应,便于对系统地理解与实现:同时系统可具有更好地复用性,松耦合性。

       三、架构复审阶段,使用ATAM方法完成架构评估

       该阶段使用ATAM方法完成架构评估。在架构复审阶段,需要一个有效地方法来指导我们完成架构的评审,尽可能早地发现系统架构可能存在的风险以及缺陷。在充分对比了SAAM与ATAM方法之后,我们最终选择以ATAM方法来指导架构复审工作。ATAM方法,全称为架构权衡分析法,是在SAAM的基础上发展而来的,主要针对性能包括可用性安全性可修改性,在开发前对这些质量属性进行评价和折中。ATAM方法分为四个阶段,分别是场景和需求收集阶段、架构视图和场景实现阶段、属性模型构造和分析阶段以及折中阶段。我们通过场景来获得用户对非功能质量属性的要求,例如控制命令下达后,2秒之内集装箱要能实现控制的性能要求。同时按照当前的架构视图,研究该场景在视图中是否能实现。通过构造质量属性效用树,识别系统的敏感点权衡点风险点非风险点,完成属性的优先级别排序。最后按照一系列结果进行折中。我们使用ATAM方法完成了架构的评审,为系统的有效开发提高了保障。

       得益于ABSD方法的指导,系统研发工作有条不紊地进行,项目的质量和进度得到了有效的保障,也为公司节省了很多经费。该项目最终在2023年2月完成上线运行,获得了客户的一致好评。系统维护过程中业出现了一些典型问题,比如本地服务器故障导致服务的不可用。事后,我们经过讨论决定将服务部署到云服务器上以获得可靠的弹性服务。


http://www.ppmy.cn/server/142576.html

相关文章

⚙️ 如何调整重试策略以适应不同的业务需求?

调整 Kafka 生产者和消费者的重试策略以适应不同的业务需求,需要根据业务的特性和容错要求来进行细致的配置。以下是一些关键的调整策略: 业务重要性: 对于关键业务消息,可以增加重试次数,并设置较长的重试间隔&#x…

软件测试之测试用例扩展

软件测试之测试用例扩展 1. 测试用例覆盖2. UI布局覆盖3. 兼容性覆盖4. 测试用例条数 1. 测试用例覆盖 规则覆盖UI布局兼容性 2. UI布局覆盖 2条用例即可 布局, 颜色与原型图一致图片和文字描述无误 3. 兼容性覆盖 测试5大浏览器 火狐谷歌ieEge苹果 4. 测试用例条数 使…

【Redis】Redis的一些应用场景及使用策略

应用的场景 Redis 是一个高性能的内存数据库,广泛用于各种应用场景,以下是一些常见的应用场景: 缓存:Redis 的高读写性能使其非常适合作为缓存层,存储频繁访问的数据以减少数据库负载和加快响应时间。例如&#xff0c…

UE--IOS打包失败 AutomationTool exiting with ExitCode=9 (9)

[Remote] Executing build UATHelper: 打包 (IOS): Setting up bundled DotNet SDK UATHelper: 打包 (IOS): /Users/zyh/UE5/Builds/DESKTOP-FKKSVFQ/Y/UE/UE_5.2/Engine/Build/BatchFiles/Mac/../../../Binaries/ThirdParty/DotNet/6.0.302/mac-x64 UATHelper: 打包 (IOS)…

源码解析-Spring Eureka(更新ing)

源码解析-Spring Eureka 文章目录 源码解析-Spring Eureka前言一、从Spring.factory和注解开始二、重要的一步EurekaServerInitializerConfiguration三、初始化了什么?自动保护 四, 重新回到EurekaServerAutoConfiguration 前言 无 一、从Spring.factory和注解开始…

畅聊未来-- AIGC 的发展方向与趋势

引言 AIGC(Artificial Intelligence Generated Content,人工智能生成内容)正在快速发展,逐步渗透到我们的日常生活中。其广泛应用涵盖了文本生成、图像生成、视频制作、声音合成等领域,并对各行各业产生了深远的影响。…

Gin 框架入门(GO)-1

解决安装包失败问题(*) go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct 1 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,Gin 最擅长的就是 Api 接口的高并发。 2 Gin 环境搭建 1.下载并安装 gin go get -u github.…

51单片机基础05 定时器

目录 一、为什么要定时器 二、定时器中断 1、定时器中断参数 2、定时器中断程序 3、定时器计数 一、为什么要定时器 前文提到,比如进行流水灯等操作,都是直接写了delay_ms这类操作。 但是在51单片机中,其一般就是靠双for进行的循环时延&…