架构师论文备考-论软件系统架构评估

devtools/2024/9/29 21:48:56/

 题目:论软件系统架构评估

        对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,在系统被构建之前分析现有系统架构对于系统质量的影响,提出系统架构的改进方案。架构评估是软件开发过程中的重要环节。 请围绕“论软件系统架构评估”论题,依次从以下3个方面进行论述。
1.概要叙述你所参与架构评估的软件系统,以及在评估过程中所担任的主要工作。
2.分析软件系统架构评估中所普遍关注的质量属性有哪些?详细阐述每种质量属性的具体含义。
3.详细说明你所参与的软件系统架构评估中,采用了哪种评估方法,具体实施过程和效果如何。

摘要

        在2022年3月,我有幸加入公司的新智慧公交平台项目,担任架构师一职,负责项目的整体架构设计与评审。在项目的启动阶段,我们运用再工程技术深入分析了现有公交调度平台,成功提炼出需求模型和设计模型。随后,我们通过ATAM 软件架构评估方法,对是否沿用老平台的基础架构以及新提出的架构方案进行了深入讨论和严格评审,最终确定了一个最优的架构方案。截至2022年12月,该项目顺利上线,至今已稳定运行两年,项目以其卓越的性能和高度的可扩展性,赢得了用户和开发人员的一致好评。这一成果归功于项目初期我们采用的科学架构设计和评估方法,确保了项目架构的完善性,并根据设计和评估编制了详尽的文档资料,为后续的开发和测试工作提供了清晰的指导。

正文

        在当今“互联网+” 的时代背景下,城市公共交通行业作为一个传统行业,由于其本身所具有的业务复杂性,技术进步长期受限,行业整体技术水平相对较低。为应对公交行业在技术发展层面遇到的挑战,同时满足公众对高品质交通服务的期望,我们全新打造的公交智慧平台系统应运而生。新一代的智慧公交系统,以物联网作为基础,通过互联网作为门户,提供以云原生技术为背景的Saas 化服务平台。并通过当下主流的大屏、小程序、手机端APP操作程序等技术手段,给与用户多元化的使用和体验。2022年3月,公司所组织的新智慧公交平台项目正式启动,我在其中担任系统架构师的角色,参与了项目的整体架构设计与评审工作。该项目预计总投资达3000万元,计划在9个月内完成。我们的目标是通过这一创新平台,推动公共交通行业的技术革新,提升服务品质,满足现代城市交通的多元化需求。

        在项目启动初期,我们采用再工程技术对老公交调度平台的需求和设计进行了深入分析。我们主要利用UML图,将老平台的整体架构设计和需求整理成基于面向对象分析方法的系统架构文档和需求文档。随后,我们的产品经理扮演系统分析师的角色,详尽阐述了老平台的问题、技术瓶颈等,为新平台的架构决策提供了依据。经过分析,我们确定老平台采用的是C/S架构,并遵循面向对象的设计风格。根据公司老总的要求,我们的目标是将其改造为B/S架构,以简化客户端安装和部署流程,使用户通过浏览器即可访问平台。基于这一需求,我提出了以B/S架构为基础,结合云原生技术的Saas化服务平台设计方案。该方案融入公司中台战略,复用了网关、单点登录、S17平台服务等现有构件,并引入了面向对象与事件驱动相结合的架构风格,以提升系统的可修改性和灵活性。

        针对新系统架构与老系统架构的显著差异,我们决定进行一次完善的系统架构评估工作。首先,我们确定了本次架构设计所重点关注的几个系统质量属性:性能、可修改性、安全性和可用性。性能是指系统的响应能力,及要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数;可用性是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示;安全性是指系统在为合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力;可修改性是指能够快速地以较高的性价比对系统进行变更的能力。

        随后,针对我们关注的核心质量属性,我们选择了ATAM架构评估方法来执行本次架构评估任务。在评估会议中,准备阶段,我们首先详细介绍了ATAM评估流程,并确立了性能、安全性、可修改性和可用性作为本次评估的重点系统质量属性。接着,我们概述了项目的业务驱动因素,明确了项目需求,即从传统的C/S(客户端/服务器)架构向更现代的B/S(浏览器/服务器)架构转变。为了迎合公司高层对于简化部署流程的要求,我们决定采用以租户为中心的SaaS(软件即服务)平台架构方案。在会议中,我们还介绍了即将评估的架构方法,包括B/S架构和基于隐式调用的事件驱动架构。针对可用性、可修改性、性能和安全性等关键质量属性,我们制定了一系列评估标准,并构建了质量属性效用树。这个效用树将作为我们后续架构评估工作的基础,确保我们能够系统地评估和优化架构设计。

        在分析阶段,我们发现事件驱动架构可能会对性能产生轻微影响,因为其中增加了生产者到消费者的交互过程,我们需要增加消息中间件构件来实现这一过程。但事件驱动架构可以显著提高项目的可修改性,将业务流程解耦,使得整体的项目架构更清晰易读。而采用B/S架构因为需要使用面向互联网的Http 协议,必然会面临互联网病毒,主动攻击等安全威胁,从而增加了系统的安全风险,但它简化了客户端管理,使得后续的架构设计不再需要关注客户端,只需要针对服务端进行高可用设计即可,从而使系统提升了可用性。我们将这些分析结果整理成风险列表,包括系统敏感点和权衡点,为后续评估提供参考。

        在复审阶段,我们邀请了公司老总参与评估。我们讨论了风险列表和权衡点,并通过头脑风暴探讨了新架构的适用性和质量属性的优先级。我们得出结论,通过精心设计和选型,事件驱动架构最终能满足性能要求,并提升系统的可读性和可修改性。而对于B/S架构的安全风险,我们决定直接利用公司现有资源,如接入公司网关构件来加强项目的安全防护。最后我们做了会议总结和ATAM评估报告,本次的ATAM评估工作顺利结束。

        2022年12月,新智慧公交项目成功上线,并已稳定运行两年。回顾项目整体的研发过程,我们通过再工程技术和面向对象设计分析方法,有效复用了老平台的设计和需求。通过ATAM评估,我们确立了新平台的架构,为后续设计和开发奠定了坚实基础。这次项目不仅提升了我们的架构设计和评估能力,也为未来的工作积累了宝贵的实践经验。


http://www.ppmy.cn/devtools/118904.html

相关文章

RK3588主板PCB设计学习(四)

DDR4相比于DDR3升级的地方在于控制线增加了几条,数据线数量没有变。并且功耗更低,电压更低,读写速度更快: 看左边,一把数据线分组: 11根走线是1组: 这里很经典,认真复习:…

计算机网络(第二章 物理层)

文章目录 1.物理层的基本概念2.数据通信的基础知识2.1数据通信系统模型2.2有关信道的基本概念2.3信道极限容量 3.物理层3.2引导性传输媒体3.3非引导性传输媒体 4.信道复用技术4.1频分复用、时分复用和统计时分复用4.2波分复用 5.宽带接入技术 本文首先讨论物理层的基本概念。然…

R包:ggspatial空间画图

ggplot2语法的空间图形画图 Spatial data plus the power of the ggplot2 framework means easier mapping. 加载R包 # install.packages("ggspatial")library(ggplot2) library(ggspatial) load_longlake_data()Using layer_spatial() and annotation_spatial() g…

C语言 | Leetcode C语言题解之第437题路径总和III

题目: 题解: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ //递归遍历树节点,判断是否为有效路径 int dfs(struct TreeNode * root, int ta…

深入剖析 Android Lifecycle:构建高效稳定的应用

在 Android 开发中,管理应用组件的生命周期是至关重要的。正确处理生命周期事件可以确保应用的性能、稳定性和用户体验。Android Framework 提供了一系列的机制来管理应用组件的生命周期,而android.arch.lifecycle库则为我们提供了更简洁、更灵活的方式来…

【Linux】初识进程

目录 基本概念 PCB task_struct task_struct内容分类 组织进程 查看进程 查看正在运行的进程信息 获取pid和ppid 创建子进程 基本概念 一个已经加载到内存中的程序,叫做进程,正在运行的程序,叫做进程,进程是担当分配系统…

Unity3D 中构建行为树插件详解

前言 在Unity3D中,行为树(Behavior Tree)是一种用于游戏AI设计和实现的高级工具,它提供了一种结构化和模块化的方式来管理游戏实体的行为。行为树通过树状结构组织了一系列节点,每个节点代表了一个决策或动作。这种结…

学Python再学C++是走弯路?

随着编程教育的普及,越来越多的家长和学生开始选择学习编程语言。Python作为一种简洁易学、应用广泛的编程语言,成为许多编程初学者的首选。然而,随着学习的深入,很多人会考虑转向更复杂、更底层的语言,如C。这就引发了…