劉文沛,崔 強,楊 達
(中國科學院軟件研究所 互聯網軟件技術實驗室,北京100190)
隨著軟件規模和用戶規模的不斷變大,軟件之間依賴程度的增加,軟件工程方法也在不斷的變化。現在的軟件不再是相互獨立的個體,而是相互關聯、相互依賴的整體。絕大多數的軟件依賴已經建立好的組件、服務、平臺和其它的應用開發商。這些軟件依賴一個共同的環境,包括用戶群、信息,資源以及功能。研究界把這樣的軟件系統定義為軟件生態系統(SECO)。比如iPhone軟件系統是基于平臺的軟件生態系統,iPhone上的應用基于iPhone設備和Mac操作系統。軟件生態系統給軟件工程研究帶來了新的挑戰。軟件工程參與者需要使用新的方法來應用于軟件生態系統環境下的軟件開發,管理和維護。
最近幾年,越來越多的軟件公司開放自己的功能接口,鼓勵第三方開發者在其產品上添加新的功能。第三方開發者從成功的軟件平臺上獲得商業機會和市場。在線軟件通過吸引優秀的第三方開發者提升本身的競爭力。這種軟件與其上的第三方開發者共同組成一個軟件生態系統。其中以開放平臺為代表的在線軟件生態系統在過去5年發展迅速。以facebook為代表的大型互聯網公司紛紛建立開放平臺,引進第三方app。在線開放平臺及平臺上的app組成一個在線軟件生態系統。到現在為止,這種在線生態系統擁有數以千萬計的用戶和數以萬計的應用。
在線軟件生態系統的關系圖如圖1所示。首先,獲得大量用戶是在線軟件生態系統的目標,在線軟件生態系統平臺的收入是用戶在使用軟件的過程中消費金額。大量的用戶還可以給在線軟件生態系統帶來投資和廣告收益。其次,第三方開發者主要目的是從平臺獲得用戶流量。最后,平臺向第三方軟件開發者提供API,一方面使第三方取得用戶信息,一方面提供給第三方各種方便組裝的功能部件,降低開發成本。

圖1 軟件生態系統關系
從圖中可以看出,在線軟件生態系統的質量優劣是一個軟件生態系統生存發展的關鍵,軟件質量決定了用戶是否活躍、是否能留住用戶等等。軟件質量通常定義為軟件滿足用戶需求的程度,在軟件生態系統的環境下,單個軟件已經不是關注和優化的最終目標,整個系統中所有軟件的管理和優化才是我們面臨的問題。所以軟件生態系統中用戶滿意度評測指標體系應該是層級結構,利用該層級結構的指標體系可以在不同的層面和尺度上對用戶滿意度進行研究。該研究著眼于系統層面的軟件使用行為的度量。
目前,在線軟件生態系統平臺運營商通過活躍用戶量來度量軟件生態系統的使用質量。但是活躍用戶量無法反映用戶使用質量的細節信息。
軟件生態系統的環境給軟件生態系統平臺的軟件度量提出了很多挑戰。首先,軟件生態系統不再是單一軟件,它是由許多不同開發商開發的軟件組成的,這些軟件應該被作為一個整體來度量。其次,軟件生態系統用戶的數量和應用的數量十分巨大,傳統的調查方法像見面會、問卷很難實現。而在線軟件生態系統通過用戶使用日志記錄了用戶使用應用的行為信息。應用使用日志可以被用來度量軟件生態系統的用戶活躍度。
在這篇文章中,我們提出了在線軟件生態系統使用質量中用戶活躍度的度量方法。我們的度量方法基于應用使用記錄,因為用戶使用記錄直接反映了軟件生態系統的使用質量。傳統的用戶會談和問卷的方式在大量用戶和應用的環境中難以實現。我們設計了4個度量指標反映在線軟件生態系統用戶使用的3個不同方面。我們在一個國內在線軟件生態系統的真實數據上使用了我們的度量方法。結果顯示我們的方法是有效的。
前面提到由于用戶數量的多,軟件系統更新快的因素,傳統的使用質量度量無法實行,我們提出了一種新的基于用戶使用記錄的在線軟件生態系統的使用質量的度量方法。
MySQL/PHP軟件系統來源于開發者,軟件系統中的軟件主要依賴于軟件開發者的使用習慣。也有很多軟件開放功能接口,吸引第三方開發者在軟件上添加新的功能。這些彼此依賴的軟件組織起來作為一個有機的整體面向一個公共的市場提供服務。這些軟件之間的關系基于他們的開放接口或者共享市場。
用戶的使用記錄是用戶體驗的反饋,可以反映用戶的滿意度。用戶在使用在線應用的同時,用戶ID和應用ID將被記錄下來,同時記錄的還有用戶的停留時間,用戶使用習慣等等。和問卷調查不同,用戶使用記錄是可以由在線軟件生態系統每天生成的,不需要額外的花費和時間。而且這樣的使用記錄可以是每一個用戶的,那么大量用戶的使用記錄可以更好的反映該應用的使用質量。
從單個軟件來看,吸引更多用戶和改善程序的功能是質量優化的目的。但對于整個軟件生態系統來說,新的軟件吸引更多的新用戶,同時許多老的軟件失去用戶。只是針對單一軟件進行優化是遠遠不夠的,系統整體的優化才是最終的目標。
本文研究的是從整個軟件生態系統層面上得到的用戶活躍度,所以我們把整個生態系統的所用應用當成一個整體,從以下3個方面度量:①應用吸引力:對新用戶的吸引力。吸引新用戶使用軟件生態系統上應用的能力。②用戶忠誠度:用戶對于在線應用的使用程度,即整個在線軟件生態系統的用戶粘度。③用戶流動性:用戶對不同應用之間的流動,即應用之間的用戶轉移。
應用對于新用戶的吸引力是新用戶開始使用軟件生態系統的原因,由于在線應用更新較快,整個系統的用戶群有很大一部分是由新用戶組成的。應用的質量和所在生態系統原有使用人群的大小等因素決定了對新用戶的吸引力。
我們使用新用戶進入量作為度量應用吸引力的指標。新用戶進入量被定義為:開始使用軟件生態系統不到一周的用戶量。整個系統應用集合表示為App={a1,a2,…,an}使用,單個應用ai的新用戶集合為Nai,則整個系統的新用戶集合為S,新用戶進入量為NU

用戶對在線應用的使用程度反映了用戶的忠誠度。用戶使用的應用越頻繁,花費的時間越多,就說明平臺給用戶帶來的功能性的作用和娛樂的效果就越大,用戶的忠誠度也就越高。所以我們定義用戶使用應用的時間來表示用戶忠誠度。對總數為m用戶群,每一個用戶Ui,其使用的應用的時長為Ti,則用戶忠誠度UL可以用用戶在線總時間(TT)和用戶在線平均時間(AT)來表示

在線軟件生態系統中,app之間的用戶轉移現象有兩個原因:①隨著新應用的上線,相當于軟件生態系統增加了新的功能,用戶出于好奇心會試用新應用;②能夠滿足用戶需要的應用相比不能滿足用戶需要的應用,用戶更喜歡使用前者,而放棄后者。我們將從以上兩個方面來度量app之間用戶的流動,驗證這種流動性是否對軟件生態系統有好處。應用之間的用戶轉移和多個應用共享用戶這兩個方面不是相互獨立的。例如用戶從最初使用一個應用到后來使用多個應用,這種情況就會同時產生用戶轉移和應用用戶重疊。
隨著平臺上應用的不斷上線推出,平臺用戶的選擇也越來越多。用戶在接觸到新的,感興趣的應用時,選擇使用新應用,慢慢拋棄老應用這個過程就是用戶的流動。在平臺上,這中用戶流動。的情況隨處可見,有時是用戶的自主發現新應用,有時是平臺或者第三方公司使用的營銷和推廣手段。我們設定時間上相鄰的兩個采樣點:T1、T2,在[T1,T2]這段時間由其它應用流入每個應用Ai的用戶量為Di,這段時間平臺的流動性指標可以定義為

我們與中國的一個社會網絡服務平臺建立了合作關系。我們使用該公司的用戶行為分析數據進行研究。這個社交網站平臺具有一千萬注冊用戶,來自第三方軟件開發供應商的在線應用超過1000個。
我們從平臺的用戶訪問日志中提取關于app的使用記錄。即每天用戶使用app的情況,如果一個用戶在使用過某個app,那么就產生一條格式為<userid,appid,time>的記錄。其中userid表示唯一標志的用戶ID,appid是應用的ID,而time則是當天用戶使用該app的時間。我們使用了近3個月的77609585條記錄作為我們的研究數據。使用這些數據我們對開放平臺的app進行了質量評估和監控。
我們使用I-MR控制圖對數據進行監測。通過統計上均值μ和標準差σ的狀況來衡量指標是否在穩定狀態,同時選擇3σ來確定一個正常波動的上下限范圍(根據正態分布的結論,指標的特征值落在μ±3σ之間的概率是99.73%)。
我們取出該公司應用平臺的74天的數據作為我們的研究數據,觀察這段時間應用平臺的變化。出于對公司真實數據的保密考慮,后面圖中的指標數值全部是經過歸一化處理之后的值。我們的分析步驟是:①首先對于公司的現有指標——活躍用戶數(daily active user,DAU)進行分析,得到穩定值和變動的情況,區分是數據正常波動還是異常變化。②對于產生異常變化的區間,從用戶活躍的方面分析其變化規律,得出3個指標。③通過詢問公司人員驗證得出信息的可靠性,并找出變化的原因以便改進生態系統的質量。
我們對DAU做單值—移動極差控制圖如圖2所示。

圖2 活躍用戶數(DAU)控制
從圖中可以看出,首先單值控制圖中[59,68]區間超出平均水平3σ范圍,發生了異常變化——DAU出現了一個波峰,很快DAU又回到正常的水平。在移動極差控制圖上也可以看出[59,68]區間的MR值變化較大。其次,單值控制圖中18,19出現了兩個異常點,從MR值中看出是因為16,17兩天的異常增長。除此之外,[48,52]一系列異常點有可能是因為DAU在[59,68]的異常值導致(X偏大,而出現的假異常信號。
因為軟件平臺每天都有新的app上線,所以有可能是新上線的app使DAU發生了這種變化。圖3給出觀察的時間段內軟件生態系統app數量。

圖3 軟件平臺app數量趨勢
線上app數量持續增長,但僅從數量上也不能看出DAU波動的原因。下面我們使用前面定義的指標來度量這段時間內生態系統的變化。
從應用吸引力的質量控制圖4中看出,[58,68]這個區間內超出了3σ正常波動范圍,說明這段時間生態系統吸引了大量系統外部的用戶來使用線上app,軟件生態系統的新用戶量顯著增加。用戶回落表明這階段上線的app對用戶的持續吸引力不足,解釋了DAU回落的原因。我們從移動極差圖看出17天處也有一個異常的變動,之后的幾天單值圖中的數據也一直在平均值以上,說明17天開始幾天內,新用戶的數據較平時有一個不小的提高。

圖4 應用吸引力控制
從用戶忠誠度上看,用戶在線總時間(TT)先增后降,用戶的平均時間(AT)在[59,69]區間內卻是下降的趨勢,說明新的app所吸引的用戶的忠誠度并不如生態系統的原有用戶,這些用戶的使用app時間很短。另外可以看到18天處AT和TT都有一個異常點,說明這一天用戶使用時間有明顯提高,可能是某個app的新上線,讓多數用戶使用了新的功能,所以導致了使用時間的增長,用戶忠誠度控制圖如圖5所示。

圖5 用戶忠誠度控制
從用戶流動性來看,UD在[51,71]區間變化很大,超出平均水平3σ以上的異常點較多,說明這段時間用戶的流動性有明顯增大。在這段時間內UD的波動較大,說明在除了新app的引入,還有生態系統內部因素使得用戶流動性變大,用戶流動性控制如圖6所示。

圖6 用戶流動性控制
因為我們得知生態系統所在的社交網站人數并沒有發生突變,所以引發這種改變最有可能的原因就是新的app的引入。新應用的上線相當于給整個系統添加了新的功能,使整個系統更大程度上滿足用戶的需要。進一步分析發現[59,68]這段時間NU的變化和DAU變化基本吻合,DAU隨著DU的下降而下降,說明引入的新用戶又很快流失了,并沒有持續的使用app,吸引來的用戶保留下來的數量很少。又可以推測出引發這個變化的app跟生態系統原有的app不相同,無法讓用戶可以長時間使用。所以盡管在[59,68]這段時間內很流行,但持續的時間卻很短,是一個生命周期較短的應用。
我們把這些結論報告給公司的產品經理,通過產品經理我們了解到在57天平臺上線了一款可以和社交網站好友互動的給好友排名app,由于之前沒有這種類型的app,對于社交網站用戶很有吸引力。NU的下降是由于該app的吸引系統外用戶的量已經飽和,使用過該app的用戶越來越多,新用戶越來越少。而該app的功能相對于平臺其它應用來說比較簡單,不是一個游戲類應用,所以用戶在線使用時間不會很長。
關于UD在51天左右的異常變化,我們通過公司員工證實,在51天左右,有兩個用戶量較大的app分別在自己的應用互相推薦,很多用戶同時使用了這兩款app,使得這幾天的用戶流動性大幅增加。
這個案例研究說明我們的方法可以幫助公司監測軟件平臺的運營情況,并能找到產生數據異常的原因。
軟件生態系統是一個相對較新的研究問題。軟件生態系統的發展趨勢給軟件工程帶來許多新的挑戰,包括軟件體系架構、軟件提供商策略和軟件質量度量。越來越多的研究者關注軟件生態系統。Jansen提出軟件生態系統上關于技術和商業方面研究問題的研究計劃和關鍵問題。從軟件生態系統層、軟件供應網絡層軟件提供商3個層次提出軟件生態系統的10個研究挑戰[1]。JanBosch提出軟件生態系統的趨勢,并提出適應軟件生態系統的關鍵概念和影響。他指出一旦公司決定引入第三方開發者,公司就由組織內部的軟件開發轉為軟件生態系統[2]。JanBosch還提出軟件生態系統的架構挑戰,包括接口穩定性、整合層次、安全性、可靠性和平臺演化[3]。Mircela等開發了一個工具用于生態系統軟件項目的依賴恢復[4]。
ISO/IEC9126定義軟件質量為軟件滿足用戶顯式和隱式需求的所有特征。軟件質量被建模為內部質量(軟件代碼的靜態特征)、外部質量(軟件代碼執行時的動態特征)和軟件使用質量(軟件滿足用戶需求的程度)[5]。
用戶滿意程度和市場期望被認為是軟件質量的前提,現有的使用度量方法多是問卷調查的形式,記錄少量用戶的滿意度,使用效果等[6]。Bevan提出軟件使用質量度量的框架[5]。軟件質量的度量是為了進行質量改進,王青等使用統計的方法來進行軟件過程控制和過程質量改進[7]
在線應用的用戶使用記錄比如用戶的使用時間、用戶的關系、用戶的行為模式,已經在一些度量研究中被廣泛使用。度量的結果也對在線應用的改進提供了參考和指導[8-9]。我們在之前的研究也把用戶的使用記錄作為訓練數據對活躍用戶量進行了預測[10]。
這篇文章指出了用戶活躍傳統度量的缺陷,提出了一種新的用戶使用日志的度量方法,來衡量在線軟件生態系統整體層面的用戶活躍。該研究分析了在線軟件生態系統的用戶相關的三方面特征并設計指標來衡量這些特征。并使用所提出的測量方法和指標來度量一個真實的在線軟件生態系統。證明了我們的方法和標準可以為公司的提供合理的建議來改進在線生態系統的使用質量。在未來的工作中,我們將進一步調查更有效的使用質量指標,并研究軟件生態系統質量改進的問題。
[1]Jansen S,Finkelstein A,Brinkkemper S.A sense of community:A research agenda for software ecosystems[C]//31st International Conference on Software Engineering Companion.IEEE Computer Society,2009:187-190.
[2]Bosch J.From software product lines to software ecosystems[C]//San Francisco,California:Procee-dings of the 13th International Software Product Line Conference.Carnegie Mellon University,2009:111-119.
[3]Bosch J.Architecture challenges for software ecosystems[C]//Proceedings of the Fourth European Conference on Software Architecture:Companion.Copenhagen,Denmark:ACM,2010:93-95.
[4]Lungu M,Robbes R,Lanza M.Recovering inter-project dependencies in software ecosystems[C]//Proceedings of the IEEE/ACM International Conference on Automated Software Engineering.Antwerp,Belgium:ACM,2010:309-312.
[5]Bevan N.Extending quality in use to provide a framework for usability mea-surement[C]//Proceedings of the 1st International Conference on Human Centered Design:Held as Part of HCI International.San Diego,CA:Springer-Verlag,2009:13-22.
[6]Seffah A.Usability measurement and metrics:A consolidated model[J].Software Quality Journal,2006,14(2):159-178.
[7]Wang Q.BSR:A statistic-based approach for establishing and refining software process performance baseline[C]//Proceedings of the 28th International Conference on Software Engineering.Shanghai,China:ACM,2006:585-594.
[8]Nazir A,Raza S,Chuah C-N.Unveiling facebook:A measurement study of social network based applications[C]//Proceedings of the 8th ACM SIGCOMM Conference on Internet Measurement.Vouliagmeni,Greece:ACM,2008:43-56.
[9]Nazir A.Network level footprints of facebook applications[C]//Proceedings of the 9th ACM SIGCOMM Conference on Internet Measurement Conference.Chicago,Illinois,USA:ACM,2009:63-75.
[10]Yang D.Modeling the number of active software users[C]//Proceedings of the International Symposium on Empirical Software Engineering and Measurement.IEEE Computer Society,2011:376-379.