高效率開發、易用、功能穩定、執行效率高、維護成本低、需求變更是軟件開發遵循的守則,然而現實中我們面臨各種各樣的問題:
1. 程序員A,程序員B開發同樣的功能,理解不同、開發用時、及開發質量良莠不齊,延遲交付時間普遍。相反監督者需要花費更多精力與時間可以彌補,加大投入成本。
2. 后期維護成本高,如由于測試跟不上BUG檢測不到、需求變更等。
3. 同行競爭的壓力,如A公司開發模塊實際時間10工作日、B公司開發模塊實際時間15工作日,競標會處于劣勢。
4. 隨著公司業務擴展,項目繁多,招攬人員越多、管理難度越大等因素日漸凸顯,造成企業發展的瓶頸。
5. 人員的培養需要大量成本,與人員的不穩定性因素對企業造成損失較大,如人員請假、離職等。
6. 開發—測試—QA—用戶測試—試運營—運營,是軟件開發中耗費成本巨大的一個循環過程鏈,制約企業發展。
上述是據個人經驗總結,Db2view是針對上述問題的一個解決方案。
Db2view是以高效、穩定、易用、低成本維護為目的所研制的一套輕量級非入侵式、自動化開發平臺。兼容多種架構,如SSH、struts—spring—ibatis等容易集成到系統,根據多年的行業經驗,高效的針對各行業業務特點,最大化減少建設與維護成本。目前已在多個項目實施,不斷完善。
2.1 Db2view總體架構圖
Db2view:根據編寫的SQL,在所有元素據中,勾選需要顯示的元素據列,即可生成自定義顯示列表。
如select school_id,school_name,school_code, school_manager from school
然后在配置界面勾選school_name, school_manager字段,則顯示的列表為:
school_name |
school_manager |
廣東廣雅中學 |
黃光裕 |
廣州先烈東小學 |
王興東 |
查詢:在SQL里涉及并且勾選的元素據字段中,可以選擇是否作為查詢的字段,勾選后該列成為查詢項,如果是時間字段還可以進行時間區間查詢的選擇。
排序:列表中的每個字段都可以進行升序與降序的排列功能。
自定義字段名:對每個列名稱進行界面配置,如勾選school_name、school_manager字段,可以對school_name定義顯示列名為:學校名稱、school_manager顯示列名為:學校管理員,修改后列表顯示如下:
學校名稱 |
學校管理員 |
廣東廣雅中學 |
黃光裕 |
廣州先烈東小學 |
王興東 |
轉義詞:數據庫中記錄男女使用0,1表示,而界面需要顯示為男女文字的信息,使用轉義詞可以達到效果。
刪除:界面化配置是否需要刪除功能,刪除指定字段的表記錄。
操作:所有列表均可以添加外部操作(如增加、批量刪除)與行內操作(編輯、刪除),由此構成一個完整的業務功能。(示例見演示視頻)
數據導出:界面化配置是否需要excel數據導出功能,根據查詢的條件顯示的數據,可選擇導出當前所見數據與所有滿足條件的數據兩個選擇。
模板定制:界面化配置模板,方便為不同的客戶需求定制不同的顯示模板。
換膚:界面化配置皮膚,每個模板依據規范可以有不同的皮膚更換功能。
數據安全:加入訪問權限控制規則,保障功能數據安全性。(待實現)
3.1 優點
(1)高效率開發:db2view平臺開發工具采用全界面配置,編寫業務SQL,簡單配置,即可完成。列表功能開發以分鐘計時,15分鐘可以完成一個高質量列表的功能開發。
(2)易用性:界面編寫SQL,然后配置即可得到一個界面友好,高質量的功能列表。將傳統程序員需要熟悉各種復雜的技術框架解放出來,專注于業務邏輯,大大降低企業由于人員離職或其他情況所帶來的損失。
(3)功能穩定:所有功能使用統一內核,經過多個項目的迭代驗證其穩定性、可靠性。
(4)低成本維護: 所有的功能需要維護的只有業務SQL與配置文件,最大化的減少維護的成本。
比較現今流行的SSH架構開發流程:
維護成本是流程涉及的內容,成本花費高。
Db2view開發流程:
維護成本只有業務SQL與配置文件,易于維護。
(5)快速響應需求變更:如業務更改字段名、添加或刪除顯示字段、
添加查詢字段、功能刪除等維護工作都能夠在極短的時間內響應。
(6)無需重啟服務器:功能的生成與修改實時生效,無需重啟服務器。
3.2 缺點
(1) 平臺仍需完善,暫不能夠滿足所有業務需求界面化
(2) 平臺操作友好性仍待提高,如轉義詞的添加、新添加配置等
數據庫:ORACLE 10G以上版本
語言:JAVA
JDK版本:1.4以上
服務器:Tomcat,JBoss,Resin,WebSphere,WebLogic等主流服務器。
根據開發模式分為兩種部署方式。
面向服務式模式:
作為分布式服務器對外提供服務,生成功能鏈接嵌入應用系統。該模式的優點:
1. 對應用系統完全無入侵,100%輕量級開發。
2. 產品升級調試簡單。
缺點:
1. 需要開放應用的數據庫訪問權限。
2. 涉及操作并有關聯動作:如刪除功能在A系統開發,B系統是Db2view,關聯頁面需要設置同域方能進行交互。
3. 安全性相對另一種模式低。
組件模式:
作為組件集成到開發項目中,容易管理,安全性也高。
優點:
安全性高,可根據開發系統的權限要求做安全性控制
缺點:
升級調試相對復雜。
5分鐘生成功能例子,對此工具有興趣者請加群:12990321.
sourceforge http://www.sourceforge.net
java.net http://www.java.net
Lomboz http://www.objectlearn.com/index.jsp (J2EE plugin for Eclipse)
htmlArea http://sourceforge.net/projects/itools-htmlarea/ (所見即所得的在線HTML編輯器)
XmlBuddy http://www.xmlbuddy.com/ (XML Editor plugin for Eclipse)
JFreeChart http://www.jfree.org/ (用于生成圖表的項目)
EclipseME http://eclipseme.sourceforge.net/ (J2ME Developmnt Plugin for Eclipse)
mvnForum http://sourceforge.net/projects/mvnforum/ (論壇)
jChatBox http://www.javazoom.net/index.shtml (用servlet實現的WEB聊天引擎)
POI http://jakarta.apache.org/poi/index.html (用于處理Excel,WORD等文檔的項目)
FileUpload http://jakarta.apache.org/commons/fileupload/ (用于處理HTTP文件上傳得項目)
PDFBox http://sourceforge.net/projects/pdfbox/ (處理PDF文檔的項目)
Lucene http://jakarta.apache.org/lucene/index.html (搜索引擎)
Digester http://jakarta.apache.org/commons/digester/ (處理XML信息的項目)
DBCP http://jakarta.apache.org/commons/dbcp/ (數據庫連接池)
AXIS http://ws.apache.org/axis/ (WebService 的實現框架)
Jetspeed http://portals.apache.org/jetspeed-1/ (Portal)
HSQLDB http://sourceforge.net/projects/hsqldb/ (Im memory Database Engine)
CEWOLF http://sourceforge.net/projects/cewolf/ (一套標簽庫實現Web報表,使用的是jFreeChart引擎)
Struts Menu http://sourceforge.net/projects/struts-menu/ (基于Struts的Web菜單項目)
htmlparser http://sourceforge.net/projects/htmlparser/ (用于解析HTML信息的項目)
Mondrian http://sourceforge.net/projects/mondrian/(Open Source OLAP Database)
ProGuard http://sourceforge.net/projects/proguard/(Java的混淆器)
InfoGlue http://sourceforge.net/projects/infoglue/ (J2EE 內容管理系統)
JPivot http://sourceforge.net/projects/jpivot/ (基于WEB的OLAP 展現)
http://java-source.net/
高效率開發、易用、功能穩定、執行效率高、維護成本低、需求變更是軟件開發遵循的守則,然而現實中我們面臨各種各樣的問題:
1. 程序員A,程序員B開發同樣的功能,理解不同、開發用時、及開發質量良莠不齊,延遲交付時間普遍。相反監督者需要花費更多精力與時間可以彌補,加大投入成本。
2. 后期維護成本高,如由于測試跟不上BUG檢測不到、需求變更等。
3. 同行競爭的壓力,如A公司開發模塊實際時間10工作日、B公司開發模塊實際時間15工作日,競標會處于劣勢。
4. 隨著公司業務擴展,項目繁多,招攬人員越多、管理難度越大等因素日漸凸顯,造成企業發展的瓶頸。
5. 人員的培養需要大量成本,與人員的不穩定性因素對企業造成損失較大,如人員請假、離職等。
6. 開發—測試—QA—用戶測試—試運營—運營,是軟件開發中耗費成本巨大的一個循環過程鏈,制約企業發展。
上述是據個人經驗總結,Db2view是針對上述問題的一個解決方案。
Db2view是以高效、穩定、易用、低成本維護為目的所研制的一套輕量級非入侵式、自動化開發平臺。兼容多種架構,如SSH、struts—spring—ibatis等容易集成到系統,根據多年的行業經驗,高效的針對各行業業務特點,最大化減少建設與維護成本。目前已在多個項目實施,不斷完善。
2.1 Db2view總體架構圖
Db2view:根據編寫的SQL,在所有元素據中,勾選需要顯示的元素據列,即可生成自定義顯示列表。
如select school_id,school_name,school_code, school_manager from school
然后在配置界面勾選school_name, school_manager字段,則顯示的列表為:
school_name |
school_manager |
廣東廣雅中學 |
黃光裕 |
廣州先烈東小學 |
王興東 |
查詢:在SQL里涉及并且勾選的元素據字段中,可以選擇是否作為查詢的字段,勾選后該列成為查詢項,如果是時間字段還可以進行時間區間查詢的選擇。
排序:列表中的每個字段都可以進行升序與降序的排列功能。
自定義字段名:對每個列名稱進行界面配置,如勾選school_name、school_manager字段,可以對school_name定義顯示列名為:學校名稱、school_manager顯示列名為:學校管理員,修改后列表顯示如下:
學校名稱 |
學校管理員 |
廣東廣雅中學 |
黃光裕 |
廣州先烈東小學 |
王興東 |
轉義詞:數據庫中記錄男女使用0,1表示,而界面需要顯示為男女文字的信息,使用轉義詞可以達到效果。
刪除:界面化配置是否需要刪除功能,刪除指定字段的表記錄。
操作:所有列表均可以添加外部操作(如增加、批量刪除)與行內操作(編輯、刪除),由此構成一個完整的業務功能。(示例見演示視頻)
數據導出:界面化配置是否需要excel數據導出功能,根據查詢的條件顯示的數據,可選擇導出當前所見數據與所有滿足條件的數據兩個選擇。
模板定制:界面化配置模板,方便為不同的客戶需求定制不同的顯示模板。
換膚:界面化配置皮膚,每個模板依據規范可以有不同的皮膚更換功能。
數據安全:加入訪問權限控制規則,保障功能數據安全性。(待實現)
3.1 優點
(1)高效率開發:db2view平臺開發工具采用全界面配置,編寫業務SQL,簡單配置,即可完成。列表功能開發以分鐘計時,15分鐘可以完成一個高質量列表的功能開發。
(2)易用性:界面編寫SQL,然后配置即可得到一個界面友好,高質量的功能列表。將傳統程序員需要熟悉各種復雜的技術框架解放出來,專注于業務邏輯,大大降低企業由于人員離職或其他情況所帶來的損失。
(3)功能穩定:所有功能使用統一內核,經過多個項目的迭代驗證其穩定性、可靠性。
(4)低成本維護: 所有的功能需要維護的只有業務SQL與配置文件,最大化的減少維護的成本。
比較現今流行的SSH架構開發流程:
維護成本是流程涉及的內容,成本花費高。
Db2view開發流程:
維護成本只有業務SQL與配置文件,易于維護。
(5)快速響應需求變更:如業務更改字段名、添加或刪除顯示字段、
添加查詢字段、功能刪除等維護工作都能夠在極短的時間內響應。
(6)無需重啟服務器:功能的生成與修改實時生效,無需重啟服務器。
3.2 缺點
(1) 平臺仍需完善,暫不能夠滿足所有業務需求界面化
(2) 平臺操作友好性仍待提高,如轉義詞的添加、新添加配置等
數據庫:ORACLE 10G以上版本
語言:JAVA
JDK版本:1.4以上
服務器:Tomcat,JBoss,Resin,WebSphere,WebLogic等主流服務器。
根據開發模式分為兩種部署方式。
面向服務式模式:
作為分布式服務器對外提供服務,生成功能鏈接嵌入應用系統。該模式的優點:
1. 對應用系統完全無入侵,100%輕量級開發。
2. 產品升級調試簡單。
缺點:
1. 需要開放應用的數據庫訪問權限。
2. 涉及操作并有關聯動作:如刪除功能在A系統開發,B系統是Db2view,關聯頁面需要設置同域方能進行交互。
3. 安全性相對另一種模式低。
組件模式:
作為組件集成到開發項目中,容易管理,安全性也高。
優點:
安全性高,可根據開發系統的權限要求做安全性控制
缺點:
升級調試相對復雜。
5分鐘生成功能例子,對此工具有興趣者請加群:12990321.
現象一:
錯誤信息:
java.lang.SecurityException: sealing violation: can't seal package oracle.jdbc.driver: already loaded
原因:
was啟動的lib里存在多個ORACLE DRIVER。
解決:
保留最新的一個驅動包解決。
遺留問題:
開發環境使用TOMCAT發布無此問題,JBUILDER2006開發中包是有優先順序的,即使存在多個
相同的類,優先選擇第一個找到的類。WAS在這方面顯然存在不足,排異容錯性不夠強大。
現象二:
錯誤信息:
Error 500: LinkageError while defining class: com.gzedu.eecn.structure.login.action.UserLoginAction Could not be defined due to: com/gzedu/eecn/structure/login/action/UserLoginAction (Illegal constant pool type) This is often caused by having a class defined at multiple locations within the classloader hierarchy. Other potential causes include compiling against an older or newer version of the class that has an incompatible method signature. Dumping the current context classloader
原因:
上傳的文件已經損壞。重復試過很多次,發現本機器通過SSH上傳過程中文件已經損壞。
屬于本機問題。
解決:
通過同事的機器上傳文件解決
總結:
類似此問題出現的幾率很小,可以認為是相同的環境,使用相同的方式做一件事情也有可能出現
不同的效果。再次出現類似問題可以更快的定位錯誤點。
現象三:
錯誤信息:
com.ibm.ws.jsp.translator.JspTranslationException: JSPG0227E: 轉換 /login.jsp:
/login.jsp(1,1) --> JSPG0145E: 未知 JSP 元素:jsp:directive.pagelanguage
原因:
windows環境、tomcat作為服務器開發,部署到sit、unix環境,會出現頁面不同的開發環境會
有中文問題,或是說重復定義encoding的問題頁面編碼問題。
解決:
按照如下進行修改和配置;
1. 對于不是被include的頁面必須使用;
<%@ page contentType="text/html;charset=GBK" pageEncoding="GBK" language="java" %>
。 大寫GBK
2. 對于被Include的頁面必須使用如下;
。<%@ page pageEncoding="GBK" language="java" %>
注:在TOMCAT4.1.30-->was5.0,6.0出現此問題
參與一個項目要做到:
1.項目中有你參與整個項目進展會順利的多。體現你的重要性。
2.一個人的能力再強,精力是有限的。切記不可體現個人主義,充分發揮團隊能力,協調、配合往往比
技術重要性排前一個位置。
3.主動承擔一些責任,對團隊可提高士氣融合的氣氛、對個人當成一個磨練的機會。
4.注意項目中遇到的一些細小的問題。最不起眼的就是最能考驗個人細心的程度,自己負責的事情要做到
最好。
5.同一件事情不同的人處理效果不同。
增加翻頁接口,滿足各種分頁不同的界面化顯示。
代碼已經開發完,工具需要做小量修改,進期主要任務是編寫使用手冊。
2005年10月16日21:43:36