2012年下半年试题一:论基于架构的软件设计方法及应用
论文库链接:系统架构设计师论文
论文题目
基于架构的软件设计方法以构成软件架构的商业、质量和功能需求等要素来驱动整个软件开发过程。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求,并强调在架构设计过程中使用软件架构模板。采用ABSD方法,设计活动可以从项目总体功能框架明确后就开始,因此该方法特别适用于开发一些不能预先决定所有需求的软件系统,如软件产品线系统或长生命周期系统等,也可为需求不能在短时间内明确的软件项目提供指导。
请围绕“基于架构的软件开发方法及应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与开发的、采用ABSD方法的软件项目以及你在其中所承担的主要工作。
2.结合项目实际,详细说明采用ABSD方法进行软件开发时,需要经历哪些开发阶段?每个阶段包括哪些主要活动?
3.阐述你在软件开发的过程中都遇到了哪些实际问题及解决方法。
写作要点
一、采用ABSD方法进行软件开发时,需要经历架构需求、架构设计、架构文档化、架构复审、架构实现和架构演化六个阶段。
1.架构需求阶段需要明确用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。其主要活动包括需求获取、标识构件和架构评审。
(1)需求获取活动需要定义开发人员必须实现的软件功能,使得用户能够完成他们的任务,从而满足功能需求。与此同时,还要获得软件质量属性,满足一些非功能性需求。
(2)标识构件活动首先需要获得系统的基本结构,然后对基本结构进行分组,最后将基本结构进行打包成构件。
(3)架构需求评审活动组织一个由系统涉众(用户、系统分析师、架构师、设计实现人员等)组成的小组,对架构需求及相关构件进行审查,审查的主要内容包括所获取的需求是否真实反映了用户需求,构件合并是否合理等
2.架构设计阶段是一个选代过程,利用架构需求生成并调整架构决策。主要活动包括提出架构模型、将已标识的构件映射到架构中、分析构件之间的相互作用、产生系统架构和架构设计评审。
3.架构文档化的主要活动是对架构设计进行分析与整理,生成架构规格说明书和测试架构需求的质量设计说明书
4.在一个主版本的软件架构分析之后,需要安排一次由外部人员(客户代表和领域专家)参加的架构复审。架构复审需要评价架构是否能够满足需求,质量属性需求是否在架构中得以体现、层次是否清晰、构件划分是否合理等。从而标识潜在的风险,及早发现架构设计中的缺陷和错误。
5.架构实现主要是对架构进行实现的过程,主要活动包括架构分析与设计、构件实现、构件组装和系统测试。.
6.架构演化阶段主要解决用户在系统开发过程中发生的需求变更问题。主要活动包括架构演化计划、构件变动.更新构件的相互作用、构件的组装与测试和技术评审。这个部分中需注意应侧重ABSD的开发阶段来写,需结合项目来写其具体实践,可以选择三个阶段进行详细论述,。指出在在各个开发阶段主要包括哪些活动、具体是如何做的,要给出实际的效果及分析。
二、根据论述,确定其叙述的ABSD各开发阶段是否合理,具体写出的开发阶段有无具体实践内容体现,是否具有项目实际开发经验。需适当总结项目实施过程中存在的不足,再针对不足提出你具体的解决方案,重点突出解决方案,最好能体现作为高级架构设计师,是具备独立思考和解决问题能力的。
在软件开发的过程中可能遇到的问题包括:
在架构需求获取过程中如何对捕获的架构需求进行筛选和优先级排序;
在架构复审过程中如何解决评审人员的意见不一致问题;
在架构实现过程中如何根据项目组实际情况选择开发语言与开发平台;
在架构演化过程中如何筛选并处理用户的需求变更等等。
论文参考
论基于架构的软件设计方法及应用
摘要
2024年1月,我作为系统架构设计师,主导了企业OA系统的开发。该系统旨在解决打卡签到难、公文流转繁、公车派送多等问题,包含相应核心功能模块。本文详细阐述了ABSD方法在该项目中的具体应用过程与挑战解决。首先,在架构需求阶段,通过深入研讨识别出高并发、高可用、高可配置等关键质量属性,为精准设计奠定基础;其次,在架构设计阶段,采用微服务化分解系统,明确定义领域模型与接口契约,显著提升可维护性与开发效率;最后,在架构实现与验证阶段,通过规范、评审及架构守护工具确保实现与设计一致,有效控制技术债并保障长期健康度。系统于2024年底成功上线,运行稳定。项目实践有效验证了ABSD方法对需求不明确、需持续演化项目的适用性,提升了我的架构设计能力,为企业信息化建设贡献力量。
正文
2024年1月,我以系统架构设计师的身份参与了企业OA系统项目的开发与建设。该系统主要功能是打卡签到、公文流转、公车派送等。由于该系统所有需求不能在短时间内明确,但又迫切需要解决企业目前存在打卡签到难、公文流转繁、公车派送多的情况。经过技术小组讨论一致认为应该采用ABSD方法对该系统进行开发。ABSD方法以构成软件架构的商业、质量和功能需求等要素来驱动整个软件开发过程。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求,并强调在架构设计过程中使用软件架构模板。采用ABSD方法,设计活动可以从项目总体功能框架明确后就开始,因此该方法特别适用于开发一些不能预先决定所有需求的软件系统,如软件产品线系统或长生命周期系统等,也可为需求不能在短时间内明确的软件项目提供指导。
在确定使用基于架构的软件开发方法建设OA系统平台后,技术组对该方法进行了更深入的研究和实践。基于架构的软件开发方法是强调由业务、质量和功能需求的组合驱动的架构设计,该方法将开发过程分为六个阶段:架构需求、架构设计、架构文档化、架构复审、架构实现以及架构演化。其中架构需求的活动包含了需求获取、标识构件和需求评审活动。架构设计的活动包括提出架构模型、映射构件、分析构件相互作用、产生架构、设计评审活动。架构文档化则用于将架构设计的成果进行文档输出,主要输出文档有架构设计规格说明书和用于测试架构需求的质量设计说明书。架构复审则是对架构设计进行复审,找出可能存在的风险和缺陷。架构实现的活动包括了架构分析与设计、构件实现、构件组装、系统测试。架构演化主要包括需求变化归类、架构演化计划、构件变动、更新构件的相互作用、构件组装和测试、技术评审一系列活动。
基于架构的软件设计方法很适合我们这种前期需求不明确、不稳定,后期需要进行不断迭代演化的项目。下面我将结合OA系统项目,说明ABSD方法在应用过程中遇到的问题以及实际解决过程。
一、基于架构需求阶段的ABSD开发方法
为了将多样的办公场景转化为精确的架构驱动因素。在具体活动中,我们组织了多次由行政、后勤、IT及各部门员工代表参与的需求研讨会。通过分析打卡签到的高并发特性、公车派送的状态流转与地理位置需求、公文流转的严格权限与流程可溯性,以及物品申购的多级审批模型,我们系统地识别出系统的关键质量属性,包括签到时段的高可用性、业务流程的高可配置性以及数据的安全性。该阶段的实践效果极为关键,它从源头上规避了因需求理解偏差导致的后期大规模返工。例如,通过需求分析明确识别出“每日上下班高峰时段,数千员工同时在线打卡”这一核心质量场景,我们在后续架构设计中前瞻性地采用了Redis缓存会话信息与队列削峰的策略。系统上线后,签到功能在高峰时段响应迅速,未出现服务宕机或长时间卡顿,这充分证明了精准的架构需求分析对系统成功的基础性作用。
二、基于架构设计阶段的ABSD开发方法
通过模块化与服务化的思想来勾勒系统的蓝图。本阶段的主要活动是根据需求分析结果,对系统进行逻辑划分。我们没有采用传统的单体架构,而是根据业务边界,将系统拆分为“身份认证与考勤”、“车辆调度管理”、“公文流转引擎”和“资产申购审批” 四大核心微服务。具体实践中,我们使用UML明确了每个微服务的领域模型,并严格定义了它们之间的RESTful API接口。以公文流转为例,我们将其设计为一个独立的流程引擎服务,封装了所有流程定义、节点跳转和审批规则,其他业务模块只需通过API触发流程即可。这一做法在实际开发中效果显著,它极大地提升了系统的可维护性与团队并行开发的协作效率。各个服务团队可以依据清晰的接口契约独立开发与测试,互不阻塞。根据项目后期统计,因模块间接口不一致或职责模糊导致的返工量减少了约35%,充分体现了服务化架构设计对复杂OA系统开发的正面引导作用。
三、基于架构实现与验证阶段的ABSD开发方法
我们致力于保障代码实现与架构设计的一致性,防止架构腐化。该阶段的活动重点在于将设计蓝图转化为代码,并持续验证实现是否偏离预设的架构目标。我们通过推行严格的代码规范、定期的架构评审会议,并特别将架构守护工具(如ArchUnit)集成到CI/CD流水线中,以自动化方式禁止了“公文流转服务”直接访问“物品申购服务”的数据库表等不合规操作。同时,我们针对打卡签到服务进行了专门的压测,验证其并发性能。该阶段的实践有效控制了技术债的积累。在系统后续为财务部门新增“报销审批”模块时,我们通过持续的架构验证,及时发现并修复了开发人员为图方便在认证服务中引入的循环依赖,确保了核心认证服务的稳定与纯净。这使得系统在多次功能扩展中,依然能够保持结构的清晰与演进的可控,证明了持续的架构验证是维持OA系统长期健康度的关键。
经过编程小组的不懈努力与奋斗,OA系统终于在2024年12月底成功上线并运行至今,得到了领导和同事的普遍认可。但在试运行阶段也发生了一些问题,由于该系统使用情况良好,同事之间口口相传,经常使用个别功能造成响应缓慢的现象,我们技术小组得知该情况后第一时间进行讨论研究,确定采用负载平衡策略将服务器资源向频繁使用的功能进行倾斜,有效地解决了该问题,进一步提高了系统的使用率,进而提高同事工作效率,从而为企业提供更好地信息化服务。非常感谢领导对我们技术小组的支持与信任,同时使我在应用基于架构的软件设计方法能力方面得到了进一步地提高,希望能够继续为企业的信息化建设添砖加瓦。
