架构验证的时间 (转)

转载 2007年10月16日 11:39:00

架构设计的各种方法论是为把事情变得更简单易懂而准备的,它们帮我们梳理复杂应用的逻辑头绪,把我们不能一下子掌握的事情通过一种有条不紊的途径消 化掉。可以说,把事情变得更简单是架构设计的远景和目标。但这种简单是有条件的,实用就是它的条件。所谓实用就是要满足各种各样外部环境并尽可能的提供更 多的指标,这些指标包括可伸缩性、可维护性、学习曲线、稳定性等。所谓的尽可能就意味着需要有一个平衡点,我们需要通过各种努力来实现一个NP问题的解。

由于技术在大多数情况下都不是唯一的,同一问题解决方案可以非常多样。对于不同的架构,特别是稍微复杂一点的,相互很难能说服对方,项目真正进入实施阶段后这些不同所带来的影响就慢慢的浮出水面。之所以两个架构师可能会对同一问题得到两种截然不同的解,原因是多方面的:

  • 对问题领域的理解不同;
  • 个人经验不同,其中有感情的因素;
  • 思考问题的方法不同;
  • 出发点和侧重点不同。

这其中,个人经验占的比重相当大。个人经验在某些情况下会变成一种感情的因素,成了阻碍和排他的根源。实践是检验真理的唯一标准,来源于实践的经验理应得到感情的偏爱。不仅要用实践来检验正确的事情,也要用实践来验证错误的决策。排他法就是这个意思。

现 在的很多应用模式,其实就是由实践检验过的解决方案。我们通常会在架构设计的时候自觉不自觉地引用成熟的架构模式,它往往能带来事半功倍的效果。但事情总 不是那么顺利,失败的项目仍然比比皆是。原因就在于对模式的理解,或者说本身模式的描述就不全面。每一个应用都有自身的特殊性,放之四海而皆准的真理在这 个世界上并不多见。所以,我们需要在架构设计中引入架构验证的环节。

危险来自不确定性,架构验证是一个非常重要的环节,它能在很大程度上预 期项目的远景。架构设计过程通常把架构验证的时间放得比较靠后,很多时候我们是先有了一个通过经验(或感情)取得的一个模型之后再来找证据。这些证据确实 说明了大多数问题,但不幸的是,20%的漏洞往往决定了80%的失败。这是种先入为主的思考问题的方式,它很难能给出最优解。更好的方法是在架构设计之 初,综合当时能综合的因素得到一些不同的架构方案并对各个方案进行先期验证。这是一种排他法,非常的古老和简单。

验证的目的就是要避免来自 不确定性的危险。如果某个结论是确定的了,或者是长期的实践检验过的了,通常没必要耗费时间去验证了。用确定性的东西越多,项目的预期也就越确定。有人喜 欢求新求时尚,但新东西往往是付带着许多不确定的因素。比如面向对象是被长期检验过的了,而SOA就还是比较新的东西。

先期的架构验证要避 免的一个问题是流于形式,或者说仍然带着感情的因素去做验证。并不是说把一些个条条框框搬出来对比就能得出结论的,更多的时候需要理性的思维,毕竟计算机 仍然是一门科学。科学的东西最好是用数据说话。我很少看到哪个架构设计文档会把几个可选的架构放在一起用数据进行比较得出结论的情况,往往是纸上谈兵的方 式比较常见。有经验的架构师手里应该掌握了很多数据,这些数字在很多时候比争论要来得直接得多。

结论:用证据筛选架构而不是为架构找证据,使用成熟的技术避免风险。不仅是架构设计,对很多事情最好都能养成先期验证的习惯。

 

java后端系统架构之技术架构验证篇2

系统架构之技术架构验证与调优分析
  • wh0426
  • wh0426
  • 2015年03月28日 19:59
  • 1164

交叉验证(Cross Validation)

交叉验证(Cross Validation),有的时候也称作循环估计(Rotation Estimation),是一种统计学上将数据样本切割成较小子集的实用方法,该理论是由Seymour Geisse...
  • cainiaozr
  • cainiaozr
  • 2015年11月03日 09:59
  • 933

JavaScript:时间日期格式验证大全

* 校验是否为YYYY-MM-DD 日期格式 * 校验是否为YYYY-MM-DD HH:mm 日期+时分格式 * 校验是否为YYYY-MM-DD HH:mm:ss 日期+时分秒格 * 校验是否为...
  • sinat_26342009
  • sinat_26342009
  • 2015年08月24日 16:10
  • 3837

完整的时间(开始和结束时间)输入框验证js

完整的时间(开始和结束时间)输入框验证js 1、html (1)时间输入框 Html代码   当使用时间插件改变时间时,会触发onchange()事件 起始时间:     ...
  • amberom
  • amberom
  • 2015年04月28日 19:28
  • 433

bootstrap-datepicker 与bootstrapValidator同时使用时,选择日期后,无法正常触发校验

一、前言 使用bootstrap-datepicker和bootstrapValidator也有一段时间了,在工作中发现两者同时使用时会出现的一种问题,当选择完日期后,并不会正确校验该字段。为了更加...
  • biedazhangshu
  • biedazhangshu
  • 2016年06月13日 14:45
  • 9937

简单的采用post方式验证用户名和密码

设计思路: 1 获取用户输入的用户名和密码,并判断是否为空 2 将获取的用户名和密码,发送到服务器端,并进行验证 3 获取返回的响应信息,并输出到用户界面 具体代码: import java...
  • u012839304
  • u012839304
  • 2015年08月20日 12:55
  • 355

java日期与时间戳相互转换大全

各种时间戳与日期之间相互转换的工具,,,这么多方法肯定有你想要的功能233333333 package com.crm.util; import java.math.BigDecimal; imp...
  • djc777
  • djc777
  • 2016年03月16日 14:44
  • 10920

js日期/时间比较函数,以及js校验表单后提交表单的三种方法,表单验证,以及三种结合

js日期比较(yyyy-mm-dd) function duibi(a, b) { var arr = a.split("-"); var starttime = new Date(arr[...
  • qq459805661
  • qq459805661
  • 2016年05月10日 14:34
  • 2435

MySQL 时间戳转换成秒

1 NOW() //当前时间 2 SYSDATE() //当前时间 3 CURRENT_TIMESTAMP 4 以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前...
  • konglongaa
  • konglongaa
  • 2016年06月20日 11:34
  • 7284

MYSQL日期 字符串 时间戳互转

平时比较常用的时间、字符串、时间戳之间的互相转换;本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串、date转时间戳、字符串转date、字符串转时间戳、时间戳转date,时间戳转字符...
  • chen_pt
  • chen_pt
  • 2016年08月05日 21:31
  • 1196
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:架构验证的时间 (转)
举报原因:
原因补充:

(最多只允许输入30个字)