#系统架构设计师 #软考 # 论文
在分享这片论文之前先小小的打一个广告,本人任职某运营商解决方案架构师职位,因工作需要考取了软考的系统架构师认证,并顺利的通过了考试 一点点心得分享如下:
选择题(就是刷,刷到你出肌肉记忆,闭眼就知道选项)
案例题(就是背,很多简答题的回答都是公式化的 比如看到活动图和状态图就知道它俩有啥区别,刚开始可能会有点恼火,准备的过程可能就像背面试题一样,很多东西是通的)
论文题(最讲究技巧和套路的一门考试,相信很多高项的同学都是挂在论文上了,而架构师的考试论文相对比较容易,我本人参考三次 均高分通过,其实很多人觉得自己技术薄弱 或者不善文辞,但实际上摸清楚论文的套路后,整个论文的组成就是1000+1500两个部分组成 1000字的项目背景、项目建设内容、项目结尾的总结+1500字对考题的响应)按照这样的大思路去备考 会事半功倍。
题目要求:
基于架构的软件设计(Architecture-Based Sotware Design,ABSD)方法以构成软件架构的商业、质量和功能需求等要素来驱动整个软件开发过程。ABSD是一个自顶向下,等,也可为需求不能在短时间内明确的软件项目提供指导。请围绕“基于架构的软件开发方法及应用”论题,依次从以下三个方面进行论述。
递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架
构风格实现质量和商业需求,并理源在架构设计过程中使用软件架内模板。采用ABSD万法,设计活动可以从项日总体功能柜架明晚后就开始,因此该方法特别适用于开发一些不能预无决定所有需求的软件系统,如软件产品线系统或长生命司期系统
1、概要叙述你参与开发的、采用ABSD方法的软件项目以及你在其中所承担的主要工作。
2、结合项日实际,详细说明采用ABSD方法进行软件开发时,需要经历哪些开发阶段?每个阶段包括哪些主要活动?
3、阐述你在软件开发的过程中都遇到了哪些实际问题及解决方法。
摘要:2022年9月,我司中标某区级政府单位的智慧城市IOC平台的建设服务项目,该系统基于各类数据和业务规则辅助区委区政府精准决策,发现和定位城市问题。我作为系统架构设计师,负责系统整体的架构合适并指导开发团队进行系统建设。该项目业务、质量和功能需求较高,采用了ABSD基于架构的软件开发方法,主要包含了需求获取、架构设计、架构文档化、架构复审、架构实现、架构演化六个主要阶段。在项目实践过程中,采用原型工具和联合沟通的方式准确的定义和获取需求,通过UML模型的4+1设计来描述和设计软件的架构,最后在事件驱动和基于规则的架构风格指导下完成了软件系统的高质量开发,项目于2023年3月上线,上线后获得用户各方的一致好评。
在国家十四五发展规划和数字中国战略布局的大背景下,某区级政府结合当地整体建设规划,成立智慧城市运行管理中心,打造辅助区级领导班子指挥决策,推动城市数字化发展的IOC平台。基于城市运行状态一屏观、城市问题一屏管的建设理念,项目的建设目标是以智慧城市IOC平台的建设为抓手,通过管理手段和管理模式的创新,促进该区级政府城市管理能力的现代化。集成并分析城市物联网传感数据、政务数据、互联网数据、业务部门运行数据的整合,再造城市治理业务流程,精准发现城市问题,辅助区委区政府精准决策。项目一期建设平台开发部分693万元,经过公开招标比选,我司顺利中标,建设期共六个月,我在项目中担任系统架构设计师负责系统架构的设计和开发过程的管理。
项目组成立后,经过分析和讨论,将系统拆分为四个主要模块。数据接入模块,与该区级政府物联网平台、政府各部门业务系统进行对接,批量或流式接入数据。数据分析模块将接入的数据按照政务业务规则进行分析、运算,对海量数据进行按照领域、主题进行分析计算。数据展示模块,定制开发各种样式的可视化大屏动态实时展示城市各项指标运行态势,预警城市风险,发现城市问题。数据存储模块,构建数据仓库,将城市运行产生的各类数据进行持久化存储,形成各类城市分析主题库,为政务场景的打造提供数据支撑。
本项目商业、质量、功能需求明确,各个政务场景的建设可以采用视角与视图的方式进行分析设计,自顶向下逐步的细化完善,结合项目本身的特点。项目团队一致决定采用决定基于架构的软件设计方法(ABSD)来进行软件的开发。
基于架构的软件设计方法(ABSD)总共需要经历六个主要的开发阶段。1、架构需求阶段:会从需求库中获取需求,通过对需求的分析生成类图,并对类图进行分组,经过抽象和整合将类打包成一个个构件,并对需求进行综合评审。2、设计阶段:根据需求生成不断完善架构模型,包括提出架构模型、映射构件、分析构件的相互作用,并对架构设计进行评审。3、架构文档化阶段对架构设计进行整理,产生架构规格说明书和架构质量说明书等文档内容。4架构复审阶段会邀请各方代表和业务专家对文档和架构设计进行评审,及早发现问题。5实现阶段:对架构设计的内容进行实现,按照复审后的架构进行分析设计、实现、组装以及测试,并形成构件库6、演化阶段对架构进行改变,按照需求来增删构建,使架构整体可以服用,并不断完善。项目具体的开发实践过程如下:
一、需求获取阶段:智慧城市的信息化建设工作涉及多部门联合、多方位调度、多场景融合,高质量的需求获取是系统开发的前提,在我们沟通获取需求的过程中很难有业务人员能够说清楚跨部门业务流程,部门之间的信息壁垒非常明显。我们首先是采用关键用户访谈和调查问卷结合的方式获取初始需求,由需求分析师对其归类整理,接下来通过快速原型工具Axure构建了一个方便用于沟通的可交互原型,每次需求沟通会邀请多部门联合沟通,并邀请城运中心领导参加,多方人员现场讨论,形成初步意见;我们技术人员在现场立即绘制和优化原型文件,确认系统的界面和业务计算逻辑,现场演示,大家一致认可后,会后按标准形成文档化需求,存入项目建设需求库当中。在需求获取阶段,邀请用户共同参与,让进入需求库当中的每一条需求都是真是有效的,为后续的系统开发打下了良好的基础。
二、架构设计阶段,此阶段主要是如何合理设计和描述架构。我们以UML模型中的4+1视图来对系统进行建模。场景视图使用UML模型中的用例图来进行建模,结合用户需求,我们设计出:值班员、值班长、值班领导和总指挥四个角色,并分别为角色标识了具体的用例。逻辑视图使用包图来进行建模,通过技术分析和比对,业务核心部分采用事件驱动和基于规则的架构风格进行开发实现,城市中各类的风险会根据规则部分的设计第一时间触发报警,并产生“工单”,根据事件的等级由不同的角色进行分级处置。物理视图使用UML模型的部署图进行建模,为了确保政务系统的可用性和数据的机密性,在现有想系统集群的基础中,同城搭建部署一个灾备机房,由CDP数据库备份工具通过专线链路实时对数据进行备份,通过UML模型合理的对架构进行设计和描述
三、系统实现阶段,此阶段的主要困难是如果根据需求和架构设计高质量的实现软件系统的开发。首先我们根据需求和复审后文档内容对构件进行高质量的开发,每个构件都有独立的团队进行开发或直接第三方采购,按照统一的标准形成了构件库,遵循事件驱动和基于规则的架构风格来指导开发工作。对于城市中各类物联感知预警数据,采用实时数据处理技术,采用Apache kafka构件事件驱动框架,flink作为实时数据处理引擎,以微服务的架构实现物联感知预警模块,对分散在城市中的各类物联感知数据进行处理和预警。而对业务部门的运行数据比如经济运行预测、社区人口分析,采用Hadoop作为批处理框架,通过MapReduce算法生成各类计算场景,设计并不断优化映射和规约函数,以应对不同的数据处理场景,并具备较高的准确性。
经过六个月的开发和试运行工作,该区智慧城市于2023年3月正式通过验收,作为市级政务创新工作的试点区域,通过物联网感知数据、政务大数据、人工智能推算数据等多种数据的分析和使用、打造了一大批政务惠民特色场景、精准感知城市运行现状、定位城市发展瓶颈,为区委区政府的决策提供了有力的辅助。在项目实施过程中,也遇到了一些问题,核心业务场景的计算中缺少了容错机制,故障发生时往往需要较长时间排查和恢复,我们对系统分析定位后,对核心业务部分引入了N版本程序设计机制,由多个相同模块同时执行同一个计算,通过表决机制得出结果,提升容错能力。通过这个项目的实践,我充分认识到在系统架构设计师的工作中没有最完美的方案,只有最适合的方案,结合实际情况作出好的取舍方能提现出个人价值,今后要保持空杯心态,不断的学习和充实自己,迎接未来更大的挑战。