天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

領(lǐng)域建模中的七種壞味道信息

  英文原文:The Seven Information Smells of Domain Modelling

  領(lǐng)域建模(Domain modelling )作為一項強大的技術(shù),常備于很多IT專業(yè)人士的工具箱之中。令人遺憾的是,在過去的幾年間,因為領(lǐng)域建模的幾個問題導(dǎo)致人們對其大失所望,尤其是在敏捷領(lǐng)域。這種方式的兩個切實存在的問題就是:它會消耗太長的時間并且很易于導(dǎo)致“分析癱瘓(analysis paralysis”),而這會導(dǎo)致停滯(“spinning wheels”)。我們?yōu)轭I(lǐng)域建模提供了一種方式,可以用來解決這些問題。

  我們會討論領(lǐng)域模型中的一些信號,這些信號會告訴你要提出更多的問題。我們將這些信號稱之為“壞味道信息(information smells)”,它們會提醒我們可能并沒有完全理解領(lǐng)域模型所關(guān)注的信息。這些壞味道可能意味著我們在領(lǐng)域模型中丟失了信息或者領(lǐng)域模型中包含了不正確的信息。關(guān)注于壞味道信息會引導(dǎo)我們發(fā)現(xiàn)需要回答的問題,這是一個很快的過程。當所有的壞味道都消失掉或者能夠確認剩余的都是可接受的,我們就會停止,這會避免分析癱瘓。

  這個過程開始于系統(tǒng)的輸出,這些輸出會為用戶交付價值。我們在本文中不會闡述如何尋找這個價值。接下來,我們基于輸出來處理模型中的這些壞味道信息。

  為了闡述本文中的信息壞味道,我們會使用一個虛擬的例子,這個例子來源于多個現(xiàn)實生活中的場景。我們的人力資源主管想了解各種開發(fā)人員的薪酬是如何支付的,這樣他們就能避免在不同群體間進行不公正的支付所導(dǎo)致的法律糾紛。

  在隨后進行的討論中,團隊試圖理解主管的要求時,產(chǎn)生了如下的草圖:

  領(lǐng)域建模最好的工具就是筆和紙或者記號筆和索引卡片或者白板筆和白板,因為它會將關(guān)注的焦點放在要交換的信息上,而不是試圖將樣例或模型變得“看上去很漂亮”。也就是說,為了防止我們凌亂的筆跡讓您暈頭轉(zhuǎn)向,我們使用圖形化工具來創(chuàng)建了模型。因此,以下就是這個樣例的更整潔版本:

  關(guān)于壞味道信息以及它們對領(lǐng)域模型所反映出來的內(nèi)容,有很重要的幾點需要我們記住:

  • 壞味道信息并不一定表明就是一個問題。
  • 壞味道信息是可能存在問題的強烈信號。
  • 壞味道信息并不像規(guī)則那樣具有強制性,規(guī)則通常都是正確的。
  • 對于壞味道信息所反映出的問題應(yīng)該按照“請給我一個……的例子”的形式來進行闡述,而不是“告訴我如何……”的形式。我們會探索領(lǐng)域細節(jié)的樣例而不是對模型進行泛化(generalisation),從而對細節(jié)進行隱藏。

  閑言少敘,以下就列出了主要的壞味道信息。如果你發(fā)現(xiàn)了其他的場景,請告訴我們以便讓更多的人知道。

  1. 某個條目在輸出中,但是不在模型之中。
  2. 某個條目在模型之中,但是不在輸出中。
  3. 兩條信息位于同一個地方。
  4. 某個實體與任何其他的實體都沒有關(guān)聯(lián)。
  5. 一對一關(guān)系。
  6. 多對多關(guān)系。
  7. 未定義的功能。

  以下更為詳細地描述了每一種壞味道信息。

  壞味道信息#1 – 某個條目在輸出中,但是不在模型之中。

  輸出中的所有條目都需要存在于領(lǐng)域模型之中。輸出只是對模型中數(shù)據(jù)的展現(xiàn)。輸出中展現(xiàn)的每條信息都應(yīng)該是模型中的一個屬性或方法。在上面的例子中,模型中缺失了部門、平均工資、角色、工資、性別以及種族。為了消除這個壞味道,將它們作為屬性或方法添加進來。如果缺失添加這些信息的合適實體,那需要添加實體。

  壞味道信息 #2 – 條目在模型中,但是不在輸出之中。

  條目位于模型之中,但是并不在輸出中是分析過程里面“推(push)”的一個例子。分析師認為它們需要這個值,而實際上卻并不是這樣。他們將值推到了模型之中。這會是比較危險的,因為你最終可能需要額外的開發(fā)來添加和維護這個值。但這是一種壞味道,它可能會被添加進來因為分析師覺得它是有用的。為了解決掉這種壞味道,我們需要問一下用戶是否需要這個信息。注意,對于分析師來說這是過程的一種分解,因為他們需要將對用戶的問題記錄在問題日志中,而不是在模型之中。這種情況可能會發(fā)生在這樣的場景之中,另外的一個項目需要一些信息,因此它就“悄然引入(slip)”到需求中來了。這些額外的需求應(yīng)該作為單獨的一項任務(wù)來處理。

  在結(jié)構(gòu)化系統(tǒng)分析與設(shè)計方法(Structured Systems Analysis and Design Method,SSADM)中,這被稱之為“信宿(Information Sink)”。

  壞味道信息 #3 – 兩條信息位于一個地方(1NF)

  將兩條信息放在一個地方會引起混亂。名字“John Smith”可以按照名和姓進行存儲。但是,這是一種壞味道。在一些場景之中,將名字存在一個地方是合適的,但在另一些場景中卻不是這樣。關(guān)鍵的問題在于,你是不是需要獨立地分析或處理這兩個信息條目。通常情況下,這被稱之為違反“第一范式(First Normal Form)”或1NF。盡管1NF確實是一項設(shè)計規(guī)則,但是它也可以指導(dǎo)我們發(fā)現(xiàn)兩條不同數(shù)據(jù)的實際指向是同一個。違反第一范式通常會通過查看真實的數(shù)據(jù)來識別,因為數(shù)據(jù)一般會借助名字來進行引用。另外一個樣例就是種族(Race),它包含了“Jedi”(一個信仰/宗教)以及“IC1”(英國警方所使用的種族分類)。

  壞味道信息#4 – 沒有關(guān)聯(lián)

  系統(tǒng)中的業(yè)務(wù)對象應(yīng)該是連接起來的。當你無法識別兩個業(yè)務(wù)對象之間的關(guān)系時,你需要詢問用戶一個重要的問題:這兩件事之間的關(guān)聯(lián)是什么?是直接關(guān)聯(lián)嗎?還是通過其他的事情?

  這是一個很嚴重的壞味道。根據(jù)經(jīng)驗判斷,這通常會導(dǎo)致信息的丟失。在企業(yè)級系統(tǒng)中,缺失的通常是組織化的結(jié)構(gòu)。

  壞味道信息 #5 – 一對一關(guān)系,它們是不是同一件事?

  當你遇到一對一關(guān)系時,通常會有兩種可能的解釋。第一,業(yè)務(wù)人員用多個術(shù)語表達相同的事情,因此兩個業(yè)務(wù)對象實際上應(yīng)該是一個對象。第二,一對一關(guān)系實際上應(yīng)該是一對多關(guān)系,但是你并不知道原因。例如,汽車和司機可能是一對一的關(guān)系,但是當你深入挖掘的時候,你會發(fā)現(xiàn)同一時間一輛汽車只能由一位司機進行駕駛。眾多的司機可以在不同的時間駕駛同一輛汽車。這里缺失的信息就是關(guān)系的暫時性特征。

  壞味道信息 #6 – 多對多(缺失信息)

  多對多關(guān)系有時候會表達合理的關(guān)系。但大多數(shù)的時候,它們表明缺失了“連接的(link)”業(yè)務(wù)對象。在關(guān)系型軟件設(shè)計中,多對多關(guān)系會用連接實體(link entity)來取代。連接實體通常也是一個業(yè)務(wù)對象,它具有關(guān)于關(guān)系本身的信息。在上面的例子中,一個雇員在不同的時間里面(暫時性的)會有多個工作頭銜或者他們會將自己的時間花費在多個角色上。再次強調(diào)一遍,這種壞味道信息會幫助我們跟蹤潛在的信息缺失。

  壞味道信息 #7 – 未定義的功能(缺失信息)

  模型中的每個方法都應(yīng)該進行定義。方法中引用的任何事情都應(yīng)該在業(yè)務(wù)模型之中。以getAge為例:

  getAge按照年份來計算年齡:

  getAge = (today() – Employee.date of birth) / 365

  出生日期和獲取當前日期的功能缺失了。它們應(yīng)該被加到業(yè)務(wù)模型之中。

  總結(jié)一下,過程是這樣的:

  1. 識別會給用戶交付價值的輸出。
  2. 如果你還沒有支持這個輸出的領(lǐng)域模型,那就創(chuàng)建一個。
  3. 檢查模型中的壞味道信息,直到它們不再存在。
  4. 停止。

  這種方式會比傳統(tǒng)的領(lǐng)域建??斓枚嗖⑶腋訉W?。你采用領(lǐng)域建模卻不會陷于“停滯(spinning your wheels)”的狀態(tài)會令你的朋友感到吃驚的。

  側(cè)邊欄(Sidebar) - 領(lǐng)域模型

  領(lǐng)域模型是組織中某個方面的簡化,可能是產(chǎn)品、運作或者是市場。領(lǐng)域模型是特定于組織及其工作方式的。盡管模型可能會使用業(yè)界標準的術(shù)語,但是模型會為特定的組織及其環(huán)境創(chuàng)建明確的詞匯表。領(lǐng)域模型通常會描述從事這項業(yè)務(wù)的人所關(guān)心的信息。鑒于大多數(shù)的業(yè)務(wù)系統(tǒng)主要關(guān)注于收集、處理以及提供數(shù)據(jù),所以可以順理成章地說,了解信息是什么并且以一種清晰的方式來對信息進行分類是很重要的。一般來講,領(lǐng)域模型包含業(yè)務(wù)實體,而業(yè)務(wù)實體會關(guān)聯(lián)數(shù)據(jù)和行為。業(yè)務(wù)實體之間的交互通常也會進行聲明。領(lǐng)域建模的示例包括實體—關(guān)系模型以及對象模型。

  側(cè)邊欄 - 所使用的例子

  我們從HR主管想要得到的報告開始。

  壞味道1—某個條目在輸出中,但是不在模型之中。

  我們有一些條目在輸出中,但是并不在模型中,所以我們將這些條目添加到模型里面。

  注意一下平均工資是基于其他數(shù)據(jù)計算出來的,所以將其稱之為getAverageSalary以提醒我們這是一個計算所得的屬性。

  壞味道 2 – 某個條目在模型中但是不在輸出之中。

  有些人沒有管住自己將Birthday添加到Employee之中了。

  我們詢問HR主管是否需要在報表中包含Birthday。他們的回答是“不需要”,但是他們想要在報表中包含“Age”。

  壞味道 3 – 兩條信息位于同一個位置

  名字由名和姓組成。我們詢問HR主管是否想要將其分開,這樣的話他們就能看到具備相同姓的所有人(姓可以用于識別文化群體)。他的回答是并不想這樣。

  壞味道 4 –某個實體與其他的所有實體都沒有關(guān)聯(lián)

  模型中所有的實體必須是連接起來的。我們詢問業(yè)務(wù)方面的專家實體要直接關(guān)聯(lián)還是要通過其他的實體進行關(guān)聯(lián)。例如,雇員是與部門直接關(guān)聯(lián),還是雇員與團隊關(guān)聯(lián),而團隊再與部門關(guān)聯(lián)。

  壞味道 5 – 一對一關(guān)聯(lián)

  一對一關(guān)聯(lián)是一種壞味道,所以針對這種關(guān)系我們要詢問相關(guān)的專家。我們并不是直接問雇員和部門之間的關(guān)系是什么,因為這只會得到通用的情況。相反,我們應(yīng)該這樣問,“你能給我某位員工屬于多個部門的例子嗎”以及“你能給我某個部門的員工多于一個人的例子嗎”。

  嚴格使用這種技術(shù)可能會問出一些看起來很愚蠢的問題,但是這些問題實際上是很有價值的。“你能給我某位雇員有多個性別或多個種族的例子嗎”。通過這些問題識別出來的人很可能正是那些遭受歧視和偏見的人。

  我們保持這些問題一直是開放的,直到找到某個樣例為止。它們會作為系統(tǒng)可能會發(fā)生變化的風(fēng)險指示器。

  壞味道 6 – 多對多關(guān)系

  多對多關(guān)系可能意味著信息的丟失。我們詢問相關(guān)的專家可能丟失的信息是什么。在本例中,雇員的時間被分配到了兩個或更多的部門之中。

  在角色、性別以及種族方面,相關(guān)的專家并沒有想出任何有額外價值的信息。所以壞味道信息將依然作為開放性的問題,它們指示了一種變化的風(fēng)險。

  一個專業(yè)的網(wǎng)站通過建立七種分類(male、female、male pre-op female、female pre-op male、male post-op female、female post-op male、inter-sex)解決了性別中的多對多關(guān)系。缺失的信息可能是某個人決定要做手術(shù)的日期,或者他們何時做的手術(shù)以及這些事情隨后怎樣影響工資增長和獎金。.

  壞味道 7 – 未定義的功能

  我們詢問相關(guān)的專家如何計算getAverageSalary以及getAge。

  這會導(dǎo)致將allocation.cost和employee.dateOfBirth的值加入到模型之中。

  現(xiàn)在已經(jīng)沒有未處理或決定延遲處理的壞味道了。我們可以就停止領(lǐng)域建模了。

  關(guān)于作者

  Chris Matts是一位敏捷實踐者,他會做所有必要的事情。因此,他擔(dān)當?shù)慕巧椖抗芾砣藛T、業(yè)務(wù)分析師、測試人員甚至開發(fā)人員(盡管在這方面他做得實在不好)。盡管在過去二十多年的經(jīng)驗中,他主要在為投資銀行構(gòu)建交易和風(fēng)險管理系統(tǒng),但是他目前擔(dān)任Microsoft Skype部門在企業(yè)級級別采用敏捷和Real Option的教練。Chris的第一個碩士學(xué)位是微電子和軟件工程(Microelectronics and Software Engineering)專業(yè)的,而第二個碩士學(xué)位是數(shù)學(xué)交易和金融專業(yè)(Mathematical Trading and Finance)的。除了Olav Maassen以及Chris Geary,他還會出版一本關(guān)于業(yè)務(wù)的圖形化小說,將其稱之為“Commitment”。“Commitment”是關(guān)于項目風(fēng)險管理的故事。

  Kent J. McDonald幫助很多的組織提高了項目的有效性。他超過15年的經(jīng)驗包括擔(dān)任業(yè)務(wù)分析師、戰(zhàn)略管理、項目管理以及多種行業(yè)的產(chǎn)品開發(fā),這涉及到金融服務(wù)、健康保險、績效營銷、人力資源服務(wù)、非盈利組織以及汽車行業(yè)。他是“Stand Back and Deliver: Accelerating Business Agility”的合作者,目前為B2T Training提供業(yè)務(wù)分析培訓(xùn)并且在BeyondRequirements.com站點上分享他在項目有效性方面的想法。

it知識庫領(lǐng)域建模中的七種壞味道信息,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 麻婆豆腐传媒视频免费 | 九九热在线视频观看这里只有精品 | 日本又黄又裸一级大黄裸片 | 国产AV亚洲一区精午夜麻豆 | 免费高清国产 | 中文亚洲大香伊蕉不卡一区 | 国产午夜精品理论片影院 | 高中生高潮抽搐喷出白浆视频 | AV无码国产精品午夜A片麻豆 | 国产精品免费观看视频播放 | 无码日韩人妻精品久久蜜桃入口 | 白银谷在线观看 | 99久久免费精品国产免费 | 娇妻归来在线观看免费完整版电影 | 91av欧美 | 久久vs国产 | 欧美美女性生活 | 姐姐不~不可以动漫在线观看 | 无码任你躁久久久久久老妇双奶 | 亚洲人成网站在线播放 | 人人爽久久久噜噜噜丁香AV | 99久久国产露脸精品国产麻豆 | 产传媒61国产免费 | A片毛片免费视频在线看 | 免费可以看污动画软件 | 色欲AV精品人妻一区二区三区 | 少男同志freedeos| 一本之道高清视频在线观看 | 青青伊人精品 | 国产一卡2卡3卡4卡孕妇网站 | 老师好爽你下面水好多视频 | 黑色丝袜在线观看 | 99视频这里只有精品国产 | 伊人国产在线观看 | 全黄h全肉细节全文 | 欧美亚洲国产专区在线 | ppypp午夜限制不卡影院私人 | 哒哒哒高清视频在线观看 | 国产精品永久在线 | 中文有码中文字幕免费视频 | 中文字幕 亚洲 有码 在线 |