软件架构系列感想(五)

工业软件行业深度报告:深度剖析工业软件.pdf 工业软件行业深度报告:深度剖析工业软件.pdf,是非常全非常深度的报告,干货满满,非常值得学习与研究,推荐相关人员深入学习。 立即下载

1、通用的抽象集合。

可以将软件系统简单的理解成由多个容器构成,容器又由多个组件构成,组件由一个或多个类实现。

类(在一个面向对象系统里,类是最小结构单元)

组件(组件可以想象成一个或多个类组成的逻辑群组,通常由多个类在更高层次的约束下组合而成)

容器(指一个在其内部可以执行组件或驻留数据的东西)

系统(系统是最高的抽象层次,代表了能够提供价值的东西)

2、软件的静态视图。

语境(设定场景的高层次图,包括关键的系统依赖和参与者)

容器(容器图显示了高层次的技术选择,容器如何分担职责、如何通信)

组件(组件图可以看到每个容器的关键逻辑组件及之间的关系)

类(这是一个可选的细节层次)

3、语境图能回答以下问题:

(1)我们构建的(或已经构建的)软件系统是什么

(2)谁会用它

(3)如何融入已有的IT环境

4、容器图能回答以下问题:

(1)软件系统的整体形态是什么样的

(2)高层次技术决策有哪些

(3)职责在系统中如何分布

(4)容器之间如何相互交流

(5)为了实现特性,作为一个开发者,我需要在哪里写代码

5、容器间的通信通常是进程间通信。

交互的目的(如读写数据、发送报告)

通信方法(如Web服务、远程方法调用、消息服务)

通信方式(如同步、异步、批量、两阶段提交等)

6、语境图展示的软件系统是一个盒子,而容器图是打开盒子展示里面的东西。

(1)让高层次的技术选择更明确

(2)展示了哪些容器之间有关联,以及他们如何沟通

(3)提供了一个放置组件的框架

(4)展示了高层次的语境图和通常很乱的组件图之间经常缺失的连接,组件图画的是整个软件系统中所有的逻辑组件

7、组件图可以回答以下问题:

(1)系统由哪些组件/服务组成

(2)在高层次上,系统如何工作是否清晰

(3)所有组件/服务都驻留在一个容器中吗

组件图展示了驻留在每个容器中的逻辑组件,展示了在高层次上将软件系统分解为职责不同的组件;展示了组件之间的关系和依赖;为软件开发的高层次预估和如何分解交付提供了一个框架。

8、明确技术选择。

(1)这个组件如何与运行在单独进程中的另一个组件沟通

(2)这个组件如何初始化,职责又是什么

(3)为什么这个进程需要和另一个进程沟通

(4)为什么这个组件要用X技术而不是Y技术实现

9、职责驱动设计和组件分解。

对于软件架构,一个重要的方面是理解软件系统的重要元素是如何结合在一起的,这意味着深入组件、服务或模块的层次,他们各自有一组特定的职责。组件是接口背后的一组相关行为,可以用一个或多个协作类实现。好的组件和好的类有一些共性,应该高内聚、低耦合、有良好定义的公共接口、良好的封装等。

10、用层封装代码。

如果你打开一个代码库,就会看到域类包、UI素材包、业务服务包、数据访问包、集成包等。

11、架构和设计软件并不需要UML工具。但如果你不使用工具,就需要明确地思考各个抽象层次之间的可追溯性、规约和一致性。

解决 python2.7中 ImportError: No module named Crypto.Signature 我的解决办法,先查看有没有安装 pip,直接执行pip 回车 没有出现null什么的就安装了,如果没有安装去其他博客哪里看一下,正常情况是默认就有的,然后使用。发现我自己也不会啊,就百度看看,想着网上的解决方法一大片,但是都是废话,能用的没有几个,而且能安装的没有几个。这个里面的python2、3就是系统里面的python版本,直接跟我这样就可以了除非版本不一样,也就是没有这个版本。就可以使用了,第一个应该是卸载之前的,然后重新安装,我的就是这样解决的。就比如我的,我现在使用的 python2.7。 阅读详情

相关推荐

别再纠结了!实测罗技Flow、对拷线、微软Mouse without Borders,我的最终选择是...

本文通过实测对比罗技Flow、对拷线和微软Mouse without Borders等多设备控制方案,详细分析了各自的优缺点及适用场景。作者最终选择了对拷线与罗技键鼠的组合方案,为专业用户提供了稳定可靠的多设备协同办公解决方案,特别适合需要频繁传输大文件和跨设备操作的用户。

weixin_33696106的博客 405

软件架构学习小结

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!                软件架构设计系统整体架

hggugfn的博客 520

YF-S401水流量传感器在STM32上的精准计量实现

本文详细介绍了YF-S401水流量传感器与STM32微控制器的集成应用,实现精准水流计量。通过外部中断和外部时钟两种脉冲计数方案,结合硬件配置、软件滤波和校准技巧,确保高精度流量测量。适用于智能家居和工业自动化中的水控系统,提升系统稳定性和测量准确性。

rainy的博客 896

软件架构系列感想(一)

1、什么是架构?架构是一种能力,架构角色则是要求你在具体事物中行使某些行为,而架构师则是用来标识这些能力与行为的一个职务。对于不同的人来说,可能意味着什么是不一样的。模块、连接、依赖和接口;大局观;改变成本很高的事情;难以改变的事情;更加兼顾全局的设计;接口而非实现;审美(比如艺术般的整洁代码);概念模型;满足非功能需求/质量属性;每件事情都有架构;沟通能力(抽象、语言、词汇);计划;一定程度的严...

woshibendangao的专栏 1148

Python小白也能搞定!用you-get一键下载B站视频合集的保姆级教程

本文为Python新手提供了使用you-get工具一键下载B站视频合集的完整教程。从环境配置、基础下载操作到高级批量下载技巧,详细介绍了如何利用这个开源工具高效获取视频资源,包括解决常见问题和实用优化建议,帮助用户轻松实现离线学习。

weixin_42544663的博客 458

Lattice HSB 相机方案

Lattice与NVIDIA合作的HSB相机方案提供低延迟视觉处理方案。该方案采用CertusPro-NX/Avant-E FPGA接收多路相机数据,通过10G/25G以太网直连GPU显存,实现端到端延迟<17ms、CPU占用<1%的高效处理。方案支持PTP同步、多种协议,适用于医疗、工业、车载等领域。相比传统方案,开发效率提升10倍以上,具有显著性能优势。部署需Lattice FPGA板、10G/25G交换机和Holoscan SDK等软硬件支持。

xzjiang_365的博客 755

软件架构设计的心得

最近正在为公司提炼一个规范的、通用的 开发架构,有一些心得,需要把它辑录下来, 以免以后忘掉。1。建立一个软件架构,最关键得核心应该是建立一套标准的、易于执行的、代码编写规则。预先对常见的情况,定义一些编写规则,并要求开发者必须执行,以保证代码的可读性,以及易维护性。2。对一些常用的场景,要设计一些通用的的、可以解决大部分情况的共用构件,以提高开发质量和开发效率。而且这些共用构件,目的是为

gavinou的专栏 1204

ISCE+Mintpy进行SBASInSAR处理(持续更新)

通过调用pairs_misregistration方法,利用safe_dict中的数据信息,对每对SLC数据进行配准误差的计算和分析,以确定数据之间的精确差异,为后续的时间序列处理提供基础。给定同一地区的两景SAR影像,经过配准之后,对应像元进行共轭相乘得到相位差,并形成干涉图,但是从干涉图中得到的相位差实际上是主值,即在(-π,π)呈周期性变化,为了还原其真实的相位差,必须在主值的基础上加或减整数倍的相位周期2π,把被卷叠的相位展开,才能顺利地反演出地面目标的高程和形变。

Cyy2511250589的博客 3735

软件架构系列感想(六)

1、代码不会讲述完整的故事。编写好的代码很重要,重构迫使我们考虑让方法变得更小、更可复用和自文档化,每个人都应该追求易于阅读、理解和维护的好代码。了解系统的设计意图,可以通过代码库如何被拆分为子项目、目录、包、命名空间等对整体架构做出一些判断,也可以根据对这个项目有限的了解、业务领域、你对团队如何构建软件的期望以及你对所用技术的知识,做出自己的假设。(1)软件系统如何融入已有的系统形态(2)为什么...

woshibendangao的专栏 420

使用C++实现DNS欺骗攻击

其中,domain_name表示需要欺骗的域名,dns_server_ip表示实际DNS服务器的IP地址,fake_ip表示需要重定向到的IP地址。在DNS查询过程中,当客户端向DNS服务器请求解析某个域名时,DNS服务器会返回该域名对应的IP地址。DNS劫持是一种常见的网络攻击方式,通过篡改DNS响应数据,使得用户访问的网站被重定向到攻击者指定的恶意站点。我们使用C++编写一个简单的DNS欺骗程序,使得当客户端请求解析特定的域名时,我们可以将其重定向到指定的IP地址。使用C++实现DNS欺骗攻击。

TechGlide的博客 411

反应动力学仿真软件:Kintecus_(4).用户界面及操作指南

在 Kintecus 中,反应方程的定义非常灵活。您可以定义简单的一阶反应、复杂的多步反应以及不同类型的反应机制。

kkchenjj的博客 1182

软件架构系列感想(四)

1、技术约束。时间和预算是大多数软件开发者都熟悉的约束,还有一些在大型组织里经常碰到的一些技术相关的约束:(1)批准的技术清单(目的是限制组织必须支持,运行,维护和购买许可证的技术)(2)现有系统的互操作性(有时别的系统需要和你构建的系统整合,这时组织性的约束规定了你可以用于整合的协议和技术)(3)目标部署平台(包括嵌入式设备、windows或Linux服务器的可用性,以及云)(4)技术成熟度(有...

woshibendangao的专栏 431

如何在Ubuntu 22.04系统上安装CUDA 12.9

本文提供Ubuntu22.04系统上安装CUDA12.9的简明指南:1)确认已安装适配575驱动;2)清理旧版本后安装必需依赖库;3)通过deb包方式添加英伟达源并安装CUDA12.9工具包;4)配置环境变量;5)通过nvcc-V和nvidia-smi命令验证安装。文中包含常见问题解决方法及多显卡使用说明,全程约需10分钟完成安装。

2501_93651177的博客 1480

软件架构系列感想(二)

3、软件架构师是什么? 应用程序架构的关注点是应用程序,通常包括将应用程序解构为类和组件,确保设计模式的正确应用,构建和使用框架等等。本质上,应用程序架构谈论的是软件设计的低级别切面,通常只考虑单一的技术栈。 结构单元主要以软件为基础,包括编程语言和结构、类库、框架、api等。它由类、组件、函数、模块、设计模式等加以描述。应用程序架构着重考虑软件和代码组织。 大多数软件系统实际上是由横跨不同...

e5Max的专栏 397

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

软件架构系列感想(三)

1、未来的架构师在哪里?我们可能花了很长时间谈论编写代码、自动化测试、自动化部署、工具、各种技术,以及所有相关的流程,而可用的软件是关键。多想想这些问题:(1)你上次写代码是什么时候(2)你上次重构是什么时候(3)你上次测试你的代码是什么时候(4)你上次设计东西是什么时候(5)你上次从零开始设计一个软件系统是什么时候(6)你上次从零开始设计一个会由一个团队来实现的软件系统是什么时候2、有些人过于渴...

woshibendangao的专栏 385

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

读《周志明的软件架构课》--学习笔记和感想随笔

主要记录对周老师的《周志明的软件架构课》的学习笔记,本篇章是对课程不可变基础设施部分的学习,从虚拟化的技术理解容器技术的产生和发展,从部署运维角度理解应用的封装,从网络虚拟化理解容器网络,从扩展的角度理解K8s的存储设计,从解耦的角度理解服务网格。从周老师的课程中可以以一种由浅入深的方式来探寻云原生技术的渊源、发展及使用。

wangchaodee的博客 792

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

架构漫谈阅读感想

这几天,读了老师推荐有关架构的一篇系列文章《架构漫谈》,其中通俗易懂的语言,风趣幽默的风格,形象明了的对比形式让我对架构有了更进一步的了解。何为架构?最早期社会我们一个人就可以完全独立生活完成衣食住行所有事情,随着需求的增加,比如说人类延续,人们开始群居。接下来人们发现各自有各自的长处,有的人种田厉害,有的人制作工具厉害,有些地方适合产出粮食,这就导致分工,各自做擅长的事情。由于每个人的...

weixin_30848775的博客 135

读《Code Complete》后的一点感想

软件工程,不只是编码。             ——题记 最近通读了一遍Code Complete,虽然看的不算十分细致,但是感触还是有不少。 在这学期开始之前,我始终以为,软件工程,不过就是一个编码的过程,充其量不同的人编码的效率不同罢了。不过,读过这本书以后,彻底改变了我的肤浅的看法。 书中的第一章叫做“欢迎进入软件构建的世界”,一开始就提及软件构建所涉及的活动:定义问题,需求分...

weixin_30724853的博客 177

什么是软件架构

一、概述  二、目的  三、项目背景  四、系统建设目标  五、参考资料  六、架构设计  六.1 架构分析  六.2 设计思想  六.3 架构体系  六.4 系统视图  六.5 模块划分  六.5.1 模块描述  六.5.2 模块接口  我们在做架构设计文档一般分为两个层面:  1 技术架构设计。  从技术的解决上来讨论,着重点是讨论采用什么样的技术,如

白及 1323

阅读王概凯老师架构漫谈系列总结

这学期在学软件体系架构的课程,老师推荐了王概凯老师的架构漫谈系列专栏,在阅读专栏之后,对于什么是架构,怎样做好架构,软件架构如何落地,如何写好程序等问题有了较深的理解,在此简单记录一下阅读之后的感想 架构漫谈第一篇主要在介绍什么是架构以及为什么会产生架构,在没有阅读文章以前,在学习中或许用到过架构的思想,但也是模棱两可,并不知道什么是架构,更不清楚是怎么产生架构的。王概凯老师提到,架构...

weixin_30387663的博客 285

jQuery源码学习感想

  还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码,那时我不明白他们为何要求那么高,现在才知道,原来没那么高,他问的都是jQuery最基本的框架架构,不过对于不知道的来说,再简单我也是不知道,那时写了一篇博文去吐槽了一下,那时候也是我自己...

153
上一篇: 软件架构系列感想(四)
下一篇: 软件架构系列感想(六)
e5Max
博客等级 码龄14年 145粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值