应用模块化架构定义(摘录)

23、深入探索本体:最小模块与最佳摘录 本文提出了一种计算框架,通过引入包含关系证明的概念,帮助用户从大型本体中提取最相关的知识。研究聚焦于最小模块和最佳摘录的计算方法,并通过基于模拟关系的算法实现高效处理。实验表明,该方法在计算性能和知识保留方面优于现有技术,尤其适用于大型生物医学本体。未来的研究方向包括扩展到更复杂的本体语言、优化算法性能以及探索更多应用场景。 阅读详情

理由

在本书第一部分中,我们首先在模块这个词上达成共识。然后马上会讨论模块化的两个方面:运行时模型和开发模型。从这里开始,将会考察模块化怎样帮助我们实现“自上而下的架构”,这是通过将重要的高层架构组件与更具体的实现结合在一起做到的。复杂性是我们要征服的怪兽,而重用是我们想得到的灵丹妙药,模块化在这两个方面都会给我们提供帮助,我们会讨论它在这个过程中所扮演的重要角色。最后,在进入模块化模式之前,会通过一个样例练习介绍模块化的收益。在整个过程中,我们为使用模块化找到了充分的理由。

定义

简单来说,模块就是“一个软件块”(chunk of software)。不过,这不能很简洁地区别模块与其他软件块,如类、包、组件、服务甚至应用。所以,我们需要关注这个定义:
软件模块是可部署的、可管理的、原生可重用的、可组合的、无状态的软件单元,它为用户提供了简洁的接口。
这是大而全的一个定义,第1章就贸然介绍它也很不好。但是,在一些解释后,你就能领会模块是什么了。图1.1展示了这个定义。接下来,将探讨模块的各个元素。
在这里插入图片描述

详细说明

1,可部署
模块是一个部署单元。不像其他软件实体,如类和包,模块是一个独立的部署单元,它能够与其他软件模块共处。从这个意义上讲,模块所表达的意义更多是物理层面上的,它比那些无形的软件实体如类或包的粒度更粗。可部署软件单元的例子包括EAR、WAR以及JAR文件。
2,可管理
模块是一个可管理的单元。在运行时模块系统中,模块可以进行安装、卸载以及更新。在开发过程中,将系统拆分成模块有助于简化很多其他的复杂活动。这包括提高构建的效率、允许开发人员独立地开发自主的模块并按照模块的边界规划开发工作。符合这部分定义的软件实体样例包括EAR、WAR以及JAR文件。
3,可测试
模块是一个可测试的单元。如同类可以使用测试驱动开发进行独立测试一样,模块也可以进行独立测试(参见12.3节)。符合这部分定义的软件实体样例包括类、包以及JAR文件。
4,原生可重用
模块是进程内(intraprocess)可重用的单元。尽管面向服务的架构(Service-Oriented Architecture,SOA)原则可以用来设计软件模块,但模块并不像应用或服务那样,它不是分布式计算技术。相反,以模块化组织部署单元的方式使得它们可以跨应用重用(关于重用,参见第5章),但是模块总是原生调用的。也就是说,模块暴露的操作是通过直接调用方法触发的。
重用模块的方式与重用服务也是不同的。一般来讲,服务只须部署一次并被多个使用者调用。因为模块是在进程内使用的,所以模块会与那些想重用其功能的进程一起部署。符合这部分定义的软件实体样例包括类、包以及JAR文件。
5,可组合
模块是可组合的单元。模块可以由其他模块组成。一般这指的是粗粒度的模块是由细粒度的模块组成的。(关于粒度,参见5.2.1节。)
6,无状态
模块是无状态的。特定版本的模块只会存在一个实例。我们不会实例化软件模块,尽管我们需要实例化软件模块中的类,这些类会保持状态,但是模块本身不会这样做。符合这部分定义的软件实体样例包括WAR、EAR以及JAR文件。

功能模块图 立即下载

相关推荐

hcaptcha无感验证码逆向实战:从接口分析到环境补全

本文详细解析了hcaptcha无感验证码的逆向实战过程。通过分析核心接口与加密逻辑,重点介绍了采用环境补全策略来模拟真实浏览器环境,从而绕过验证码检测。文章提供了从接口抓包、剖析hsw.js加密核心到使用Node.js搭建模拟环境的完整步骤,为自动化操作提供了一种稳健的解决方案。

weixin_29324401的博客 1150

JAVA模块化设计(一)

简单来说,模块就是“一个软件块”。在JAVA中就是一个jar文件。模块的粒度在应用/服务下面,包/类的上面。 模块的特点: 可部署 模块是一个独立的部署单元。它能够与其他软件模块共处。 可管理 模块是一个可管理的单元。在运行时系统中,模块可以进行安装、卸载以及更新。在开发过程中,将系统拆分成模块有助于简化很多其他的复杂活动。 可测试 模块可以独立测试 原生可重用 模块是进程内

chenganbeit的专栏 1671

PPL文档——Excel制作的甘特图加上动态今日线

当很多项目需要跟踪进度时,我们介绍一种在Excel中创建甘特图。

qq_34777858的博客 7063

网卡 (七) LWIP 应用层模块

协议 最简单的 一收一发 // 可见,除了使用api,什么都没做 收发 udp_send udp_recv api 直接用的是 udp 的api,并没有在 udp上封装什么东西

u011011827的博客 327

虚拟机VirtualBox下载与安装、安装Ubuntu超详细图文步骤,对一些配置问题也有所写。

自己使用过两款虚拟机,相较于VMware虚拟机来说,virtuabox虚拟机所占内存更小,只有几十兆,且完全开源不收费,里面的功能与VMware基本差不多(在日常开发、学习使用完全够用)。最主要的是,在博主自己使用VMware时经常出错,而virtualbox就更稳定一些,所以这篇是针对virtualbox的安装与一些细节部分。

l1015649309的博客 4万+

EDA虚拟机分享2020版本(Synopsys2020)

EDA虚拟机分享

亦安的数字小站 9176

Java 模块化

Java 模块化的设计目标是提供一种更好的项目组织和管理方式,解决依赖管理、可重用性、可扩展性和安全性等方面的问题,使得开发者能够更有效地构建和维护大型和复杂的 Java 应用程序。其实 Java 官方发布这个特性至今为止很少有人用到 Java 原生的模块系统,取而代之的是各种包管理工具提供的类似的特性。例如 Maven、Ant 或者 Gradle 这些包管理器都提供了类似的概念,而且到 Java 17 为止这个特性确实没有很出色的表现(至少作者没有看到)。但既然作为新特性,我们仍然有学习的必要。

a1518967800的博客 1016

lammps构建高熵合金模型+结构优化初步筛选能量最小的结构

lammps构建高熵合金模型+结构优化初步筛选能量最小的结构

qq_45834835的博客 2603

java独立模块设计_模块设计之“模块”与“模块化”

模块设计之“模块”与“模块化”模块泛指软件系统的功能部件。在软件的体系结构设计完成之际,我们就已经确定了所有模块的功能,并且把模块安放在体系结构的恰当位置上。每个模块都具有特定的、明确的功能(否则不能成为模块)。人们在设计模块时应当尽量使模块的功能独立,因为功能独立的模块可以降低开发、测试、维护的代价。但是功能独立并不意味着模块是绝对孤立的。所有的模块应当能够被集成为一个系统,所以模块之间必定要交...

weixin_42470196的博客 976

第3.1.3章 机器人第三方库实战总结:ROS 2 入门实战及和ROS1的对比,打通机器人开发的任督二脉

本文针对机器人SLAM开发中第三方库的学习痛点,重点介绍ROS 2在SLAM中的应用。文章首先对比ROS 1与ROS 2的核心差异,梳理ROS 2知识图谱,包括节点、话题、服务等核心概念。通过实战项目演示如何构建激光SLAM节点,结合代码详解运行流程。最后给出学习建议,强调动手实践的重要性,帮助开发者快速掌握ROS 2在SLAM开发中的关键应用。

行知SLAM 178

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java项目电商的模块设计与实现_校园电商项目2(基于SSM)——模块设计

步骤一:各模块职责步骤二:实体类设计package com.figsprite.o2o.bean;import java.util.Date;public class Area {private Integer areaId;private String areaName;private Integer priority;private Date createTime;private Date l...

weixin_39974958的博客 464

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java应用架构设计模块化模式与OSGI摘录

在Java中,最适合模块化的单元就是Jar文件。 代码层面我们关注的太多了,熟练的开发人员现在很少争论使用模式的好处,也不再识别哪个模式适合当前需要,因为都能够本能地使用各种设计原则和模式,从GoF的设计模式到衍生出的设计原则,现在很多原则已经几乎变成了本能,如“优先组合而不是继承”、“面向抽象而不是面向实现”。 但是只考虑类级别的设计,那么不管设计的多么漂亮,都不会代码预期的收益。因为现有的...

weixin_34233856的博客 134

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

架构设计摘录

注:本篇文章内容全部从网上摘录 好的软件架构应当具有如下品质: 良好的模块化。每个模块职责明晰,模块之间松耦合,模块内部高聚合并合理地实现了信息隐藏; 适应功能需求的变化,适应技术的变化。典型地,应该保持应用相关模块和领域通用模块的分离,技术平台相关模块和独立于具体技术的模块相分离,从而达到"隔离变化"的效果; 对系统的动态运行有良好的规划。标识出哪些是主动模块,哪些是被动

qinmingh的专栏 906

Cocos Creator中模块化脚本(官方文档摘录)

Cocos Creator 允许你将代码拆分成多个脚本文件,并且让它们相互调用。要实现这点,你需要了解如何在 Cocos Creator 中定义和使用模块,这个步骤简称为模块化。如果你还不确定模块化究竟能做什么,模块化相当于:C/C++ 中的 includeC# 中的 usingJava 和 Python 中的 importHTML 中的 模块化使你可以在 Cocos Creator 中引用其它脚

程序人生 4895

《面向对象分析与设计》摘录

《面向对象分析与设计》摘录赵朝阳2007-10-15sou_dog@hotmail.comSection1 : Concept. 1Complexity. 1Object Model 3Classes and Objects. 9Classification. 12Section2 : Method. 16Notation. 16Process. 1

麦田里的守望者 3781

2013第2周六JS模块化编程摘录

Javascript 模块化编程 Javascript 不是一种模块化编程语言,它不支持"类"(class),更遑论"模块"(module)了。(正在制定中的 ECMAScript 标准第六版,将正式支持"类"和"模块",但还需要很长时间才能投入实用。)   目前,通行的 Javascript 模块规范共有两种:CommonJS 和 AM...

weixin_34396103的博客 93

《软件架构设计》学习笔记&摘录(三)

成功的架构设计 好的架构应当具有如下品质: 良好的模块化。每个模块职责明晰,模块之间松耦合,模块内部高聚合并合理地实现了信息隐藏。适应功能需求的变化,适应技术的变化。应该保持应用相关模块和领域通用模块的分离,技术平台相关模块和独立于具体技术的模块相分离,从而达到“隔离变化”的效果。对系统的动态运行有良好的规划。对数据的良好规划。明确、灵活的部署规则。        软件架构师的工作成功要

2909

大型应用的javascript架构

目前很多网站基本没有明确的前端架构,大多是服务端渲染视图页,输出到浏览器,再配合一些js,来进行交互。如果只是实现一些简单的效果,没有较复杂的逻辑,那么这种处理是合理的,尤其是有了jQuery之类的利器,js代码写起来甚至有种随心所欲的感觉。 但一旦网站要改版,或者随着网站的发展,逻辑变得越来越复杂,或者为了更好的用户体验,js要承担更多的任务,这时如果维持现状不变,那js就会变得越来越臃肿

万明博客 1169

《架构之美》摘录一

架构之美 译者:王海鹏 第一章 架构概述 1.1 简介 (1).架构:“建造的艺术或科学;特别是设计和建造人类使用的建筑时的艺术或实践,同时考虑到美学因素和实用因素。” (2).我们谈到交响乐的“构架”,反过来,又将架构称为“凝固的音乐”。 (3).当代的架构师可以会说,待构建的对象或系统必须具有以下特征: <1>.具备客户要求的功能; <2>.能够在要求的工期内安全地构...

weixin_34409741的博客 94

The Elements of Programming Style(编程风格要点摘录)

编程风格要素摘录 原文下载:《TheElements of Programming Style,编程风格要素摘录》。 下文的编程风格规则摘录于由McGraw Hill出版的,由Kernighan和 Plauger合著的《编程风格要素》一书。有Strunk和White的一引言:《编程风格要素》中的规则就像英语规则一样,就算是大牛也有时候也会犯错。然而,当这些规则被打破时,经常会为之付出代

记一忘三二 2732

【Java基础】JDK9 模块化

本文所有内容均摘录自互联网,文末有参考文献,仅做整理和记录。

汤姆lazy的优快云博客 946

第一章 系统架构与软件工程

声明:本文为作者阅读《软件系统架构与开发环境》后摘录的笔记。   1  软件系统的流程要素 1.1   系统工程概要        钱学森于1978年给出的定义“系统工程是组织管理的技术。把极其复杂的研究对象称为系统,即由相互作用和相互依赖的组成部分结合成具有特定功能的有机整体,而这个系统本身又是其从属的一个更大系统的组成部分。系统工程则是组织管理这种系统的规划、研究、开发、设计、制造

漫游学海之旅 1945
下一篇: bootstrap-table动态列,动态formatter
javaStudyeye
博客等级 码龄17年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值