40多年的軟體工程研究是失敗的 - iansommerville
作者背景:從1981年左右到2014年退休,我一直從事軟體工程或相關學科的研究。從1984年到2014年,我的所有研究都涉及與英國和整個歐洲的工業界合作。我有幸與來自不同行業和國家的許多人一起工作,我從這些經歷中學到了很多東西。
這篇文章反映了我在英國和歐洲的研究經驗。我認為,其他國家的情況在細節上有所不同,但都存在著相同的基本問題:
這篇文章是由我寫的一條推文引起的,這條推文是對提交給2022年ICSE會議(軟體工程研究的旗艦會議)的論文的研究領域的分析。這些導致我對軟體工程研究進行了普遍的反思。我很遺憾地說,我認為我們這個群體在40多年的研究中,並沒有真正交出多少實質性的東西。
從根本上說,我認為有三個相關的根源造成了這種情況。
- 短期主義。
- 還原主義思維
- 競爭而非合作
1. 短期主義
短期主義現在在軟體工程(乃至所有電腦科學)研究中普遍存在。這在一定程度上是20世紀70年代開始的 "不發表就滅亡 "的文化的結果,這種文化現在在大多數國家都很流行。
研究人員必須不斷地寫論文以保持可信度,怎麼能責怪他們呢?
他們專注於短期專案,發表中期成果,不願意投資於生產穩健和可重複使用的示範系統,並傾向於跳上某一特定時間段的時尚浪潮(例如80年代的形式化方法,現在的機器學習)。
這種短期行為的直接後果是:許多軟體工程研究都缺乏雄心。
注重成功指標的研究人員不願意去處理長期的困難專案。在英國,在21世紀初,有一項建議是確定 "計算科學的大挑戰"。提出了一些有趣的專案,如驗證性編譯器,但沒有一個實現。
許多資助機構(如歐盟委員會)的政策加劇了短期行為,即學術研究應該與工業界合作。可以理解的是,工業界不認為自己的角色是一個長期的研究資助者,而是專注於短期或最多是中期的研究。不幸的是,由於好的和壞的原因,這種研究對許多公司來說都是不太優先的。我30多年來的經驗是,它往往資金不足,在短時間內被取消,而且人員不足。
2. 還原論
在還原論的世界裡,小規模、短期專案的工作可以是合理的(也許),可以說這些專案可以形成一些更大的系統的組成部分。
然而,現實情況是,還原主義的方法根本無法擴充套件到大規模、複雜的IT系統的建設。
我以前寫過這方面的文章,這裡就不多說了,簡單地說,還原論的方法依賴於系統各部分之間相對簡單和可理解的關係。大規模的軟體系統根本不是這樣的。
太多的研究人員仍然不明白這一點,他們認為我們只需要找到一些神奇的方法,軟體工程的問題就會得到解決。他們在解決研究 "問題 "時,根本不知道他們的工作可能會如何擴充套件。因此,就軟體工程實踐而言,他們所做的大部分工作實際上是無用的。
3. 競爭而非合作
這些問題的背後是人類的問題,即我們有一個支離破碎的社群,在許多情況下未能共同行動,對競爭而不是合作更感興趣。競爭環境的現實是,那些已經有充足資金的人處於獲得更多資金的最佳位置。新加入的人很難為創新的想法獲得資金,因此,如果他們要取得任何進展,他們必須提出已經建立的增量研究。他們必須依靠富人桌上的麵包屑生活。
作為一個社群,高階成員(這裡麵包括我自己)未能創造一個包容性的環境,使來自傳統精英之外的新想法得到支援。在與政策制定者和資助機構打交道時,我們沒有共同行動,除了極少數例外,我們沒有大聲反對阻礙我們領域發展的徒勞的短期行為。
未來有希望嗎?坦率地說,我並不樂觀,因為變革將依賴於已經擁有終身職位的資深成員的利他行為,放棄短期研究,從競爭中退縮,讓年輕的研究人員蓬勃發展。個人的努力是很重要的(我想我在職業生涯的最後幾年裡已經努力過了),但實際上,只有當社群的大多數人都希望發生這種變化時,才有可能實現。
相關文章
- 軟體測試是失敗者的賭注
- 基於快速失敗的軟體開發 - levelup
- 國內軟體專案失敗的根源分析
- 亞馬遜Alexa是如何失敗的?亞馬遜
- 軟體開發專案失敗的3個原因
- 軟體專案為何會失敗?
- 軟體專案失敗因素分析(轉)
- 軟體專案失敗最常見的5大原因
- 什麼是軟體工程?軟體工程
- android新建立工程失敗!Android
- 做了40多年資料分析,Teradata這次的關鍵字是“任意”?
- Java的快速失敗和安全失敗Java
- 軟體開發專案失敗原因分析(轉)
- 軟體工程的理解軟體工程
- 軟體工程只能是零碎工程 (轉)軟體工程
- 《實踐者的研究方法》——第2章軟體工程2.5這一切是如何開始的軟體工程
- 現代軟體工程 習而學的軟體工程教育軟體工程
- Win10系統安裝AE軟體失敗的解決方法Win10
- 開源軟體的教育是一個系統工程
- 軟體產品開發,為什麼失敗 (轉)
- Oracle中的遊標、硬解析、軟解析、軟軟解析、解析失敗Oracle
- 解決IDEA建立maven工程失敗的一種方法IdeaMaven
- 軟體工程實踐----初步接觸軟體工程的總結軟體工程
- [軟體工程]軟體中的量化問題軟體工程
- 軟體工程的變遷軟體工程
- 軟體工程的認識軟體工程
- 軟體工程的認知軟體工程
- 多年軟體測試大牛分享成長經歷,一個好的軟體測試工程師應該做到這些!工程師
- SOAP協議棧是令人尷尬的失敗?協議
- 阿里失敗的最大原因是什麼?阿里
- 您的微服務是分散式整體嗎? -軟體工程日報微服務分散式軟體工程
- Google工程師:複雜性是軟體的死敵Go工程師
- 鴻蒙安裝apk軟體失敗(不支援該裝置)鴻蒙APK
- Oracle RAC啟動失敗-軟連結惹的禍Oracle
- 軟體工程是教會不懂寫程式的人開發軟體嗎?軟體工程
- [譯] 針對失敗者的體驗設計
- 訊息中介軟體消費到的訊息處理失敗怎麼辦?
- 由於gcc軟體包沒有安裝導致的Oracle安裝失敗GCOracle