Java架构师系统架构需求分析实战

目录

  • 1 导语
  • 2 需求分析实战
  • 3 核心方法论-架构立方体
  • 4 功能性模型-模块定义
  • 5 功能性模型-模块关系图
  • 6 功能性模型-模块细化


想学习架构师构建流程请跳转:Java架构师系统架构设计
在这里插入图片描述

1 导语

在这里插入图片描述

架构设计的实战和思维方法的讨论,主要聚焦于需求分析的重要性和方法。

首先,文章强调了需求分析在整个系统生命周期中的贯穿性,说明了了解用户需求并在项目结束时验证用户需求是否达到的重要性。通过使用V型图,文章展示了从用户需求出发,逐步细化需求,最终验证需求是否满足的过程。

接着,文章从功能性、质量、限制三个角度对需求进行了分析。功能性需求是指系统需要实现的功能,质量需求是指系统需要满足的性能、可用性、可扩展性等质量要求,而限制条件则是指系统开发过程中需要遵守的约束条件,如项目时间、资金等。

在实战部分,文章将使用系统上下文图和用例模型等工具进行需求的梳理和展现。系统上下文图可以帮助我们了解系统与外部环境的关系,以及系统的主要功能和交互方式。而用例模型则可以帮助我们了解用户的需求和期望,以及系统如何满足这些需求和期望。

除了功能性需求外,文章也提到了质量和限制的描述。这些描述可以通过描述性语句来表达,例如性能要求可以是“系统响应时间应小于1秒”,高可用性要求可以是“系统应具备99.9%的可用性”等。同时,文章也提到了资金、项目时间、企业问题、监管要求等限制条件,这些条件需要在系统设计和开发过程中予以考虑和遵守。

总体来说,这一节的内容主要是为了帮助读者理解架构设计的思维方法和实战技巧,特别是需求分析的重要性和方法。通过学习和实践这些方法和技巧,读者可以更好地掌握架构设计的本质和精髓,提高架构设计的质量和效率,为软件系统的成功开发和运行奠定坚实的基础。

2 需求分析实战

如何使用用例模型来描述系统的功能性需求和非功能性需求。首先介绍了用例模型的概念,并强调了用例模型在架构设计中的重要性。用例模型是一种用于描述系统功能需求的工具,它可以帮助我们更好地理解系统的需求,并将其转化为具体的、可执行的需求描述。

在实战部分,以宠物寄存小屋系统为例,详细描述了系统的功能性需求。这些需求包括客户观察动物、宠物入驻、离开、吃喝拉撒、洗澡、互动等,这些都是通过用例模型来描述的。通过这些描述,我们可以更好地理解系统的功能需求,并为后续的架构设计提供基础。

除了功能性需求外,文章也提到了非功能性需求。这些需求包括扩展性、性能和成本限制等,这些都是在架构设计中需要考虑的重要因素。在描述非功能性需求时,可以通过一些具体的描述语句来表达,例如性能要求可以是“系统响应时间应小于1秒”,扩展性要求可以是“系统应具备可扩展性,以便未来能够添加新功能或处理更多用户”等。

最后,文章提到了下一节将进入功能性设计的章节,通过一些工具来跟大家聊一聊如何画这些功能性架构的图。这意味着读者可以通过学习下一节的内容,进一步了解如何使用工具进行架构设计,并将其转化为可视化的图形表示。

总体来说,这段内容主要是为了帮助读者理解如何使用用例模型来描述系统的功能性需求和非功能性需求。通过学习和实践这些方法和技巧,读者可以更好地掌握架构设计的本质和精髓,提高架构设计的质量和效率,为软件系统的成功开发和运行奠定坚实的基础。

3 核心方法论-架构立方体

架构立方体的概念、视角及其在数据服务架构设计中的应用。

首先,通过“盲人摸象”的比喻,强调了从不同视角看待事物的必要性,并引出了架构立方体的概念。架构立方体是一个多维度的框架,用于全面地描述和设计软件架构。它包括六个主要的视角:应用和技术、功能、运行、逻辑、物理以及安全。

接下来,通过一个数据服务的例子,详细解释了如何将这些视角应用于实际场景中。这个例子展示了如何从不同的视角出发,对数据服务的架构进行全面的分析和设计。例如,从功能视角出发,需要明确数据服务的功能需求;从运行视角出发,需要考虑数据服务的性能、可用性和伸缩性等。

此外,文章还强调了每个视角在架构设计中的重要性。通过综合考虑这些视角,可以更加全面地理解系统的需求,并在设计中考虑到各种因素。同时,这些视角之间的互相关联和引用,可以帮助我们在设计中保持一致性和完整性。

最后,文章预告了下章的内容,将详细讲解功能和运行性模型,以及如何使用这些模型来描述系统的非功能性需求。同时,还将介绍如何画出各种不同的视图,以更好地呈现和交流架构设计的思路和成果。

总体来说,这段内容为读者提供了一个全面、深入的视角来理解和应用架构立方体的概念。通过结合实际案例,帮助读者更好地掌握如何在架构设计中应用这些视角,提高架构设计的效率和准确性。

4 功能性模型-模块定义

架构设计中功能性模型的重要性,并重点强调了模块内聚和模块耦合的概念。

首先,文章阐述了内聚和耦合的概念。内聚是指模块内部功能的紧密程度,而耦合则是指模块之间的依赖关系。高内聚意味着模块内部的功能紧密相关,低耦合则表示模块之间的依赖关系较少。这样的设计原则有助于提高系统的可维护性和扩展性。

接下来,文章详细介绍了内聚和耦合的种类和特点。内聚可以分为功能内聚、逻辑内聚、顺序内聚和通信内聚等,而耦合则可以分为数据耦合、控制耦合和内容耦合等。这些不同类型的内聚和耦合具有不同的特点,需要在实际设计中根据具体情况进行选择和应用。

此外,文章还提到了领域驱动设计中的概念,如限界上下文和上下文映射等。这些概念有助于将复杂的业务领域划分为独立的模块,提高设计的可读性和可维护性。

最后,文章通过问句的形式,引导读者思考如何选择合适的力度进行模块划分。不同的项目和场景可能需要不同的划分力度,因此需要根据实际情况进行权衡和选择。

总体来说,这段内容为读者提供了关于架构设计中功能性模型的重要性和实现方法,通过深入探讨模块内聚和模块耦合的概念,帮助读者更好地理解和应用这些原则,提高架构设计的效率和准确性。

5 功能性模型-模块关系图

如何使用模块关系图来定义模块和组件之间的关系。

首先,通过AOD架构草图将子系统划分为多个层次,然后使用模块关系图进一步细化每个层次的模块和组件。在模块关系图中,组件用方块表示,并通过不同的线条和箭头来表示模块之间的依赖关系。这种图形化的表示方式可以清晰地展示模块和组件之间的结构和关系,使读者能够快速理解系统的整体结构和功能。

此外,文章还介绍了如何通过图标来表示不同类型的模块和组件,例如数据层、应用层和接口层等。这些不同类型的模块和组件具有不同的功能和职责,通过使用不同的图标可以更加清晰地表达它们的特性和作用。

最后,文章强调了这种方法的实用性和方便性,并鼓励读者在实践中应用这种方法。通过使用模块关系图,可以帮助读者更好地理解和组织系统中的各个模块和组件,从而提高系统的可维护性、可扩展性和可靠性。同时,这种图形化的表示方式也有助于团队成员之间的沟通和协作,促进共同理解和合作开发。

总体来说,这段内容为读者提供了一种实用的方法来定义模块和组件之间的关系,通过图形化的表示方式使系统结构更加清晰和易于理解。通过学习和实践这种方法,读者可以更好地掌握架构设计的技巧和方法,提高架构设计的效率和准确性。

6 功能性模型-模块细化

在软件架构设计中,如何使用鲁棒图和时序图进行模块的细化,并强调了模块映射的重要性。

首先,文章介绍了鲁棒图的概念,并展示了如何在Omini图上实现模块的定义、划出模块之间的关系以及具体的模块的命名。鲁棒图是一种用于描述模块之间交互关系的图形化工具,可以帮助我们更好地理解模块之间的结构和关系。通过鲁棒图,我们可以清晰地看到模块之间的转换关系,以及模块之间的依赖关系,从而更好地进行模块的细化和设计。

接着,文章提到了用例模型作为模块细化的输入,特别是核心用例的细化。用例模型是一种用于描述系统功能性需求的工具,通过用例模型可以明确系统的功能需求,并将这些需求细化到具体的模块和组件上。通过对核心用例的细化,可以确保整个功能能够正常运行和验收,从而提高系统的可用性和可靠性。

然后,文章强调了细节度的重要性。在模块细化的过程中,需要注意细节的处理,包括模块之间的交互关系、模块的命名、模块的功能描述等。这些细节的处理直接影响到系统的可维护性和可扩展性,因此需要认真对待。

此外,文章还提到了时序图作为模块细化的最终目标。时序图是一种展示模块之间交互关系的图形化工具,可以清晰地展示模块之间的调用关系和交互过程。通过使用时序图进行模块的细化,可以更好地理解模块之间的结构和关系,从而更好地进行系统的设计和实现。同时,文章也介绍了如何使用工具进行时序图的绘制,如Web Sequence Diagram等。

最后,文章强调了合理的设计前置和后置的重要性。合理的设计前置和后置是实现模块之间有效交互的关键。通过合理的设计前置和后置条件,可以确保模块之间的数据传递和通信的准确性和可靠性,从而提高系统的整体性能和质量。

总体来说,这段内容为读者提供了关于如何使用鲁棒图和时序图进行模块细化的详细介绍和指导。通过学习和实践这些方法和技术,读者可以更好地掌握架构设计的技巧和方法,提高架构设计的效率和准确性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

buuctf-Misc 题目解答分解97-99

97.[BSidesSF2019]zippy 下载完就是一个流量包 追踪tcp nc -l -p 4445 > flag.zip unzip -P supercomplexpassword flag.zip Archive: flag.zip 压缩包密码 supercomplexpassword 保存为 flag.zip 解压得到flag 98.[GUET-CTF2019]虚假的压缩包 先从虚假的压缩包入手 &am…

逆向P1P2总结

字节八位 word 16位 deword 32 位 00 00 00 e8 是存储32位信息的起点 不是程序运行的起点 为什么电脑有32位与64位之分 寻址宽度 以字节为单位 0xfffffff 1 就是最大容量 转为十进制为 4294967296 / 1024 (k)/1024 (kb)/ 1…

软件测试面试八股文——基础篇

5)错误推测法:是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法 6)正交实验法 7)判定表法 8)测试大纲法 3、提交缺陷的八大要素 1)缺陷编号&#xff1a…

数据通信网络基础华为ICT网络赛道

目录 前言: 1.网络与通信 2.网络类型与网络拓扑 3.网络工程与网络工程师 前言: 数据通信网络基础是通信领域的基本概念,涉及数据传输、路由交换、网络安全等方面的知识。华为ICT网络赛道则是华为公司提出的一种技术路径,旨在通…

合并的单元格如何填充连续的序号

希望你以后碰到合并的单元格,不在一个个输入序号,用以下操作帮你输入连续的序号。 一、操作过程如下 1.有一个基准的单元格在同一列,而且这个基准单元格必须得是序号为1的单元格的上面的一个单元格,这样的话后面才能自动递增&am…

Cesium.js三维地图的实现(依托天地图CDN文件)

零、技术选型: Vue2、VueCli5、天地图、Cesium.js 一、通过天地图官网案例实现 需要引入天地图官方提供的CDN链接访问Cesium.js相关文件 相关文件: https://api.tianditu.gov.cn/cdn/demo/sanwei/static/cesium/Cesium.js https://api.tianditu.gov.cn/…

大数据技术学习笔记(十一)—— Flume

目录 1 Flume 概述1.1 Flume 定义1.2 Flume 基础架构 2 Flume 安装3 Flume 入门案例3.1 监控端口数据3.2 实时监控单个追加文件3.3 实时监控目录下多个新文件3.4 实时监控目录下的多个追加文件 4 Flume 进阶4.1 Flume 事务4.2 Flume Agent 内部原理4.3 Flume 拓扑结构4.3.1 简单…

PyQt5和Qt designer的详细安装教程

Qt designer界面和所有组件功能的详细介绍参考:https://blog.csdn.net/qq_43811536/article/details/135186862?spm1001.2014.3001.5501 目录 0. 写在前面1. Anaconda创建虚拟环境2. 安装PyQt5和Qt designer3. 测试安装成功 0. 写在前面 Qt Designer是Qt提供的一种…

智慧互联网银行引领金融变革,开源网安VulHunter护航数字化发展

某银行作为国内知名的互联网银行,以构建“智慧型互联行”为总体战略目标,始终坚持科技赋能金融的理念。通过AI、大数据、云计算等数字技术与金融业务的探索融合,实现以更低的成本为客户提供便捷、高效和优质体验的互联网金融服务。 架构升级助…

操作无法完成(错误 0x000006ba),Windows 11 PDF打印机无法使用解决办法

操作无法完成(错误 0x000006ba),Windows 11 PDF打印机无法使用解决办法 解决方式一 先重启一次电脑,看看是否可以解决问题。 解决方式二 重新启动 Printer Spooler 服务

【JAVA】黑马MybatisPlus 学习笔记【三】【拓展功能】

3.扩展功能 3.1.代码生成 在使用MybatisPlus以后,基础的Mapper、Service、PO代码相对固定,重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用,…

【QT】可执行文件图标由png格式手动改为ico格式,Qt程序报错原因及解决方案

1问题说明: 在修改可执行文件图标时,由png格式手动改为ico格式,Qt程序会报错。 报错如下: 2解决办法: 登录网页 在线生成透明ICO图标——ICO图标制作,利用ico在线生成透明ICO图标 将生成的ico图标由favicon…

CSRF(Pikachu)

CSRF(get) 首先我们先登录账号 admin 密码是;123456 点击修改个人信息 用F12或者BP 抓包看看我们的url 那么构成的CSRF攻击payload为http://pikachu.shifa23.com/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sexboy&phonenum”手机…

如何申请云闪付支付接口?

随着移动支付的普及,越来越多的商家开始接受各种移动支付方式。而在众多移动支付工具中,云闪付支付接口因其安全、便捷的特点,成为了越来越多商家的首选。那么,如何申请云闪付支付接口呢?本文将为您详细介绍申请云闪付…

PaddleOCR 的使用,极简介绍

安装 参考github的官网就可以: github链接 简单的说,就是两句话: python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple pip install "paddleocr>2.0.1" # 推荐使用2.0.1版本 Python下的使用…

NAT协议的实现方式

在网络通信中,NAT协议(Network Address Translation,网络地址转换)扮演着关键角色,允许内部网络与外部网络之间进行有效的通信。 实现内外网之间网络地址转换的过程中,NAT采用了不同的实现方式,…

FL Studio 21最新版本for mac 21.2.2.3470中文解锁版

FL Studio 21最新版本for mac 21.2.2.3470中文解锁版是最新强大的音乐制作工具。它可以与所有类型的音乐一起创作出令人惊叹的音乐。它提供了一个非常简单且用户友好的集成开发环境(IDE)来工作。这个完整的音乐工作站是由比利时公司 Image-Line 开发的。…

了解OAuth 2.0以及社交登录认证授权流程

1.前言 目前在写一个电商项目,可以通过手机号进行注册登录,为了方便用户使用本平台的系统,引入社交登录功能,这里使用的是gittee。 2.OAuth 2.0介绍 当谈到网络安全和身份验证时,OAuth 2.0(开放授权 2.0&a…

AXI总线协议---关键信号波形图分析

写过程协议图 读过程协议图 读协议执行顺序图 写协议顺序图 单箭头表示两个信号谁先有效无所谓,双箭头表示必须要等到前一个信号有效才能将后面的信号有效 如何体现协议图中的通道理解 声明:以上图均采用AMBA总线文档图 写过程关键信号 主机 写地址—M…

MySQL集群架构搭建以及多数据源管理实战

MySQL集群架构搭建以及多数据源管理实战 ​ 数据库的分库分表操作,是互联网大型应用所需要面对的最核心的问题。因为数据往往是一个应用最核心的价值所在。但是,在最开始的时候,需要强调下,在实际应用中,对于数据库&a…