AUTOUI 軟體開發中介面的自動化技術可行性分析

2022-01-30 04:06:23 字數 2635 閱讀 7400

本文論證了動態生成ui和靜態生成ui的關係。同時對ui部分可以形成框架進行了總結和論證。

大前提是:不能用手寫去「畫」 介面,就是說不能在**級別純手寫每個控制項的位置等等。這些一定要交給ide。

因此存在的分歧主要是以下幾點:

1. 畫介面,生成xml或**的metadata,再生成靜態**

2. 畫介面,生成xml或**的metadata,系統執行中動態解析xml/metadata自動生成介面。

無論哪種方式,必然存在了乙個中間環節:xml/metadata。

如果是動態載入,那麼相關的介面配置有可能存在在實體的metadata、或者相關的xml。如果介面的需求很複雜,例如a的時候隱藏欄位a,b的時候隱藏欄位b,這樣必然得不償失。

既然前期畫介面是相同的;生成靜態**、或者動態解析生成基本上沒有工作量,那麼中間環節明顯使用靜態**優勢更大。

因此絕對使用靜態生成方式!

本次分析再次體現了,技術僅僅是為了人服務,不要為了技術而技術。 

介面主要包含三種。

1. 簡單輸入介面

主要用於建立原始資料,例如商家資訊、門店資訊等。

特點是:改變少、不依賴其他資料、企業日常執行中修改較少。

2. 查詢介面

主要對各種資料進行查詢,包括主從表查詢等,難點在於查詢條件的自動化配置。

3. 複雜輸入介面

主要建立企業業務資料,例如訂單、入貨單、退貨單等。

特點:經常改變、非常依賴其他原始資料、企業日常執行中涉及頻繁。

可以看見,最難的是複雜輸入介面。然而本人發現幾點非常有趣的現象

a:第二種查詢介面的查詢條件就是第一種簡單輸入介面

b:第三種複雜輸入介面可以就是第一種、第二種介面復合而成

可見,只要層層遞進,完全可是實現autoui。

介面開發的步驟包括了:

1. 布局 layout

首先是畫布局,而不是把乙個個控制項先拖到介面,再慢慢擺弄。

幾乎超過80%的介面可以使用網格布局(grid layout),所以無論html、winform等等都支援了網格布局。

2. 控制項與靜態資料 component and static data

然後就是在布局上分配相關的控制項,例如textbox, combobox等。

然後再指定控制項的明細資訊,包括id、依賴的靜態資料等,例如combobox的下拉框資料、gridview的顯示結構資料等。這裡的資料是靜態資料,即在本介面執行過程中資料是有範圍、不修改、固定的、非執行中載入的,例如性別等。

3. 介面級別輸入驗證 verification

設定輸入驗證。例如只能輸入數字,數值範圍在0~1等。 

4. 事件宣告 event declaration

部署好了控制項之後,分配不同控制項的事件,例如button的click事件等(空事件體)。

5. 控制項、窗體之間的資料關係 pageflow(我稱這個技術為頁面流) 

這部分是最複雜耗時的部分。包括

a: 介面中不同控制項之間的資料聯動;例如選擇中國、然後得到中國的城市列表。

b: 查詢某資料來源,然後獲得控制項的資料;例如開啟查詢商家子介面,查詢到商家編碼後確認,返回到訂單的商家編碼字段。

c: 介面事件結束後,跳轉到另外的介面;例如訂單確認,跳轉到管理介面。

6. 控制項之間的依賴關係 stepflows (我稱其為step by step 層進流技術)

例如必須先輸入了商家名稱,然後才能輸入商品名稱 這個是在pageflow基礎上進一步限制了介面輸入。

以上5點中,1、2、3、4都可以使用工具自動完成,因此完全可以實現autoui,但是第五點必須硬編碼。因此autoui的極限就是做到了第四點,同時為第五點提供了統一的開發介面。

到了現在,我可以幻想一下乙個autoui應該的樣子(vision),工作量以100%來算。

1. 首先畫布局,很簡單的在canvas上直接所見所得。10%

2. 在布局上配置控制項,同時設定控制項的id、靜態資料等。10%

3. 配置介面控制項的輸入驗證,使用預設驗證(非空、數字、正規表示式)。(如果實在驗證太複雜,那麼就留在autoui完成後硬編碼吧)15%

4. 配置控制項需要的事件,例如button的click事件等。5%

5. 在宣告的事件基礎上,根據一定的介面框架介面配置控制項、窗體之間的頁面流(pageflow)2

6. 生成靜態**。

7. 開啟靜態**,完善剩餘的業務邏輯。40%

然後我再對比一下乙個技術落後的介面開發過程。

1、2一般使用了vs的ide,拖控制項、慢慢對位置、改控制項的id,這下子基本上就多出了3倍以上時間了。

3. 不同的**使用了不同的驗證,如果是winform,還要自己硬編碼,一下子又3倍時間沒有了。

4. 這個倒沒什麼。

5、6、7 剩下的就是在複雜的頁面控制項時間搞好關係,很多時候bug就產生了。

所以,autoui是可行的。 

本文主要分析了autoui的可行性。順便預告一下,乙個基於本文autoui的原型系統已經開發完成了。遲點會拿出來分享! 

軟體開發中的併發

併發作用 1.在互動式應用中,快速響應使用者的請求,提高感知響應的時間 2.充分利用硬體資源,計算資源 3.簡化應用設計 併發壞處 1.難於測試 2.併發應用執行在複雜的環境下,軟體不確定性增多 3.處理同步,通訊的問題,增加程式設計複雜性 4.併發開銷對效能的影響,包括上下文環境切換,同步等 併發...

軟體開發中的人性

1.自以為是 在軟體開發過程中,通常有這樣的場景在不斷重演 組長問道,小王你負責的那個模組做好了嗎?小王回答道,已經好了。組長開始執行小王的程式。哎,怎麼資料不能顯示啊?組長提出了意見。真的嗎,我之前測得是好的啊 小王還不想面對現實。那你過來看一下吧!經過一番檢查,小王.2.固執己見 團隊交流時,當...

軟體開發中角色職責

pm的職責 1.負責完成專案管理計畫 里程碑計畫 2.負責專案過程的標準化與規範化 3.負責專案的總體規化與階段設計 4.負責專案目標理解一致 5.負責各子計畫得到上級領導與客戶及專案組成員的認可 6.協調專案組所需各項資源 7.安排客戶培訓工作 8.提高專案組士氣 加強專案組凝聚力 9.負責對外溝...