項目 | 內容 |
---|---|
這個作業屬於哪個課程 | 2021春季計算機學院軟件工程(羅傑 任健) |
這個作業的要求在哪里 | 案例分析作業要求 |
我在這個課程的目標是 | 提升工程化開發能力,學習軟工知識 |
這個作業在哪個具體方面幫助我實現目標 | 促進思考具體軟件實力,幫助我今后更好的開發軟件 |
前言
力扣是領扣網絡旗下專注於程序員技術成長和企業技術人才服務的品牌。源自美國硅谷,力扣為全球程序員提供了專業的IT技術職業化提升平台,有效幫助程序員實現快速進步和長期成長。洛谷致力於為參加noip、noi、acm的選手提供清爽、快捷的編程體驗,它擁有強大的社區、在線學習功能,可以為不同層次的學生提供多樣的幫助。
第一部分 調研與評測
1.軟件的基本功能
力扣
主界面(導航)
在主界面中,可以看到各個企業最新發布的信息,還可以看到部分用戶討論的帖子,能夠滿足各類用戶所需要的關注點。
題庫(在線刷題)
該界面下每天都會推出每日一題,如果做對有額外的獎勵。用戶既可以按照默認的順序依次刷題,也可以篩選不同難度、不同專題的問題進行專項訓練。
競賽(每周競賽)
力扣與各大企業合作,會定期推出各種種類的競賽,用戶可以免費參與。競賽限時且實時更新排名,在競賽中結果優異的用戶可以獲得特定企業的面試/就職機會。
洛谷
題庫(在線刷題)
該界面下用戶能夠自由選擇自己需要的題目,在做題之前可以看到通過率、題目難度以及所屬的算法類型,適合ACM選手進行專項突破。此外,用戶還可以搜索題目,精確定位到自己想要選擇的題目。
比賽(參與比賽)
該界面下用戶可以查看當前正在進行的比賽和已經結束的比賽,能夠報名參加感興趣的比賽。
討論(參與討論)
該界面下用戶可以查看熱門討論,並自由參與自己感興趣的討論。對於已經參與的討論,能夠在消息提醒中看到新的評論和回復。
2.軟件的使用體驗
力扣提供了豐富的題庫,並且大多數題目都有用戶參與討論或者發布題解,這對於不熟悉算法的小白非常友好!
提交記錄中包含了歷次的提交,而且不會由於提交次數過多或者提交時間過於久遠而被覆蓋或刪除,用戶可以查看歷次的提交,對於我這種不喜歡在本地保存一堆代碼的人來說,能夠查看到所有的提交記錄是一件非常幸福的事情。在這一點上,力扣比藍橋杯訓練網站、C語言網要好!
洛谷也提供了豐富的題庫,但是語言主要局限於C和C++,這主要是由於面向的對象是ACM選手,對於擅長寫其他語言(如Java、python等)的學生不夠友好。但是這也無可厚非,畢竟絕大多數的算法書籍中對算法的描述都是用C/C++書寫的,對於搞算法的ACM選手而言,主要選擇的語言就是C/C++。
對於希望體驗限時上機的小伙伴來說,力扣的比賽也是一個很不錯的選擇。比賽的過程和大一的程設上機類似,會給出樣例、數據范圍和當前通過的人數,系統會自動實時計算出排名,更新各題目的通過率,可以供希望參加比賽的同學練習和模擬。
3.產品定位
力扣的用戶主要集中在30歲以下的年輕人,包括在校學生,IT求職者,IT從業者等。我國絕大部分程序員年齡都不到35歲,超過一半的程序員年齡在23-30歲之間,力扣的用戶對准了這部分群體。這部分群體可以概括為以下五類:
- 希望將來從事IT行業或即將找IT相關工作的學生:還沒有參加工作,可塑性很強,希望通過學習掌握編程技術,作為未來工作的敲門磚,同時也想更多地了解未來的職業工作。
- 從業時間小於五年的碼農:希望提升個人的代碼實力,或是對升職加薪有很強的渴望,通過主動學習、不斷練習IT技術實現自己的職業成長之路
- 興趣使然的用戶:這部分用戶的功利性不是很強,希望通過學習了解編程或是掌握一門編程技術,多學一點知識讓自己儲備更多,技多不壓身。
- 喜歡挑戰的極客:這一部分用戶通過不斷優化問題的答案追求極致,或參與各類比賽來展示自己的實力,追求更高的排名,挑戰自己,獲得自豪感。
- 有人才需求的企業:企業希望通過力扣平台不斷挖掘優秀的IT人才,進行職位投放與精准招聘。
洛谷的用戶主要是參加noip、noi、acm的選手以及對代碼感興趣的青年。這部分群體可以概括為以下三類:
1.已經具有良好的編程基礎、算法基礎,已經在國內外知名編程競賽中獲獎並以寫代碼為樂的年輕人。
2.具備一定的編程基礎,了解基礎的算法知識,渴望通過刷題來提升自己,嘗試沖擊ACM、noip等競賽金牌的學生。
3.剛入門或尚未入門,希望多接觸、了解編程,通過編程解決問題、提升代碼能力的青年。
4.BUG分析
-
Bug編號:1
-
Bug嚴重等級:☆
-
測試環境:Windows 10操作系統,搜狗高速瀏覽器
-
Bug描述:當光標停留在執行代碼和提交按鈕上時,按鈕消失,但是點擊仍然能夠成功執行該按鈕對應的javascript鏈接。
-
詳細情況:
使用搜狗高速瀏覽器,無論是否更新至最新版該Bug都必定出現。推斷原因是因為瀏覽器不支持該按鈕所對應的css渲染方案,或者使用了html5等新版本不被該瀏覽器支持。
該Bug基本不會對用戶的使用產生影響,因為用戶往往是看到了提交按鈕才會去嘗試點擊,因此哪怕鼠標移到提交按鈕后消失也不影響用戶使用。
-
Bug編號:2
-
Bug嚴重等級:☆☆☆
-
測試環境:Windows 10操作系統,Google Chrome瀏覽器(Version=89.0.4389.82)
-
Bug描述:快速切換中英文顯示多次以后查看自己的提交記錄,發現提交記錄幾乎都消失了。
-
詳細情況:
同時打開多個窗口,在各個窗口都分別快速點擊切換題目以中文/英文顯示,然后進入提交記錄,發現提交記錄被清空,但是統計數據仍然正常。該Bug發生的幾率不算太大,在快速點擊切換后約有10%的幾率會發生這種情況。為了推斷出Bug成因,仔細觀察切換中英文選項前后的界面后發現,這個按鈕並不是簡單地把題目的內容給翻譯一遍,而極有可能在切換以后把題目直接替換並鏈接到英文原版力扣的網站上(因為排行榜用戶的頭像發生了改變),而在面對同時登陸多個端口並頻繁切換時會產生沒來得及及時將中文版力扣的提交記錄嵌入更新到界面中的問題。
該問題會引起用戶的恐慌,擔心自己以前的提交記錄全部丟失,使用戶體驗下降。此外,由於用戶需要花費時間來嘗試解決該問題(例如重新登錄、刷新界面等),會浪費用戶的時間。
-
Bug編號:3
-
Bug嚴重等級:☆☆☆☆☆
-
測試環境:Windows 10操作系統,Google Chrome瀏覽器(Version=89.0.4389.82)
-
Bug描述:在線測試執行用例的結果與提交評測的結果不一致。
-
詳細情況:
如下圖所示,對於該題目,當本地調試時完全正確,然而提交上去評測卻是解答錯誤,在線調試的代碼執行結果與提交結果不一致。該Bug可以被穩定復現。推斷產生該Bug的原因是,系統在運行完上一次執行的結果以后並沒有清空執行的內存,再次運行時會遺留下上次運行所留下的“臟”內存從而導致運行結果錯誤。作為一個同時支持在線調試和在線評測的平台,力扣應當保持調試平台和在線評測平台的運行環境一致。
該問題極大影響用戶體驗,讓用戶對平台產生懷疑,會直接導致用戶對平台的投訴。
5.采訪用戶
6.量化評價
力扣
項目 | 描述 | 評分(滿分 10 分, 良好 6 分, 及格 4 分,聊勝於無 1 分, 很差 -3 分) |
---|---|---|
核心功能 | 滿足用戶刷題、提升自我、尋找工作的需要 | 10 |
細節 | 界面美觀大方 | 10 |
用戶體驗 | 用戶使用流暢 | 8(有時候界面有些卡頓) |
輔助功能 | 如競賽、題解、討論區 | 10 |
差異化功能 | 與企業合作,提供企業面試機會 | 10 |
軟件的效能 | 占用內存 | 8(占用內存偏多) |
軟件自適應性 | 聯網/斷網,不同屏幕,不同操作系統的使用 | 6(部分瀏覽器使用異常) |
成長性 | 記住用戶的選擇,適應用戶特點 | 10 |
用戶控制權 | 系統狀態有反饋,等待時間要合適。關鍵操作有確認提示,有明確的錯誤信息。 | 10 |
整體評價 | 總體使用滿意度 | 9(較為滿意) |
結論:非常推薦
洛谷
項目 | 描述 | 評分(滿分 10 分, 良好 6 分, 及格 4 分,聊勝於無 1 分, 很差 -3 分) |
---|---|---|
核心功能 | 滿足用戶刷題、提升自我、尋找工作的需要 | 10 |
細節 | 界面美觀大方 | 8(前端界面有點簡陋,配色不夠美觀) |
用戶體驗 | 用戶使用流暢 | 9(有時候評測比較慢) |
輔助功能 | 如競賽、題解、討論區 | 10 |
差異化功能 | 提供算法講解 | 10 |
軟件的效能 | 占用內存 | 8(占用內存偏多) |
軟件自適應性 | 聯網/斷網,不同屏幕,不同操作系統的使用 | 10 |
成長性 | 記住用戶的選擇,適應用戶特點 | 10 |
用戶控制權 | 系統狀態有反饋,等待時間要合適。關鍵操作有確認提示,有明確的錯誤信息。 | 8(卡頓時無提示) |
整體評價 | 總體使用滿意度 | 9(較為滿意) |
結論:非常推薦
第二部分 分析
1.使用此服務的所有功能,估計這個網站做到這個程度大約需要多少時間(團隊人數6人左右,計算機大學畢業生,並有專業UI支持)。
這兩個網站都需要大量的前期工作,例如調研用戶需求、建立題庫、與企業建立合作關系等工作,這些工作計算機大學畢業生往往沒有這個能力來做好,需要有專門的團隊來完成。
在前期鋪墊工作已經全部完成的情況下,預計開發這兩個網站需要6人的團隊18個月的時間(即108人月的時間),一個可能的分工如下:
項目 | 工作量 |
---|---|
開發所有的頁面框架,設置好所有頁面之間的跳轉與綁定關系(總共有20個頁面左右) | 3個人6個月(18人月) |
部署包括多種語言(C、C++、JAVA、Python等)在內的后端評測系統,實現自動化評測 | 3個人2個月(6人月) |
部署后端數據庫,用來存儲用戶的個人信息、提交記錄 | 3個人2個月(6人月) |
前后端對接,嘗試初步運行基本功能並調試 | 6個人1個月(6人月) |
拓展包括競賽在內的多種新功能 | 3個人6個月(18人月) |
美化前端界面,制作好看大方的界面 | 3個人4個月(12人月) |
增加安全保護機制(防止用戶hack評測機,前后端通信加密) | 6個人2個月(12人月) |
進行初步的壓力測試、並發測試 | 6個人3個月(18人月) |
用戶試用、收集反饋並調整 | 6個人2個月(12人月) |
合計 | 108人月 |
2.分析這個軟件目前的優劣(和類似軟件相比),這個產品的質量在同類產品中估計名列第幾?
力扣和牛客網對比,該產品的優點有:
1.功能更加強大。對於做題的界面,力扣支持在線調試,同時還為用戶提供了便於書寫代碼、排版代碼、包含代碼提示的圖形化界面,而牛客網書寫代碼的窗口幾乎就是一個只能粘貼文字的文本框;此外,力扣還會提供企業面試真題、提供多個討論平台,支持在線模擬面試。
2.輸入輸出接口較完備。牛客網上的每道題都需要寫完整一個程序所需要的部分,包括頭文件,主函數,功能函數。這也就意味着數據結構等部分都需要自己去設計,設計的不規范就會影響你的最終程序的質量;而力扣已經將輸入輸出接口搭建完善,用戶只需要補充力扣提供的接口即可。
缺點有:
1.有時題目描述過於簡單。對於力扣而言,題目的描述更加偏向簡約風,很簡練而直奔主題,這對於簡單題而言非常好,用戶一看就懂,一寫就過,而牛客網眾多的樣例和密密麻麻的樣例解釋反而有時候會耽誤讀者的時間;但是對於比較復雜的問題而言,力扣的簡約風會讓人摸不着頭腦,必須要翻閱評論區查看已經做過的人對這道題的理解才能搞懂。
洛谷和北航的OJ系統對比,該產品的優點有:
1.題型分類更加清晰。對於想要系統學習算法的同學而言,通過洛谷可以按照算法類別逐個遞進來學習,避免遺漏和重復,強化學習效果,提升學習效率。
2.更新更加頻繁。每天洛谷都會更新題庫,還會定期舉辦面向廣大用戶的比賽,更新頻繁,滿足用戶多樣化的需求。
3.氛圍更加濃厚。每天有數以萬計的用戶陪你做題,和你一同分享題解、參與討論,洛谷還自帶打卡機制,這些都能夠大大提升用戶的學習積極性。
缺點有:
1.界面較為卡頓。在競賽的提交高峰期,提交界面有時需要加載近5分鍾才能出結果。即使是在日常使用時,使用北航的OJ系統服務器響應速度也明顯比力扣的響應速度要快。
2.反饋不夠及時。對於使用過程中出現的問題,無論是去github上對應的issue區進行反饋,還是在留言板書寫反饋,都需要至少5天才能夠收到反饋。
在我心目中,力扣由於其定位准確、使用方便、功能強大,是同類產品中的NO.1,洛谷由於其算法齊全、用戶群體龐大,也是同類產品中的NO.1。
3.你在第一部分發現的bug,為何軟件團隊不能在發布前修復?他們是不知道,還是有意不修復?你覺得是什么原因?
對於Bug1(提交按鈕無法在搜狗瀏覽器下正常顯示的問題),我認為原因主要是測試把關不嚴,沒有嘗試在各大主流瀏覽器(包括搜狗瀏覽器)下測試。要知道,搜狗瀏覽器市場占有率為4.72%,根據第四十四次中國互聯網發展報告,我國網民人數為8.54億,那么該瀏覽器的使用人數超過4000萬。而力扣不應該遺漏如此多人使用的瀏覽器。
對於Bug2(快速切換中英文操作后提交記錄消失的問題),我認為這主要是開發人員粗心大意。對於切換中英文這種輔助功能,很可能是在該網站已經上線以后根據用戶反饋新增的功能,目的是拓展市場、適應更多人群的需要。但是,新增功能的開發人員為了圖省事沒有直接翻譯,而是想當然的把該網站跳轉到英文對應的網址,從而遺漏了用戶提交記錄可能在切換時沒有及時更新的問題。
對於Bug3(在線測試執行用例的結果與提交評測的結果不一致),我認為這主要是在總體設計評測機運行步驟時的疏忽,沒有考慮在評測之前先將環境清空成為默認環境,而是保留了上一次運行其他代碼的運行環境。
我認為,這些Bug都是因為軟件團隊事先沒有預料到這種情況而產生的,並非故意不修復。
第三部分 建議和規划
1.市場有多大?直接的用戶有多少?潛在的用戶又有多少?
早在2014年,全球的軟件開發者數量達到1850萬,其中1100萬是專業的軟件開發人員,另外750萬是開發愛好者。在七年后的今天,程序員的數量只會比當時多不會比當時少,因此可以大膽估計總的市場有超過2000萬人。直接用戶是處在職場上升期的男性,約為23-25歲,按照比例推算可得直接用戶有600萬人。潛在的用戶是即將畢業、走入職場的大學生,在中國,共有超過700所高校設立計算機專業,相關領域的大學生人數約有40萬人左右,因此國內的潛在用戶規模約為40萬。
2.目前市場上有什么樣的產品了?上述產品的定位是什么?上述產品之間呈現什么樣的關系,哪些為競品關系?以及競爭中的各方態勢如何?
力扣
目前市場上已有的同類產品主要有牛客網。上述產品的定位是打造一個為全球程序員提供IT技術職業化提升的平台,提供了完善的在線判題服務、學習工具、社區討論及模擬面試功能,全方位打磨程序員職業所需的核心技能。力扣與牛客網主要是競爭關系,目前兩個巨頭已經占據了IT技術提升平台市場份額的75%。根據網站流量統計結果,力扣的用戶量大致為牛客網的2倍,因此估計力扣在競爭中處於優勢地位,約占市場份額的50%,牛客網占據了25%。
洛谷
目前市場上已有的同類產品主要有C語言網。上述產品的定位是為沖擊ACM金牌的選手提供系統訓練的平台,提供了完善的算法介紹、用戶討論等功能。洛谷與C語言網主要是競爭關系,但是洛谷在競爭中處於絕對優勢,占據了該領域大部分的市場份額。
3.這個產品的核心用戶群是什么樣的人?典型用戶是什么樣的?學歷,年齡,專業,愛好,收入,表面需求,潛在需求都是什么?
力扣的用戶主要集中在30歲以下的年輕人,包括在校學生,IT求職者,IT從業者等。我國絕大部分程序員年齡都不到35歲,超過一半的程序員年齡在23-30歲之間,力扣的用戶對准了這部分群體。同時也由於年齡更大的程序員其學習動力及精力均有所下降,力扣可能不再符合這部分人IT職業化提升的路徑。表面需求是通過刷題來提升自己、找到更好的工作,潛在的需求是讓平台提供更多的進入企業的機會。
洛谷的用戶主要是學習算法的高中生和大學生,典型的用戶可以是這樣的:某大學計算機專業的學生小王,年齡21,全日制大學本科在讀,已經學習了兩年算法,現正努力沖擊ACM獎牌,潛在需求是通過該獎牌在未來的就業中取得優勢,以及獲得學校對於ACM獎牌學生的保研加分。
4.產品的用戶群體之間是否存在一定的關系?是否有利用其相互作用二次構成特定用戶生態的可能性?產品的子產品,以及其他相關產品之間是否存在一定的關系?是否有利用各個產品特性之間的相互關系二次構成產品生態的可能性?
用戶群體之間存在着密切的關系,他們的年齡相似、職業相似、日常愛好相似、思維方式相似,很容易能夠通過討論區把這些特定人群緊密地聯系起來,讓他們願意在該平台上分享交流,從而二次構成特定用戶生態。產品的子產品大多都是圍繞企業招聘、程序員應聘的方面來進行的,因而存在着較為密切的聯系。由於企業招聘和程序員應聘是一個需求與供給的雙贏過程,因此利用這一特性有可能構造產品生態。
5.你要在當前軟件的基礎上設計什么樣的新功能?為何要做這個功能,而不是其他功能?為什么用戶會用你的產品/功能?你的創新在哪里?可以用NABCD分析。
我要在當前軟件的基礎上加上性能剖析和代碼風格檢查的功能。如果在題庫上進行更新,增加ACM、藍橋杯等試題的題庫,嘗試去將計算機專業的學生吸引來該網站風險較大,很可能面臨吃力不討好的尷尬境地,因為這部分學生大部分已經有了自己熟悉的平台(例如洛谷、學校的OJ系統),同時由於生態不夠好(大部分用戶都是求職者而非學生),很難有良好的討論氛圍,形成促進學習的合力;而性能剖析和代碼風格檢查功能則貼近程序員日常的工作需要,能夠較好地利用原有的生態,滿足原有用戶的潛在需求。
在公司寫代碼的程序員除了要求寫出來代碼以外,還要求寫出好看的代碼、高效的代碼,因此加上性能剖析和代碼風格檢查能夠讓這些程序員在公司中具有更好的競爭力。目前沒有網站做到了這一點,因此該功能具有良好的創新性。
Need 需求
這滿足了程序員的潛在需求,能夠讓他們具備更好的競爭力。根據需求管理的需求分類,該需求屬於興奮需求,一旦完成用戶將會明顯提升用戶的滿意度。
Approach 做法
1.對於每個函數,顯示被調用的次數;
2.對於每條語句,顯示執行該語句的次數;
3.找出程序運行時占用了大部分運行時間的代碼塊;
4.對於行數過長、空格不規范等地方指出錯誤並給出改正方案;
5.對於使用到的不安全的函數、在后續版本中可能不再支持的老函數給出相應的警告;
6.對於可能引起歧義的書寫格式(如少加括號)給予警告;
Benefit 好處
提升用戶滿意度,方便用戶更好的提升自我。
Competitors 競爭
目前沒有類似平台兼具此類功能,具有競爭力。
Delivery 推廣
新功能的設計是基於現有的功能進行了拓展改進,是增量開發。另外,新功能無需用戶學習新的知識,易於上手。以上兩點,保證了不需要用戶對於新功能進行從0開始的適應,而是給了用戶更好的使用體驗。
6.如果你是項目經理,可以招聘6個人,並且有4個月的時間,你認為應該如何配置角色(開發,測試,美工等等) 才能在第16周如期發布軟件的改進版本,並取得預想中的成績。
1人美工,1人開發,3人優化性能,1人測試。對於該功能,由於需要對用戶直接展示結果,因此需要1人美工;對於代碼風格檢測和性能剖析,市面上都有成熟的插件可供使用,只需要移植到網站上即可,因此1人開發足夠;由於不能夠拖慢原有網頁的速度(否則會讓用戶體驗直線下降),因此須有3個人進行優化,盡可能地讓添加了該功能以后網頁的響應速度不減;由於是用戶意料之外的功能,因此只要在不影響原有體驗的基礎上確保功能基本正常實現即可,不必過分在意遺漏的部分(例如遺漏了部分不好的代碼風格),因此只需要1人測試即可。
7.請為你的團隊設計16個周期每周的詳細規划
周次 | 任務 |
---|---|
1-3 | 團隊進行必要的技術培訓,達成共識並明確分工、制定規范 |
4-6 | 美工人員和開發人員需要共同完成Alpha版,測試人員需要完成基礎的測試庫,優化人員給出初步優化方案 |
7 | 對Alpha版進行測試與評估,商討改進計划 |
8-10 | 優化人員根據初步方案開始優化,測試人員對代碼進行形式化審查和黑箱測試 |
11 | 優化人員提交現有優化方案並給出進一步優化方案,測試人員對現有代碼進行測試 |
12-14 | 優化人員完成進一步優化,測試人員開始測試 |
15 | 發布產品的測試版並收集用戶意見,進行進一步的修改、迭代 |
16 | 發布正式、穩定版的產品 |