日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
細(xì)說(shuō)可持續(xù)的需求分析和軟件設(shè)計(jì)

最近和大家一起討論了一些內(nèi)容管理方面的功能和設(shè)計(jì),有些思考,和大家分享一下。

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、仙居ssl等。為超過(guò)千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的仙居網(wǎng)站制作公司

在討論內(nèi)容管理的功能需求時(shí),我們常常會(huì)考慮某個(gè)功能各種各樣的情況,功能性、易用性、復(fù)雜的處理場(chǎng)景、異常的處理場(chǎng)景,這些無(wú)疑都是非常非常有價(jià)值的,一個(gè)系統(tǒng)做到最好的境界,從客戶角度來(lái)看,也就是這些功能了。
 
同時(shí),我們也討論了很多軟件設(shè)計(jì)方面的一些內(nèi)容,考慮了很多靈活性、擴(kuò)展性方面的內(nèi)容,同時(shí)設(shè)計(jì)和功能也是緊密相連的,設(shè)計(jì)常常對(duì)功能的具體展現(xiàn)會(huì)有一定的影響。

那我們實(shí)際中遇到的困難是什么呢?針對(duì)上面我們討論的兩個(gè)方面,主要是兩個(gè)問(wèn)題:

1)功能太多了,有時(shí)候是越想越多,如何選取合適的功能集合成為討論的焦點(diǎn);

2)還有就是設(shè)計(jì)的靈活性和擴(kuò)展性的把握,感覺(jué)好的設(shè)計(jì),往往需要更多實(shí)現(xiàn)的時(shí)間,然后項(xiàng)目時(shí)間似乎又不允許。

在說(shuō)明這兩個(gè)問(wèn)題之前,我想有必要稍微說(shuō)明一下軟件質(zhì)量的一些分類。

最近看一本書(Scrum and XP from the Trenches),對(duì)軟件的質(zhì)量,劃分為內(nèi)部質(zhì)量(internal quality)和外部質(zhì)量(external quality),外部質(zhì)量指的是從客戶角度可以看到的質(zhì)量,比如軟件的功能,易用性、性能等等;內(nèi)部質(zhì)量則是是從程序員角度來(lái)看的質(zhì)量,比如代碼的健壯性、可擴(kuò)展性、可維護(hù)性等等。外部質(zhì)量好的軟件,內(nèi)部質(zhì)量不一定好;但是內(nèi)部質(zhì)量不好的軟件,外部質(zhì)量一般很難好。很難想像,一個(gè)設(shè)計(jì)很糟糕,代碼質(zhì)量很糟糕的系統(tǒng),功能、性能和易用性可以很好。內(nèi)部質(zhì)量就好比是外部質(zhì)量的基石,代碼的可維護(hù)性和擴(kuò)展性,直接影響了系統(tǒng)的功能的改進(jìn)和提升。

外部質(zhì)量和內(nèi)部質(zhì)量比較容易對(duì)于到功能和設(shè)計(jì)兩個(gè)問(wèn)題上。

那么回過(guò)頭來(lái)看我們遇到的兩個(gè)問(wèn)題,首先是功能的取舍問(wèn)題。

我們Agile的團(tuán)隊(duì)討論,大家對(duì)于某個(gè)User Story,討論起來(lái)越談就越起勁,想出了好多好多的功能點(diǎn),隨之也帶來(lái)了很多麻煩,比如說(shuō)要實(shí)現(xiàn)的范圍好像太大了,似乎一下子工作量變得很大,隨著而來(lái)也有很多壓力,然后接著我們有時(shí)候也會(huì)不由自主的按照項(xiàng)目時(shí)間點(diǎn),尋找一些“捷徑”,然后可能就逐步丟掉了或者少做了一些好的功能點(diǎn),甚至?xí)D(zhuǎn)向?qū)崿F(xiàn)一些大家雖然覺(jué)得不怎么好但是滿足項(xiàng)目時(shí)間點(diǎn)的功能,這時(shí)大家都不免感到有些失落。

那我們可以怎么處理呢,可以稍微分析一下我們整理出來(lái)的功能點(diǎn),我們會(huì)發(fā)現(xiàn),情況也許不是我們想像的那么糟糕。我自己覺(jué)得有四個(gè)原則可以幫助我們?nèi)ゾ駬瘢?/p>

1)功能優(yōu)先級(jí)

2)80/20法則

3)完整性

4)可持續(xù)性

1)優(yōu)先級(jí)

首先是我們可以按照優(yōu)先級(jí)來(lái)選擇功能點(diǎn),這個(gè)是顯而易見(jiàn)的。重要的功能先做,次要的功能可以先放一放。特別是最基本的功能,比如客戶一定要的功能,沒(méi)有這個(gè)功能客戶就玩不轉(zhuǎn)了;比如內(nèi)容管理,如果內(nèi)容創(chuàng)建、修改和刪除,這些功能如果都沒(méi)有,那么系統(tǒng)都無(wú)法正常運(yùn)轉(zhuǎn)了,肯定是不行的了。

2)80/20法則

80/20法則,就是先選擇哪些客戶日常使用最需要用到的功能,比如說(shuō)內(nèi)容處理的基本流程,有一些內(nèi)容同步的異常情況,實(shí)現(xiàn)起來(lái)是很復(fù)雜的,但是實(shí)際中遇到的可能性相對(duì)較少。又比如內(nèi)容創(chuàng)建流程的易用性,這個(gè)用戶使用頻率是非常高的,那么怎么優(yōu)化內(nèi)容創(chuàng)建的用戶體驗(yàn),這個(gè)功能點(diǎn)優(yōu)先級(jí)也就是很高的,然而它的代價(jià)可能不會(huì)特別高。

3)完整性

要特別注意是功能點(diǎn)的完整性,比如說(shuō)內(nèi)容異常流程的處理,假設(shè)因?yàn)轫?xiàng)目時(shí)間,先不實(shí)現(xiàn)了,那么也不是說(shuō)完全不處理異常了,還是要做到有一定完整性,即使是簡(jiǎn)單的實(shí)現(xiàn)也是需要的(比如說(shuō)記錄日志以供人工查詢),但是這個(gè)簡(jiǎn)單實(shí)現(xiàn)是代價(jià)最小的,而且是以后可以很快去替代的。

4)可持續(xù)性

功能點(diǎn)的實(shí)現(xiàn)選擇,要考慮的還有可持續(xù)性的問(wèn)題,就是功能點(diǎn)是可以不斷去疊加來(lái)完善的,而不是說(shuō)不斷的推翻后重新實(shí)現(xiàn)一把,這個(gè)是差別很大的。比如說(shuō)內(nèi)容創(chuàng)建功能,現(xiàn)在對(duì)于異常的處理我們暫時(shí)不實(shí)現(xiàn),這個(gè)是沒(méi)有問(wèn)題的;但是如果下次要實(shí)現(xiàn)異常處理的時(shí)候,就要把現(xiàn)在內(nèi)容創(chuàng)建的流程的功能描述推翻重來(lái),這個(gè)可持續(xù)性就有問(wèn)題了,因?yàn)檫@個(gè)意味著以前的功能全部都會(huì)被推翻,很可能是以前的實(shí)現(xiàn)都白費(fèi)了,這就是功能點(diǎn)設(shè)計(jì)的的不可持續(xù)性了。功能點(diǎn)設(shè)計(jì)一定要有持續(xù)性,如果是這樣子,系統(tǒng)的功能就能夠越做越強(qiáng)。

所以我們可以把每一個(gè)的User Story的各個(gè)功能點(diǎn)想的更加完善,這個(gè)是很好的,剩下的只是如何取舍的了,所謂取舍,只是階段性的舍棄和選擇罷了。所以在討論過(guò)程中,不要因?yàn)楣δ艿脑鰪?qiáng),范圍的擴(kuò)大而讓我們感到害怕和困惑,把他們記錄下來(lái),就是很好的逐步改進(jìn)系統(tǒng)的武器,我們只要運(yùn)用上面的一些原則,就能夠讓我們做的更好。

下來(lái)再談?wù)勗O(shè)計(jì)的問(wèn)題

在Head First Object-Oriented Design的書中,定義Good Design就是Flexible Design。而The Art of Agile Software Development一書中,定義Good Design為“A good software design minimizes the time required to create, modify and maintain the software while achieving acceptable runtime performance.”就是軟件的可維護(hù)性。所以Agile Design強(qiáng)調(diào)的功能,基本上都是從如何不斷改進(jìn)軟件的可維護(hù)性和可擴(kuò)展性而努力的,只有軟件具備了良好的可維護(hù)性和可擴(kuò)展性,那么軟件能夠很好的不斷疊加功能,軟件才具有旺盛的生命力。

我們實(shí)際中面向的問(wèn)題呢?其實(shí)還是很簡(jiǎn)單,就是好的設(shè)計(jì)和項(xiàng)目時(shí)間的沖突,好的設(shè)計(jì)是需要時(shí)間考慮的,也是需要時(shí)間來(lái)實(shí)現(xiàn)的(雖然不是絕對(duì),有時(shí)候好的設(shè)計(jì)會(huì)節(jié)省更多的工作量)。

對(duì)于第一個(gè)問(wèn)題,于項(xiàng)目時(shí)間的沖突,這個(gè)可以回到前面開始談的內(nèi)部質(zhì)量和外部質(zhì)量的問(wèn)題,前面對(duì)于功能(外部質(zhì)量)的問(wèn)題,我們已經(jīng)談了取舍的方法,那么,內(nèi)部質(zhì)量(設(shè)計(jì)),是不是也可以取舍呢?在“Scrum and XP from the Trenches”書里面,作者自己是這么認(rèn)為的:

Internal quality, however, is not up for discussion. It is the team’s responsibility to maintain the system’s quality under all circumstances and this is simply not negotiable. Ever.

在這上面我是持一樣的觀點(diǎn)的。

然而我們的問(wèn)題依然存在。和項(xiàng)目時(shí)間的沖突如何平衡呢?我想可以考慮兩個(gè)原則:

1) 足夠好(First Right)

2) 分階段實(shí)現(xiàn)/可持續(xù)性

1)足夠好(First Right & Good Enough)

所謂First Right & Good Enough是讓我們看看我們所作的設(shè)計(jì)是不是足夠清晰的架構(gòu)我們的系統(tǒng),而不是太過(guò)的復(fù)雜導(dǎo)致項(xiàng)目時(shí)間不足,往往好的設(shè)計(jì)并不是要花更多的時(shí)間實(shí)現(xiàn)的,通常只有Over Design才讓我們感到力不從心。所以我們發(fā)現(xiàn)設(shè)計(jì)導(dǎo)致實(shí)現(xiàn)的時(shí)間過(guò)長(zhǎng)的時(shí)候,我們需要看看,是不是我們想的太復(fù)雜了?

另外一方面,我們不提倡Over Design,避免Needless Complexity,但是還是要Good Enough & First Right,就是在看的到的需求范圍內(nèi),我們的設(shè)計(jì)要好,好的設(shè)計(jì)和不好的設(shè)計(jì),差別往往是在維護(hù)代碼和增加功能的時(shí)候才能夠看到,稍微花一些時(shí)間完成一些精妙的設(shè)計(jì),不僅是技術(shù),更是藝術(shù)美感的體現(xiàn),這個(gè)只有在未來(lái)才能夠體會(huì)到。

要注意的是Refactoring和First Right并沒(méi)有沖突,只有每次都是Right的比Wrong的更多,逐步的將Wrong的地方進(jìn)行Refactor,系統(tǒng)才能夠越做越好。否則系統(tǒng)的質(zhì)量就始終處于初級(jí)階段了。

2)分階段實(shí)現(xiàn)/可持續(xù)性

好的設(shè)計(jì)往往是Flexible的,是可以分階段實(shí)現(xiàn)的,很多設(shè)計(jì)的基本原則,比如面向接口編程,就是支撐“分階段實(shí)現(xiàn)”的一個(gè)很好的原則。當(dāng)我們定義的接口層次很清晰的時(shí)候,接口的具體實(shí)現(xiàn),是可以根據(jù)項(xiàng)目的時(shí)間點(diǎn),進(jìn)行控制的。項(xiàng)目時(shí)間比較緊的時(shí)候,可以做一些快速的實(shí)現(xiàn),然后在下一階段再Refactoring,如果對(duì)象之間是接口依賴而不是類依賴的話,下一階段的Refactoring也對(duì)系統(tǒng)已有功能影響也就非常的小,這個(gè)也是IOC核心價(jià)值所在了。

舉個(gè)例子,比如說(shuō)話單文件格式的靈活設(shè)計(jì),假設(shè)話單有好幾種格式,那么它的設(shè)計(jì)可以有幾個(gè)階段:

第一個(gè)階段是能夠在類這個(gè)層級(jí)易于維護(hù),先通過(guò)Template的設(shè)計(jì)模式定義一個(gè)話單父類后,不同的話單格式的子類實(shí)現(xiàn)父類的模板方法,如formatCDR(格式話話單記錄)即可,這種情況下,外部函數(shù)寫話單的時(shí)候,只需要實(shí)例化相應(yīng)對(duì)象后,調(diào)用父類的接口就可以寫出相應(yīng)的話單。而有新話單格式的時(shí)候,只要生成一個(gè)新的子類并實(shí)現(xiàn)相應(yīng)方法就可以了,可以看到這種設(shè)計(jì)是一個(gè)Good Enough的設(shè)計(jì)。

第二個(gè)階段是把類的可維護(hù)性提升到配置的可維護(hù)性,比如說(shuō)通過(guò)一種XML的方式來(lái)配置話單格式,使得系統(tǒng)的可維護(hù)性達(dá)到運(yùn)行時(shí)而不是編譯時(shí)。這個(gè)時(shí)候,還是在原來(lái)的基礎(chǔ)上,生成一個(gè)新的子類,這個(gè)子類在formatCDR的時(shí)候是從XML配置文件里面讀取配置后生成格式化數(shù)據(jù)的罷了,系統(tǒng)還是支持很多種默認(rèn)的CDR格式并且對(duì)于一些無(wú)法通過(guò)配置的CDR格式,還是可以通過(guò)子類繼承的方式來(lái)實(shí)現(xiàn)。

第三個(gè)階段是做一個(gè)很好的GUI來(lái)配置和管理話單XML配置文件了。

所以往往好的設(shè)計(jì)是可以逐步疊加并且完善的,象Spring的核心IOC就是為了設(shè)計(jì)模式而生的,很好的運(yùn)用這些技術(shù)和理念,是可以讓我們的設(shè)計(jì)具有更好的生命力和持續(xù)性,同時(shí)也平衡項(xiàng)目中的一些時(shí)間點(diǎn)。

結(jié)語(yǔ):無(wú)論如何,軟件的需求分析和設(shè)計(jì),都是一種藝術(shù),是要在我們不斷的開發(fā)過(guò)程中去積累和提高的,要做到最好,所有的付出,都是值得的。


分享名稱:細(xì)說(shuō)可持續(xù)的需求分析和軟件設(shè)計(jì)
文章源于:http://www.dlmjj.cn/article/dhpdoog.html