HRMS(人力資源管理系統)-SaaS架構設計-概要設計實踐

来源:https://www.cnblogs.com/hegezhou_hot/archive/2018/10/08/9753733.html
-Advertisement-
Play Games

前期我們針對架構準備階段及需求分析這塊我們寫了2篇內容《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵約束)-上篇》《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵約束)-下篇》內容來展開說明。 本篇... ...


一、開篇

      前期我們針對架構準備階段及需求分析這塊我們寫了2篇內容《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵約束)-上篇》《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵約束)-下篇》內容來展開說明。

       本篇主將詳細的闡述架構設計過程中概要架構設計要點來和大家共同交流,掌握後續如何強化概要架構設計在架構設計中作用,幫助我們快速確認架構的方向及核心大框架。

      在闡述具體的概要架構工作方法之前,還請大家先參考我們限定的業務場景:

     1、HRMS系統的介紹?(涵蓋哪些功能?價值和作用是什麼?行業什麼情況?)

      請閱讀HRMS(人力資源管理系統)-從單機應用到SaaS應用-系統介紹

      2、本章分析的內容將圍繞4類企業代表的業務場景,(區分不同規模企業的關註點,規模將決定系統的設計方案)

      本篇將圍繞4類企業代表來闡述不同規模企業對於HRMS的需求及應用

  •       A、100人以下的中小企業
  •       B、500人以下的大中型企業
  •       C、1000人以上的集團化大企業
  •       D、全球類型的公司體系(幾萬人)

      3、架構師在設計該系統時的職責及具備的核心能力是什麼?

      請閱讀系統架構系列-開篇介紹

 

一、關於概要架構階段

 

1.1、概要架構的定義

       概念架構就是對系統設計的最初構想,就是把系統最關鍵的設計要素及交互機制確定下來,然後再考慮具體的技術應用,設計出實際架構。概念架構階段主抓大局,不拘小節,不過分關註設計實現的細節內容。

       概要架構階段的特點:

Ø滿足“架構=組件+交互”的基本定義(所有架構都逃離不了該模式)

Ø對高層組件的“職責”進行籠統界定,並給出高層組件的相互關係

Ø不應涉及介面細節

在講具體的概要架構設計實踐之前,請大家思考以下問題:

Ø不同系統的架構,為什麼不同?

Ø架構設計中,應何時確立架構大方向的不同?(功能、質量、約束

 

1.2、行業現狀

1.2.1、誤將“概要架構”等同於“理想架構”

架構設計是功能需求驅動的,對嗎?

架構設計是用例驅動的,對嗎?

實際上架構設計的驅動力:功能+質量+約束

1.2.2、誤把“階段”當“視圖”

概要架構階段還是概念視圖?

階段體現先後關係,視圖體現併列關係

概要架構階段根據重大需求、特殊需求、高風險需求形成穩定的高層架構設計成果

 

1.3、主要工作內容及目標

image

       概念架構是一個架構設計階段,必須在細化架構設計階段之前,針對重大需求,特色需求、高風險需求、形成文檔的高層架構設計成果。

       重大需求塑造概念架構,這裡的重大需求涵蓋功能、質量、約束等3類需求的關鍵內容。

       如果只考慮功能需求來設計概念架構,將導致概念架構淪為“理想化的架構”,這個脆弱的架構不久就會面臨“大改”的壓力,甚至直接導致項目失敗。

 

二、概要架構階段的方法及科學實踐過程是什麼?

 

image

整體可分為3個階段:

1、通過魯棒圖:初步設計的目標就是發現職責,運用“職責協作鏈”原理畫魯棒圖

2、高層分割:運用成熟的經驗及方法論,結合場景選擇合適的架構模式來確定系統的層級關係

3、質疑驅動:考慮非功能性需求來不斷驅動概要架構設計過程。

2.1、初步設計的目標就是發現職責,運用“職責協作鏈”原理畫魯棒圖

image

魯棒圖的三種對象:

•邊界對象對模擬外部環境和未來系統之間的交互進行建模。邊界對象負責接 收外部輸入、處理內部內容的解釋、並表達或傳遞相應的結果。

•控制對象對行為進行封裝,描述用例中事件流的控制行為。

•實體對象對信息進行描述,它往往來自領域概念,和領域模型中的對象有良好的對應關係。

初步設計原則

•初步設計的目標是“發現職責”,為高層切分奠定基礎

•初步設計“不是”必須的,但當“待設計系統”對架構師而言並無太多直接 經驗時,則強烈建議進行初步設計

•基於關鍵功能(而不是對所有功能)、藉助魯棒圖(而不是序列圖,序列圖太細節)進行初 步設計

image

       關於這幾個對象的區別,請參考《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵約束)-上篇》中有描述魯棒圖的基本用法說明。後續本文將直接使用不再覆述具體的用法。

       大家看完魯棒圖發現魯棒圖也有實體、控制及邊界對象,怎麼這麼類似web系統時用到的MVC模式,那麼我們這裡對比下這2個模式的異同點:

image

       通過上面的對比我們發現,魯棒圖能夠更全面的體現架構設計過程中涉及的內容,單獨的架構模式更側重其中的部分架構層次,比如邏輯架構採取MVC的模式。

2.2、高層分割(概念架構形成的具體操作方法)

1)、直接分層

image

2)、先劃分為子系統,再針對每個子系統分層

image

針對高層分割,我們可以採取分階段的模式來進行落地實踐:

1、直接劃分層次:直接把系統劃分為多個層次,梳理清晰各層次間的關聯關係

2、分為2個階段:先劃分為多個子系統,然後再梳理子系統的層次,梳理清晰沒格子系統的層次關係

針對分層模式的引入,這裡分享幾類劃分模式及方法:

1、邏輯層:邏輯層,上層使用下層觀念;不關註物理劃分,也不關註通用性

2、物理層:分佈部署在不同機器上

3、通用性分層:通用性越多,所處層次越靠下

 

2.2.1、Layer:邏輯層

Layer:邏輯層,上層使用下層觀念;不關註物理劃分,也不關註通用性。Layer是邏輯上組織代碼的形式。比如邏輯分層中表現層,服務層,業務層,領域層,他們是軟體功能來劃分的。並不指代部署在那台具體的伺服器上或者,物理位置。

image

        多層Layer架構模式

       諸如我們常見的三層架構模式,三層架構(3-tier architecture) 通常意義上的三層架構就是將整個業務應用劃分為:界面層(User Interface layer)、業務邏輯層(Business Logic Layer)、數據訪問層(Data access layer)。區分層次的目的即為了“高內聚低耦合”的思想。在軟體體系架構設計中,分層式結構是最常見,也是最重要的一種結構。微軟推薦的分層式結構一般分為三層,從下至上分別為:數據訪問層、業務邏輯層(又或稱為領域層)、表示層。

邏輯層次的架構能幫助我們解決邏輯耦合,達到靈活配置,遷移。 一個良好的邏輯分層可以帶來:

A、邏輯組織代碼/代碼邏輯的清晰度

B、易於維護(可維護性)

C、代碼更好的重用(可重用性)

D、更好的團隊開發體驗(開發過程支持)

 

2.2.2、Tier:物理層

Tier:物理層,各分層分佈部署在不同機器上,Tier這指代碼運行部署的具體位置,是一個物理層次上的劃為,Tier就是指邏輯層Layer具體的運行位置。所以邏輯層可以部署或者遷移在不同物理層,一個物理層可以部署運行多個邏輯層。

image

       Tier指代碼運行的位置,多個Layer可以運行在同一個Tier上的,不同的Layer也可以運行在不同的Tier上,當然,前提是應用程式本身支持這種架構。以J2EE和.NET平臺為例,大多數時候,不同的Layer之間都是直接通過DLL或者JAR包引用來完成調用的(例如:業務邏輯層需要引用數據訪問層),這樣部署的時候,也只能將多個Layer同時部署在一臺伺服器上。相反,不同的Layer之間如果是通過RPC的方式來實現通信調用的,部署的時候,便可以將不同的Layer部署在不同的伺服器上面,這也是很常見的解耦設計。

一個良好的物理架構可以帶來:

A、性能的提升

B、可伸縮性

C、容錯性

D、安全性

2.2.3、通用性分層

採取通用性分層模式,原則是通用性越多,所處層次越靠下

image

並且各層的調用關係是自上而下的,越往下通用性越高。

2.3、質疑驅動,不斷完善系統架構(質量屬性及約束決定了架構的演變)

基於系統中的重大功能來塑造概念架構的高層框架,過程中需要通過質量及約束等非功能性需求不斷質疑初步的概念架構,逐步讓這個概念架構完善,能夠滿足及支撐各類質量及約束的要求。具體的操作方法我們可以採取之前篇幅《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵約束)-上篇》中介紹的 “目標-場景-決策表” 來實現。

Ø通過“目標-場景-決策表”分析非功能需求:

image

通過分析關鍵的質量及約束內容,給出具體的場景及應對策略,梳理出清晰的決策表,在概念架構階段融合決策表中給出的方案,最終給出初步的概念架構設計。

 

三、基於前面分析的HRMS系統?我們如何下手開始?

結合前面講的需求梳理的要點內容,我們結合HRMS系統來進行應用實踐,逐步形成概要架構設計。

A、基於RelationRose 來畫出魯棒圖、確定系統的邊界及關鍵內容

1)、分析系統中的參與者及應用功能邊界:

image

基於上面我們能夠發現我們的核心功能點:

組織管理:主要實現對公司組織結構及其變更的管理;對職位信息及職位間工作關係的管理,根據職位的空缺進行人員配備;按照組織結構進行人力規劃、並對人事成本進行計算和管理,支持生成機構編製表、組織結構圖等

人事檔案:主要實現對員工從試用、轉正直至解聘或退休整個過程中各類信息的管理,人員信息的變動管理,提供多種形式、多種角度的查詢、統計分析手段

勞動合同:提供對員工勞動合同的簽訂、變更、解除、續訂、勞動爭議、經濟補償的管理。可根據需要設定試用期、合同到期的自動提示

招聘管理:實現從計劃招聘崗位、發佈招聘信息、採集應聘者簡歷,按崗位任職資格遴選人員,管理面試結果到通知試用的全過程管理

薪酬福利:工資管理系統適用於各類企業、行政、事業及科研單位,直接集成考勤、績效考核等數據,主要提供工資核算、工資發放、經費計提、統計分析等功能。支持工資的多次或分次發放;支持代扣稅或代繳稅;工資發放支持銀行代發,提供代發數據的輸出功能,同時也支持現金髮放,提供分錢清單功能。經費計提的內容和計提的比率可以進行設置;福利管理系統提供員工的各項福利基金的提取和管理功能。主要包括定義基金類型、設置基金提取的條件,進行基金的日常管理,並提供相應的統計分析,基金的日常管理包括基金定期提取、基金的補繳、轉入轉出等。此外,提供向相關管理機關報送相關報表的功能

行政管理:主要提供對員工出勤情況的管理,幫助企業完善作業制度。主要包括各種假期的設置、班別的設置、相關考勤項目的設置,以及調班、加班、公出、請假的管理、遲到早退的統計、出勤情況的統計等。提供與各類考勤機系統的介面,併為薪資管理系統提供相關數據。支持通知公告分發,支持會議室/車輛等資源預定並同步日曆,支持調研和投票問卷,支持活動管理的報名/簽到/統計等,支持人員的獎懲管理並與人事檔案關聯,支持活動的抽獎管理等

培訓管理:根據崗位設置及績效考核結果,確定必要的培訓需求;為員工職業生涯發展制定培訓計劃;對培訓的目標、課程內容、授課教師、時間、地點、設備、預算等進行管理,對培訓人員、培訓結果、培訓費用進行管理

績效管理:通過績效考核可以評價人員配置和培訓的效果、對員工進行獎懲激勵、為人事決策提供依據。根據不同職位在知識、技能、能力、業績等方面的要求,系統提供多種考核方法、標準,允許自由設置考核項目,對員工的特征、行為、工作結果等進行定性和定量的考評

配置管理:系統中為了增強系統的相容性及靈活性,增加了諸多系統開關及配置,為後續滿足各類場景提供支撐。其中需要有配置項的動態分類、動態增加、修改等功能

許可權管理: 通用許可權管理系統,支撐組織、員工、角色、菜單、按鈕、數據等涵蓋功能及數據全面的許可權管理功能

流程管理:提供工作流引擎服務,支持自定義表單及流程,全面支撐HRMS系統中的審批流。

人力資源規劃分析:提供全方位的統計分析功能,滿足企業人力資源管理及規劃,為後續的經營決策提供數據依據。

2)、系統邊界

基於上述核心功能點,我們可以梳理出系統的邊界,包含如下幾個方面:

image

i、管理員的系統邊界

       由於管理員的角色定位已經做了限定,所以他需要有專門的運維管理後臺,這個後臺提供的功能和業務操作人員的後臺功能和界面是完全不同的,所以需要單獨的入口,其中的功能模塊也是有區別的。所以我們可以得出管理員使用系統時的接入方式和邊界。

ii、HR的系統邊界

       HR的角色承擔業務管理的相關職責,諸如HR模塊中的審批環節,他們既有業務發起的操作又有審批環節的操作,所以相對來說HR角色的使用邊界會更廣泛,相比員工來說。我們發現HR在使用時需要有單獨的系統入口,並且分配給他們對應的業務模塊及功能。

iii、員工的系統邊界

       對於員工來說,HRMS系統中只有部分模塊式可以操作使用的,諸如考勤、報銷、績效、查看及維護個人信息等,其他的信息都是由HR填寫後用戶可以查看,所以從操作便捷來看,員工與HR在業務系統入口上可以是統一入口,通過許可權來限制訪問邊界即可。

iv、公司管理者的邊界

       公司的管理者相比員工具有相應的業務及數據管理許可權,同時會在審批流環節中承擔審核者的身份,諸多業務流程都和管理者相關,所以相比員工來說,公司管理者的業務及操作許可權較大,更多的上下級管理方面的業務內容較多,同時還可以完成員工角色操作的相關業務。

3)、數據對象

image

i、基礎數據:系統包含的元數據、服務管理、日誌、模塊、基礎配置、數據字典、系統管理等基礎數據管理

ii、業務數據:涵蓋機構、員工、HRMS系統業務及流程數據、外部第三方業務聯動數據等

iii、其他數據:涵蓋諸如文件、圖片、視頻等其他類型的數據;統計分析後的結果數據;與第三方系統交互或留存的數據等相關內容。其他諸如log日誌等數據信息。

B、劃分高層子系統

image

       我們基於上面魯棒圖分析後的核心需求,我們給出系統的巨集觀的架構輪廓,這裡僅考慮用戶角色及職責鏈、從而形成上述的高層分割。

C、質量需求影響架構的基本原理:進一步質疑

       結合前面我們已經梳理過的關鍵的質量及約束,具體請參考《HRMS(人力資源管理系統)-從單機應用到SaaS應用-架構分析(功能性、非功能性、關鍵約束)-下篇》,由於篇幅關係我就不詳細列舉,下麵基於這些質量屬性及約束我們來進一步完善概要架構:

1)、考慮關鍵質量屬性中的持續可用性及可伸縮性,得出概要架構的中間成果:

image

2)、考慮關鍵質量屬性中的互操作性,進一步優化概要架構的中間成果:

image

3)、考慮高性能,除了高負載,還需要考慮靜態化、緩存等提升系統性能:

image

       上面基本形成了一個概要架構的雛形,不過這還不夠,我們還有一項關鍵的內容沒有分析,那就是系統約束,我們需要將之前明確的關鍵約束進行分析拆解,轉化為功能或質量要求:

D、分析約束影響架構的基本原理:直接制約、轉化為功能或質量需求

image

分析上述表格的內容,結合上幾輪分析後給出的概要架構進行驗證,看看這些約束會不會影響該架構內容,然後進行優化調整:

i、業務環境及約束目前來看,上述概要架構可以支持,不會對於當前的概要架構造成影響。

ii、使用環境約束:之前擬定的PC、App端訪問模式已考慮了上述的場景,關於多語言在應用層細節設計時考慮即可。

iii、開發環境約束:概要架構還不涉及細節內容,當前的約束也不會對於架構產生較大影響

iv、技術環境約束:無影響,屬於細節層面

E、基於上面幾部走,我們得到了初步的概要架構,基本上符合功能、質量及約束的各類要求及場景,得出以下概要架構設計圖。

image

四、概要架構階段要點總結

基於前面對於概要架構設計推演過程的實踐,我們總結概要架構過程的3個核心要點內容如下:

1、首先,需要分析找到HRMS系統中的關鍵功能、質量及約束

2、其次,利用魯棒圖找到系統的用戶、關鍵功能及職責鏈,形成初步的子系統的拆分、過程中藉助高層分割形成分層結構,不斷通過質疑+解決方案的模式,應對及完善質量及約束的要求。

3、最後,通過1、2步實踐過程,最終推導出初步的概要架構,為下一步的細化架構提供基礎。

希望大家通過上面示例的展示,為大家後續在系統架構設計實踐的過程中提供一些幫助。

五、更多信息

關於更多的系統架構方面的知識,我已建立了交流群,相關資料會第一時間在群里分享,歡迎大家入群互相學習交流:

微信群:(掃碼入群-名額有限)

1538974197(1)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著flash的沒落,瀏覽器的原生能力的興起。在3D方面WebGL不管從功能還是性能方面都在逐漸加強。2D應用變為3D應用的需求也越來越強烈。 win10的畫圖板支持3D圖片,2d工具photoshop也開始逐步集成了3D工具。 下麵就基於WebGL技術探討一下現在的兩款3D框架。Threejs(h ...
  • 網上很多關於驗證小數的正則表達式,但是很多都不是百分百正確,所以我結合一些前輩的經驗,自己寫了一個。 驗證非0開頭的無限位整數和小數。整數支持無限位,小數點前支持無限位,小數點後最多保留兩位。 js代碼如下: var reg = /^(([^0][0-9]+|0)\.([0-9]{1,2})$)|^ ...
  • 近幾年,微服務架構在後端技術社區大紅大紫,它被認為是IT軟體架構的未來技術方向.我們如何借鑒後端微服務的思想來構建一個現代化前端應用? 在這裡我提供一個可以在產品中真正可以落地的前端微服務解決方案. 微服務化後端前後端對比 後端微服務化的優勢: 1. 複雜度可控: 體積小、複雜度低,每個微服務可由一 ...
  • 在Bootstrap fileinput中移除預覽文件時可以通過配置initialPreviewConfig: [ { url:'deletefile',key:fileid } ] 來同步刪除伺服器上的文件和記錄。但新上傳的文件則需要其他方式來同步刪除伺服器記錄。 在配置中遇到的一些問題,記錄一下 ...
  • 數據流轉 先上一張圖看清 Westore 怎麼解決小程式數據難以管理和維護的問題: 非純組件的話,可以直接省去 triggerEvent 的過程,直接修改 store.data 並且 update,形成縮減版單向數據流。 "Github: https://github.com/dntzhang/we ...
  • 想在黑暗中看清周圍,不可避免地要用到夜視儀。那麼如果是想在黑暗中拍照,又沒有閃光燈,如何才能排到清晰的照片?在CVPR 2018上,英特爾實驗室的Vladlen Koltun和陳啟峰帶領的團隊提出了一種在黑暗中快速成像的系統,效果非常贊。 在暗光下的圖像易受到低信噪比和低亮度的影響。短曝光的照片會出 ...
  • 去年的時候寫過dubbo+zipkin調用鏈監控,最近看到zipkin2配合brave實現起來會比我之前的實現要簡單很多,因為brave將很多交互的內容都封裝起來了,不需要自己去寫具體的實現,比如如何去構建span,如何去上報數據。 收集器抽象 由於zipkin支持http以及kafka兩種方式上報 ...
  • 這兩年微服務越來越火,使用Consul的人也越來越多,這篇文章將結合Consul的官方文檔和自己的實際經驗,談一下Consul做服務發現的方式,文中儘量不依賴具體的框架和開發語言,從原理上進行說明,希望能夠講清楚幾個問題。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...