在軟件工程領(lǐng)域,軟件的復用是一種很好地解決軟件成本和質(zhì)量的方式,而組件化軟件開(kāi)發(fā)是一種非常好的實(shí)現軟件復用的開(kāi)發(fā)方法。尊龙凯时軟件從20年前就開(kāi)始使用組件化的方式進(jìn)行軟件的設計和開(kāi)發(fā),尤其關(guān)注業(yè)務(wù)邏輯的組件化,把這種類(lèi)型的組件稱(chēng)為管理邏輯組件,通過(guò)對管理邏輯組件的組裝、復用,形成可組合、可配置的應用,可以隨需應變地滿(mǎn)足不同客戶(hù)的個(gè)性化需求,能極大提高軟件交付的效率和質(zhì)量。本文從組件化的軟件架構、組件化軟件開(kāi)發(fā)過(guò)程及最佳實(shí)踐幾個(gè)方面對組件化軟件開(kāi)發(fā)方法進(jìn)行論述。
軟件開(kāi)發(fā)是一項復雜的系統工程,軟件產(chǎn)品交付的效率和質(zhì)量,一直是軟件工程領(lǐng)域持續優(yōu)化改進(jìn)的方向,也因此誕生了很多種軟件開(kāi)發(fā)方法。其中,組件化軟件開(kāi)發(fā)方法以松耦合和高可復用性,較好地降低了軟件開(kāi)發(fā)的復雜性,可以有效地提高軟件交付的效率和質(zhì)量。組件化的軟件開(kāi)發(fā)方法不單純是一種開(kāi)發(fā)方法論,它是以組件化的軟件架構為基礎,以組件構建為核心,通過(guò)組件的組合、復用形成應用,使應用具有較高的可配置性和可擴展性,極大提高應用交付的效率,同時(shí)也提高了應用的質(zhì)量。
組件化的軟件開(kāi)發(fā)方法包含:組件化的架構框架和一套完整的組件化設計開(kāi)發(fā)過(guò)程。
一、 組件化的軟件架構
組件化的軟件架構是一種架構模式,在這種架構模式下,軟件系統由一系列的組件構成,這些組件通過(guò)組合、復用形成各種不同的應用。
1.組件的概念
組件是一組功能相關(guān)的邏輯、數據的聚合,組件是自包含和完備的,通常以一組完備的API形式開(kāi)放給使用者,使用者不需要了解組件內部的邏輯,只需要關(guān)注API的使用,組件的實(shí)現邏輯和依賴(lài)由組件自己負責。按職能可將組件分為技術(shù)組件和業(yè)務(wù)組件。業(yè)務(wù)組件是把一組相關(guān)的業(yè)務(wù)邏輯封裝為一個(gè)組件,也稱(chēng)為管理邏輯組件;按層次可以分為框架組件、平臺組件、通用管理邏輯組件、領(lǐng)域管理邏輯組件、行業(yè)管理邏輯組件、個(gè)性化管理邏輯組件等;按來(lái)源可以分為開(kāi)源組件、商業(yè)組件、自研組件等。
2.組件的特點(diǎn)
一個(gè)設計良好的組件應該具備如下五個(gè)特點(diǎn):
(1)可管理
組件是基于統一的模型進(jìn)行設計和實(shí)現,遵循統一的技術(shù)規范,由統一的元數據進(jìn)行描述,有清晰的分類(lèi)和分層,可由組件工具進(jìn)行統一管理,以規范一致的模式進(jìn)行使用。
(2)可復用
可復用是組件的一個(gè)核心特點(diǎn)。通常組件都是經(jīng)過(guò)良好的設計和封裝的,可以被多個(gè)場(chǎng)景復用。只有能夠復用,才能更好地發(fā)揮組件的價(jià)值。
(3)可配置
為了更好地復用,組件在不同的場(chǎng)景下使用時(shí)不需要去修改組件自身,通常組件需要把在不同場(chǎng)景下使用可能會(huì )變化的作為可變參數,允許使用者通過(guò)配置不同的值,來(lái)滿(mǎn)足不同使用場(chǎng)景下的需求,使組件具有更好的可復用性??膳渲玫膬热萃ǔ0ōh(huán)境信息、參數、規則、模型屬性等。
(4)可擴展
在使用組件的過(guò)程中,當通過(guò)配置也無(wú)法滿(mǎn)足場(chǎng)景化的使用需求時(shí),組件的可擴展性就變得尤其重要,如果一個(gè)組件不具備可擴展性,將極大降低組件的復用價(jià)值。組件的擴展性通??梢酝ㄟ^(guò)良好的設計來(lái)實(shí)現,如支持繼承,可局部邏輯重寫(xiě);支持事件,通過(guò)前置后置事件,允許使用定制規則和邏輯,就可以更好地滿(mǎn)足不同場(chǎng)景下的個(gè)性化使用需求,提高組件的可復用性,發(fā)揮出組件更大的價(jià)值。
(5)可融入
為了更好地復用,組件應該具備可融入性,遵循標準的技術(shù)規范,可以非侵入式地融入異構系統。組件本身具有較好的適應性,可以和不同的平臺和應用系統融為一體,比如界面風(fēng)格、接口兼容性等,以更好地發(fā)揮組件的復用價(jià)值。
3.組件框架
組件框架提供對組件全生命周期管理的規范、代碼實(shí)現框架和管理工具。
二、 組件化的軟件開(kāi)發(fā)過(guò)程
在基于組件化架構的軟件系統中,開(kāi)發(fā)過(guò)程的一個(gè)顯著(zhù)特點(diǎn)就是在各個(gè)階段都需要關(guān)注和組件相關(guān)的內容,下面分階段進(jìn)行敘述:
1.產(chǎn)品規劃
產(chǎn)品規劃階段需要基于組件化的思路,形成產(chǎn)品的組件視圖。按照企業(yè)架構的規劃方法,在應用架構和技術(shù)架構中規劃出組件視圖,業(yè)務(wù)架構則不需要。應用架構中的組件視圖是從應用功能角度來(lái)進(jìn)行規劃設計的,技術(shù)架構中的組件視圖是從實(shí)現角度進(jìn)行規劃設計的,同時(shí)要考慮第三方組件的引入和統一管理。
2.分析設計
在基于組件化軟件開(kāi)發(fā)過(guò)程的分析設計階段,會(huì )增加一個(gè)組件化的分析設計。通常在需求分析完成后實(shí)現設計之前進(jìn)行。這個(gè)階段的主要任務(wù)分為如下三個(gè):
(1)組件分析抽象
在組件化的開(kāi)發(fā)方法中,我們首先需要分析出當前需求是由哪些組件構成的,可以采取如下方法:
第一步,需要對管理和控制過(guò)程進(jìn)行分析、抽象。遵循抽象化原則,對業(yè)務(wù)需求進(jìn)行分析,找出當前管理和控制過(guò)程中的共性和個(gè)性事項(事項可以理解為用例,這個(gè)過(guò)程可以理解為用例分析)。
第二步,把所有的事項進(jìn)一步分解為最基本的動(dòng)作單元。把一個(gè)事項設計為一個(gè)組件可能粒度較粗,不符合組件的基本特征。我們需要對事項進(jìn)一步分解為更小的、高度內聚的、有較強獨立性的最基本的動(dòng)作單元。
第三步,每個(gè)單元都用一個(gè)組件來(lái)實(shí)現。把每個(gè)基本的動(dòng)作單元定義為一個(gè)組件,可以最大程度地解耦組件,使組件可以更靈活地組裝和復用。
(2)組件關(guān)系矩陣
通過(guò)組件分析抽象,可以得出當前需求是由哪些組件構成的,隨后可對這些組件之間的關(guān)系進(jìn)行分析,形成組件矩陣視圖,確定組件實(shí)現策略。是自研、使用開(kāi)源組件還是采購商業(yè)組件?如自研,是擴展現有組件還是實(shí)現新的組件?
(3)組件接口設計
在此階段,還需要設計出每個(gè)組件的公開(kāi)的API接口規約,確定組件的基本結構,如:是一個(gè)前端組件還是后端組件,或者是前后端都有的組件?組件支持的使用模式和部署模式。
3.組件開(kāi)發(fā)
在開(kāi)發(fā)階段,需要按照統一組件框架的規范進(jìn)行開(kāi)發(fā)。在前期分析設計階段的成果基礎上,進(jìn)一步基于領(lǐng)域驅動(dòng)設計的思想細化設計,更多關(guān)注組件的可配置性和可擴展性設計,并基于低代碼平臺進(jìn)行實(shí)現和交付。
4.組件使用
組件發(fā)布后可供使用。一個(gè)或多個(gè)組件可以組合形成一個(gè)復合組件,也可以組合、復用形成應用功能。組件的使用會(huì )走相應的流程控制,整個(gè)使用過(guò)程通常會(huì )被日志記錄。根據組件特點(diǎn),使用方式可能也存在差異。主要有四種使用模式:
(1)直接API調用
每個(gè)組件都會(huì )有一組公開(kāi)的API,直接調用是最簡(jiǎn)單的方式。此種形式下,使用者對組件形成直接依賴(lài),通常需要引用組件的代碼發(fā)布包,如服務(wù)端的jar包或客戶(hù)端的js文件。
(2)頁(yè)面Url調用
有些有用戶(hù)界面的組件,則可以通過(guò)頁(yè)面Url直接引用的方式來(lái)使用。比如在某功能頁(yè)面中直接打開(kāi)組件頁(yè)面進(jìn)行操作。通常這種類(lèi)型的組件頁(yè)面具有良好的可融入性,可以適應不同場(chǎng)景下的界面風(fēng)格。此模式下使用者和組件如果是間接依賴(lài),則把一個(gè)或多個(gè)類(lèi)似特性的組件統一獨立部署,直接依賴(lài)則是和使用者部署在一起。
(3)控件模式
有些組件有用戶(hù)界面,同時(shí)還以UI控件的模式呈現。則可以把這些組件配置集成到界面設計工具中,以拖拽的方式可視化地使用,可對組件的屬性、事件等進(jìn)行配置,極大簡(jiǎn)化組件的使用。通常這種模式下使用者和組件采用間接依賴(lài)的模式,把類(lèi)似特性的控件統一獨立部署,供所有使用者以一致方式使用。
(4)服務(wù)模式
一些功能比較復雜、使用形式多樣,并且具備較強的獨立性的組件,可以以服務(wù)的模式使用。組件可以獨立發(fā)布為一個(gè)微服務(wù),使用者通過(guò)RESTFUL服務(wù)的模式調用組件的相關(guān)功能。有些組件的服務(wù)端也可以和使用者部署到一起,同時(shí)把API發(fā)布為RESTFUL服務(wù),以服務(wù)的模式供使用者調用。
5.組件運維
組件運維包含組件的缺陷修復和版本管理等。組件設計時(shí)通常應該遵循基本的開(kāi)閉原則,已經(jīng)被使用的組件的接口不允許修改,以確保組件在缺陷修復和版本升級時(shí)可以保持最大的兼容性,降低運維的復雜性。
6.組件管理
在組件化架構的軟件系統中,通常會(huì )有很多的組件,這些組件是重要的資產(chǎn),需要統一進(jìn)行管理。組件管理系統可以對組件的全生命周期進(jìn)行統一管理,包括組件的設計開(kāi)發(fā)、組件發(fā)布、組件使用、組件授權、組件運維分析、組件文檔等。
三、 組件化軟件開(kāi)發(fā)最佳實(shí)踐
事物都有兩面性,組件化軟件開(kāi)發(fā)方法較好地解決了軟件復用和軟件可配置、可組合性的問(wèn)題,較好地提升了軟件研發(fā)的效率和質(zhì)量。但是,該方法也存在一些不足,如果使用不當,可能無(wú)法發(fā)揮出組件化軟件開(kāi)發(fā)方法的優(yōu)勢,尊龙凯时軟件在多年的組件化軟件開(kāi)發(fā)方法實(shí)踐中,總結出了一些最佳實(shí)踐,分述如下:
1.設計驅動(dòng)
基于組件化的軟件開(kāi)發(fā)方法,對研發(fā)團隊提出了更高的要求,需要團隊有更高的分析設計能力,所以在軟件開(kāi)發(fā)的過(guò)程中一定要更關(guān)注組件的設計,做好產(chǎn)品的整體規劃和設計,以組件為核心,遵循良好的設計原則,對組件的分層、組件的粒度、組件接口優(yōu)先進(jìn)行設計。
2.獨立團隊
在組件化的軟件架構中,一個(gè)系統由很多組件組合復用形成,這些組件之間會(huì )形成復雜的關(guān)系網(wǎng),從另一個(gè)方面增加了系統的復雜性,在開(kāi)發(fā)和使用過(guò)程中會(huì )額外增加溝通成本和運維成本。為解決這個(gè)問(wèn)題,建議每個(gè)組件都由獨立的團隊研發(fā)。組件本身就具備自包含和完備性,有一定的獨立性,可以由一個(gè)團隊獨立完成,通過(guò)良好的接口設計和文檔樣例,減少團隊的溝通,簡(jiǎn)化組件的使用,通過(guò)完善的日志和運維工具,降低組件運維難度。對于一些通用性強、復雜性高的組件,可以成立專(zhuān)門(mén)的組件研發(fā)團隊進(jìn)行研發(fā)。
3.敏捷交付
組件化的軟件開(kāi)發(fā)方法和敏捷開(kāi)發(fā)方法結合起來(lái),以迭代的方式進(jìn)行交付,可以更有效地提高整體軟件交付的效率和質(zhì)量。
4.一體化協(xié)同
組件化的軟件開(kāi)發(fā)方法同樣涉及到軟件研發(fā)的各個(gè)不同階段,涉及到人、過(guò)程、工具的相互協(xié)作。如何讓各個(gè)不同階段的成果復用,讓不同角色的人能夠共同高效地參與,過(guò)程措施如何更好地落實(shí)和管理,組件資產(chǎn)如何更有效地管理,沒(méi)有一個(gè)很好的平臺工具支持是很難做到的。尊龙凯时軟件研發(fā)的尊龙凯时九天智能一體化平臺把先進(jìn)軟件工程理論和實(shí)踐融為一體,涵蓋了從需求、設計、開(kāi)發(fā)、測試、部署、應用、監控、運維的信息系統全生命周期管理,提供的云原生、一體化協(xié)同設計、智能低代碼開(kāi)發(fā)、智能組件等能力,完整支持組件化軟件開(kāi)發(fā)方法,同時(shí)結合多種軟件開(kāi)發(fā)方法,充分發(fā)揮組件化軟件開(kāi)發(fā)方法的優(yōu)勢,全面提升企業(yè)的信息技術(shù)創(chuàng )新能力。
組件化軟件開(kāi)發(fā)方法,在提升軟件研發(fā)的效率和質(zhì)量上有著(zhù)獨特的優(yōu)勢?;诮M件化的架構設計和一套完整的組件化的設計開(kāi)發(fā)過(guò)程,結合一體化的協(xié)同研發(fā)平臺和工具,通過(guò)搭積木的方式完成基于組件的組合、復用,形成的可組合、可配置、可擴展的應用系統,可以隨需而變地滿(mǎn)足客戶(hù)越來(lái)越復雜多變的業(yè)務(wù)需求,加速企業(yè)的數字化轉型。
服務(wù)熱線(xiàn):
0756-3399888
留言板
返回頂部