質(zhì)量屬性是軟件架構(gòu)的一個(gè)重要方面,而質(zhì)量屬性中也包含了時(shí)間和情感的因素。
影響軟件架構(gòu)的因素
公元前1世紀(jì),古羅馬御用工程師、建筑師Marcus Vitruvius Pollio在其《建筑十書》中最早提出了建筑的三要素“堅(jiān)固、實(shí)用、美觀”。英文的表述為Firmitas,Utilitas, Venustas,通俗的說也就是Solid,Useful, Beautiful。軟件架構(gòu)同樣需要具備這三個(gè)要素,用計(jì)算機(jī)的術(shù)語表述就是:
Firmness: Achieve asatisfactory level of freedom from damaging failure.
Commodity: Utility toaccomplish the tasks it is purported to be for.
Delight: Pleasure in use.
馬爾庫斯·維特魯威·波利奧是古羅馬的作家、建筑師和工程師,他的創(chuàng)作時(shí)期在公元前1世紀(jì),他的生平不詳,連他的名字馬爾庫斯和姓波利奧也只是由伐溫提努斯提到過,他的生平年代主要是根據(jù)他的作品確定的。
時(shí)至今日,這三個(gè)要素仍然是成功軟件設(shè)計(jì)的重要組成部分。這三個(gè)方面談的都是架構(gòu)的質(zhì)量屬性。如何理解呢?
無論從架構(gòu)設(shè)計(jì)還是工程實(shí)施的角度,時(shí)間都是軟件設(shè)計(jì)的重要因素。架構(gòu)在時(shí)間推進(jìn)的過程中演化,其實(shí)現(xiàn)在一個(gè)個(gè)PDCA循環(huán)中迭代,軟件也在與用戶的磨合中生死。
統(tǒng)計(jì)質(zhì)量控制 (SQC) 之父,沃特·阿曼德·休哈特在1931年就指出過質(zhì)量評價(jià)的主觀性——質(zhì)量包含了人對客觀現(xiàn)實(shí)的思考,感受,感知。
"There are two common aspects of quality: One of them has to do with the consideration of the quality of a thing as an objective reality independent of the existence of man.The other has to do with what we think, feel, or sense as a result of the objective reality. In other words, there is a subjective side of quality." —W.A. Shewart, 1931
2016年9月份《美國計(jì)算機(jī)學(xué)會(huì)通訊》上刊登了Peter J. Denning博士的文章《Software Quality》,介紹了軟件質(zhì)量評價(jià)從代碼視角向用戶視角的演化,很好的詮釋了軟件質(zhì)量的Firmness,Commodity和Delight三個(gè)要素。
軟件質(zhì)量的評價(jià)已經(jīng)明顯的從上世紀(jì)70年代代碼視角的評估演化到今天用戶視角的評估。——Peter J. Denning博士
1.1 代碼視角
根據(jù)Peter J. Denning博士的觀點(diǎn),傳統(tǒng)的軟件質(zhì)量評價(jià)體系都是從代碼視角出發(fā)的。其基本原則是制定客觀的測量指標(biāo),監(jiān)測軟件的所有屬性,量化軟件本身。比如我們經(jīng)常說的UT覆蓋率,TA覆蓋率,代碼靜態(tài)檢查(Sonar)指標(biāo),在軟件設(shè)計(jì)開發(fā)過程中制定詳細(xì)的規(guī)范,ISO 9216,ISO-25010:2011等等。這些軟件質(zhì)量評價(jià)方法一般都包括correctness,reliability,integrity,usability,efficiency,maintainability,testability,interoperability,flexibility,reusability,portability,clarity,modifiability,documentation,resilience,understandability,validity,functionality,generality,economy等指標(biāo),每一個(gè)指標(biāo)都可以展開成一套程序員必須遵循的規(guī)則。沒人敢說軟件質(zhì)量是一件簡單的事情!
1.2 用戶視角
從用戶的角度看,用戶不會(huì)問“軟件是不是有很好的架構(gòu)并且通過了ISO9126標(biāo)準(zhǔn)?”,用戶關(guān)心的是“軟件是否能夠幫助完成我工作?”,“我可以依靠它嗎?”。這說明用戶體驗(yàn)的滿意度影響到用戶對軟件質(zhì)量的評價(jià)。Peter J. Denning博士在文章中提出了6個(gè)級別來評估用戶視角的軟件質(zhì)量。
Level -1: No trust. 用戶不信任該軟件。軟件可能包含很多bug、引起系統(tǒng)崩潰或帶有惡意插件。
Level 0: Cynical satisfaction.無忠誠度的滿意。用戶不信任軟件提供商的所有聲明。
Level 1: Software fulfills allbasic promises.軟件滿足所有基本承諾。ISO軟件量標(biāo)準(zhǔn)定義就在這個(gè)級別。
Level 2: Software fits environment.軟件適應(yīng)用戶環(huán)境。什么意思呢?軟件提高了用戶完成重要工作的能力。
Level 3: Software produces nonegative consequences.軟件不會(huì)有任何負(fù)面影響。這包括兩方面:第一,軟件能夠處理用戶沒能預(yù)見的錯(cuò)誤場景;第二,軟件可以滿足用戶未來的需求。
Level 4: Software delights.軟件愉悅。這個(gè)級別的產(chǎn)品遠(yuǎn)遠(yuǎn)超出用戶的期望,并產(chǎn)生新的,意想不到的,有時(shí)令人驚訝的積極作用。用戶在該軟件上收獲了極大的愉悅并愿意推廣給其他的用戶。用戶感覺軟件設(shè)計(jì)者是理解了用戶的真實(shí)世界并認(rèn)為軟件改善了他們的生活。
文獻(xiàn)《Software Quality Models and Philosophies》總結(jié)軟件質(zhì)量具備以下兩個(gè)屬性:
The meaning and definition of software quality:
Conformance to specification:Quality that is defined as a matter of products and services whose measurable characteristics satisfy a fixed specification – that is, conformance to an inbeforehand defined specification.
Meeting customer needs: Quality that is identified independent of any measurable characteristics. Thatis,quality is defined as the products or services capability to meet customer expectations – explicit or not.
從上面的定義可以很容易推導(dǎo)出軟件開發(fā)過程中常用的兩個(gè)重要質(zhì)量保證框架:DoD和CoS。正如Peter J. Denning博士所說:最高級別的軟件愉悅出現(xiàn)在客戶和開發(fā)者之間美好的互動(dòng)關(guān)系中。