一次和老總?cè)コ燥,等了很長時(shí)間,飯菜卻遲遲沒有上來。 我們倆都很生氣,這時(shí)候老總借景抒情的說:“我們做軟件的時(shí)候,就象開飯店一樣,要盡量滿足”吃客“的要求,盡管后來,飯菜還比較可口,但是因?yàn)榈攘死祥L時(shí)間,以后我們就再?zèng)]有去過那家店。 作為一個(gè)程序員,尤其是一個(gè)水平比較高的程序員,他的思維邏輯一般是比較抽象。而在設(shè)計(jì)軟件的時(shí)候往往會(huì)出現(xiàn)想當(dāng)然的想法。比如,在角色權(quán)限設(shè)計(jì)方面,一般情況,角色權(quán)限可以分為兩種1)針對(duì)行和列的權(quán)限策略,這種權(quán)限策略非常詳細(xì)。2)針對(duì)模塊的權(quán)限策略,這種權(quán)限策略比較寬泛。只是限制對(duì)模塊級(jí)別的訪問。兩種方法個(gè)有千秋,不能說那個(gè)好,那個(gè)不好,但是如果在錯(cuò)誤的環(huán)境下應(yīng)用了錯(cuò)誤的策略的話, 最終用戶使用起來可能就比較吃力。比如,在一個(gè)銀行系統(tǒng)中,出納可以查看客戶的卡號(hào)和帳戶余額,還有一些其他信息,而絕對(duì)不能查看用戶的密碼,此時(shí)如果采用針對(duì)模塊的權(quán)限,那實(shí)現(xiàn)起來就比較困難。而對(duì)于類似給一個(gè)規(guī)模較小,職責(zé)比較集中的OA系統(tǒng)來說,如果采用行,列授權(quán),當(dāng)然能夠嚴(yán)格保證系統(tǒng)的安全性和操作性,但這樣的環(huán)境一般不會(huì)有專門的系統(tǒng)維護(hù)人員,而系統(tǒng)配置起來,就可能比較麻煩。
這時(shí)候,我們復(fù)雜的實(shí)現(xiàn)也許給客戶帶來的是繁瑣和不解。最后相反會(huì)被一些簡單的系統(tǒng)所淘汰,就像java中間件里面,spring大有代替ejb趨勢(shì)一樣。同樣是權(quán)限管理,在授權(quán)的時(shí)候,可以單一為角色授權(quán),另一種可以為角色授權(quán),也可以為單獨(dú)用戶授權(quán),從實(shí)現(xiàn)來說,單一為角色授權(quán)比較簡單,但是在使用的時(shí)候,由于設(shè)置權(quán)限的方法比較單一,用戶容易上手,某種環(huán)境下,可能比復(fù)雜實(shí)現(xiàn)的系統(tǒng)更加受歡迎。
敏捷軟件開發(fā)宣言中有一句話:”相應(yīng)變化,勝過 遵循變化“。原則中也有一項(xiàng):”即使到了開發(fā)的后期,也歡迎改變需求,敏捷過程利用變化來為客戶創(chuàng)造競爭優(yōu)勢(shì)“,其實(shí)這些都是要求我們以客戶的需求來設(shè)計(jì)我們的軟件。如果能在遵循需求的基礎(chǔ)之上,加上自己的經(jīng)驗(yàn),設(shè)計(jì)出即簡單,又滿足功能要求的系統(tǒng),那就更好了,但是千萬別單單評(píng)自己的直覺,設(shè)計(jì)出一些”符合程序員的邏輯,不符合人類的邏輯“的程序。這樣,我們可能很費(fèi)力,但用戶還可能不喜歡。
|