大白話(huà)講清面向?qū)ο蟮姆治雠c設(shè)計(jì)

0 評(píng)論 3742 瀏覽 6 收藏 13 分鐘

面向?qū)ο蟮姆治雠c設(shè)計(jì),難點(diǎn)不在于分析,而在于設(shè)計(jì),因此需要正確把握兩項(xiàng)工作之間的工具和銜接方法。通過(guò)本篇文章,能讓你更加細(xì)致的了解面向?qū)ο蟮姆治雠c設(shè)計(jì),希望能對(duì)你有所幫助。

今天這篇是軟考——系統(tǒng)分析師的第二篇推文。

去年7月豆芽君寫(xiě)過(guò)這篇文章《產(chǎn)品設(shè)計(jì)之從業(yè)務(wù)到產(chǎn)品》。

這次備考過(guò)程,我對(duì)面向?qū)ο笥行┭a(bǔ)充理解,今天寫(xiě)的內(nèi)容,會(huì)部分推翻之前的內(nèi)容。但如果你能兩篇文章對(duì)照著看,相信你可以對(duì)比、了解下結(jié)構(gòu)化分析與設(shè)計(jì) VS 面向?qū)ο蠓治雠c設(shè)計(jì)。

面向?qū)ο蠹夹g(shù)出現(xiàn)在1980年左右,比豆芽君出生的還早??赡壳按蠖鄶?shù)的2B產(chǎn)品分析與設(shè)計(jì),都是行面向?qū)ο笾?,行結(jié)構(gòu)化之事。

這里面的原因豆芽君認(rèn)為主要是兩類(lèi)人造成的:

1)開(kāi)發(fā)人員

開(kāi)發(fā)語(yǔ)言的發(fā)展是先有結(jié)構(gòu)化語(yǔ)言C語(yǔ)言等,后面才出現(xiàn)了面向?qū)ο笳Z(yǔ)言JAVA等。

所以早期的開(kāi)發(fā)人員,雖然現(xiàn)在在用面向?qū)ο蟮恼Z(yǔ)言,但仍然習(xí)慣使用結(jié)構(gòu)化設(shè)計(jì)、開(kāi)發(fā)的思路。

2)系統(tǒng)分析師/產(chǎn)品經(jīng)理

說(shuō)實(shí)話(huà),很多產(chǎn)品經(jīng)理都不是計(jì)算機(jī)專(zhuān)業(yè)科班出身,他們可以做好需求調(diào)研、原型設(shè)計(jì)等表層的工作,但基本上無(wú)法去做系統(tǒng)設(shè)計(jì)這類(lèi)里層的工作。

這些工作最終還是回到了負(fù)責(zé)開(kāi)發(fā)管理的開(kāi)發(fā)經(jīng)理的身上。這群人的問(wèn)題也就是第一點(diǎn)提到的。

先拋結(jié)論:面向?qū)ο蟮姆治雠c設(shè)計(jì),難點(diǎn)不在于分析,而在于設(shè)計(jì)。

今天我們主要講這兩項(xiàng)工作用到的工具?以及如何做好這兩者的工作銜接?

相信你認(rèn)真看完今天的內(nèi)容對(duì)常見(jiàn)的UML工具不再陌生,也能更好地理解分析與設(shè)計(jì)的工作如何銜接?這可以讓系統(tǒng)分析師/產(chǎn)品經(jīng)理與開(kāi)發(fā)經(jīng)理更好地分工與協(xié)作。

一、面向?qū)ο蟮姆治?/h2>

先看下教材上的一段定義:面向?qū)ο蟮姆治鍪墙鉀Q【做什么】的問(wèn)題,找出描述問(wèn)題域和系統(tǒng)功能所需的類(lèi)和對(duì)象,定義它們的屬性和職責(zé),以及它們之間形成的關(guān)系。

面向?qū)ο蠓治霆?dú)立于具體實(shí)現(xiàn),不考慮與系統(tǒng)具體實(shí)現(xiàn)有關(guān)的因素。

看起來(lái)可能有點(diǎn)燒腦。別急,我會(huì)逐一跟你娓娓道來(lái)這段話(huà)在講啥?

PS : 說(shuō)實(shí)話(huà),如果這段話(huà)看不下書(shū)去,大學(xué)計(jì)科的書(shū)更看不下去。這樣你就大概知道我們的多數(shù)教材有多么勸退人了。

面向?qū)ο蠓治鲆彩腔谛枨笳{(diào)研進(jìn)行分析,只是它采用的方法是對(duì)現(xiàn)實(shí)世界客觀存在的對(duì)象進(jìn)行分析。

舉個(gè)例子:銀行客戶(hù)去ATM機(jī)取款,我們分析出來(lái)的對(duì)象有銀行客戶(hù)、ATM機(jī)等。這種分析方法,采用的是需求單位習(xí)慣的方式,大家更容易同頻溝通。

在需求分析階段,主要用到UML工具,包括用例圖、類(lèi)圖(概念類(lèi))、時(shí)序圖等。

我們來(lái)串講下這些工具如何搭配使用,效果更佳?

1. 用例圖

用于以分析對(duì)象為維度,去找出它希望在系統(tǒng)里能做什么?還以前面的取款為例,銀行客戶(hù)的用例活動(dòng)包括:登錄、查詢(xún)余額、取款等。這里每一個(gè)用例活動(dòng),都是用戶(hù)們耳熟能詳?shù)膬?nèi)容。

關(guān)于用例圖更詳細(xì)的內(nèi)容,可見(jiàn)前面推文。

2. 類(lèi)圖(概念類(lèi)

之前的文章,我們當(dāng)時(shí)提到產(chǎn)品經(jīng)理不要參與類(lèi)的設(shè)計(jì),這個(gè)可能誤導(dǎo)實(shí)際開(kāi)發(fā)的人。

但實(shí)際上類(lèi)還分為概念類(lèi)、設(shè)計(jì)類(lèi)、實(shí)現(xiàn)類(lèi),為了向后面的開(kāi)發(fā)環(huán)節(jié)傳遞你的分析、設(shè)計(jì)的思想,產(chǎn)品經(jīng)理們還是有必要再往前走一、兩步。

每個(gè)用例圖對(duì)應(yīng)一個(gè)概念類(lèi)圖。概念類(lèi)圖通過(guò)屬性和方法進(jìn)一步描述它的信息和行為。

以取款這個(gè)事件為例,概念類(lèi)圖示例如下:

先分析出概念類(lèi)有銀行客戶(hù)、銀行卡、ATM機(jī)、憑條等(如何分析?這里提供一個(gè)簡(jiǎn)單辦法,先從用例圖表的文字描述找出名詞和名詞短語(yǔ),再分析它是不是一個(gè)獨(dú)立的對(duì)象)。

再以銀行客戶(hù)這個(gè)概念類(lèi)為例,我們分析出它的屬性含:姓名、性別、身份證號(hào)、銀行卡號(hào)等;方法含:插入銀行卡、退出銀行卡。

看到這里,豆芽君希望你停下來(lái)思考下,概念類(lèi)圖與ER圖有什么區(qū)別?

思考一分鐘后,再往下看。

如果你看過(guò)之前的推文,豆芽君在用例圖后是講了ER圖,這是一種結(jié)構(gòu)化分析的方法。ER圖就是我們上一篇講到的數(shù)據(jù)流程圖的進(jìn)一步細(xì)化,它同樣只保留了數(shù)據(jù)有關(guān)的內(nèi)容。

而面向?qū)ο蠓治霾捎玫母拍铑?lèi)圖,它相對(duì)來(lái)說(shuō)更加具象、易理解。從上面取款的事件的概念類(lèi)圖,我們看到的信息有業(yè)務(wù)領(lǐng)域的具體對(duì)象(銀行客戶(hù)、ATM機(jī)等),對(duì)象間的關(guān)系(如銀行客戶(hù)和ATM機(jī)維修人員都是ATM機(jī)使用者),對(duì)象所含的信息和能執(zhí)行的行為。

類(lèi)圖比ER圖提供了更豐富的信息。類(lèi)圖同時(shí)呈現(xiàn)信息與行為,而ER圖只能呈現(xiàn)數(shù)據(jù)信息,無(wú)法體現(xiàn)行為。

3)時(shí)序圖

前面講到的類(lèi)圖是一種靜態(tài)模型圖,無(wú)法反映對(duì)象間的交互過(guò)程,而時(shí)序圖等動(dòng)態(tài)模型可以補(bǔ)充說(shuō)明消息傳遞的次序。

這就像我們做菜時(shí),除了需要有食材、調(diào)味料,還得知道每樣食材的蒸煮炒炸的順序,最終才可能做出一道美味的佳肴。時(shí)序圖的具體內(nèi)容,在去年7月的推文已講到,不再贅述。

注意:很多2B產(chǎn)品經(jīng)理是跳過(guò)了類(lèi)圖/ER圖的分析環(huán)節(jié),直接進(jìn)入了原型圖設(shè)計(jì)。這樣其實(shí)只解決了前端開(kāi)發(fā)的設(shè)計(jì)問(wèn)題,而對(duì)后端開(kāi)發(fā)沒(méi)有起到實(shí)質(zhì)性的指導(dǎo)作用。這也會(huì)給后端開(kāi)發(fā)人員帶來(lái)二次的分析與設(shè)計(jì)工作。

到了這里,我們講完面向?qū)ο蠓治龅闹饕ぷ髋c工具。我們一起來(lái)稍微做下總結(jié):面向?qū)ο髤^(qū)別于結(jié)構(gòu)化的特點(diǎn)是,它以業(yè)務(wù)領(lǐng)域的對(duì)象為調(diào)研對(duì)象,更容易與需求方討論需求;在分析階段依然保持以領(lǐng)域?qū)ο鬄榉治鰧?duì)象,分析對(duì)象與調(diào)研對(duì)象可對(duì)應(yīng)。

相比之下,結(jié)構(gòu)化分析一味強(qiáng)調(diào)數(shù)據(jù)與數(shù)據(jù)流,這種產(chǎn)出物一般只有IT同行可理解,難以與需求單位溝通。

二、面向?qū)ο蟮脑O(shè)計(jì)

前面講完面向?qū)ο蟮姆治?,接下?lái)我們繼續(xù)講講面向?qū)ο蟮脑O(shè)計(jì)。

同樣先看教材的一段定義:系統(tǒng)設(shè)計(jì)解決【怎么做】的問(wèn)題,又稱(chēng)為物理設(shè)計(jì)階段。

根據(jù)系統(tǒng)規(guī)格說(shuō)明書(shū)規(guī)定的功能要求,考慮實(shí)際條件,具體設(shè)計(jì)實(shí)現(xiàn)邏輯的技術(shù)方案,為下一步系統(tǒng)開(kāi)發(fā)工作做準(zhǔn)備。

從這段對(duì)系統(tǒng)設(shè)計(jì)階段的目標(biāo)描述,我們可以看出分析與設(shè)計(jì)應(yīng)該是相互緊密銜接的。接下來(lái),我們要講的重點(diǎn)也將放在兩者的銜接上。

先說(shuō)說(shuō)設(shè)計(jì)階段用到的工具主要是類(lèi)圖,以及對(duì)象持久化。

前面分析階段的概念類(lèi)圖,是設(shè)計(jì)階段的設(shè)計(jì)類(lèi)圖的工作依據(jù)。設(shè)計(jì)類(lèi)圖進(jìn)一步分為實(shí)體類(lèi)、控制類(lèi)、邊界類(lèi)。設(shè)計(jì)類(lèi)是直接可用于后面的程序設(shè)計(jì)的,我們這里不會(huì)講如何去設(shè)計(jì)這些類(lèi)。

概念類(lèi)圖是以業(yè)務(wù)領(lǐng)域的對(duì)象為維度來(lái)描述系統(tǒng)的類(lèi),而設(shè)計(jì)類(lèi)圖則進(jìn)一步拆分出實(shí)體類(lèi)、控制類(lèi)、邊界類(lèi),并定義了類(lèi)之間的6種關(guān)系(關(guān)聯(lián)、依賴(lài)、泛化、聚合、組合、實(shí)現(xiàn))。

我猜大部分非科班的人是看不下去的,這里豆芽君建議設(shè)計(jì)類(lèi)的工作,還是交給開(kāi)發(fā)經(jīng)理這類(lèi)崗位的人。

來(lái)自《李運(yùn)華的面向?qū)ο笤O(shè)計(jì)課》

圖中提到的領(lǐng)域類(lèi)就是我們教材中的概念類(lèi),軟件類(lèi)就是教材中的設(shè)計(jì)類(lèi)。

面向?qū)ο蟮脑O(shè)計(jì)主要就是完成類(lèi)的設(shè)計(jì)。如果你有興趣可以繼續(xù)看下這段視頻:

【面向?qū)ο? | 面向?qū)ο笤O(shè)計(jì)-嗶哩嗶哩】 https://b23.tv/J5EVdQ2

對(duì)象持久化:面向?qū)ο蠹热皇且詫?duì)象為維度,而不像結(jié)構(gòu)化以數(shù)據(jù)為維度。但是它們的背后都還是要用到數(shù)據(jù)庫(kù),所以面向?qū)ο缶投嗔艘粋€(gè)如何與數(shù)據(jù)庫(kù)進(jìn)行對(duì)象/關(guān)系映射的過(guò)程。

說(shuō)實(shí)話(huà),之前豆芽君也一直犯程序與數(shù)據(jù)庫(kù)是綁定在一起的錯(cuò)。后面和一些java開(kāi)發(fā)的同學(xué)一聊,才發(fā)現(xiàn)很多java開(kāi)發(fā)人員并不需要懂?dāng)?shù)據(jù)庫(kù),也可以做好后端開(kāi)發(fā)。

原來(lái)在java開(kāi)發(fā)中,可以由DBA這類(lèi)角色專(zhuān)門(mén)負(fù)責(zé)數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā),java開(kāi)發(fā)人員只需做好對(duì)象/關(guān)系的映射(ORM)就可以。

對(duì)這塊內(nèi)容有興趣,你可以繼續(xù)學(xué)習(xí)這個(gè)視頻:

【242,ORM對(duì)象關(guān)系映射了解-嗶哩嗶哩】 https://b23.tv/EYc5rmi

好了,關(guān)于面向?qū)ο笤O(shè)計(jì)的工具就講到這。最后我們?cè)傺a(bǔ)充說(shuō)下面向?qū)ο蠓治雠c設(shè)計(jì)的銜接。

豆芽君說(shuō)下個(gè)人觀點(diǎn):

  • 從分工來(lái)看,面向?qū)ο蠓治鲋饕上到y(tǒng)分析師/產(chǎn)品經(jīng)理來(lái)完成,面向?qū)ο笤O(shè)計(jì)建議還是交由開(kāi)發(fā)經(jīng)理類(lèi)的崗位來(lái)完成。
  • 從工作內(nèi)容來(lái)看,面向?qū)ο蠓治龅漠a(chǎn)出物應(yīng)該可以直接用于面向?qū)ο笤O(shè)計(jì),不應(yīng)該讓開(kāi)發(fā)經(jīng)理們?cè)龠M(jìn)行二次的分析工作。
  • 從方法差異來(lái)看,面向?qū)ο笙啾冉Y(jié)構(gòu)化方法,在調(diào)研、分析環(huán)節(jié)更容易邀請(qǐng)需求單位參與,在設(shè)計(jì)、開(kāi)發(fā)階段也更容易修改和維護(hù)代碼。

以上。希望不會(huì)寫(xiě)代碼的你,看完今天的內(nèi)容,能更好地與會(huì)寫(xiě)代碼的同學(xué)撕逼。

專(zhuān)欄作家

豆芽悟,公眾號(hào):豆芽悟,人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家。專(zhuān)注分享2B管理類(lèi)軟件產(chǎn)品知識(shí)、經(jīng)驗(yàn)、觀點(diǎn)。擁有2B管理類(lèi)軟件15年以上的規(guī)劃、設(shè)計(jì)、實(shí)施工作經(jīng)驗(yàn)。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自 Unsplash,基于CC0協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!