軟體設計不是避免變化而是使變化區域性化

2021-06-07 17:21:37 字數 869 閱讀 9328

軟體設計不是避免變化而是使變化區域性化

一、前言

在軟體開發過程中經常聽開發人員抱怨得最多的就是怎麼需求又變,之前要求不是這樣的。每個版本我們都要求前期分析充分,實際運作時總是遺漏這,遺漏那。有些是在開發過程中發現的,有的在交付使用者使用後才發現。

我們要求一次性把事情做對,實際上常常一次性把事情做錯。目標離現實越遠,越挫敗。我們不是反對前期把需求分析清楚,也不是反對一次把事情做好。事實上我們有很多實踐方法來確保一開始把需求弄明確,如敏捷開發,和客戶面對面交流,深入客戶一線了解客戶是怎麼開展業務的,也取得了不錯的成果。

需求分析在前端把握大方向,確保產品定位不出問題。更多多如牛毛的細節問題,數量大變化快。是前段分析過程中不易弄清楚的。

而通過恰當的設計和分析能夠將這種變化的影響控制在一定的範圍。通讀整篇設計模式都是在講怎麼設計以容忍變化,不同的模式能容忍哪些變化。

軟體設計不是避免軟體變化而是使軟體的變化區域性話。這種區域性化包括軟體修改的區域性化和修改後的影響區域性化。

二、分析方法

第一步 理清需求的所有細節,包括已明確的和尚不明確的。對事物的本質理解越透徹,越靠近真理。對不明確的需求分析評估影響,如果影響業務流程的關鍵點沒弄清楚,那麼必須停下來弄清楚。

第二步 一分為二,哪些是不變的,哪些是變化的。不變的是主流程或者底層的公共元件模組。這部分的業務越多說明我們前面分析得越透徹,或者業務很穩定。分析變化部分,考慮沒乙個變化點,變化的維度及將往哪些方向變化。對每個變化點的不同變化維度你將採用什麼方式封裝。

好了,到了這裡你苦練的六脈神劍(設計模式)可以派上用場了。

三、總結

首先盡力把需求分析清楚,同時也要承認我們無法不遺漏任何東西。通過精巧的設計能將變化,不確定帶來的影響控制到最小範圍。

發自我的 windows phone

處理程式關鍵資料變化的一種軟體設計

專案中遇到的所有問題可以歸納如下 1.本地邏輯外地控制 2.外地邏輯本地透明 3.所有命令皆為被動 限於子板處於從屬地位,子板與主控間傳遞的命令事實上只是一種控制訊號的傳輸。所有的功能跟隨控制訊號而發生變化,或者更確切地說,功能向控制資料的方向調整變化。資料控制邏輯,而不是邏輯控制邏輯,這是所有專案...

軟體設計是怎樣煉成的(3) 軟體系統不是木桶型的

摘要 前文提到我們應該 需求驅動設計,那就直接來乙個更乾脆的做法,我們將需求表示為乙個乙個的使用者故事,軟體設計 分別針對使用者故事來做就行了,只要將使用者故事逐個實現了,系統也就完成了。果然能這樣做嗎?大綱 1.什麼是優秀的設計?2.優秀的設計能節省專案工作量 3.優秀設計從分析需求開始 4.軟體...

軟體設計是怎樣煉成的(3) 軟體系統不是木桶型的

摘要 前文提到我們應該需求驅動設計,那就直接來乙個更乾脆的做法,我們將需求表示為乙個乙個的使用者故事,軟體設計分別針對使用者故事來做就行了,只要將使用者故事逐個實現了,系統也就完成了。果然能這樣做嗎?4.1 某種 需求直接驅動設計 的工作方法 案例分析 某敏捷實踐專案小組的設計方式 某專案小組正在如...