《面向对象分析与设计》读书笔记2

1、概念模型记录了系统中存在(或者将存在)的领域实体以及他们与系统中其他领域实体的关系,概念层的建模是利用业务领域的术语来完成的,应该是技术无关的。系统的逻辑视图利用了概念模型中创造的概念,建立起关键抽象和机制的意义,并确定系统的架构和整体设计。系统的物理模型描述了系统实现的具体软件和硬件构成,显然,物理模型是技术相关的。

2、包图的主要元素使包、它们的可见性和它们的依赖关系。包为它包含的元素提供了命名空间。具有公有可见性的元素被认为是这个包的接口的一部分,因为这些元素可以被其他元素看见。具有私有可见性的元素对包外元素不可见。

3、UML元素(包括包)之间的依赖关系是用一个虚拟的开房间头来表示的,箭头的尾部位于具有依赖性的元素(客户),箭头位于支持这种依赖的元素(提供者)。如果两个包之间存在多个包容元素依赖关系,这些依赖关系会聚合为包层面的依赖关系。用包分组的元素通常应该在某种意义上时相关的,如它们是系统中的一个子系统、是系统某个方面的相关用例或者是一些协作类,提供系统功能的一个子集。好的分包是松耦合高内聚的,即,应看到包内元素有更多的交互,包间元素有更少的交互,应当尽量不要让泛华层次结构或者聚合关系跨越包的边界。

4、导入是一种公有的包导入,而访问是一种私有的包导入。执行导入的包将被导入元素的名称添加到了它的命名空间中(导入包已经有同名元素的情形除外)。

5、组件图代表了一块可复用的软件,它提供了某种有意义的功能集。从最低的层面而言,组件图是一组类,它们本身是内聚的,与其他类的耦合相对较松。系统中的每个类要么处于一个组件中,要么处于系统的最顶层。组件也可以包含其他组件。组件是一种结构化的分类器,组件间的协作和内部结构可以利用组件图来表示。组件与组件之间通过定义良好的接口进行协作,从而提供系统的功能,组件本身也可以有一些协作的组件组成,提供它自己的功能。因此我们可以组件分层地解构一个系统,并表示它的逻辑架构。组件图中的基本元素是组件、它们的接口和实现。

6、部署图用于展示在系统的物理设计中,工件在节点上的分布情况。部署图有三个基本元素:工件、节点和它们的连接。工件是物理上存在的一件东西,它实现了一部分的软件设计。它通常是软件代码(可执行)、但也可能是一个源文件、一份文档或者与软件代码相关的其他文件。节点是一种计算资源,通常包含存储和计算能力,工件部署在它上面执行。

7、约束:是必须保持的某些语义条件的表达式。换而言之,约束是类或者关系中的不变式,当系统处于稳定状态时必须保持。强调是“稳定状态”,因为可能存在系统改变的瞬间(因此暂时处于内部不一致的状态),在这些瞬间无法保持系统的约束,只有当系统状态稳定时,约束才是保证适用的。

8、分析关注的是行为而不是形式。在分析时尝试对世界进行建模,从问题域的词汇表来确定它元素,并描述它们的角色、责任和协作。在分析过程中。追求表示或实现问题是不恰当的,分析必须说明系统做什么,而不是系统如何做。分析就是要更好地理解待解决的问题。

9、架构主要考虑的是系统各个组件之间的关系,以及它们的责任、接口和协作。相反,系统组件的分析和设计关注的是这些组件的内部以及它们如何满足需求,这些需求是架构的分析和设计要求组件实现的

10、软件开发过程的框架可以分为两方面:总体软件开发生命周期(宏观过程)以及分析和设计(微观过程)。微观过程的目的是以宏观过程提供的需求作为输入(也可能是前一次微观过程迭代得到的分析和设计规格说明),得到分析和设计规格说明,再返给宏观过程。最后,微观过程将得到规格说明,让宏观过程中的实现阶段去构建、测试和部署。

11、微观过程由4项关键活动组成(识别元素、确定元素协作、确定元素关系、细化元素语义)。微观过程的每次迭代都会针对某个抽象上的一组行为需求,经历这些活动组成的迭代。基本的步骤和得到的产品对于所有的抽象层来说都是一样的,区别之处就在于细节的层次(更低的抽象层次将得到更详细的产品)。

12、具有良好架构的系统是具有概念完整性的系统。在某种程度上,系统的架构基本上与系统的最终用户无关,但是对于构建可理解、可扩展、可重新组织、可维护和可测试的系统而言,拥有“清晰的内部结构”是很关键的。只有对系统架构有清晰的感觉,才能发现共同的抽象和机制。研究这种共性最终使得系统的构建变得更简单。

13、好的软件架构通常具有以下一些共性:1)它们由定义良好的抽象层构成,每层代表了一种内聚的抽象,提供了定义良好的、受控的接口,并且建立在同样定义良好的、受控的底层抽象设施之上。2)在每一层的接口和实现之间有清晰的分离关注,以确保我们能够改变一个层的实现而不用破坏它的客户对它的假定。3)架构很简单:共同的行为是通过共同的抽象和共同的机制来实现的

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

flask模块化、封装使用缓存cache(flask_caching)

1.安装flask_caching库 pip install flask_caching 2.创建utils Python 软件包以及cache_helper.py 2.1cache_helper.py代码 from flask_caching import Cachecache Cache()class CacheHelper:def __init__(self, app, config):cache.init_app(app, config)staticmethoddef…

arm 、stm32、linux该如何学习?有没有先后顺序,先学什么比较好?

先讲自己,我是从Arduino单片机入门,再到stm32 ,再开发瑞萨,TI,然后学校教了51。这是一个奇怪的学习过程,所以当我第一次接触51单片机的时候,刚好我有一些资料,是我根据网友给的问题精…

多个单元运算符合用???:::

string a "a";string b "b";string c "c";string r a "a" ? b "b" ? c"c" ? "b" : "cc" : "33":"44";string rr a "a"? b "b" ?(c …

PHP老照片修复文字识别图像去雾一键抠图微信小程序源码

🔍解锁复古魅力,微信小程序黑科技大揭秘!老照片修复&更多神奇功能等你来试! 📸 【老照片修复,时光倒流的美颜术】 你是否珍藏着一堆泛黄的老照片,却因岁月侵蚀而模糊不清?现在…

buuctf zip伪加密

[BUUCTF]zip伪加密_buuctf zip伪加密-CSDN博客 借鉴以上博客 010打开 这两个位置是计算机判断是否为加密文件 两个都为09(奇数) 一般为真加密 两个为偶数(00)不加密 一个奇数一个偶数,伪加密 (注意,是一般) 这道题两个奇数,以为是真加密 暴力解码一下,解不出 看到题目提…

为服务器安全保驾护航的“三道防线”!

前言: 随着互联网的发展与普及,服务器安全性的保护变得越来越重要。服务器是企业和个人在网络中存储和处理敏感数据的重要设备,一旦服务器遭到未经授权的访问或攻击,可能导致数据泄露、系统崩溃等严重后果。因此,具备强…

ICC2:split_fanout如何插inverter pair

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接: ICC2:split fanout用法

【排序 - 堆排序】

堆排序(Heap Sort)是一种高效的排序算法,利用了堆这种数据结构的特性。堆排序的时间复杂度为 O(n log n),并且是一个原地排序算法,不需要额外的存储空间。 堆的基本概念 堆是一种特殊的树形数据结构,分为…

用Racket做一个拼图游戏——4 实现工具

4 实现工具 思路理清楚了,接下来就一个一个功能实现。在阐述实现功能的编程过程中,会延伸讲解编程思路、相关的Racket函数及相关知识点,力图达到在实践中的学习目的。 在编程实现过程中,首先实现图片操作功能,再通过…

告别混乱,可道云企业网盘个人标签,让文件管理更轻松

在信息爆炸的时代,你是不是常常觉得自己的大脑就像一台过载的处理器,各种文件、资料、想法在脑海中“打架”,让你焦头烂额? 别担心,可道云企业网盘个人标签功能来拯救你的“大脑内存”了! 我们需要告别无…

Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)

条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零售、医疗、教育等各领域。 本文将介绍如何使用Python快速生成各种常见的条形码如Code 128、EAN-13,…

3DMAX卡死也要安装的10大插件

在探索3DMAX的无限创意边界时,有些插件如同星辰般璀璨,即便面对插件偶尔的“倔强”卡顿,设计师们依然对其爱不释手,誓要将其纳入麾下。以下便是那份令人心动的“卡死也要安装”的10大插件清单,每个都蕴含着设计师对美的…

【GIS开发小课堂】WebGIS开发必学开源框架Openlayers,附赠视频教程、电子书、笔记源码

WebGIS开发之Openlayers 当前,WebGIS开发热门程度越来越高,市场招聘供需比处于较为紧张的状态。 常见的WebGIS开源框架有:OpenLayers、Leaflet、MapBox、MapFish、GeoServer、GeoEXT、MapInfo等。公司最希望求职者具备至少一种框架开发技能…

什么样的开放式耳机好用?,五大超强卷王单品推荐!

对于热衷尝试不同耳机类型的小伙伴们而言,经过对佩戴舒适度、音质清晰度及电池续航能力的全面考量,开放式蓝牙耳机因其卓越的平衡性脱颖而出,成为多数人的心头好。其轻巧设计不仅保证了长时间佩戴的舒适感,还兼顾了音质与续航的双…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十九章 Linux 工具之make 工具和 makefile 文件

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【亲测有效】Linux/Ubuntu远程服务器使用plt.show()没有反应,vscode ssh 远程ubuntu,plt.show不显示图片问题

【亲测有效】Linux/Ubuntu远程服务器使用plt.show没有反应,vscode ssh 远程ubuntu,plt.show不显示图片问题 plt.show()在linux或者ubuntu系统中不会有显示,这是因为系统没有图形界面。解决方法:保存成png图片然后在程序运行后查看…

使用 MinIO 赢得 RAG 权利

人们常说,在人工智能时代,数据是你的护城河。为此,构建生产级 RAG 应用程序需要合适的数据基础架构来存储、版本控制、处理、评估和查询构成专有语料库的数据块。由于 MinIO 采用数据优先的 AI 方法,因此对于此类项目,…

PostMan添加path参数请求

如下图: /findInventoryByQrCode/:qrCode用 : 会出现Path Variables 栏

科普文:看懂Linux日志分析

日志文件是Linux系统中极为重要的一部分,它们记录了系统和应用程序的各种活动信息。通过日志文件,系统管理员可以监控系统的运行状态、发现潜在的问题,并进行故障排除。 一. 常见的日志文件 在介绍具体的日志分析命令之前,首先了…

Mybatis的优缺点及适用场景?

目录 一、什么是Mybatis? 二、Mybatis框架的特点 三、Mybatis框架的优点? 四、MyBatis 框架的缺点? 五、MyBatis 框架适用场合? 六、代码示例 1. 配置文件 mybatis-config.xml 2. 映射文件 UserMapper.xml 3. Java 代码…