下面我们就对技术视点进行一定深度的剖析,说的直白一点就是对技术来进行切割,即对服务的切割,我这里来介绍技术切割的这样几把刀,不多说了。
对技术进行切割绝不是一件特别简单的事情,最开始的时候,我是完全没有思路,不过老师的一句话让我顿时豁然开朗,他说你想想应该怎么样去写代码,说到这时,我先把我们通常用java编写一个web工程的代码结构写了出来,Action层,Service层,Persistable层,还有Entity层,老师看过之后,笑了笑,说我深受java的影响,不过也同时揭示了一个道理,就是mvc的思想,然后老师又说,这只是把一个软件进行纵向的切出几块,还有没有横向切的,比如一些通用的组件,老师还说横切是一种AOP的思想,这时我就想到了权限管理,我们写代码的时候通常会把权限管理还有日志的记录都是用AOP的方式进行切面编程,老师点点头,说这些公共的组件通常都会拿出来进行AOP的集成,但是大家考虑过这是为什么呢?就拿权限校验为例,通常这些代码存在于项目的各个角落,有一些大的项目甚至有上万个地方都要用到这些代码,如果我们不把这些公共的东西拿出来的话,假如有一天,我们权限校验的这个接口改变了,里面多了个参数,那我们有没有想过,这得多大的工作量啊,所以我们有必要把这些公共的东西拿出来,这样我们只需要改这些切面组件里面的代码就可以了。在我写的这些文章中用到了很多类比的方法,这样更方便把一些抽象的难以理解的知识转换成通俗易懂的东西来呈现给大家。
通过我们对上述图片的理解,我们可以清楚的看到软件业务的切割与服务的切割,是两个完全不同的视角,不过服务的切割时基于业务的切割,业务的切割是服务切割的基础与落脚点。
下面我们来介绍一种纵向切割的一种分析方法——鲁棒分析法(如下图所示),这种分析方式OO的思想贯穿于始终我们看到这里面有三个对象的概念:
1:实体对象:这种对象通常来自域模型,说白了就是从现实世界从抽象出来的,通常用来描述具体的实体,一般都会映射到数据库的表格或者文件中。
2:控制对象:主要用于体现应用程序的执行逻辑,将其抽象出来,说白了就是它自身怎么变化都不会影响用户体验以及数据库中的表。
3:边界对象:这也是最难理解的,通常是指用来完成参与者(用户,外部系统)与系统之间交互的对象,如接口,对话框,菜单,表单等。
同时鲁棒分析法也涵盖了分层的概念,我们不难发现,用户只能和边界对象之间进行交互,而控制对象可以与边界对象和实体对象之间进行交互,而实体对象只能和控制对象之间进行交互,下一步我们就拿bug管理系统来进行鲁棒分析一下,演进行鲁棒分析,首先要找到使用者,在缺陷管理系统中,该系统的使用者有开发人员和测试人员,我先说测试人员提交缺陷这个功能,接下来我们要找到边界对象,首先测试人员到登陆到主页面,主页面上肯定有一个添加缺陷信息的按钮,点击这个按钮,就会弹出一个缺陷表单填写的界面,填写完主要信息后点击确认/提交按钮后,其中的主页面——添加缺陷按钮——缺陷表单页面————选择指派人的选择框——问题发现方选择框——提交按钮,这些都是边界对像,如下图。
下面让我们来一起找一下控制对象和实体对象。大家只要静下心来,把自己当做一名测试人员设身处地地去想整个过程,不断去完善就可以画出图。
下一步我们要构建交互图,通过这个图形的呈现,我们基本上可以把所用到的方法都可以推导出来,如下图。
下面我想说一下软件接口的设计,大概要掌握这样几个原则,首先要遵循最小接口原则、自我描述接口、接口分离原则、稳定接口原则。最小接口原则,顾名思义,就是小,不过这个小实在是难定夺,有的人在设计接口是把所有想到的方法都写在里面,这时候就要做一些定夺,可能有一些方法根本不需要,获取可以和其他方法共同完成一个功能,这样就可以做舍弃,接口分离原则是这样的,如果有多个客户使用这个接口,那么我有必要定义多个接口,然后去实现这些个接口,为什么要这样设计呢,加入A用户想要改变这个接口里的方法,那么我们只要更改对于A用户开放的接口以及其实现类,对B,C用户都没有影响。稳定接口,也就是稳定的接口,运行了很长一段时间都不需要变化的接口(这是我的理解,可能不正确),其实还有很多原则了,我会慢慢去探索的。
接下来我说一下弹性的设计,我觉得这个好难,因为很难把控软件未来的变化,以及发展方向,不过通过老师的讲解,我总结出了一个原则叫做万物归一,比如我在软件生命周期管理的软件使用过程中,刚开始的时候只加入了bug管理系统,后来我又想加入风险控制,以及任务管理模块,这时我们就要想一下,这三个系统可以归为一类统一都叫做WorkItem,这个之前我也说过,其实就是一种封装的思想,不过怎么样才能从技术上解决上述的问题呢(万物归一,而且可以不用考虑使用的语言),这时我们会想到一个强有力的东西就是xml文件,通过配置就可以简单地解决上述问题了,还有一种变化可以通过设计模式来解决问题,EA对设计模式进行了很好的融合,所以我们以后要仔细留意一些设计模式,比如工厂模式、代理模式等,通过这些设计模式即可解决变化之道。老师给总结了几点,要问这样几个问题。
1:这种变化是不是单一方向的编码吗:
答:如果是,设计模式即可解决。
2:这种复合变化是否可以分解成2——3种变化?
答:如果是,复合应用设计模式即可解决。
3:这种变化是“值 类型”的变化吗?
答:如果是,配置式即可做到(XML,数据库,纯文件)
4:这种复合变化是逻辑判断型的变化吗?
答:如果是,可以通过脚本方式来解决这种变化。
今天就说到这吧,其实还有好多的东西,我以后会慢慢补充的,也请大家多提提意见和建议。下回我们先讲一下数据库的设计。
相关推荐
车险系统架构是现代保险行业在互联网技术推动下,为了适应数字化、平台化发展趋势而产生的一种新型业务架构。它通常包括了从产品设计、报价计算、投保流程管理到客户服务和理赔等多个环节,旨在为保险公司提供一个...
《分布式数据库架构及企业实践——基于Mycat中间件》对 Mycat 从入门到进阶、从高级技术实践到架构剖析、从网络通信协议解析到系统工作原理的方方面面进行了详细讲解,并剖析了 Mycat的 SQL 路由、跨库联合查询、...
希赛架构师2020年的讲义,无水印。网上发布的不是完整版本,这个是完整版。
- **更新架构**:根据监测和评估的结果,企业架构师需要对架构进行必要的更新,以确保其始终符合最新的业务需求和技术趋势。 - **合规性检查**:企业架构师还需要确保企业架构符合相关的法规和标准要求。 #### ...
《ASP.NET 2.0项目开发第一步——UML+C#与VB双语+Crystal Reports》是一本面向初学者和进阶者的技术书籍,旨在通过实际项目案例,介绍如何使用ASP.NET 2.0进行Web应用开发。这本书的核心知识点涵盖了UML(统一建模...
### 架构升级与优化——滴滴出行平台的高可用实践 #### 一、滴滴出行平台简介 滴滴出行作为中国领先的移动出行平台,在不断的发展过程中,面临着业务快速增长和技术挑战的双重压力。为了应对这些挑战,滴滴的技术...
文档中也特别提到了“熵增定理”,这基于热力学第二定律,指出在孤立系统中,不可逆的热力学过程熵总是趋于增加。在架构设计中,熵的增加可能代表了系统复杂度的增加和有序度的减少。因此,逆熵进化可能涉及如何在...
《微机原理与接口技术——基于8086和Proteus仿真(第2版)》是由顾晖、陈越和梁惺彦三位专家编著的一本深入学习微处理器及接口技术的重要教材。这本书主要围绕8086微处理器展开,结合Proteus仿真软件,为读者提供了...
在确定架构模式后,我们需要考虑到软件的技术实现问题,例如是否采用第三方SDK等。最后,我们需要通过适配器模式(Adapter)来实现软件架构的设计。 在软件架构设计实践中,我们需要同时考虑到两种架构概念的角度,...
【企业内部控制应用指引第1号——组织架构】是针对企业如何构建合理的组织架构,以确保高效运营和风险管理的重要指导文件。组织架构不仅是企业内部管理的基础,更是企业防范风险、实现可持续发展的关键因素。 1. ...
《工控组态技术及应用——MCGS(第二版)》课件,是针对这一领域的专业教程,旨在帮助学习者深入理解和掌握MCGS软件的使用技巧。 该课程资源包中包含了详细的课件,涵盖了以下几个核心知识点: 1. **工控组态基础*...
《电脑高手》杂志在2001年第2期对VIA内存交错控制及内存模块结构的详尽解析,首次准确揭示了该类型交错的原理与容量限制的科学依据。尽管此后涌现了大量内存技术文章,但由于专业知识的匮乏与误导,国内媒体上的优质...
在本节"第二章第六节——综合示例二"中,我们将探讨一个涵盖多个IT领域的综合性实例,旨在帮助读者深入理解和应用所学知识。在这个示例中,我们可能涉及编程、网络、数据库、操作系统以及软件工程等多个方面。由于...
计算机组成原理与接口技术:基于MIPS架构 左冬红 高清pdf 带书签
第二部分关注云基础设施、特殊云、云管理和云安全等机制;第三部分详细阐述了云计算架构,涵盖基本云架构、高级云架构及特殊云架构;第四部分从云交付模型、成本指标和定价模型、服务质量指标与SLA等方面讨论了...
这份压缩包包含的三期PDF文件——“架构师(第1期).pdf”,“架构师(第2期).pdf”以及“架构师(第3期).pdf”,无疑是深入探讨架构师角色、技能、挑战和解决方案的宝贵资料。 第一期可能涵盖了架构基础,定义了架构师...
GPT-4核心技术分析报告(2)——GPT-4的技术分析(收录于GPT-4_ChatGPT技术与产业分析) 本报告是对GPT-4技术的深入分析,涵盖了GPT家族的发展历史、架构、多模态架构、关键技术等方面。报告首先回顾了GPT家族的...
其次,管理层是大数据技术架构的第二层,它专注于数据的管理和分析。在这个层面,系统需要能够整合来自不同来源的结构化和非结构化数据,并提供实时传输、查询和计算功能。并行化和分布式计算是管理海量数据的关键,...