結合“xPlus”探討軟體架構的創新與變革
【關鍵詞】 軟體開發 軟體架構 解耦 應用設計
引言 當今社會對軟體需求在相當長的時間裡將保持旺盛,而軟體開發週期長、個性化難、順應需求變更不變,如何可以才能將軟體開發定製變得簡單方便快捷呢?
1. 軟體開發設計現狀
目前軟體的開發設計都是定向開發,即根據專案需求將相關的資料關係、業務邏輯、功能模組及介面外掛等揉合在一起並與人機互動整體開發(若涉及人機互動),如下圖所示,當所涉及的任意部分需要改變或調整(即使是一丁點邏輯或引數調整)都需要去修改程式(大部分需重新編譯釋出)。
因此軟體開發人員做的最頻繁且繁瑣的事情就是改介面、調邏輯(業務)、理資料關係等,而這些不僅僅存在於軟體開發中,更多的是軟體維護中,因為大量的業務更改在業務實際應用中,同時bug的發現也發生於此,因此軟體後期就靠補丁、新版本來維繫。一方面軟體應用的開發難度大、週期長,後期維護不方便,同時使用者總是需要升級更新軟體。
2. 創新與變更應從軟體架構開始
從上面的軟體架構分析很容易發現的問題就是:人機互動內容、資料關係、業務邏輯等無論是在軟體開發階段還是後期維護都屬於變動最多的內容,而軟體主體部分如核心、功能模組等可能永久性不用修改。那麼我們就從易變與不變著手,將易變部分與不變部分各自設計,然後以某種方式關聯起來實現軟體需求;這樣一來,當資料關係改變、業務邏輯出錯或改變、業務需求等方發生變化時我們只需要修改調整易變的部分。
因此我們可以設計一種新的軟體架構,新的軟體架構的核心思想就是從軟體裡解耦出應用介面(人機交換內容)、資料關係、業務邏輯,即應用介面、資料關係、業務邏輯獨立於軟體,組合為應用,在其外圍設計;軟體主體被定義為執行平臺,其動態載入應用,按照應用的旨意執行來實現專案需求,當專案需求發生調整僅需修改調整應用的內容,而軟體主體無需修改,如下圖所示。
按照新的軟體架構,將參與軟體開發的人員進行分工:軟體開發人員、應用設計人員,軟體主體由專業軟體開發人員完成、應用部分由應用設計人員(專注於業務等,少量簡單程式碼)。
應用部分(應用介面、資料關係、業務邏輯)是可以用簡單的指令碼語言(如xml)進行描述,應用設計人員只需編寫簡單的指令碼描述即可。
3. “x+” 如何實現軟體架構的創新與變格
3UCS 的“x+”平臺在開發之初就明確使用該架構,首先將人機互動所需的按鈕、輸入框等等元素元件化並可以動態關聯任何資料,而這些可以在軟體外圍使用xml程式碼來描述,同時開發邏輯引擎可透過載入業務邏輯描述(xml)實現業務邏輯的解耦,並形成BizXML規範,成功將人機互動內容、資料關係、業務邏輯從軟體裡解耦成應用;基於BizXML設計的應用都可以被“x+”平臺成功解析執行,使用者需要什麼的應用只需編制BizXML程式碼即可,簡單快捷方便。
例如,假設我們需要計算會員的級別,
會員 類別 |
界定標準 |
A 類 |
最近一年內內消費金額在2000元以上∕或年度消費頻次在4次及以上使用者 |
B 類 |
最近一年消費在1000-1999元以內∕或年度消費頻次在2次及以上使用者 |
C 類 |
最近一年消費在1-999金額∕或年度消費頻次在1次及以上使用者 |
D1 類 |
最近1-2年未消費 |
D2 類 |
最近2-3年未消費 |
D3 類 |
最近3年以上為消費 |
使用xLogicDesigner我們按要求設計邏輯,測試好後就可以生成邏輯程式碼(memberlevel.xml)
<?xml version="1.0" encoding="UTF-8"?>
<Tables>
<Table name="memberlevel">
<Inputs>
<Attr>annualamount</Attr>
<Value op="32" id="3">2000</Value>
<Value/>
<Value op="32" id="4">1000</Value>
<Value/>
<Value op="32" id="5">1</Value>
<Value/>
<Value/>
<Value/>
<Value/>
<Value/>
<Value/>
<Value/>
</Inputs>
<Inputs>
<Attr>annualtimes</Attr>
<Value/>
<Value op="32" id="6">4</Value>
<Value/>
<Value op="32" id="7">2</Value>
<Value/>
<Value op="32" id="5">1</Value>
<Value/>
<Value/>
<Value/>
<Value/>
<Value/>
<Value/>
</Inputs>
<Inputs>
<Attr>noneyears</Attr>
<Value/>
<Value/>
<Value/>
<Value/>
<Value/>
<Value/>
<Value op="1" id="5">1</Value>
<Value op="1" id="7">2</Value>
<Value op="1" id="8">3</Value>
<Value/>
<Value/>
<Value/>
</Inputs>
<Outputs>
<Attr>level</Attr>
<Value op="1" id="9">A</Value>
<Value op="1" id="9">A</Value>
<Value op="1" id="10">B</Value>
<Value op="1" id="10">B</Value>
<Value op="1" id="11">C</Value>
<Value op="1" id="11">C</Value>
<Value op="1" id="12">D1</Value>
<Value op="1" id="13">D2</Value>
<Value op="1" id="14">D3</Value>
<Value op="1" id="14">D3</Value>
<Value/>
<Value/>
</Outputs>
</Table>
</Tables>
然後,我們透過簡單的程式碼將該邏輯嵌入到應用中去
<WndTap Name="logicdemo" Text=" 表格邏輯 ">
<var name="MemberLevelTbl"><xi:include href="memberlevel.xml"/></var>
<Ctrls>
<GroupBox Name="GroupBoxLogicM" Text=" 會員邏輯演示 "><Ctrls>
<Label Name="lb_input1" Text=" 輸入 1:" Size="50,20"/><ComboBox Name="annualamount" Size="100,100" Items="100|1000|2000" SelectedIndex="0"/>
<BR/><Label Name="lb_input2" Text=" 輸入 2:" Size="50,20"/><ComboBox Name="annualtimes" Size="100,100" Items="1|2|5" SelectedIndex="1"/>
<BR/><Label Name="lb_input3" Text=" 輸入 3:" Size="50,20"/><ComboBox Name="noneyears" Size="100,100" Items="1|2|5" SelectedIndex="1"/>
<BR/><Label Name="lb_output" Text=" 輸出 :" Size="50,20"/><TextBox Name="EvalTblTest1" Size="50,20" ToolTip="EvalTableTest"></TextBox>
<Button Name="cal" Size="50,20" Text=" 計算 ">
<OnClick>
<EvalTbl rules="%{MemberLevelTbl}" table="memberlevel">
<inputs annualamount="%{annualamount}" annualtimes="%{annualtimes}" noneyears="%{noneyears}"/><outputs level="EvalTblTest1"/></EvalTbl>
</OnClick>
</Button>
</Ctrls></GroupBox>
</Ctrls>
</WndTap>
使用“ x+ ”手機客戶端、電腦客戶端應用就展示出來了,完全符合我們的業務需求。不難看出要定製軟體應用無論是對人員計算機水平的要求低還是定製方便快捷。
4. 結語
軟體框架的創新與變革,合理使用解耦思想,軟體應用的開發與定製將越來越容易,軟體的維護也將更將簡單便捷。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70020543/viewspace-2909139/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- IRI:產品創新與變革
- F5解決方案如何?結合創新例項來探討
- Web 框架的架構模式探討Web框架架構模式
- 如何使得軟體架構與業務模型相結合? - VLINGO架構模型Go
- 關於結構體中指標的一些探討結構體指標
- 探尋軟體架構的本質,到底什麼是架構架構
- 探尋軟體架構的本質,到底什麼是架構?架構
- 關於《以撒的結合》的探討:純善與極惡
- 如何用一個例項來探討嵌入式軟體架構設計架構
- Serverless 對研發效能的變革和創新Server
- 軟體創新與開發——結對程式設計程式設計
- 軟體業的變革推動者:東軟
- 俄羅斯方塊歷史發展與變革創新
- 《亂世王者》的獨特SLG道路:變革與創新,與玩家共同成長
- 微服務架構學習與思考(07):企業團隊組織架構如何變革?微服務架構
- 『網際網路架構』軟體架構-mybatis體系結構(14)架構MyBatis
- TOGAF企業架構與軟體架構的對應圖架構
- 深入探討微服務架構中的同步通訊機制微服務架構
- 胡永:聯想集團IT監控體系架構變革之路!架構
- MySQL整體架構與記憶體結構MySql架構記憶體
- 從視角、角色、劇情、體驗層面探討RPG的敘事結構
- HDD與你相約深圳,一起探討創新開發與運營增長
- 5 大場景深度探討何為 Serverless 架構模式?Server架構模式
- 變革中的遊戲與社會認知,四位資深學者共同探討遊戲價值與邊界遊戲
- 聊聊持續交付與軟體架構架構
- 邁向零碳:基於科技創新的綠色變革
- Apache Flink 不止於計算,數倉架構或興起新一輪變革Apache架構
- 【白話科普】聊聊網路架構變革的關鍵——SDN架構
- 結對編碼-軟體開發與創新課程設計
- XAF中XPO與EFCore的探討
- 探討敏捷開發在軟體開發中的應用敏捷
- 網路晶片架構的新改變晶片架構
- 共同探討資料庫技術與行業數字化轉型過程的融合創新資料庫行業
- 架構之:軟體架構漫談架構
- 軟體體系結構課堂測試02– 架構評價架構
- 2019年Fjord趨勢:揭示新一輪創意變革
- 企業應用架構演化探討:從微服務到Service Mesh應用架構微服務
- 軟體體系架構的認識架構