精华内容
下载资源
问答
  • 软件设计-模块设计

    千次阅读 2019-04-25 18:22:58
    模块设计1.1 耦合:模块之间的联系紧密程度1.2 内聚:模块内部各元素联系的紧密程度1.3 其他1.4 模块设计注意事项 1. 模块设计 模块设计基本原则:信息隐蔽,模块独立 1.1 耦合:模块之间的联系紧密程度 1. 非直接...

    1. 模块设计

    模块设计基本原则:信息隐蔽,模块独立

    1.1 耦合:模块之间的联系紧密程度

    在这里插入图片描述
    1. 非直接耦合
    两个模块之间没有直接关系,它们之间的联系完全时通过主模块的控制和调用来实现的。耦合度最低,模块独立性最强
    2. 数据耦合
    模块之间有调用关系,传递的是简单的数据值
    3. 标记耦合
    模块之间有调用关系,传递的是数据结构。如数组名、文件名,其实传递的是这个数据结构的地址。
    4. 控制耦合
    模块之间有调用关系,传递的是控制变量(如开关、标志等),被调用模块通过控制变量的值有选择地执行某一功能。
    5. 外部耦合
    多个模块都访问同一全局简单变量,不是同一数据结构,不是通过参数表传递该变量的信息
    6. 公共耦合
    多个模块都访问同一公共数据环境,如全局数据结构,共享通信区.
    7. 内容耦合
    一个模块直接使用另一个模块的内部数据,或则通过非正常入口而转入另一个模块内部,是最差的耦合。

    1.2 内聚:模块内部各元素联系的紧密程度

    在这里插入图片描述
    1. 功能内聚
    模块内所有元素共同完成某一功能,联系紧密,缺一不可,是最强的内聚类型。
    2. 顺序内聚
    模块完成多个功能,这些功能顺序执行,各功能之间有数据传递。
    3. 通信内聚
    模块内所有处理元素都在同一个数据结构上操作,或则指各处理使用相同的输入数据或者产生相同的输出数据。
    4. 过程内聚
    模块完成多个功能,这些功能顺序执行,各功能之间可能没有数据传递。
    5. 时间内聚
    把需要同时执行的动作组合在一起,所有动作在统一时间段内执行。如初始化
    6. 逻辑内聚
    把机重相关的功能组合在一起,每次调用时,由传送给模块的参数来确定该模块应完成哪一种功能。
    7. 偶然内聚
    模块内各部分之间没有联系,或则有联系,这种联系也很松散,最弱的内聚类型。如初学C语言时,所有代码都写在主函数里面。

    1.3 其他

    1. 深度:软件结构中模块控制的层数
    2. 宽度:软件结构中同一个层次上的模块总数的最大值
    3. 扇出:一个模块直接控制(调用)的下层模块数
    4. 扇入:一个模块被几个上级模块调用。

    1.4 模块设计注意事项

    1. 保持模块的大小适中
    2. 尽可能减少调用的深度
    3. 扇入大,扇出小。
    4. 顶层高扇出,中间层扇出减少,低层高扇入
    5. 保证模块是单入口、单出口的
    6. 模块的作用域应该在模块之内
    7. 功能应该是可预测的
    展开全文
  • 商品模块设计

    千次阅读 2018-07-28 23:34:19
    本篇主要介绍电商领域中的商品模块设计 sku,spu,item 关于sku, spu,item的讨论有很多,各个电商平台也有些细小的区别,可以参考这篇讨论 https://www.zhihu.com/question/27607346 个人觉得区分它们或者定义...

    摘要

    本篇主要介绍电商领域中的商品模块设计

    sku,spu,item

    关于sku, spu,item的讨论有很多,各个电商平台也有些细小的区别,可以参考这篇讨论
    https://www.zhihu.com/question/27607346

    个人觉得区分它们或者定义它们可以从这些角度出发
    这里写图片描述

    对于sku,就是从库存出发
    对于商品(item)就是绑定了卖家
    对于spu就是标品,脱离了交易环节的卖家属性,回归到商品本质。

    不同的电商规模,在这块定义可能不同,比如spu,有些电商不需要,这个只是一个描述,不会在系统中有实际的用处。这样设计也是可以的,使用item就可以满足需求,买家在搜索商品时,我不区分搜索的是哪个spu,直接去搜索item的属性也可以。

    领域设计

    类目设计

    类目需要注意点就是要区分前台类目和后台类目,然后做对应映射,后台类目由商家创建,不经常变。前台类目出于营销目的,会经常需要变更。

    这里写图片描述

    这里写图片描述

    商品设计

    这里写图片描述

    item :商品,存下商品主要信息

    item_datail: 商品详情,

    item_template: 商品模板,有商家创建

    sku sku,注意这边的sku属性采用的是公共属性,content存的是sku_property json string的内容,意味这部分的属性不可搜索,如果需要搜索,需要重新设计。

    sku_property sku的基本属性

    这里写图片描述

    参考

    http://www.cnblogs.com/winstonyan/archive/2011/12/17/b2c_research_product_sku_analyse_design.html#3818610

    展开全文
  • 系统功能模块设计文档

    热门讨论 2009-09-14 19:00:56
    系统功能模块设计文档
  • 二、功能需求与模块设计

    千次阅读 2019-09-05 14:15:35
    功能需求与模块设计 功能需求 本项目主要实现信息管理系统中的用户与权限管理的通用模块,功能要求如下: (1)用户管理:实现用户的增删改查和用户的角色分配。 (2)权限管理:实现权限的增删改查。 (3)...
    1. 功能需求与模块设计
      1. 功能需求

    本项目主要实现信息管理系统中的用户与权限管理的通用模块,功能要求如下:

    (1)用户管理:实现用户的增删改查和用户的角色分配。

    (2)权限管理:实现权限的增删改查。

    (3)角色管理:实现角色的增删改查和角色的权限分配。

    (4)用户登录:实现用户登录验证、动态菜单加载、登录拦截。

      1. 模块设计

    系统的总体框架图如下(“测试分类”用来测试,不作为系统功能,画图可以用xmind、visio、亿图,或者在线的https://www.processon.com/等):

    展开全文
  • Maven 多模块设计带来的好处

    千次阅读 2018-12-27 17:02:30
    Maven 多模块设计带来的好处 原文: 查看原文. 单模块设计 假设有这样一个项目,很常见的Java Web应用。在这个应用中,我们分了几层: Dao层负责数据库交互,封装了Hibernate交互的类。 Service层处理业务逻辑,放...

    Maven 多模块设计带来的好处

    原文: 查看原文.

    单模块设计

    假设有这样一个项目,很常见的Java Web应用。在这个应用中,我们分了几层:

    Dao层负责数据库交互,封装了Hibernate交互的类。
    Service层处理业务逻辑,放一些Service接口和实现相关的Bean。
    Web层负责与客户端交互,主要有一些Structs的Action类。
    对应的,在一个项目中,我们会看到一些包名:

    org.myorg.app.dao
    org.myorg.app.service
    org.myorg.app.web
    org.myorg.app.util
    

    这样整个项目的框架就清晰了,但随着项目的进行,你可能会遇到如下问题:

    这个应用可能需要有一个前台和一个后台管理端(web或者swing),你发现大部分dao,一些service,和大部分util是在两个应用中可。这样的问题,你一周内遇到了好几次。

    pom.xml中的依赖列表越来越长以重用的,但是,由于目前只有一个项目(WAR),你不得不新建一个项目依赖这个WAR,这变得非常的恶心,因为在Maven中配置对WAR的依赖远不如依赖JAR那样简单明了,而且你根本不需要org.myorg.app.web。有人修改了dao,提交到svn并且不小心导致build失败了,你在编写service的代码,发现编译不过,只能等那人把dao修复了,你才能继续进行,很多人都在修改,到后来你根本就不清楚哪个依赖是谁需要的,渐渐的,很多不必要的依赖被引入。甚至出现了一个依赖有多个版本存在。build整个项目的时间越来越长,尽管你只是一直在web层工作,但你不得不build整个项目。

    某个模块,比如util,你只想让一些经验丰富的人来维护,可是,现在这种情况,每个开发者都能修改,这导致关键模块的代码质量不能达到你的要求。

    我们会发现,其实这里实际上没有遵守一个设计模式原则:“高内聚,低耦合”。虽然我们通过包名划分了层次,并且你还会说,这些包的依赖都是单向的,没有包的环依赖。这很好,但还不够,因为就构建层次来说,所有东西都被耦合在一起了。因此我们需要使用Maven划分模块。

    多模块设计

    一个简单的Maven模块结构是这样的:

    ---- app-parent

             |-- pom.xml (pom)
    
             |
    
             |-- app-util
    
             |        |-- pom.xml (jar)
    
             |
    
             |-- app-dao
    
             |        |-- pom.xml (jar)
    
             |
    
             |-- app-service
    
             |        |-- pom.xml (jar)
    
             |
    
             |-- app-web
    
                      |-- pom.xml (war)   
    

    上述简单示意图中,有一个父项目(app-parent)聚合很多子项目(app-util, app-dao, app-service, app-web)。每个项目,不管是父子,都含有一个pom.xml文件。而且要注意的是,小括号中标出了每个项目的打包类型。父项目是pom,也只能是pom。子项目有jar,或者war。根据它包含的内容具体考虑。

    这些模块的依赖关系如下:

    app-dao --> app-util

    app-service --> app-dao

    app-web --> app-service

    注意依赖的传递性(大部分情况是传递的,除非你配置了特殊的依赖scope),app-dao依赖于app-util,app-service依赖于app-dao,于是app-service也依赖于app-util。同理,app-web依赖于app-dao,app-util。

    带来的好处

    用项目层次的划分替代包层次的划分能给我们带来如下好处:

    方便重用,如果你有一个新的swing项目需要用到app-dao和app-service,添加对它们的依赖即可,你不再需要去依赖一个WAR。而有些模块,如app-util,完全可以渐渐进化成公司的一份基础工具类库,供所有项目使用。这是模块化最重要的一个目的。
    由于你现在划分了模块,每个模块的配置都在各自的pom.xml里,不用再到一个混乱的纷繁复杂的总的POM中寻找自己的配置。
    如果你只是在app-dao上工作,你不再需要build整个项目,只要在app-dao目录运行mvn命令进行build即可,这样可以节省时间,尤其是当项目越来越复杂,build越来越耗时后。
    某些模块,如app-util被所有人依赖,但你不想给所有人修改,现在你完全可以从这个项目结构出来,做成另外一个项目,svn只给特定的人访问,但仍提供jar给别人使用。
    多模块的Maven项目结构支持一些Maven的更有趣的特性(如DepencencyManagement),这留作以后讨论。
    接下来讨论一下POM配置细节,实际上非常简单,先看app-parent的pom.xml:
    Xml代码

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
        <modelVersion>4.0.0</modelVersion>  
        <groupId>org.myorg.myapp</groupId>  
        <artifactId>app-parent</artifactId>  
        <packaging>pom</packaging>  
        <version>1.0-SNAPSHOT</version>  
        <modules>  
            <module>app-util</module>  
            <module>app-dao</module>  
            <module>app-service</module>  
            <module>app-web</module>  
        </modules>  
    </project>  
    

    Maven的坐标GAV(groupId, artifactId, version)在这里进行配置,这些都是必须的。特殊的地方在于,这里的packaging为pom。所有带有子模块的项目的packaging都为pom。packaging如果不进行配置,它的默认值是jar,代表Maven会将项目打成一个jar包。

    该配置重要的地方在于modules,例子中包含的子模块有app-util, app-dao, app-service, app-war。在Maven build app-parent的时候,它会根据子模块的相互依赖关系整理一个build顺序,然后依次build。

    这就是一个父模块大概需要的配置,接下来看一下子模块符合配置继承父模块。

    Xml代码

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
        <parent>  
            <artifactId>app-parent</artifactId>  
            <groupId>org.myorg.myapp</groupId>  
            <version>1.0-SNAPSHOT</version>  
        </parent>  
        <modelVersion>4.0.0</modelVersion>  
        <artifactId>app-util</artifactId>  
        <dependencies>  
            <dependency>  
                <groupId>commons-lang</groupId>  
                <artifactId>commons-lang</artifactId>  
                <version>2.4</version>  
            </dependency>  
        </dependencies>  
    </project>  
    

    app-util模块继承了app-parent父模块,因此这个POM的一开始就声明了对app-parent的引用,该引用是通过Maven坐标GAV实现的。而关于项目app-util本身,它却没有声明完整GAV,这里我们只看到了artifactId。这个POM并没有错,groupId和version默认从父模块继承了。实际上子模块从父模块继承一切东西,包括依赖,插件配置等等。

    此外app-util配置了一个对于commons-lang的简单依赖,这是最简单的依赖配置形式。大部分情况,也是通过GAV引用的。

    再看一下app-dao,它也是继承于app-parent,同时依赖于app-util:

    Xml代码

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
        <parent>  
            <artifactId>app-parent</artifactId>  
            <groupId>org.myorg.myapp</groupId>  
            <version>1.0-SNAPSHOT</version>  
        </parent>  
        <modelVersion>4.0.0</modelVersion>  
        <artifactId>app-dao</artifactId>  
        <dependencies>  
            <dependency>  
                <groupId>org.myorg.myapp</groupId>  
                <artifactId>app-util</artifactId>  
                <version>${project.version}</version>  
            </dependency>  
        </dependencies>  
    </project>  
    

    该配置和app-util的配置几乎没什么差别,不同的地方在于,依赖变化了,app-dao依赖于app-util。这里要注意的是version的值为${project.version},这个值是一个属性引用,指向了POM的project/version的值,也就是这个POM对应的version。由于app-dao的version继承于app-parent,因此它的值就是1.0-SNAPSHOT。而app-util也继承了这个值,因此在所有这些项目中,我们做到了保持版本一致。

    这里还需要注意的是,app-dao依赖于app-util,而app-util又依赖于commons-lang,根据传递性,app-dao也拥有了对于commons-lang的依赖。

    app-service我们跳过不谈,它依赖于app-dao。我们最后看一下app-web:
    Xml代码

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
        <parent>  
            <artifactId>app-parent</artifactId>  
            <groupId>org.myorg.myapp</groupId>  
            <version>1.0-SNAPSHOT</version>  
        </parent>  
        <modelVersion>4.0.0</modelVersion>  
        <artifactId>app-web</artifactId>  
        <packaging>war</packaging>  
        <dependencies>  
            <dependency>  
                <groupId>org.myorg.myapp</groupId>  
                <artifactId>app-service</artifactId>  
                <version>${project.version}</version>  
            </dependency>  
        </dependencies>  
    </project>  
    

    app-web依赖于app-service,因此配置了对其的依赖。

    由于app-web是我们最终要部署的应用,因此它的packaging是war。为此,你需要有一个目录src/main/webapp。并在这个目录下拥有web应用需要的文件,如/WEB-INF/web.xml。没有web.xml,Maven会报告build失败,此外你可能还会有这样一些子目录:/js, /img, /css … 。

    展开全文
  • 硬件模块设计思想

    千次阅读 2012-05-07 09:21:58
    硬件模块设计">模块设计,顾名思义就是将各个不同的功能做成独立的模块。然后将各个模块组合成不同的产品。 对于一个公司硬件模块化设计,从设计之初,调试,到样机及产品生产的过程应该是这样: 1. 了解产品需求 2....
  • 多种方式登陆模块设计

    万次阅读 2016-07-08 10:54:04
    -# 多种方式登陆模块设计目录 目录 参考了一些资料 总结一下 1 使用 用户名邮箱手机号 密码 登陆 2 第三方登陆 mob文档中还有以下描述 思考参考了一些资料 知乎 第三方一键登录如何保证产品的唯一ID? 开源中国...
  • 结构化设计和模块设计

    千次阅读 2019-06-24 15:09:25
    结构化设计 ...概要设计阶段的主要任务是设计软件的结构、确定系统是由哪些模块组成,以及每个模块之间的关系。它采用结构图(包括模块、调用、数据)来描述程序的结构,此外还可以使用层次图和 HIPO(...
  • 使用Air724模块设计全功能DTU

    千次阅读 2020-11-10 09:43:06
    使用Air724模块设计全功能DTU 目前物联网开发中,4G模块的使用方式有几下几种: MCU连接4G模块,使用串口通讯,MCU通过AT指令控制数据收发; 4G模块通过USB连接到ARM等系统,通过RNDS或者PPP拨号上网。 4G模块支持...
  • Linux内核模块设计

    千次阅读 2010-11-06 12:53:00
    UNIT 1 Linux内核模块设计             1. 单体内核 VS 微内核 2. Hello,kernel模块实例 3. 内核模块的Makefile 4. 模块的加载与测试 5. 内核...
  • 客户管理系统之模块设计(七)

    千次阅读 2015-06-05 10:36:00
    三,投诉模块设计  对投诉管理模块的设计,要重点从三块来设计,一是添加模块,二是更改模块,三是浏览模块。  1,投诉管理模块  投诉管理模块在窗体上包含一个ToolStrip控件和一个DataGridView控件。...
  • c#三层架构项目开发的全过程,包括三层架构源码、架构文档、模块设计说明书、演示PPT等完整 项目操作手册 项目架构文档 项目模块设计说明书 项目演示PPT 项目三层架构源码
  • 模块设计报告

    千次阅读 2004-07-20 09:31:00
    模块设计报告 来自:http://www.chinaspis.com 作者:林锐 电子工业出版社出版发行 { 项目名称 }模块设计报 文件状态: [√] 草稿 [ ] 正式发布 [ ] 正在修改 文件标识: Company-Project-SD-DATABASE 当前版本: X....
  • 第二部分目录 * 总目录 Vue + Spring Boot 项目实战(十一):用户角色权限管理模块设计 Vue + Spring Boot 项目实战(十二):访问控制及其实现思路 Vue + Spring Boot 项目实战(十三):使用 Shiro 实现用户信息...
  • 4.2系统主要功能模块设计: (1)基本信息模块:是管理员对学生信息进行添加操作。通过本界面管理员可以对学生信息进行相应的修改,包括学号、姓名、出生日期等。可以通过该界面输入学生姓名实现查询该学生的所有...
  • Http API网关服务模块设计方案1. 概述 网关作为服务生产者和服务消费者之间的接口,一方面通过“服务路由”为服务消费找到所需服务的具体位置并调用;另一方面为后台服务器提供负载均衡、安全、流量控制、身份认证...
  • 参考某厂家的模块设计,结合项目经验,设计该模块框图如下: 其中: (1)温湿度传感器使用SHT20,该模块使用I2C接口,看手册和某厂家的选型得。SHT20应比DHT11优秀一些,当然价格可能会高一些。 (2)串口转...
  • 电路模块设计合集

    千次阅读 多人点赞 2017-10-18 16:15:23
    实时更新 一.电源部分 1. 5V转3.3V电路 常用IC: AMS1117 ;LD1086D2M33;HT78XX 2. 3.7V(电池)转3.3V电路 常用IC(LDO): TC1185; 3.7V升压到5V 3. 系统上电控制电路 ...4. 输...
  • 留言板模块设计

    千次阅读 2018-11-13 22:41:00
    暂定周末前完成,11.18 留言界面设计: 留言显示: 参考:暂时不设计头像和回复功能。只将留言内容显示出来。 后台接口设计: 数据库设计: name, email, website, content, time ...
  • 一、用户个人信息模块设计1.用户个人信息模块概述 用户登录后,即可看到个人的相关信息。在这里,用户可以查看个人用户名称、权限等级、当前日期,上次登录时间、登录次数并可执行安全退出操作。2.用户个人信息模块...
  • 订单功能模块设计与实现

    万次阅读 多人点赞 2018-03-08 16:33:13
    https://www.cnblogs.com/fengli9998/p/6417117.html在商城项目中,之前我们介绍了购物车功能模块的实现,商品加入到购物车之后,就是到购物车结算,然后显示购物车的商品列表,点击去结算,然后到了未提交前的订单...
  • 模块设计原则之内聚和耦合

    千次阅读 2019-05-08 15:59:31
    模块设计原则是高内聚低耦合。 那什么是高内聚低耦合呢?首先我们来了解几个概念: 模块的独立性:是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系最简单。 内聚:是模块功能强度(一个模块...
  • 复位模块设计

    千次阅读 2010-07-27 09:54:00
    但是,在嵌入式系统设计中,由于ARM复位模块的复杂性,因此其外部的复位电路设计也是一种复杂而重要的设计工作,设计时也不能轻视。1实例说明 在嵌入式应用系统的设计中,复位问题是ARM设计中一个基本而又重要的...
  • 电商-支付模块设计

    千次阅读 2018-09-19 23:54:07
    关于支付模块,首先引入两个概念,订单和支付流水。 订单,比如我们每下一单,就有一个订单。 支付流水,我们每支付一次就会有一次支付流水。 即:每个订单允许被支付多次。 问:为什么每个订单允许被支付多次?...
  • 购物车功能模块设计

    万次阅读 2014-10-23 15:47:33
    一:购物车模块功能需求   客户在浏览网页的时候, 当遇到喜欢的商品、 又不急于结账而是继续浏览货 物时。 需要一个购物篮来存储她已经选中的商品。 以便于结账或用于对比商品的 详细参数...
  • 拍卖系统模块设计方案

    千次阅读 2005-04-30 22:33:00
    拍卖系统模块设计方案——张安春一、用户使用模块: 用户可以参与买卖,信用评价,参加虚拟社区。1、 买家: 参加竞拍,管理购买商品记录,2、 卖家: 普通:发布商品, 专业:店铺管理 页面模板,消息发布,...
  • 游戏技能模块设计(理解)

    万次阅读 2018-06-02 10:23:29
    behaviac是游戏AI的开发框架组件,也是游戏原型的快速设计工具behaviac:githubhttps://github.com/Tencent/behaviac说是设计系统,其实设计技能机制的结构技能本身的功能是什么?主动技能:特定情况下可用-&gt;...
  • 常用电路模块设计整理

    千次阅读 多人点赞 2016-05-12 12:18:59
    (一下这些电路有自己设计更改的,也有直接从网上资源整理拷贝的,只为自己记忆方便) 1. 双路232通信电路:3线连接方式,对应的是母头,工作电压5V,可以使用MAX202或MAX232。 2. 三极管串口通信:本电路是用...
  • 桌面模块设计与实现回顾

    千次阅读 2006-08-11 19:57:00
    桌面模块设计与实现回顾 转载时请注明出处:http://blog.csdn.net/absurd 桌面模块的实现基本上告一段了,这里做个总结,把其中的得失写下来,供来者参考。 据以前的经验,桌面模块是比较复杂的。介于它的特殊的...
  • 三、YII框架多模块设计(modules)

    千次阅读 2011-01-05 13:35:00
    需求:网站需要设计的业务逻辑复杂,需要便于协同开发和管理,需对网站进行分模块设计。问题:多模块(modules)设计解决方法:1、配置开启gii组件。array( 'gii'=>array( 'class'=>'system.gii.GiiModule', '...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,111,958
精华内容 444,783
关键字:

模块设计