架構師:我們需要頂層設計

架構師:我們需要頂層設計
背景:

某公司,建立的程序又被推倒,外人覺得很奇怪,這個程序的主管非常敬業,關注到了程序每一個細節,甚至包括每一個按鈕的文字和位置。
這個主管很委屈,他說,他完全是按照客戶需求制作的,客戶怎么說的,他就怎么做了,難道有錯?!
但是,這個程序還是被推倒了,當然也有其公司派系斗爭的因素在里面。但是,不得不引起我們的注意,這個程序敗就敗在了太拘泥于細節,而忽略了頂層設計被客戶牽著鼻子走,想知道客戶自己說什么嗎?
|
|
|
|
客戶說:<我說的就一定對嗎?>
頂層設計——規劃。
當提到這個詞的時候,很多程序員很不屑,規劃?不就是需求嗎?和架構設計有啥區別?就寫寫PPT有那么重要嗎?
我們說一個好的程序開發的設計應該包含如下層次,如下圖所示:
一、設計分為三個層次
1、第一層次,信息系統規劃(項目或產品規劃)

我們稱之為規劃,這個層次是對整個系統在宏觀中的地位的把握。如果從一個大型企業的高度看,應該包含整個企業的時間與空間的集合體。

什么是空間?
空間就是涵蓋到企業中的各個數據環節以及保證關鍵的數據流走向的合理,并確保調度優化。頂層模塊設計需要研究需要關注的各個業務塊之間的結構關系,研究業務框架的整合模式。
行業內比較有名的業務框架,如:eTom業務框架,ITIL等。

什么是時間?
時間就是,企業未來發展以及企業所處行業的整體發展的預期,要兼顧發展才可以從規劃的角度使應用系統不過時。
只有從時間和空間的三維角度進行思考,才可以得出合理的規劃。
2、第二個層次,是架構設計
架構設計是從程序架構的設計方式角度出發,建立一種合理的程序邏輯的構架方式,也是時間與空間的集合體。
空間:
滿足設計會話,利用架構設計適應各個模塊的構建方法,使程序邏輯運行于程序的各個模塊中而游刃有余,盡可能避免超出架構設計模塊無法構建的應用需求。
時間:
滿足頂層設計規劃,同時兼顧程序未來發展,好的架構設計構造出的程序可能會用很多年不會變。
3、第三層,是微觀設計
這個是程序員在處理具體應用程序編寫程序時的創新與設計,當然其首要前提是滿足上面兩個層次的設計。
二、架構設計與規劃的區別
架構設計是程序框架構建方式作為其關注點,更多的探討的是該程序如何滿足規劃需求的結構健壯性。

而作為頂層設計的規劃,更多的是從產品、系統、業務,整體宏觀的角度考慮整體的模塊地位與框架,并不關注其具體實現方法。
比如,業務邏輯分為幾個層次這個問題是規劃,這幾個層次或模塊之間的數據關聯方式用EAI還是EDI還是WebService還是什么方式的問題就是架構設計。

三、忽略架構設計和規劃設計的危害

業內相當一部分人都認為,找幾個會編程序的程序員,就可以做出產品,就可以接活兒了。

可能可以,然而,如果是一個需要若干年持續進行的產品或系統,沒有架構設計是短視的,其前期很快搭建后期捉襟見肘。

還有想當一部分人認為,有了架構設計和幾個會編程的程序員就可以做出產品和搭建應用系統了。

這也確實可以,但是如果面對一個更復雜的系統,缺乏頂層設計就會陷入關注細節關注需求,被需求牽著鼻子走的路上去。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452147.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452147.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452147.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

文件傳輸協議FTP

文件傳輸協議FTP提供交互式的訪問&#xff0c;允許客戶指明文件的類型和格式&#xff0c;并允許文件具有存取權限。它屏蔽了個計算機系統的細節&#xff0c;因而適合于在異構網絡中任意計算機之間傳輸文件。它提供不同種類主機系統之間的文件傳輸能力&#xff0c;可以提供用戶對…

Centos7安裝Docker教程

1.首先安裝必要依賴&#xff1a; sudo yum install -y yum-utils device-mapper-persistent-data lvm22.然后添加倉庫源&#xff1a; sudo sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.最后安裝 Docker&#xff…

String.format() 方法用法解說

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 String chargeFlowUrl _AGENT_URL "?agentAccount" _AGENT_ACCOUNT "&sequence%s &phone%s &iceUrl%s &…

Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 錯誤的解決

大意是Log4jConfigListener在獲取webapp.root值時&#xff0c;被后一context的值替換掉了&#xff0c;所以要在各個項目的web.xml中配置不同的webAppRootKey值&#xff0c;隨即在其中一個web.xml中添加&#xff1a; <context-param> <param-name>webAppRootKey<…

ionic3 cordova ionic-native插件

ionic-native插件 cordova安裝插件 以及 ionic-native插件使用過程以及步驟 cordova plugin add cordova-plugin-插件名稱。 //安裝插件npm install ionic-native/對應插件名稱 --save。 //寫入package.json在app.module.ts 的 providers 進行引用解釋&#xff1a;cordove plug…

Diango博客--19.使用 Docker部署項目到線上服務器

文章目錄1.克隆代碼到服務器2.創建環境變量文件用于存放項目敏感信息3.在 .production 文件寫入下面的內容并保存4.修改 Nginx 配置5.修改項目配置文件6.啟動容器7.檢查容器啟動狀況8.配置 HTTPS 證書&#xff08;沒有配置域名無法配置&#xff0c;只能通過服務器 ip 以 HTTP 協…

從一生的角度看程序員的學習和發展

很多人談學習和發展的時候&#xff0c;往往忽略人的先天自然條件&#xff0c;在這里我們從這個視角切入&#xff0c;來探討一下程序員一生的可能軌跡。 如果把程序員的人生分為三個階段&#xff0c;那么他們是&#xff1a; 畢業~30歲&#xff1a;這個時間段里&#xff0c;大多…

Jquery Datatable 數據填充報錯:requested unknown parameter ‘XXX‘ for row xx, column xx 解決方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如圖&#xff1a; 解決方法見官網&#xff1a;https://datatables.net/manual/tech-notes/4 摘要如下&#xff1a; Parameter is an…

Tarjan-縮點

$Tarjan$縮點 Tarjan的第二個應用就是求縮點啦。縮點雖然比割點麻煩一點&#xff0c;但是用處也比割點要大不少。 本來要學另外兩個縮點算法的,但是似乎沒什么用...$MST$里確實有只能有$prim$或者只能用$kruscal$的題目&#xff0c;但是這三種縮點...在網上沒有找到介紹它們之間…

mysqldump參數詳細說明(轉)

Mysqldump參數大全&#xff08;參數來源于mysql5.5.19源碼&#xff09; 參數 參數說明 --all-databases , -A 導出全部數據庫。 mysqldump -uroot -p --all-databases --all-tablespaces , -Y 導出全部表空間。 mysqldump -uroot -p --all-databases --all-tablespaces --n…

Diango博客--20.開啟 Django 博客的 RSS 功能

1.Rss簡介 博客提供 RSS 訂閱應該是標配&#xff0c;這樣讀者就可以通過一些聚合閱讀工具訂閱你的博客&#xff0c;時時查看是否有文章更新&#xff0c;而不必每次都跳轉到博客上來查看。現在我們就來為博客添加 RSS 訂閱功能。 RSS&#xff08;Really Simple Syndication&am…

什么是P2P

P2P技術又稱為點對點傳輸技術。舉個簡單的例子&#xff0c;以便可以更好的理解。比如&#xff0c;以前我們要下載一個文件&#xff0c;我們一定要從服務器下載。有了P2P技術之后&#xff0c;我們可以向其它下載過這個文件的電腦獲取這個文件&#xff0c;我下載完成了這個文件之…

SQL語句使用大全,最常用的sql語句

下列語句部分是Mssql語句&#xff0c;不可以在access中使用. SQL分類&#xff1a; DDL—數據定義語言(Create&#xff0c;Alter&#xff0c;Drop&#xff0c;DECLARE) DML—數據操縱語言(Select&#xff0c;Delete&#xff0c;Update&#xff0c;Insert) DCL—數據控制語言(…

Oracle 的 SQL語句中 decode()函數

decode()函數簡介&#xff1a; 主要作用&#xff1a;將查詢結果翻譯成其他值&#xff08;即以其他形式表現出來&#xff0c;以下舉例說明&#xff09;&#xff1b; 使用方法&#xff1a; Select decode&#xff08;columnname&#xff0c;值1,翻譯值1,值2,翻譯值2,...值n,翻譯值…

百度王一男: DevOps 的前提是拆掉業務-開發-測試-運維中間的三面墻

這是一個創建于 375 天前的主題&#xff0c;其中的信息可能已經有所發展或是發生改變。由數人云、優維科技、中生代社區聯合發起的 系列 Meetup 《 DevOps&SRE 超越傳統運維之道》 先后在深圳、北京舉行過兩場 7 月 15 日上海站&#xff0c;敬請期待 ▼ 王一男老師在《 Dev…

linux上mongodb的安裝與卸載

安裝 1.下載安裝包 wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz 下載完成后解壓縮壓縮包 tar zxf mongodb-linux-i686-1.8.2.tgz 2. 安裝準備 將mongodb移動到/usr/local/server/mongdb文件夾 mv mongodb-linux-i686-1.8.2 /usr/local/mongodb 創建數據…

面向對象設計的準則

1.模塊化 對象就是模塊 把數據結構和操作這些數據的方法緊密地結合在一起 2.抽象 過程抽象 數據抽象&#xff1a;類 參數化抽象&#xff1a;C的“模板” 3.信息隱藏 通過對象的封裝性實現類&#xff0c;分離了接口與實現&#xff0c;支持信息隱藏 4.弱耦合 某一部分的…

Linux觸發連鎖反應,惠及全球

所謂“連鎖反應”是指&#xff0c;若干個相關的事物&#xff0c;只要一個發生變化&#xff0c;其他都跟著發生變化。在軟件界的“圈子”里面&#xff0c;一般而言&#xff0c;“連鎖反應”這個詞匯是不經常使用的。 4月21日&#xff0c;芬蘭科學院把2012年最高技術成就獎授予Li…

Diango博客--21.實現簡單的全文搜索

文章目錄1. 概述2. 模板&#xff1a;將關鍵詞提交給服務器3. 視圖&#xff1a;查找含有搜索關鍵詞的文章4. 視圖&#xff1a;綁定 URL1. 概述 搜索是一個復雜的功能&#xff0c;但對于一些簡單的搜索任務&#xff0c;我們可以使用 Django Model 層提供的一些內置方法來完成&am…

解決Cannot change version of project facet Dynamic web module to 2.5

見 &#xff1a; http://blog.csdn.net/steveguoshao/article/details/38414145 我們用Eclipse創建Maven結構的web項目的時候選擇了Artifact Id為maven-artchetype-webapp&#xff0c;由于這個catalog比較老&#xff0c;用的servlet還是2.3的&#xff0c;而一般現在至少都是2.5…