Java與Cobol對決:Cobol軟體質量最過硬

2020-11-22 IT168

        【IT168  評論】眾所周知,軟體總是存在缺陷的。問題是,有多少人針對軟體質量做系統性的研究和分析呢?比如說,到底誰的問題最大,是大眾追捧的Java,還是奮力直追的C、C++,抑或久經沙場的Cobol?最近,一份可靠的調查為我們揭開了謎底。該調查組從 745個抽樣應用程式的分析中得出結論,目前世界上有許多軟體存在一些潛在的缺陷,在某種程度上為企業和機構帶來了一定的風險。

  何謂技術債(Technical Debt)

  所謂「債」指的是債務,不管什麼類型的債,總歸不是什麼好事。科技債也一樣,像這樣一類為程序構造設計、編碼帶來風險的程序被冠名為「技術債」(Technical Debt),Technical Debt指的是由於軟體架構設計的致命缺陷造成了嚴重的災難,因其嚴重性也一直受到越來越多的關注。

  電影《無間道》的一句經典臺詞「出來混,遲早要還的」。對於70年代的電腦程式的開發專家來講,他們是怎麼也沒有想到這些電腦程式那麼有生命力,居然能活到21世紀。而由此帶來的是叱吒風雲的「千年蟲問題」。

  因此,說起「技術債」(Technical Debt),就不得不談到一個石破驚天的血案「千年蟲」。計算機2000年問題,又叫做"2000年病毒"、"千年蟲"、或"千年病毒".縮寫為"Y2K".是指在某些使用了電腦程式的智能系統(包括計算機系統、自動控制晶片等)中,由於其中的年份只使用兩位十進位數來表示,因此當系統進行(或涉及到)跨世紀的日期處理運算時(如多個日期之間的計算或比較等),就會出現錯誤的結果,進而引發各種各樣的系統功 能紊亂甚至崩潰。

  軟體質量評估不容小覷

  無論是由於業務決策的失誤還是編程能力的欠缺,那些性能糟糕的代碼都可能導致電腦系統崩潰、安全漏洞、性能衰弱、或者數據損壞等。而且,代碼修複本身又是一件耗費成本、花費技術精力的差事。因此軟體質量評估不容小覷。

  通常,我們在軟體的測試與評估時,主要側重於功能特徵、可靠特徵、易用特徵和效率特徵等幾個方面。在評價活動的具體實施中,應該把被評估軟體的研製任務書作為主要依據。

  Cast Software是一款軟體質量評估工具,專用於評估軟體工程架構的穩健性和應用程式的編碼質量,它系統分析了745個應用程式,總共涵蓋365萬行代碼。上周四發布了一份分析結果的詳細報告指出,Cast分析了來自將近12個行業中的160個國家的應用程式。該分析結果包含了1800多種應用程式開發中的違規類型。這些應用程式是用多種程式語言編寫而成,包括Java EE, Cobol, .Net, C, C++ 等等。根據每小時修復違規代碼的開銷為$75的標準來統計的結果表明,平均修復每行Technical Debt代碼需要花費$3.61。

  軟體質量評估:Cobol榮獲最佳選擇 Java App問題最多

  COBOL是一種面向數據處理的、面向文件的、面向過程(POL)的高級程式語言。最早的高級程式語言之一,是世界上第一個廣泛使用的高級程式語言,也是數據處理領域最為廣泛的程序設計語言。經過40多年的不斷修改、豐富完善和標準化,COBOL已發展為多種版本的龐大語言 COBOL程序,在財會工作、統計報表、計劃編制、情報檢索、人事管理等數據管理及商業數據處理領域,都有著廣泛的應用。

  COBOL的重要性可以用這句話來描述:世界上70%的數據都是用COBOL語言處理的,並且90%的ATM事務處理用的都是COBOL語言。每天在線處理的COBOL事務有300億次。500強中有492家(包括全部的100強)使用了COBOL語言,目前在COBOL方面的投資已經超過3萬億美元,,據稱用COBOL書寫的程序超過了1000億行,並且以每年大約50億行代碼的速度在增長。

  Java EE(Java Platform,Enterprise Edition)是sun公司推出的企業級應用程式版本。這個版本以前稱為 J2EE。能夠為我們幫助開發和部署可移植、健壯、可伸縮且安全的伺服器端 Java 應用程式。Java EE 是在 Java SE 的基礎上構建的,它提供 Web 服務、組件模型、管理和通信 API,可以用來實現企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web 2.0 應用程式。

  從程式語言的角度上看,Java EE造成的損失最壞,每行代碼花費高達$5.42,而Cobol則前景最好,每行代碼費用低至$1.26。

  Cast的首席科學家Bill Curtis表示,他相信Cobol是最佳選擇,因為Cobol的編程代碼更為完善。在歲月的變更中,程式設計師「摸爬滾打三十年了」,早就修復了一些致命性的缺陷。

  至於Java,Curtis表示,「目前有很多人跟風擠進Java領域,但是並不具備堅實的計算科學背景。」我們不難想像這樣一個讓人驚悚的實現,有很多人在編寫代碼,但是他們對軟體工程卻並不內行。

  各公司紛紛熱炒「技術債」

  技術債務(Technical Debt)一直是個老生常談的話題。「但是這個形象的比喻更容易被研究者接受,因為他們覺得Technical Debt真實地描述了他們工作的方式,而且與它們的工作息息相關」。

  Cast的研究成果也越發受到IT企業的重視,特別體現在Technical Debt的理解上。國家科學基金項目的調查員,Maryland大學信息系統部的教授Carolyn Seaman表示,有越來越多的人開始關注Technical Debt,因為這個形象的比喻和大家已經產生了共鳴。Seaman還表示,提高軟體質量的一大障礙是不太明確什麼樣的開發策略和開發方法可以提高軟體的質量。

  去年,Gartner呼應了這個主題,將這個術語定義為「IT Debt」。IT研究公司將世界範圍的IT研究維護費用從2010年的500億美元調升至一萬億美元。

  在將注意力轉移到Technical Debt上時,這會導致開發人員偷工減料。有時候,適當的偷工減料是必要的,但是忽略事實卻是不可容忍的。

  這兩年以來,有越來越多的人開始關注Technical Debt。目前只有少量的代碼來說明Technical Debt,在如何償還Technical Debt、以及何時償還、如何根據Technical Debt來改變需求方面還缺乏相應的指南。參考英文:http://www.computerworld.com/s/article/9222503/Java_apps_have_most_flaws_Cobol_apps_the_least_study_finds?taxonomyId=11&pageNumber=1

相關焦點

  • java軟體工程師的這些要求你有嗎?
    如今java是IT界數一數二的語言,許多程式設計師都想要成為java軟體工程師,那大家知道企業對於java軟體工程師的技術要求有哪些嗎?java軟體工程師的技術要求一.java技術要求:1.具有良好的Java語言基礎,面向對象編程基礎2.熟悉Struts、Hibernate、Spring等主流技術框架3.熟悉XML解析、Excel導出、文件上傳、發送E-mail等常見業務的實現二.資料庫技術要求1.掌握、運用SQLServer
  • 開發崗位這麼多,為什麼選Java?你學Java了嗎-開課吧
    程式語言排行榜目前很多軟體都是用Java寫的,新出的系統和函數庫為了市場,也會儘量和Java兼容或者提供Java軟體開發可以使用的語法是非常多,但是為什麼Java被廣泛的使用呢?其他程式語言與Java相比,Java語法相對簡單,並且是很多計算機語言的基礎。提到C++語言,很多人發現在使用過程中最容易出現的錯誤就是內存管理,而java有自動垃圾回收器,不用擔心內存。
  • Android被指抄襲Java代碼引爭議
    密切跟蹤這個案子並且創建NoSoftwarePatents(不要軟體專利)組織的Florian Mueller在博客中稱,這個發現過程對於甲骨文是非常有成果的,對於谷歌來說是非常可怕的。Mueller仔細檢查了Android的代碼,除了甲骨文在訴訟中提到的一個文件之外,他還發現了六個與Java文件非常相似的文件。這些文件是在Android 2.2版和2.3版中發現的。
  • 學java可以做什麼?大數據前景和就業方向又是什麼樣的呢?
    學java可以做什麼?(1) Java可以用來做網站:很多大型網站都是用JSP寫的,JSP全名java server pages,這是一種動態網頁技術,比如我們熟悉的B站,很多政府網站都是用這個寫的所以想學習java的同學還可以負責網站方面的製作,這方面的崗位也比較多。
  • (提高Java代碼質量)|25個優化Java代碼的小技巧
    反例:4.集合初始化儘量指定大小java 的集合類用起來十分方便,但是看源碼可知,集合也是有大小限制的。每次擴容的時間複雜度很有可能是 O(n) ,所以儘量指定可預知的集合大小,能減少集合的擴容次數。反例:正例:5.字符串拼接使用 StringBuilder一般的字符串拼接在編譯期 java 會進行優化,但是在循環中字符串拼接,java 編譯期無法做到優化,所以需要使用 StringBuilder 進行替換。
  • 學習java的優勢是什麼?學習難度怎麼樣
    學習java成為了現在比較熱門的話題。Java是一種可以撰寫跨平臺應用軟體的面向對象的程序設計語言。同時截止到2018年8月,java領先其它語言幾乎4.5%。為世界第一程式語言。  在未來5年內,合格軟體開發人才的需求將遠大於供給,由此看來,java發展市場無限大。學習這個課程確實還是有一定優勢,未來的就業也會變得更加容易。想要學習java更多的知識點,可以了解一下拉勾教育,到平臺交流學習。
  • 超威電池質量過硬,無懼市場風雨
    人們在選擇電瓶車的同時,也越來越關注電瓶車的電池質量問題。超威集團作為一家專業從事儲能型、動力型蓄電池研發和製造的全國行業龍頭企業,超威電池質量如何也備受關注,讓我們一起走近超威了解一下。超威電池正是憑藉著過硬的技術實力贏得了消費者的信賴,相信未來的超威集團依舊會憑藉超威電池質量的優勢和良好的用戶口碑引領整個行業市場,從而為消費者提供更多優質的產品。
  • 相比於Java,python到底有哪些優勢?
    可唯獨java穩如泰山,不可動搖!自然而然的就會出現python與Java的討論聲。本文的目的在於討論python和java相比到底有哪些優勢,至於缺點暫且不提!不像java要寫許多繁重的代碼,python有許多開源的庫,你只需要調用即可!對於大部分人而言,在極短的時間內開發出自己想要的項目無疑是重要的,一方面是可以獲得巨大的成就感,另一方面則可以節約時間去幹更多的事!
  • MCScanx:共線性分析軟體
    首先我們需要對物種之間進行blast相互比對,物種內和物種間都可以。然後將物種的gff文件整合在一起,名字可以為物種1.物種2.gff得到blast的結果之後。我們要運行MCScanx 這個軟體需要輸入物種1.物種2.gff和比對的blast結果。這一步會得到一個*.collinearity的文件。
  • Java反射機制深入詳解
    (來自Sun)JavaBean 是 reflection 的實際應用之一,它能讓一些工具可視化的操作軟體組件。這些工具通過 reflection 動態的載入並取得 Java 組件(類) 的屬性。反射是從1.2就有的,後面的三大框架都會用到反射機制,涉及到類」Class」,無法直接new CLass(),其對象是內存裡的一份字節碼.
  • 跟我學java編程—認識java的整數類型
    其中,byte佔用一個字節的存儲空間,可表示的最小數值為-128,最大數值為127;short佔用二個字節的存儲空間,可表示的最小數值為-32768,最大數值為32767;int佔用四個字節的存儲空間,可表示的最小數值為-2147483648,最大數值為2147483647;long佔用四個字節的存儲空間,可表示的最小數值為-9223372036854775808
  • 青雲裝配分廠高度表16班:典型引路 產品質量過硬
    在中航工業青雲公司的幾十個生產班組中,有一個班組因產品質量過硬,連續3年被公司評為「標杆班組」和「6S標杆班組」,連續3年月月被評為分廠「星級班組」,這個班是裝配分廠高度表16班。上至公司領導和駐公司軍代表,下到分廠領導和質量部門,不禁疑問:「這也太牛了,難道雞蛋裡還挑不出一點兒骨頭來?」
  • Java中加載資料庫驅動的方式有幾種?背後的原理是什麼?
    1、Class.forName()加載這是最常見的一種方式,也是從早期沿用下來的方式。下面看一下在這背後發生的事情。Driver接口先來了解下java.sql.Driver接口,java.sql.Driver是所有JDBC驅動程序需要實現的接口。這個接口是提供給資料庫廠商使用的,不同廠商實現該接口的類名是不同的,例如MySQL 8.x的JDBC驅動的類名是:com.mysql.cj.jdbc.Driver。
  • Java基礎教程:java反射機制教程
    請看下面的代碼: 這是一個最簡單不過的類,當我們使用的時候直接new出來一個User對象即可。這時候java語言在設計的時候為我們提供了一個機制,就是反射機制,他能夠很方便的去解決我們的問題。
  • 從技術角度剖析西安軟體公司軟體開發管理的短板
    在西安軟體開發行業打拼很多年了,一些心得寫下來和西安軟體公司的同行們分享。我在總結為什麼很多西安軟體公司總是生存艱難,一定程度上與軟體公司和老闆的定位業務能力很有關係,其次是軟體開發人員的原因也很多,我總結的經驗,主要是以軟體開發人員這方面為主。
  • 跟我學java編程—認識java語言的字符類型
    用記事本打開「CharSample.java」文件,輸入以下代碼:編譯「CharSample.java」文件,在命令行窗口輸入「javac CharSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java CharSample」運行Java程序,命令行窗口顯示如下信息:
  • 如何使用JAVA反射/JAVA反射實例
    > c3 = null ;  // 指定泛型  try{   // 以下的操作形式是在開發中最常用的一種形式   c1 = Class.forName("com.test.instancedemo.X") ;  }catch(ClassNotFoundException e){   e.printStackTrace() ;  }  c2 = new X().getClass() ;  //
  • Java軟體開發應該如何學習呢?
    選擇學習Java軟體開發,最重要的是擁有一定的自學能力,如果自學能力不強,學習Java是非常困難的,或者可以選擇Java培訓課程,老師的監督和指導對你快速掌握Java開發有很大的幫助。學習編程每個人都有自己特色的方法,在項目中鞏固基礎知識,確保自己能夠勝任企業級項目開發。
  • Java程式設計師必備基礎:Java代碼是怎麼運行的?
    java源文件編譯為class字節碼 類加載器把字節碼加載到虛擬機的方法區。但是java是一門面向對象的高級語言,它不僅語法非常複雜,抽象程度也非常高,並不能直接運行在計算機硬體機器上。 Java虛擬機(Java Virtual Machine 簡稱JVM)是運行所有Java程序的抽象計算機,是Java語言的運行環境。