架构师备考论文-论软件设计方法及其应用

题目

        软件设计(Software Design,SD))根据软件需求规格说明书设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及程序流程等,形成软件的具体设计方案。软件设计把许多事物和问题按不同的层次和角度进行抽象,将问题或事物进行模块化分解,以便更容易解决问题。分解得越细,模块数量也就越多,设计者需要考虑模块之间的耦合度。
请围绕"论软件设计方法及其应用"论题,依次从以下三个方面进行论述。
1.概要叙述你所参与管理或开发的软件项目,以及你在其中所承担的主要工作。
2.详细阐述有哪些不同的软件设计方法,并说明每种方法的适用场景。
3.详细说明你所参与的软件开发项目中,使用了哪种软件设计方法,具体实施效果如何。

摘要

        2022年3月,我有幸加入公司新智慧公交平台的研发小组,担任架构师与软件设计师的关键角色。我的主要职责是项目的整体设计与架构评审工作。新平台构建在公司强大的中台环境之上,我们采用了基于构件的开发方法,通过整合和复用中台的中间件资源,迅速满足了项目的非功能性需求。在本次设计任务中,我们的核心目标是构建公交应用系统,专注于行业应用层的创新与实践。为了精确表达架构视图和领域需求,我们采纳了当前业界主流的面向对象的分析与设计方法,运用UML2.0统一建模语言,并结合4+1视图模型进行系统描述。经过团队的不懈努力,项目于2022年7月顺利上线。得益于我们坚持的面向对象设计方法,设计文档与主流的面向对象编码实践高度契合,极大地提高了开发效率。本文将重点阐述我们在软件设计过程中采用的策略和方法,以及这些方法在实际项目中的应用与价值。

正文

        在“互联网+”时代的浪潮推动下,公共交通行业正面临着一场技术革新的机遇。2022年初,公司立足于打造新一代智慧公交物联网平台,为此专门成立了研发小组。该项目总投资达3000万元,预定于2022年8月完工。我有幸成为该项目团队的一员,担任架构师和软件设计师,肩负起项目整体设计与架构评审的重任。新智慧公交平台构建于公司的中台环境之上,这使我们得以采用基于构件的开发方法,利用公司成熟的构件库来实现非功能需求,例如单点登录、安全注册、网关等。我们的目标是构建一个公交行业应用系统,位于中台的应用层。项目采用了微服务架构,将公交业务划分为基础数据、调度、排班、设备交互、报表等多个模块,每个模块由独立的小组负责开发,以提升整体开发效率。在项目架构的整体设计阶段,我们采纳了业界主流的面向对象设计方法,运用UML2.0统一建模语言和4+1视图模型来精确描绘架构视图。在软件设计流程中,我依据软件分析师提供的系统需求规格说明书和系统架构说明书,完成了公交调度模块的需求概要设计。在此基础上制定了详细的详细设计文档,旨在帮助开发人员更深入地理解本次需求的具体内容和具体流程以及实现方式。

        当前,主流的软件设计方法主要包括结构化方法和面向对象方法。结构化方法是一种以严格流程为导向的面向过程设计方法,通常采用瀑布模型或其变体作为指导。该方法通过模块化的理念,将项目分解为多个独立模块,实现了低耦合和高内聚的项目结构。结构化方法特别适用于大型、连续的开发项目,尽管其严格定义的流程可能导致开发进度较为缓慢,但能够确保最终项目的质量。在这一方法中,前期需求的完整性和质量至关重要,因为后续的开发步骤与之紧密相关。

        相比之下,面向对象的设计方法基于面向对象的思想,是一种用例驱动、迭代式的设计方法。它通过多态、继承、封装等面向对象的核心概念,提供了比结构化方法更高的灵活性和适应性。面向对象设计方法主要使用UML统一建模语言来描述系统需求。面向对象的方法更适合敏捷开发模式,尤其是在需求初期不明确或可能频繁变化的场景中。此外,面向对象的设计文档与面向对象的编码实践相契合,随着面向对象成为编码的主流,这种设计方法也越来越受到开发者的青睐。经过团队的深入讨论和一致决定,我们选择了当前主流的微服务架构和面向对象的架构风格作为智慧公交平台的统一架构风格。因此,在后续的模块设计,如调度模块,我们均采用了面向对象的设计方法来编写需求概要和详细设计文档。这样的做法旨在确保团队成员间的有效沟通,从而提升项目整体开发的效率。

        在调度模块的需求概要设计中,我们利用用例图来直观展示功能性需求。我们首先绘制了以用户为中心的用例图,详细描绘了用户通过前端平台操作调度系统的各项功能,包括路线单制定、排班管理、司机请求处理、违规记录查询等多个视图的展现与操作流程。接着,我们构建了以车辆设备为中心的用例图,展现了设备向平台发起操作请求的相关功能,如司机考勤签到、下发车辆运行计划、发送短信通知等。这些用例图的使用,为开发人员提供了对功能性需求的全局视角,确保了对系统功能的全面理解。在系统部署方式章节,我们通过部署图详细描述了调度系统所需的物理环境配置,并通过组件图展示了调度系统运行依赖的三方中间件,如ZooKeeper、Redis、Kafka、XXL-Job等。这些图表清晰地展示了系统的物理架构和组件的依赖关系。

        在详细设计文档中,我们采用类图来描述调度系统的主要静态结构。类图可以展示代理模式在展现层与业务逻辑层之间的解耦应用;通过类图来表述状态模式描绘了车辆状态的操作和转换过程,例如车辆从停场状态切换至运行状态,以及从运行状态转换至待发状态的流程。同时,类图还详细展示了领域模型功能模块(domain层)的设计,为开发者提供了一个基于类图的静态物理架构视图,并清晰地展现了封装、继承、多态等面向对象原则的应用。

        为了表述调度系统的业务流程,我们采用了多种动态视图。在概要设计中,顺序图和状态图被用来描述车辆从起始站到终点站的整个运行流程。顺序图展示了业务逻辑处理的顺序,而状态图则揭示了车辆在运行过程中可能经历的状态转换,例如从停场状态到待发状态,再到运行状态的转换,以及从营运状态切换至非营运状态的过程。在详细设计中,我们主要使用活动图来详细描述调度系统特定功能的流程,包括展示系统在处理逻辑时的并发状态、分支选择和循环操作。通过静态视图和动态视图的综合运用,我们的面向对象设计文档得以全面而详尽地呈现,为后续的开发工作奠定了坚实的基础。

        2022年7月,新智慧公交项目历经需求收集、系统设计、系统评审、开发及测试等多个阶段,成功在首个城市上线。随后,该项目陆续推广至30多个城市,至今保持稳定运行。新智慧公交平台为公共交通行业的升级与优化做出了显著贡献,赢得了客户和领导的高度赞誉。项目初期,我们面临了不少挑战,如新老平台操作差异导致的用户适应问题,以及客户针对新平台提出的多样化需求。面对这些不断变化的环境,面向对象方法的迭代和持续跟进优势得以显现。为了满足不同需求,我们采纳敏捷开发的模式,快速识别并优先实现关键需求,确保及时响应客户。我们的设计文档和代码也遵循项目进度,有序地迭代更新,推出了多个版本,以便于对各城市迭代更新的版本进行维护和管理。此次项目经历为我带来了宝贵的经验,使我更深入地理解了软件设计的方法论。随着技术的不断发展,我们的软件设计方法也在持续进步,为未来的开发工作奠定了坚实的基础,最后在此感恩引领技术不断发展的先驱者们做出的卓越贡献。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462206.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NOIP普及组】 FBI树

【NOIP普及组】 FBI树 C语言版本C 版本Java版本Python版本 💐The Begin💐点点关注,收藏不迷路💐 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又…

大数据新视界 -- 大数据大厂之数据质量管理全景洞察:从荆棘挑战到辉煌策略与前沿曙光

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

基于 webpack 项目接入 vite 你可能需要注意的点

前言 在之前的 如何优化你的 vue-cli 项目? 一文中介绍基于 webpack 进行的一些优化方法,本文的核心是基于一个 vue2 的项目(也就是上篇文章中的项目)来继续介绍一下如何接入 vite,以及这个过程中需要关注的点。 之前…

Python工具箱系列(五十七)

图像分割与人脸识别 众所周知图像是由若干有意义的像素组成的,图像分割作为计算机视觉的基础,对具有现有目标和较精确边界的图像进行分割,实现在图像像素级别上的分类任务。图像分割可分为语义分割和实例分割两类,区别如下&#x…

日志代码编写

🌎日志代码编写 文章目录: 日志代码编写 了解日志 日志编写       日志等级       获取时间信息       获取文件名行号及处理可变参数列表       以宏的形式传参       日志加锁       日志消息输出方式 完整代码 …

告别繁琐统计,一键掌握微信数据

微信数据管理的挑战在数字时代,微信已成为我们日常沟通和商业活动的重要工具。然而,随着微信号数量的增加,手动统计每个账号的数据变得越来越繁琐。从好友数量到会话记录,再到转账和红包,每一项都需要耗费大量的时间和…

【第几小】

题目 代码 //分块可以AC 20个点的块长&#xff0c; sqrt(n)*5#include<bits/stdc.h> using namespace std;int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n; cin>>n;vector<int> a(n1,0);//分块int len sqrt(n)*5; //块长int k (n%len…

详细分析Pytorch中的transpose基本知识(附Demo)| 对比 permute

目录 前言1. 基本知识2. Demo 前言 原先的permute推荐阅读&#xff1a;详细分析Pytorch中的permute基本知识&#xff08;附Demo&#xff09; 1. 基本知识 transpose 是 PyTorch 中用于交换张量维度的函数&#xff0c;特别是用于二维张量&#xff08;矩阵&#xff09;的转置操…

使用Docker构建和部署微服务

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 [TOC] Docker 是一个开源的容器化平台&#xff0c;可以帮助开发者轻松构建、打包和部署应用程序。本文将详细介绍如何使用 Dock…

Python+Appium+Pytest+Allure自动化测试框架-代码篇

文章目录 自动化测试框架工程目录示例测试代码示例结果查看allurepytest编写pytest测试样例的规则pytest conftest.py向测试函数传参 appium启动appium服务代码端通过端口与appium服务通信对设备进行操作在pytest测试用例中调用appium 更多功能 PythonAppiumPytestAllure自动化…

Elasticsearch Interval 查询:为什么它们是真正的位置查询,以及如何从 Span 转换

作者&#xff1a;来自 Elastic Mayya Sharipova 解释 span 查询如何成为真正的位置查询以及如何从 span 查询过渡到它们。 长期以来&#xff0c;Span 查询一直是有序和邻近搜索的工具。这些查询对于特定领域&#xff08;例如法律或专利搜索&#xff09;尤其有用。但相对较新的 …

IoTDB时序数据库使用

简介 Apache IoTDB 是一款低成本、高性能的物联网原生时序数据库。它可以解决企业组建物联网大数据平台管理时序数据时所遇到的应用场景复杂、数据体量大、采样频率高、数据乱序多、数据处理耗时长、分析需求多样、存储与运维成本高等多种问题。 IoTDB官网 1. 连接数据库 官方…

河北冠益荣信科技公司洞庭变电站工程低压备自投装置的应用

摘 要&#xff1a;随着电力需求增长&#xff0c;供电可靠性变得至关重要&#xff0c;许多系统已有多回路供电。备用电源自动投入装置能提升供电可靠性&#xff0c;它能在主电源故障时迅速切换到备用电源。本文介绍的AM5-DB低压备自投装置&#xff0c;为洞庭变电站提供多种供电方…

STM32实现IAP串口升级含源码(HAL库)

文章目录 一. 关于IAP升级二. IAP升级的分类二. IAP升级原理2.1 正常启动流程2.2 IAP启动流程 三. Ymodem协议3.1 传输过程3.2 帧命令3.3 起始帧3.4 数据帧3.5 结束帧 四. IAP代码实现4.1 Boot 程序4.2 App 程序4.3 展示效果 五. Demo源码六. Qt 上位机 一. 关于IAP升级 IAP&am…

【Hello World 】

【Hello World 】! C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 几乎每一个程序员都是从Hello World!开始自己的程序人生&#xff0c;作为一个初学编程的小朋友&#xff0c;也需要先编程来输出Hello Wo…

LabVIEW程序员赚钱不仅限于上班

LabVIEW程序员拥有多种途径来实现财富增值&#xff0c;而不仅仅局限于传统的全职工作。以下是一些他们可以利用自身技能和专业知识实现更高财务收益的方法&#xff1a; 1. 专注领域的自由职业与合同工作 制造、科研、医疗技术等行业都需要LabVIEW的专业知识。通过自由职业&…

vue3项目中el-tooltip实现内容溢出时再显示,并设置tip的最大宽度

html代码 <el-tooltip :disabled"!textIsOverflow" placement"top"><template #content><div class"tooltip-div">tootip的内容</div></template><div class"textOverflow" ref"textRef"…

文案语音图片视频管理分析系统-视频矩阵

文案语音图片视频管理分析系统-视频矩阵 1.产品介绍 产品介绍方案 产品名称&#xff1a; 智驭视频矩阵深度分析系统&#xff08;SmartVMatrix&#xff09; 主要功能&#xff1a; 深度学习驱动的视频内容分析多源视频整合与智能分类高效视频检索与编辑实时视频监控与异常预警…

HTML 基础标签——分组标签 <div>、<span> 和基础语义容器

文章目录 1. `<div>` 标签特点用途示例2. `<span>` 标签特点用途示例3. `<fieldset>` 标签特点用途示例4. `<section>` 标签特点用途示例5. `<article>` 标签特点用途示例总结HTML中的分组(容器)标签用于结构化内容,将页面元素组织成逻辑区域…

安防被动红外和主动红外

被动红外探测器是依靠被动的吸收热能动物活动时身体散发出的红外热能进行报警的&#xff0c;也称热释红外探头&#xff0c;其探测器本身是不会发射红外线的。 被动红外探测器中有2个关键性元件&#xff0c;一个是菲涅尔透镜&#xff0c;另一个是热释电传感器。**自然界中任何高…