軟件功能是不是越多越好


軟件業流傳有這么一句話:

有兩種方式構建軟件設計:一種是把軟件做得很簡單以至於明顯找不到缺陷;另一種是把它做得很復雜以至於找不到明顯的缺陷。

最近接手一個項目。軟件是一個開發工具,類似VS那種的可視化開發。
原來的軟件使用了Interop.SourceSafeTypeLib.dll用VSS進行版本控制,后來眾多因素,版本控制的功能也就去掉了,增加一個FTP功能。
中間接手的項目肯定會有各種各樣的問題,但是FTP這個功能基本是一個全新的且獨立的(自主性非常高,完全可以廢棄曾經做的),不存在閱讀他人代碼的問題。
需求給的很簡單:

FTP上傳,下載功能要求實現服務器文件和本地文件的同步,上傳是將本地文件同步到服務器(Commit),下載是將服務器上文件同步到本地(Update),上傳和下載時需要進行判斷,當前兩面文件是否一致,初步計划以文件大小或者更新時間為依據。

開發時遇到的一些問題


頁面布局簡直信手拈來:

但是做了兩天,發現需求無法確定軟件功能,而軟件功能究竟要做多少才是夠用
由於受Total Commander的影響,對於這種左邊一個目錄,右邊一個目錄感覺很“順眼。但是做起來卻是問題多多。
比如ListView的排序問題,從外部給當前目錄增加文件、刪除文件后的刷新問題,Unix文件格式和Windows文件格式問題,下載、上傳時文件重名的覆蓋、跳過、重命名問題……

尤其在做重命名時,發現遠遠沒有自己想的那么簡單。
這些功能,要說都是很基本的一些,文件操作天天都在用,但是做起來遠遠沒有自己想的那么容易。

功能到底要做多少


一個FTP的上傳、下載功能而已,有那么難么?

是的,不難。
先不說類庫中專門有針對FTP的封裝,相信即使直接使用FTP命令做到“能上傳”、“能下載”都很簡單。但一個軟件光做到“能”還是遠遠不夠的。
我在軟件開發時,不止一次的想:

這個功能做不做?

FTP代理(防火牆)做不做?  
FTP保持連接(發送虛包)做不做?  
文件差異高亮顯示功能做不做?  
支持不支持上傳下載目錄?  
……

某人曾經說我:你這是自己給自己找需求。
試想在需求如此空泛的情況下,我能不自己給自己找需求么?

本來軟件做了一個FTP的上傳功能,對於當前編輯的文件,選擇菜單中的上傳,自動上傳當前文件到設置的默認FTP服務器,如果服務器上已經有同名文件,進行提示。
要說這個功能也就夠了,能滿足所謂的“需求”。

功能是不是越多越好


把這個功能做上,即使用不到先放在那里。  
這個是錦上添花的功能,做了更好。  
時間充足的情況下,這個功能還是做上。  
……

正如本文開始所說,軟件越復雜,缺陷、問題越多。
功能不是越多越好,功能不是想到了用不到加上無所謂。
每增加一個功能,要考慮對這個影響不影響,對那個影響不影響,要進行多少測試才可以,怎能是隨便就能增加?
要說功能應該在軟件設計前期確定下來,但我經歷的幾個公司,只有粗略的計划,而沒有詳細的設計,只是說這個軟件“能干什么干什么”,完全一副行外人的感覺。就好比我告訴你QQ能聊天,IE能瀏覽網頁……
當然,我總是在批評,但是真正讓我開始做還是一樣。
大概去年,我完全負責一個小軟件開發,我一直告訴自己,設計、設計,但是還是軟件開始沒三天就開始進行編碼……

寫在后面


軟件開發真所謂一個復雜而漫長的學習旅途。
我越來越覺得曾經在小公司市老板做法很對:
項目還沒確定下來,就讓我們先做出一個軟件出來,投標的時候,其他功能介紹自己的軟件有什么什么功能,能達到什么什么目的,而我們直接給客戶演示。

客戶本來是沒有需求的,但是當你給他軟件的時候他就有需求了。

我的博客原文地址:軟件功能是不是越多越好

歡迎來我的博客:nanqi.info


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM