架构师:我们需要顶层设计
背景:

某公司,建立的程序又被推倒,外人觉得很奇怪,这个程序的主管非常敬业,关注到了程序每一个细节,甚至包括每一个按钮的文字和位置。
这个主管很委屈,他说,他完全是按照客户需求制作的,客户怎么说的,他就怎么做了,难道有错?!

但是,这个程序还是被推倒了,当然也有其公司派系斗争的因素在里面。但是,不得不引起我们的注意,这个程序败就败在了太拘泥于细节,而忽略了顶层设计被客户牵着鼻子走,想知道客户自己说什么吗?
|
|
|
|
客户说:<我说的就一定对吗?>
顶层设计——规划。
当提到这个词的时候,很多程序员很不屑,规划?不就是需求吗?和架构设计有啥区别?就写写PPT有那么重要吗?
我们说一个好的程序开发的设计应该包含如下层次,如下图所示:
一、设计分为三个层次
1、第一层次,信息系统规划(项目或产品规划)

我们称之为规划,这个层次是对整个系统在宏观中的地位的把握。如果从一个大型企业的高度看,应该包含整个企业的时间与空间的集合体。
什么是空间?
空间就是涵盖到企业中的各个数据环节以及保证关键的数据流走向的合理,并确保调度优化。顶层模块设计需要研究需要关注的各个业务块之间的结构关系,研究业务框架的整合模式。
行业内比较有名的业务框架,如:eTom业务框架,ITIL等。

什么是时间?
时间就是,企业未来发展以及企业所处行业的整体发展的预期,要兼顾发展才可以从规划的角度使应用系统不过时。
只有从时间和空间的三维角度进行思考,才可以得出合理的规划。
2、第二个层次,是架构设计
架构设计是从程序架构的设计方式角度出发,建立一种合理的程序逻辑的构架方式,也是时间与空间的集合体。
空间:
满足设计会话,利用架构设计适应各个模块的构建方法,使程序逻辑运行于程序的各个模块中而游刃有余,尽可能避免超出架构设计模块无法构建的应用需求。
时间:
满足顶层设计规划,同时兼顾程序未来发展,好的架构设计构造出的程序可能会用很多年不会变。
3、第三层,是微观设计
这个是程序员在处理具体应用程序编写程序时的创新与设计,当然其首要前提是满足上面两个层次的设计。
二、架构设计与规划的区别
架构设计是程序框架构建方式作为其关注点,更多的探讨的是该程序如何满足规划需求的结构健壮性。

而作为顶层设计的规划,更多的是从产品、系统、业务,整体宏观的角度考虑整体的模块地位与框架,并不关注其具体实现方法。
比如,业务逻辑分为几个层次这个问题是规划,这几个层次或模块之间的数据关联方式用EAI还是EDI还是WebService还是什么方式的问题就是架构设计。

三、忽略架构设计和规划设计的危害

业内相当一部分人都认为,找几个会编程序的程序员,就可以做出产品,就可以接活儿了。

可能可以,然而,如果是一个需要若干年持续进行的产品或系统,没有架构设计是短视的,其前期很快搭建后期捉襟见肘。

还有想当一部分人认为,有了架构设计和几个会编程的程序员就可以做出产品和搭建应用系统了。

这也确实可以,但是如果面对一个更复杂的系统,缺乏顶层设计就会陷入关注细节关注需求,被需求牵着鼻子走的路上去。

架构师:我们需要顶层设计相关推荐

  1. Apache架构师的30条设计原则!

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 作者:Srinath 来源:ImportSource 本文作者叫 Srinath,是一位科学家 ...

  2. 微服务架构 接口交互问题_架构师的故事:设计微服务架构

    架构师在软件项目中的作用是提供待解决问题的工作模型.架构师的工作是提供脚手架,开发人员将根据这些脚手架构建他们的代码,使应用程序所有部件都组合在一起. 在构建微服务架构时,项目的架构师主要关注以下3个 ...

  3. 【智能制造】智慧工厂整体规划实施与方案架构;智慧工厂顶层设计与智能制造能力测评...

    2018年4月25日,第十届"NEPCON与智慧工厂1.0--电子制造的未来"主题研讨会在上海成功召开.本次会议围绕"电子制造智慧工厂整体规划与关键支撑技术"主 ...

  4. 软件架构设计_架构师内功心法,软件架构设计的七大原则精选案例

    一.软件架构设计的七大原则简介 1.1 开闭原则(Open-Closed Principle,OCP) 开闭原则是一个软件实体如类.模块和函数应该对扩展开放,对修改关闭.所谓的开闭也是对扩展和修改两个 ...

  5. 系统架构师学习笔记-软件架构设计

    目录 软件架构概述 特定领域软件架构 基于架构的软件开发 设计模式 软件架构概述 软件架构的定义:软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组 ...

  6. 架构师之路 — 数据库设计 — 关系型数据库应用程序设计

    目录 文章目录 目录 设计的原则 设计的步骤 设计的范式 第一范式:确保属性的原子性与唯一性 第二范式:确保属性完全依赖于主码(消除部分函数依赖) 第三范式:确保属性不依赖于其他非主属性(消除传递依赖 ...

  7. 架构师之路 — 数据库设计 — 数据库复制的类别

    目录 文章目录 目录 数据库复制 多主复制的优缺点 数据库复制 数据库复制,即:将数据复制到其他服务器上,并将其存储在多个节点上.在此过程中,数据库实例从一个节点转移到另一节点,并进行了精确的复制.数 ...

  8. 架构师之路 — 数据库设计 — 关系型数据库的约束类型

    目录 文章目录 目录 前言 约束 非空约束 唯一约束 主键约束 外键约束 Check 约束 默认约束 索引约束 参考文档 前言 我们不应该只把数据库系统看作是保存数据的黑盒子,而要将其看成验证和防止数 ...

  9. 架构师之路 — 数据库设计 — 关系型数据库的迁移与版本控制

    目录 文章目录 目录 数据库迁移与版本控制 DB Migration 的本质是 DDL 为什么需要 DB Migration? 常见的 DB Migration Alembic gormigrate ...

  10. 架构师之路 — 数据库设计 — 关系型数据库的外键约束与关联

    目录 文章目录 目录 外键约束 外键关联 外键的作用 外键的性能问题 是否使用外键? 使用外键的守则 互联网应用应该尽量避免使用外键 在业务逻辑中模拟数据库外键 on delete/update 的外 ...

最新文章

  1. 电脑字体在哪个文件夹_电脑键盘使用方法
  2. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...
  3. 去哪儿网产品经理的专属心得:产品经理的核心价值
  4. GTK+与QT的对比
  5. wxWidgets:wxMutex类用法
  6. 深度学习之基于Tensorflow2.0实现Xception网络
  7. Python3 实现单例设计模式
  8. 如何用php饼型图,php绘制饼状图的代码举例
  9. perl学习笔记(1)
  10. 使用Pix For Windows调试Shader傻瓜教程
  11. 开源项目objective-zip
  12. Java图形组件 OpenSwing
  13. python+pytest单元测试框架之在Jenkins上生成Allure测试报告
  14. EXCEL 趋势图生成的公式应用说明
  15. 用Html实现世纪佳缘交友注册页面是什么体验?
  16. Redis数据库 专题
  17. 轻松学习CAN总线系列---2.了解CAN总线网络
  18. 2022最常用且好用的IDEA插件
  19. 未来微型计算机发展趋势,简述什么是单片机(单片机未来发展趋势)
  20. Vue.js的下载和调用

热门文章

  1. 【转】1.DThread、ThreadPool、Task、Parallel的基本用法、区别以及弊端
  2. 【转】Dynamics 365 CRM 开发架构简介
  3. ABP入门系列(13)——Redis缓存用起来
  4. 软件架构设计的6大原则
  5. ubuntu设置始终亮屏_ubuntu设置关闭屏幕和锁定
  6. 算法 - 排序算法 (算法学习)(冒泡、选择、插入、希尔、快排、归并)
  7. 【Python 必会技巧】获取字典中(多个)最大值(value)的键(key)
  8. 截屏当前界面_电脑屏幕怎么截取,常见的几种电脑截屏方法
  9. 【牛客 - 317F】小a的子序列(线性dp,tricks)
  10. *【CF#510C】Fox And Names (拓扑排序)