
上一篇《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵限制)-上篇》我們詳細分析了在架構分析過程中我們需要注意的内容,架構過程的方法論及實踐經驗,以更好的指導我們在具體架構落地。
本篇主将具體結合HRMS系統進行架構概要分析,按照上篇的理論指導,開展具體的架構分析過程實踐,通過分析找到關鍵功能、關鍵非功能性需求(關鍵品質及限制)等。
一、開篇
上一篇《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵限制)-上篇》我們詳細分析了在架構分析過程中我們需要注意的内容,架構過程的方法論及實踐經驗,以更好的指導我們在具體架構落地。
本篇主将具體結合HRMS系統進行架構概要分析,按照上篇的理論指導,開展具體的架構分析過程實踐,通過分析找到關鍵功能、關鍵非功能性需求(關鍵品質及限制)等。
在闡述具體的架構工作方法之前,請大家先檢視以下三方面的内容:
1、HRMS系統的介紹?(涵蓋哪些功能?價值和作用是什麼?行業什麼情況?)
請閱讀《HRMS(人力資源管理系統)-從單機應用到SaaS應用-系統介紹》
2、本章分析的内容将圍繞4類企業代表的業務場景,(區分不同規模企業的關注點,規模将決定系統的設計方案)
本篇将圍繞4類企業代表來闡述不同規模企業對于HRMS的需求及應用
- A、100人以下的中小企業
- B、500人以下的大中型企業
- C、1000人以上的集團化大企業
- D、全球類型的公司體系(幾萬人)
3、架構師在設計該系統時的職責及具備的核心能力是什麼?
請閱讀《系統架構系列-開篇介紹》
一、架構準備階段主要做什麼?
架構準備階段主要是圍繞系統的全方位的需求分析來開展相關準備工作的,這裡的需求涵蓋功能性及非功能性2大類需求,非功能性需求又涵蓋品質屬性及限制兩項内容,我們在實際的分析過程中需要重點考慮業務功能、品質屬性及限制等内容,具體可采取表格方式進行梳理,借助科學的方法找出來哪些是關鍵功能、哪些是關鍵品質需求、哪些是關鍵限制。
關鍵功能、關鍵品質屬性及關鍵限制等内容對于架構設計的實際影響有哪些呢?在這裡我們梳理成表格來呈現這樣大家有一個比較直覺的感受:
架構是圍繞需求來開展的,在對需求綜合分析的過程中,我們将需求劃分為3個層次:
業務級需求:包含客戶或出資者要達到的業務目标、預期投資、工期要求,以及要符合哪些标準、對哪些遺留系統進行整合等限制條件;
使用者級需求:使用者使用系統來輔助完成哪些工作。對品質要求如何。使用者群及所處的使用環境方面有何特殊要求。
開發級需求:開發人員需要實作什麼。開發期間、維護期間有何品質考慮。開發團隊的哪些情況會反過來影響架構。
對于此三類需求弄清楚之後,就可以形成一個初步的需求清單。
一方面為了滿足上述3類需求,同時還考慮到影響架構設計3個次元方面的内容,我們采取ADMEMS的需求類型及需求層次的二維矩陣表,來進行結構化的梳理,這樣更直覺也更清晰,我這裡先将考慮的次元放在這,後面關于HRMS系統的需求分析的過程中我将按照該方法進行整理:
我們了解了需求的層次、需求的類型,知道了他們對于架構的影響,也熟悉了解了他們之間的關聯關系,那接下來對我們來說最重要的就是理清思路,如何把需求全方位的陳列出來,利用需求層次及需求分類羅列整理。HRMS系統非常的複雜,功能較多,應用的場景及類型也比較繁多,是以最好的方式就是把需求列清晰:
通過需求的結構化整理,需要從這些需求中找到關鍵功能、關鍵品質及關鍵限制,并将關鍵品質、關鍵限制轉化為衍生的設計需求:
1、确定業務功能
關鍵的業務功能包含如下四個方面:1.核心功能;2.必做功能;3.高風險功能;4.獨特功能。
如何差別這四個方面,實際上是靠經驗和感覺。它們之間實際上是有重疊部分的。
核心功能:業務層接口所反映的功能。如,HRMS系統中,前面說的8大業務内容都屬于核心功能;
必做功能:必做功能實際上是以客戶為背景的,簡單來說就是願景;
高風險功能:顧名思義,哪些功能操作可能會涉及到安全和隐私等問題;
獨特功能:實際是上訴三個功能的補集,看看還有哪些沒有覆寫到的,卻又很關鍵的功能。
架構師在設計階段要考慮到“關鍵功能”所占有的比例,沒有明确的标準,一般遵循:功能少的系統比例高一些,功能多的系統比例少一些。
2、梳理非功能性需求涵蓋品質及限制需求,将這些品質及限制背後的衍生需求梳理清晰:
關于品質要求這塊的内容涵蓋的範圍非常的廣泛,涵蓋:1.性能 2. 安全性 3.持續可用性 4.可靠性 5.魯棒性 6.易用性 7.可測試性 8.可重用性 9.可維護性 10.可擴充性 11.可移植性 12 可互操作性等。我們在做HRMS系統架構設計時考慮的品質屬性裡面也不需要把每一個名額都做上去。這些名額之間是互相影響的。其影響關系如下(+表示促進 -表示影響 空白表示無明顯作用):
當出現多個品質屬性出現互斥的時候,必須要權衡以哪個為主,那相應的另外一個品質屬性就會弱化。
在架構設計中,對非功能性需求的重視程度,也會影響架構設計的好與劣;但也要平衡過渡設計和适可而止的關系。
二、如何找出關鍵的功能性、非功能性需求、關鍵限制?
1、找到系統的關鍵功能(系統具體是做什麼的?)
我們可以采取職責鍊模式來梳理關鍵功能:
模拟不同類型的使用者如何通過系統實作業務需求的過程,借助系統化的思維模拟跟蹤各環節,梳理清晰後即可得出清晰的職責鍊,這樣便可以找出各鍊上的關鍵功能點,這些關鍵點即是關鍵功能。借助職責鍊模式來梳理核心功能,确認系統中存在必要功能、HRMS系統中的8大業務子產品,這裡再強調下:
上面8項屬于核心功能。除此之外,還應該會有流程管理、權限管理等功能,輔助及支撐系統運作的基礎功能。
2、确定關鍵品質的5大原則(找出關鍵品質屬性)
- Ø分類合适+必要擴充
針對品質分類進行細化及分解
- Ø考慮多方涉衆
使用者不僅關注功能,同時也需要品質,使用者關注的品質可能包括易用性、性能、持續可用性、魯棒性等,客戶不一定是最終使用者,比如超市銷售系統的客戶是超市老闆,但最終使用者可能是收銀員或上貨員,他們所關注的品質屬性可能不一緻。
- Ø檢查性思維
随時檢查各個品質屬性,看看每一項是否确實算不上“關鍵品質”,進而防止遺漏關鍵需求。
- Ø識别沖突+劃定優先級
确定這些品質屬性之間的沖突關系,明确以哪些品質屬性為主。
- Ø嚴格程度符合領域與規模特點
嚴格程度符合領域與規模特點
關鍵品質屬性個數根據項目、産品、平台不同而不一樣
諸如:銀行項目(注重安全性、易用性);網際網路服務項目(注重持續可用性、易用性、性能、可靠性等)
3、找出關鍵限制并将這些限制轉化為功能或品質需求
首先,按照4類限制進行羅列(盡可能全面)
其次、分析限制面向的功能、品質方面的轉化
最後、确定這些限制轉化後的功能、品質是否重要
4、•第1步:需求結構化;•第2步:分析限制影響;•第3步:确定關鍵品質;•第4步:确定關鍵功能
三、HRMS系統的關鍵功能、關鍵品質名額及限制
無論上一篇《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵限制)-上篇》介紹的,還是本篇前面介紹的内容基本上都是理論偏多一些,當然其中有一些具體的原則及操作方法,可能大家還不清楚具體的如何下手,如果真來一個項目,我該怎麼循序漸進、由淺入深呢?下面我們就以HRMS為例來簡單說明,我們來具體實際操作一下大家就會有比較清晰的認識了,希望大家能夠掌握其中的精髓。需要多實踐和總結。
3.1、梳理出需求層次及需求類型(形成表格)
在前面我們描述了4類企業類别,在梳理需求前,我這邊根據實際情況将企業劃分為4類:
我們可直覺看出上述按照企業的規模、人員數量來進行的劃分,因為我們都知道在系統架構設計時,一般來說規模及數量對于架構的影響是決定性的,是以這裡先基于這個次元來對企業分類。
3.1.1 業務級需求
前面我們羅列的HRMS系統的功能,我這裡不在重複羅列,我認為這8項是基礎業務級需求,上述的4類企業都需要提供這些功能。(具體請參考上面的HRMS系統功能圖)
同時為了區分不同規模、人員數量企業的差異性,我這邊又整理了幾方面的需求内容,模拟甲方提出:
注意事項:(前面規模較小的公司個性化的功能,後面規模較大的企業預設會有這些功能,是以很多内容我沒有重複列出)
A、100人以下的中小企業(單個企業内部使用)
- 不同的使用者看到的内容不同、可以單獨管理各自内部的事宜
- 業務審批流程,支援自定義
- 與郵件系統、OA、财務系統等內建
- LInux環境、java語言、内外網均可使用
- 需要提供app與pc端服務接入
- 資料統計及分析
B、500人以下的大中型企業(多個公司内使用)
- 支援多分公司管理模式(不同分公司看到的子產品及資料不同,互相隔離,總部能看到)
- 各分公司主要是作為業務拓展,按照總部的管理流程及制度來執行
- 功能優化及更新,由總部統一規劃及實施,各地可以提需求
- 硬體及軟體環境由總部統一管理及維護
- 采取雲端部署模式,部署前需各地提出相關需求
- 支援wap、微信等服務接入
- 大資料跟蹤(指導各部門的人力資源及管理優化)
C、1000人以上的集團化大企業(業務拆分模式的集團化公司)
- 大集團公司下設多個小集團公司,各集團公司的業務不同和垂直化分公司的管理模式不同,需要系統支援該類型的配置管理
- 資訊流轉及上報的業務線需要跨多個公司及職級,業務線不能亂。
- 各集團子公司自定義内部的管理體系,總公司制定統一工作要求并給予指導
- 總公司及各子公司均有資訊中心,各自建設内部的資訊化,最終通過總公司資訊中心進行統籌
- 科學決策及指導(人才戰略)
D、全球類型的公司體系(幾萬人)(跨國公司)
- 不同國家分公司的内部管理系統的功能子產品不同
- 系統支援各地國家當地的語言
- 總部、分公司及下屬部門間的資訊關聯及共享支援,可按層級設定彙報線及審批流
- HRMS系統接入的第三方系統略有不同(OA、ERP等),根據不同國家的公司情況,各公司統籌,對于總公司統籌的服務,各分公司按要求使用
- 企業指揮艙(内部+外部)
3.1.2 品質屬性
A、開發期品質
一般來說,甲方不會是專業的軟體公司,如果是預設甲方會内部自主提出相應的需求提出具體的設計規劃方案,這其中便會考慮系統的品質要求,對于開發過程中的品質要求一般需要在架構設計時主動考慮,提供相應的問題來咨詢或為甲方提供專業的建議及咨詢。對于甲方确認的内容可重點關注,對于甲方沒有主動提出的,需要我們根據行業經驗做好判斷來落實。
基于前面模拟提出的個性化的需求,我們來綜合梳理下開發期的品質要求:
\ | <=100人 | <=500人 | <=1000人 | <=10000人 |
可擴充性 | 暫時可不考慮 | 必備 | ||
可重用性 | 不是特别強烈(重用性方面主要是針對基礎元件方面需要考慮) | |||
可測試性 | ||||
易了解性 | ||||
可維護性 | ||||
可移植性 | 需考慮,但非必須 |
基于上面的分析,我們已基本确認了不同規模的企業的HRMS系統需要考慮的品質屬性略有不同。
B、運作期品質
針對運作期的品質考慮,主要是基于使用者使用過程中的各類場景來展開進行分析,提取出上述幾類品質屬性方面的要點:
性能 | 100人,資料量較小,暫時可不考慮 | 500人使用時性能也不需要特别的考慮,業務量及資料量都不會太大 | 一般 | 高 |
安全性 | 内網部署,非外網隔離,安全性級别(高) | 較高 | ||
易用性 | 需考慮,要求較低 | |||
持續可用性 | 要求不高,上班期間使用 | |||
可伸縮性 | ||||
互操作性 | 需考慮(但要求不高) | 需考慮,涉及到多個子公司,需要考慮差異性的互操作性 | ||
可靠性 | ||||
魯棒性 | 需考慮(要求不高) | 需考慮(一般) |
相對于開發期的品質屬性來說,運作期的品質屬性更多、更複雜、更重要,是以我們需要特别重視。
3.1.3 系統限制
基于前面列出的應用需求,我們綜合4類企業的限制,形成統一的限制清單:
限制類型 | 具體說明 |
業務環境限制 | 上線時間:3個月 預算限制:成本效益高 內建環境:公司内部OA、郵件等系統與外部社保系統等連接配接 政策及法規:受制于人力資源管理相應的辦法 |
使用環境限制 | 何階層使用者:員工、HR、高管等 年齡段和偏好:覆寫22歲~65歲 多個國家:(多語言支援) 是否存在網絡較弱或延遲情況:會存在,是以需要考慮資訊的臨時存儲及恢複 裝置移動的情況下:需要提供移動端裝置通路 |
開發環境限制 | 技術水準:團隊技術水準高,掌握java語言 城市分布:多個城市 磨合程度:一般 開發管理程度:較高 源代碼保密:高 網絡環境:良好 |
技術環境限制 | 技術平台:Java、Linux 中間件:Spring cloud、Redis等 程式設計語言的流行度:主流 認同度:高 優缺點:應用語言,性能問題需要考慮 |
上面我們系統化的梳理了系統的業務功能、品質屬性及限制内容,下面我們采取需求層次-需求類型二維矩陣來找出關鍵功能、關鍵品質屬性及關鍵限制。
3.2、确定關鍵功能、關鍵品質屬性及關鍵限制
在确定關鍵功能、品質屬性及限制之前,我想再限定和說明個前提,以便大家更好的了解,我們需要開發一個SaaS版本的系統,全方位的支援上述4類企業的需求,過程中我們作為一個企業,需要考慮成本、商業模式、企業未來的戰略及盈利等方面的内容。
是以基于這些限制及現狀,我們可以梳理得出以下的關鍵功能及品質、限制的表格。作為後續我們做概要架構的前提和基礎。
上表的具體的推演過程如下:
A、确定組織級的功能、品質、限制等内容
B、确定使用者級的功能、品質、限制等内容
C、确定開發級的品質及限制等
D、将限制衍生為品質屬性及功能、将品質屬性衍生為功能
将關鍵限制衍生為功能:
根據功能提煉出非功能性需求:
E、形成統一的二維表(形成關鍵結果)
(如上表)
F、總結
通過上述的幾個環節,我們把不同類型的限制轉化為品質屬性及功能需求,最終我們形成了最終的需求二維矩陣,這将為我們的架構指明方向,後續我們再做架構的設計及規劃的時候就能夠做到有的放矢,不會走錯方向。
四、更多資訊
關于更多的系統架構方面的知識,我已建立了交流群,相關資料會第一時間在群裡分享,歡迎大家入群互相學習交流:
微信群:(掃碼入群-名額有限)
作者:
IT行者-何戈洲出處:http://www.cnblogs.com/hegezhou_hot/
2007年大學畢業後便投入到計算機行業中,先後涉足(電信、電子商務、教育、醫療、工程建築、項目管理、房産)等行業,目前有比較豐富的技術及行業經驗,技術方面涉及(Java、Go、.NET、Python、設計模式、系統架構、PM管理流程、軟體工程、靈活開發、SOA、雲計算、大資料、區塊鍊、WF、SAAS等領域),結合業務可提供(EIP、ERP、HIS、B2B、B2C、B2B2C、CRM、OA、O2O等)業務及技術解決方案,随着時間的推移,目前已逐漸轉向管理方面,歡迎同行一起交流學習,個人平時愛好體育運動、音樂、旅遊等,向往豐富多彩的生活旅程。如有問題或建議,請多多賜教!
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,如有問題,可以通過[email protected] 聯系我,非常感謝。
其他聯系方式:
電話:13716055594
聯系人:何戈洲
微信聯系我: