模块的内聚类型通常可以分为 7 种,根据内聚度从高到低排序:
内聚类型 | 描 述 |
---|---|
功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可。 |
顺序内聚 | 处理元素相关,而且必须顺序执行 |
通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
过程内聚 | 处理元素相关,而且必须按特定的次序执行 |
瞬时内聚 | 所包含的任务必须在同一时间间隔内执行(如初始化模块) |
逻辑内聚 | 完成逻辑上的相关的一组任务 |
偶然内聚 | 完成一组没有关系或松散关系的任务 |
模块的耦合类型通常也分为 7 种,根据耦合度从低到高排序
耦合类型 | 描 述 |
---|---|
非直接耦合 | 没有直接联系,互相不依赖对方 |
数据耦合 | 借助参数表传递简单数据 |
标记耦合 | 一个数据结构的一部分借助于模块接口被传递 |
控制耦合 | 模块间传递的信息中包含用于控制模块内部逻辑的信息 |
外部耦合 | 与软件以外的环境有关 |
公共耦合 | 多个模块引用同一个全局数据区 |
内容耦合 | 一个模块访问另一个模块的内部数据,一个模块不通过正常入口转到另一模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口 |
列举几个比较常考的
设计原则 | 描述 |
---|---|
单一职责原则 | 设计目的单一的类 |
开放-封闭原则 | 对扩展开放,对修改封闭优先使用扩展 |
李氏替换原则 | 子类可以替换父类当重写时就不能替换父类 |
依赖倒置原则 | 要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。 |
接口隔离原则 | 使用多个专门的接口比使用单一的总接口要好 |
组合重用原则 | 要尽量使用组合,而不是继承关系达到重用目的 |
迪米特原则(最小知识法则) | 一个对象应当对其他对象有尽可能少的了解。 |
参考另外一篇文章:
链接: 软考高级-系统分析师-案例分析-系统维护与设计模式
置于用户控制之下
减少用户的记忆负担
保持界面的一致性
某集团下属煤矿企业委托软件公司开发―套煤炭运销管理系统,该系统属于整个集团企业信息化架构中的业务层,系统针对煤矿企业开发,包括合同管理、磅房管理、质检化验、运费结算等功能。部分业务详细描述如下:
(1)合同管理:合同签订、合同查询、合同跟踪等。
(2)磅房管理:系统可以从所有类型的电子磅自动读数;可以自动从电子磅上读取车辆皮重、毛重,计算出净重;可根据合同内容自动减少相应提货单剩余数量,如果实际发货量超过合同额则拒绝发货。
(3)质检化验:根据过磅单、车号,生成化验分析委托单,而后生成化验分析报告。
(4)运费结算:依据过磅单上的净重、化验单、合同规定,自动计算出原料结算单、运费结算单。
煤矿企业根据集团的工作计划制订本企业的业务计划,煤矿企业根据集团划拨指标和提供的原料生产煤炭,所生产的煤炭交由集团统一管理并销售给客 5 卢。软件公司采用 Zachman 框架对企业业务架构和业务过程进行分析,结果如下表所示。
【问题 1】
Zachman 框架是什么:请在上表中(a)~(e)位置补充企业业务架构中的信息类别。
1)Zachman 框架综合考虑企业业务架构中不同角色的不同观点,提出了一个多视角、多维度的企业架构,是许多大公司用来理解、表述企业信息基础设施的一种可以理解的信息表述,为企业现在以及未来的信息基础设施建设提供蓝图和架构。
2)(a) What/数据(b)How/功能/行为(c)Where/位置/网络(d)Who/人员/组织(e)Why/动机
【问题 2】
项目组在该煤炭企业业务架构分析中完成了四项主要工作:数据流图、实体联系图、网络拓扑结构和计划时间表。这四项工作在上表中处于什么位置?请用表的位置编号表示。
(1)数据流图:A32
(2)实体联系图:A31
(3)网络拓扑结构:A53
(4)计划时间表:A25
【问题 3】
据题目所述业务描述,请分别给出表中 A11 和 A23 位置应该填入的内容。(物流关系用“→”表示)。
(1)A11 项目关键元素:合同/合同管理、过磅/磅房管理、质检/质检化验、
结算/运费结算
(2)A23 业务物流网络:煤矿企业←→集团→客户。
UDDI | 统一描述、发现和集成,提供了一种服务发布、查找和定位的方法,是服务的信息注册规范,以便被需要该服务的用户发现和使用它。 |
---|---|
WSDL | Web服务描述语言是对服务进行描述的语言。 |
SOAP | 简单对象访问协议定义了服务请求者和服务提供者之间的消息传输规范。SOAP用XML来格式化消息,用HTTP来承载消息。通过SOAP,应用程序可以在网络中进行数据交换和远程过程调用RPC。 |
REST | 表述性状态转移是一种只使用HTTP和XML进行基于web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。REST提出了如下一些设计概念和准则:(1)网络上的所有事物都被抽象为资源。(2)每个资源对应一个唯一的资源标识。(3)通过通用的连接件接口对资源进行操作。(4)对资源的各种操作不会改变资源表示。(5)所有的操作都是无状态的。 |
微服务架构带来的挑战如下:
在微服务中,应用网关 API 的作用:
某公司拟开发一个自由,可定制性强、用户界面友好的在线调查系统,以获取员工在课程学习、对公司重人事件的看法、对办公室环境的建议等相关反馈。因需要调查的内容各异,可选择的调查方式多样,故本在线调查系统应满足以下需求:
1)支持编辑和视图两种模式,编辑模式只对调查发起者可见,视图模式对接受调查者可见。
2)调查问卷具有可定制性,因调查的内容各异,需要多样的信息采集方式,可设置的调查问题类型包括单选、多选、矩阵类单选、矩阵类多选和开放性问题。
3)操作简单,调查者可以方便地新建和编辑各种问题类型,接受调查者可对每个问题和每个调查问卷给出评论。
4)系统支持显示调查统计结果,以及导出统计结果。 针对以上需求,经项目经讨论,拟采用 REST 架构风格设计实现该在线调查系统。
【问题 2】
REST 架构风格的核心是资源抽象。在系统设计中,项目组拟将系统中的每一个实体抽象 成一种资源。皆列举出该系统中的 5 种资源。
(1)调查发起者
(2)接受调查者
(3)调查问卷
(4)调查问卷类型
(5)调查问卷评论
【问题 3】
基于 REST 架构风格对系统进行设计,请简要叙述 REST 风格的 5 条关键原则。
(1)网络上所有事物都被抽象为资源。
(2)每个资源对应一个唯一的资源标识;
(3)对资源的各种操作不会改变资源的标识;
(4)通过通用的连接件接口对资源进行操作;
(5)无状态通信
二层 C/S 结构为单一服务器且以局域网为中心,所以难以扩展至大型企业广域网或 Internet;软、硬件的组合及集成能力有限;它的缺点主要有:
在三层 C/S 架构中,增加了一个应用服务器。可以将整个应用逻辑驻留在应用服务器上,而只有表示层存在于客户机上。这种客户机称为瘦客户机。三层 C/S 架构将应用系统分成表示层、功能层和数据层三个部分。
与传统的二层架构相比,三层 C/S 架构具有以下优点:
BS 浏览器/服务器(Browser/Server,B/S) 架构是三层 C/S 架构的一种实现方式,其具体结构为“浏览器/Web 服务器/数据库服务器”。B/S 架构利用WWW 浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本
表现层 | 用户界面的逻辑位于最顶层。表现层负责把用户要求的业务逻辑处理结果以可视化的友好的方式返回给用户,并提供接受用户命令的接口和表现层页面控制逻辑的代码。 |
---|---|
业务逻辑层 | 业务逻辑层负责处理问题领域的业务规则和根据用户需求进行的业务处理以满足用户的功能需求。通常情况下,业务逻辑层处理使用的实体对象由持久层提供。 |
持久层 | 数据通过持久层进行持久化。所谓持久化,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。 |
数据库 |
持久层的设计,使得业务逻辑层只需要负责业务逻辑的实现,而把对数据的操作交给了持久层。持久层对数据及对数据操作的封装有以下几个优点:
使用 MVC 模式来设计表现层,可以有以下的优点:
MVP 的优点包括:
MVVM 是由 MVP 进化而来,MVVM 模式基本上与 MVP 相同,只是把MVP 中的 P 变成了 VM,即 ViewModel,MVM 中的数据可以实现双向绑定,当 Model 变化时,View-Model 会自动更新,View 也会自动变化。很好做到数据的一致性,不用担心,在模块的这一块数据是这个值,在另一块就是另一个值了。所以 MVM 模式有些时候又被称作:model-view-binder 模式。因此 MVVM 框架比较适合逻辑复杂的前端项目,比如一些管理系统等。
MDA(Model Driven Architecture)是模型驱动架构,它是由 OMG 定义的一个软件开发框架。它是一种基于 UML 以及其他工业标准的框架,支持软件设计和模型的可视化、存储和交换。
基于 MDA 的软件开发方法的主要过程是抽象出与实现技术无关、完整描述业务功能的核心平台无关模型(Platform Independent Model,PIM),然后针对不同实现技术制定多个转换规则,通过这些转换规则及辅助工具将PIM 转换成与具体实现技术相关的平台相关模型(Platform Specific Model,PSM),最后将经过充实的 PSM 转换成代码。
MDA 的优点:
高性能、高可用、可维护、应变、安全
维度 | 涉及技术内容 |
---|---|
从架构上看 | MVC,MVP,MVVM,REST,Webservice,微服务 |
从缓存上看 | MemCache,Redis,Squid |
从并发分流来看 | 集群(负载均衡)、CDN |
从数据库来看 | 主从库(主从复制),内存数据库,反规范化技术,NoSQL,分区(分表)技术,视图与物化视图 |
从持久化来看 | Hibernate,Mybatis |
从分布存储来看 | Hadoop,FastDFS,区块链 |
从数据编码看 | XML,JSON |
从Web应用服务器来看 | Apache,WebSphere,WebLogic,Tomcat,JBOSS,IIS |
其他 | 静态化,有状态与无状态,响应式Web设计 |
http 重定向
HTTP 重定向就是应用层的请求转发。用户的请求其实已经到了 HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。
特点:实现简单,但性能较差。
反向代理服务器
在用户的请求到达反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的 apache、nginx 都可以充当反向代理服务器。
特点:部署简单,但代理服务器可能成为性能的瓶颈。
传输层负载均衡
DNS 域名解析负载均衡
DNS 域名解析负载均衡就是在用户请求 DNS 服务器,获取域名对应的IP 地址时,DNS 服务器直接给出负载均衡后的服务器 IP。
特点:效率比 HTTP 重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知 DNS,而且 DNS 负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。
基于 NAT 的负载均衡
基于 NAT 的负载均衡将一个外部 IP 地址映射为多个 IP 地址,对每次连接请求动态地转换为一个内部节点的地址。
特点:技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。
静态算法(不考虑动态负载)
动态算法(考虑动态负载)
硬件负载均衡:F5
软件负载均衡:LVS、Nginx、HAprox
无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。
有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的。
ORM (Object Relational Mapping),对象与关系数据之间的映射。
面向对象 | 关系数据库 |
---|---|
类(class) | 数据库的表(table) |
对象(object) | 记录(record,行数据) |
对象的属性(attribute) | 字段(field) |
维度 | Hibernate | MyBatis |
---|---|---|
对比 | 强大、复杂、间接、SQL 无关(HQL 语句) | 小巧、简单、直接、SQL 有关 |
可移植性 | 好(不关心具体数据库) | 差(根据数据库 SQL 编写) |
复杂多表关联 | 不支持 | 支持 |
CDN 的全称是 Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。
扩展标记语言(Extensible Markup Language,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
优点:
缺点:
JSON(JavaScript 0bject Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。
优点:
缺点:
Web 应用服务器可以理解为两层意思:
REST (Representational State Transfer,表述性状态转移)是一种通常使用HTTP 和 XML 进行基于 Web 通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。
REST 的 5 个原则:
响应式 Web 设计是一种网络页面设计布局,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。例如,满足手机端,平板,PC 端等多种设备下的全部适应。
方法与策略:
中台是一套结合互联网技术和行业特性,将企业核心能力以共享服务形式沉淀,形成“大中台、小前台”的组织和业务机制,供企业快速低成本的进行业务创新的企业架构。中台又可以进一步细分,比如业务中台、数据中台、XX 中台。本质上,都是对企业通用能力在不同层面的沉淀,并对外能力开放。
业务中台:提供重用服务,例如学员中心、课程中心之类的开箱即用可重用能力。
数据中台:提供数据整合分析能力,帮助企业从数据中学习改进,调整方向。
技术中台:提供技术重用组件能力,帮助解决基础技术平台的复用。如,中间件、分布式存储、AI、负载均衡等基础设施。
业务中台 vs 数据中台
数据中台必备的 4 个核心能力:
云计算是集合了大量计算设备和资源,对用户屏蔽底层差异的分布式处理架构,其用户与提供实际服务的计算资源是相分离的。
优点:超大规模、虚拟化、高可靠性、高可伸缩性、按需服务、成本低
【前期投入低、综合使用成本也低】。
按照服务类型分类:
按照部署方式分类:
边缘计算是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务,其本质是计算处理职能的本地化。
请用 200 字以内的文字描述什么是“响应式 Web 设计”,并列举 2 个响应式 Web 设计的实现方式。
响应式 web 设计是指我们设计与开发的页面可以根据用户的行为和不同的设备环境做出相应的响应来调整页面的布局,以提供用户可感知的、流畅的阅读和操作体验。
实现方式:(1)流式布局(2)弹性布局,如弹性图片(3)媒体查询
根据李工的提议,新的 B2C 商品交易平台引入了主从复制机制。请针对B2C 商品交易平台的特点,简要叙述引入该机制的好处。