當前位置:首頁 > 公眾號精選 > 嵌入式軟件實戰(zhàn)派
[導讀]講點項目上的話題:系統(tǒng)需求分析跟后面要講的軟件需求分析是有區(qū)別的。前者注重系統(tǒng)層面的需求,后者關注軟件上的需求。能不能說前者包含后者。內容上是可以的,但是細節(jié)、邏輯表達上是不行的。這導致有些公司,只有需求分析這個崗位,而不分系統(tǒng)需求還是軟件需求,節(jié)省不少人力成本。但是嚴格按A-Spice流程做項目是有問題的,對下面的軟件設計和測試都有非常大的影響。

四大名著之一《水滸傳》,我想很多人都看過吧,你是不是對“西門慶和潘金蓮的橋段”反復琢磨呢?哈哈,我想你是個好學的人,施耐庵也不惜重墨描繪這一章節(jié)。

王婆的“十分光”計謀簡直讓我“虎軀一震”,瞬間感慨這婆子肯定是一個思維縝密的程序員,軟件界少了她都黯淡了不少。

你沒看過《水滸傳》也沒關系,《金x梅》也有相同的情節(jié),后者算是基于前者的二次開發(fā)了,描述更刺激,對,我是說王婆是個狠角色。

Note:《水滸傳》的第二十四回“王婆貪賄說風情 鄆哥不忿鬧茶肆”和《金x梅》的第三回“定挨光王婆受賄 設圈套浪子私挑”有相同的情節(jié)。

上車坐穩(wěn)扶好,下面用A-Spice的方式解讀下這個故事情節(jié)。

為了到了更刺激更震撼的理解體驗,我們先復習下什么是V模型。不要想歪,不是女主的深V也不是大V,是A-Spice里面的V模型,管理設計流程用的,或者你戳這文章看《A-Spice中性感的V》。

完全不懂A-Spice或者V-Cycle也沒關系,你看下圖,按V字母筆順就是產品和軟件的開發(fā)過程。

話說,《水滸傳》是講忠義豪杰的故事的,為了更能讓故事情節(jié)更加“引人入勝”,于是“甲方”提了個需求:

撮合潘金蓮和西門慶搞點不可描述的事情,以凸顯武松的嫉惡如仇,然后逼上梁山。

要求“乙方”要想辦法實現(xiàn)這個需求。

“甲方”的需求往往就這么簡陋無比,作為優(yōu)秀的“乙方”不能看著需求就直接瞎掰,還需要進一步去挖掘更多信息。這個“進一步挖掘更多信息的過程”就叫SYS.1 需求挖掘。即在整個開發(fā)過程保持各方溝通以獲得更多需求信息,保持你做的跟甲方要的是同一個。

那么這個故事,怎么挖掘需求?就好像做項目,要知道項目的背景,為什么要搞一段潘金蓮和西門慶之間的齷齪之事。

那你就要去看看《水滸傳》的上一回,就是武松打虎回來之后的事。在這里,挖掘點重要信息:

  1. 潘金蓮原是清河縣某大戶的使女,這大戶想潛規(guī)則她,但她不愿意,向主人婆報告了這事。這大戶一怒之下,將潘金蓮“送給”了武大郎,不用錢的那種(羨慕吧,不要臆想哈)。
  2. 這武大郎是誰?“矮矬窮”,原文說是“三寸丁谷樹皮”。
  3. 漂亮媳婦配矮丑丈夫容易惹麻煩,從清河縣搬到陽谷縣。
  4. 武松是武大郎弟弟,高大威猛,醉打吊睛白額虎。
  5. 潘金蓮看著武松胸肌勃勃,激發(fā)了其雌性荷爾蒙,芳心蕩漾,想方設法勾引武松。
  6. 武松是誰,堂堂正正的男子漢,怎么可以做這等勾當。于是在他出差之前,告訴他哥哥要看好這媳婦,不要被人勾走了哦。
  7. ...

以上,就是把這些信息挖掘出來,用粗略點的圖示可以大概勾畫出來人物的關系和行為動作:

這還要挖掘下系統(tǒng)硬件上的信息,大戶家和武大郎家是在清河縣住的,而王婆、武松和后面出場的西門慶在陽谷縣住的。

怎么才能客戶的需求順理成章地實現(xiàn)呢?這就需要做需求分析了,即SYS.2 系統(tǒng)需求分析過程。

其實系統(tǒng)需求分析和需求挖掘是分不開的。前者注重“分析”,有疑問需要跟甲方溝通,繼續(xù)挖掘更詳細的信息,即后者注重“挖掘”。做項目過程中一般通過QA的方式跟甲方澄清需求,甲方也會通過CR方式來增加或變更需求。

那么,系統(tǒng)需求分析,做些啥?

講點項目上的話題:系統(tǒng)需求分析跟后面要講的軟件需求分析是有區(qū)別的。前者注重系統(tǒng)層面的需求,后者關注軟件上的需求。能不能說前者包含后者。內容上是可以的,但是細節(jié)、邏輯表達上是不行的。這導致有些公司,只有需求分析這個崗位,而不分系統(tǒng)需求還是軟件需求,節(jié)省不少人力成本。但是嚴格按A-Spice流程做項目是有問題的,對下面的軟件設計和測試都有非常大的影響。

挖掘出的一堆需求,不一定全部都有用,需要提取分析,做好整理。例如清河縣的大戶一家,其實沒必要關注的了,只需做個參考,知道潘金蓮的來歷即可。后面潘金蓮勾引小叔子武松,這條需求有沒有用。有用,可以給潘增加一個屬性,即不安分、水性楊花等,容易出軌。

武松提醒其大哥,要看好嫂嫂。那么就給了建議,天還沒黑就關窗拉簾子了。

就在此時,關鍵信息來了,關窗的時候,木棍不小心掉下了,又恰好砸到了西門慶的頭上,那么西門慶抬頭一看,哎呀不得了,就這樣迷上了這小娘子。這西門慶偏偏又是個破落戶,特點好色。這個潘金蓮偏偏又是個水性楊花。

就這樣,故事快要發(fā)生了,差點啥來著。

王婆,就這樣出現(xiàn)了,是武大郎鄰居,干過媒婆角色,業(yè)務能力奇強,沒有撮合不了的。這能力強的人往往表面不表現(xiàn)在這一行的,對,她開個了茶坊,平時蒼蠅都沒幾只都無所謂,不影響她是干媒婆角色的。

說到這,系統(tǒng)需求可以整理出哪些?

  1. 潘金蓮水性楊花,不愛武大郎,卻被管住了,按奈不住要出軌;
  2. 西門是個破落戶,有點錢,特別好色,按奈不住要拈花惹草;
  3. 王婆,拉皮條能力一絕,還貪財;
  4. 武大郎家有個門窗,木棍是搞活動的,容易掉;
  5. 這個門窗是正對著外面大街的;
  6. 武大郎家和王婆的茶坊很近,算是鄰居;
  7. 西門慶被潘金蓮木棍砸到,抬頭望,被迷?。?/span>
  8. 西門慶跟王婆很熟,常在茶坊喝茶;
  9. 王婆看出西門慶的心事;
  10. 王婆給西門慶獻計。

這里,做系統(tǒng)需求分析的時候要做好分類,有靜態(tài)的有動態(tài)的,有硬件需求也有軟件需求,同時要做好需求可行性分析。

我們這里把人物和其活動歸類為軟件需求,家、茶坊以及門窗木棍等這類的當做是硬件需求。

可行性呢?就是這些需求分析下來,能不能讓王婆撮合這對J夫Y婦干出不可描述的事。其實上面的分析已經(jīng)分析出來了,一個水性楊花,一個好色,一個擅長撮合,都是鄰里街坊。你說,可行么?

接下來,要干嘛呢?大家不要猴急,接下來是SYS.3 系統(tǒng)架構設計。

要將上面系統(tǒng)需求表達到系統(tǒng)框架中,例如這個靜態(tài)的系統(tǒng)框圖:

那要不要動態(tài)行為圖呢,我覺得系統(tǒng)層面的,是要的。限于篇幅,我們再軟件架構處在講解吧。

這里還要提的,系統(tǒng)設計也有很多要求的,不僅僅是這個框圖,還有需求的部署,資源預估,例如干成這勾當要多少銀子,買點布料讓潘金蓮做針線等等。還有這系統(tǒng)方案后面怎么實施,如何測試驗證等。

系統(tǒng)方面的,就簡要講這么多吧。下面講重點,軟件過程的設計。

接下來就是SWE.1 軟件需求分析了。

也許還是很多人要問,軟件需求跟系統(tǒng)需求的區(qū)別。

軟件需求是來源于系統(tǒng)需求和系統(tǒng)架構的,但是側重點不一樣。

例如,系統(tǒng)需求的1/2/3/7/8/9/10都可以認為是軟件需求,對其加以在軟件層面的分析即可。例如這個人物的設計,可以將其設計成一個類,帶著很多屬性(水性楊花、好色等)和方法(開窗、喝茶、獻計等)。

也許你會認為,這不是軟件設計的事情嗎,其實你是在軟件設計的時候把軟件需求的事干了而已。

這里,我們要重點研究獻計這個方法,可以理解它是一個很重要的算法,在王婆這類里面實現(xiàn)。

原文說,這個計謀叫做“十分光”計。我把幾千字的計謀內容提煉以下:

  1. 一分光:西門慶送點衣料給王婆做壽衣,王婆約潘金蓮來做針線活,看她肯不肯;
  2. 二分光:做針線的地點約在王婆家,看肯不肯;
  3. 三分光:第二日看潘金蓮是否繼續(xù)愿意在王婆家做針線;
  4. 四分光:第三日,西門慶出現(xiàn),看看潘金蓮是否回避回家;
  5. 五分光:王婆夸西門慶發(fā)善心,西門慶夸潘金蓮針線活好,看能否聊下去;
  6. 六分光:王婆出去買酒,買零食,看潘金蓮是否回避回家;
  7. 七分光:王婆要潘金蓮跟西門慶獨處,聊聊天,看潘金蓮是否回避回家;
  8. 八分光:吃酒嗑瓜子,看潘金蓮愿不愿意跟西門慶坐同桌;
  9. 九分光:吃到差不多,突然沒酒了,王婆去買酒,把這兩人關一屋子,看啥反應;
  10. 十分光:西門慶甜言蜜語、得寸進尺,看啥反應……

到這一步,軟件分析其實已經(jīng)很詳細了,這個算法思路也很清晰的了。

你按奈不住要寫代碼來實現(xiàn)這段不可描述的事情了?別急,接下來是SWE.2 軟件架構設計。

軟件架構設計討論跟系統(tǒng)架構設計的討論很相似,前者是關注軟件層面的。

我們可以把每個類設計成一個組件,并把類的接口定義清楚。

上專業(yè)的設計工具EA,為了簡要說明這個不可描述的情節(jié),部分需求沒有完全體現(xiàn)在這架構里面。(這里省略了WuDalang的角色)

還可以通過類圖的Interface來強調這個“十分光”計(TenSteps_Trap)

以上是簡單的靜態(tài)圖描述,還要做動態(tài)行為描述:

注意這個動態(tài)時序的接口要和組件提供的接口一一對應,如果前后不一致就是做設計不嚴謹。

除了組件框圖、類圖和時序圖,還要有其他的設計,例如資源預估,線程任務等。(本文重點討論不可描述的情節(jié),其他工作暫且省略)

接下來,能寫代碼了嗎?看你急的,SWE.3 軟件詳細設計才是下一步(心急吃不了熱豆腐)。

一般,詳細設計用什么方法做呢?類圖和流程圖是最常用的,還有接口描述以及其注意事項。以下挑幾個來講解:

1. 類圖

2. 接口說明

接口名
bool TenSteps_Trap(int money)
說明
“十分光”計謀?!暗厕吖庾铍y,十分光時,使錢到九分九厘,也有難成就處。”這計謀“端的強如孫武子教女兵,十捉九著?!本褪潜容^費錢。
參數(shù)
money 買酒買零食的錢,還有衣料錢,酬謝金等
返回值
成功與否
注意事項
須占一個線程,非可重入函數(shù)。中途遇到拒絕退出,不可強求。

3. 流程圖

可以寫代碼了嗎?我知道你忍不住了,下面就是Coding了。

從這里看,Coding只占整個A-Spice很小一部分。所以說走A-Spice流程的項目需要比不需要A-Spice流程的多很多很多時間。

以上的,“十分光”計流程圖足夠清晰了嗎?并不是。流程圖里面的01,02...10,以及“不可描述”部分都是一個單元,應該要設計對應子函數(shù)的。

對于“十分光”計流程圖的邏輯,是不是一眼看出,通過10對“if-else”語句就搞定了?

其實這里有N種實現(xiàn)方法,最原始最直觀最遵守規(guī)則的是這樣的:

bool TenSteps_Trap(int money){ if(do_needlework()) // 01 { if(at_wangpohome(day1)) // 02 { if(at_wangpohome(day2)) // 03 { if(PanJinlian.meet_happy_with(XimenQing)) // 04 { if(PanJinlian.chat_happy_with(XimenQing)) // 05 { if(at_wangpohome(Wangpo_leave)) // 06 { if(PanJinlian.state_along_with(XimenQing)) // 07 { if(at_the_same_table(PanjinLian, XimenQing)) // 08 { if(lock_in_a_room(PanjinLian, XimenQing)) // 09 { if(XimenQing.molest(PanjinLian)) // 10 { run_xxoo_thread() } else { go_exit(); } } else { go_exit(); } } else { go_exit(); } } else { go_exit(); } } else { go_exit(); } } else { go_exit(); } } else { go_exit(); } } else { go_exit(); } } else { go_exit(); } } else { go_exit(); }} 

本文只討論A-Spice的不可描述,其他的函數(shù)實現(xiàn)方式,另找時間討論。

以上就是設計過程域的內容,即V-Cycle左邊的內容,那右邊就是測試的內容。

這計謀設計好后,王婆還真按照這套路實施一遍,還沒啥差錯,比設想的更加順暢。小說生活里面的情節(jié)是無法測試的,運行測試就是真實執(zhí)行了。

《水滸傳》還真有描述后續(xù)的執(zhí)行情況,而《金x梅》輸出更多不可描述的logs。

我說王婆是個狠人,她還藏著一個環(huán)節(jié)沒寫在A-Spice的詳細設計中。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉