1.6 軟件工程人員的業務素質和職業道德
現在,計算機越來越成為商業、工業、政府、醫療、教育、娛樂、社會事務以及人們日常生活的中心角色。那些直接或通過教學從事設計和開發軟件系統的人員,有著極大的機會既可從事善舉也可從事惡行,同時還能影響或使得他人做同樣的事情。為盡可能保證這種力量用于有益的目的,軟件工程師必須要求他們自己所進行的軟件設計和開發是有益的,所從事的是受人尊敬的職業。
軟件工程從業人員的業務素質和職業道德規范對順利高效地完成軟件開發過程和管理過程有重要的影響。和其他工程人員一樣,軟件工程人員必須擔負許多責任。軟件工程人員的工作是在法律和社會認可的框架內完成的。軟件工程人員要想受人尊敬,其行為就必須合乎道德,必須有責任感。軟件工程人員必須堅持誠實正直的行為準則,這是不言而喻的。他們不能用掌握的知識和技能做不誠實的事情,更不能給軟件工程行業抹黑。然而,在有些方面,某些行為沒有法律加以規范,只能靠職業道德來約束,這種約束是軟弱無力的。包括:
1.保密
工程人員必須嚴格保守雇主或客戶的機密,而不管是否簽署了保密協議。
2.工作能力
工程人員應該實事求是地表述自己的工作能力,不應有意接受超出自己能力的工作。
3.知識產權
工程人員應當知曉有關專利權、著作權等知識產權的地方法律,必須謹慎行事,確保雇主和客戶的知識產權受到保護。
4.計算機濫用
軟件工程人員不應運用自己的技能濫用計算機,如通過網絡竊取別人個人隱私信息等。
1.6.1 軟件工程師的業務素質
軟件工程師應該具備什么業務素質,才算勝任工作呢?軟件工程師的基本業務素質包括如下八條:
(1)熱愛軟件工程事業,對軟件開發、軟件實施、軟件管理或軟件維護等工作感興趣。因為喜歡才會產生興趣,而興趣就是動力,動力十足就不會疲勞與厭倦。
(2)至少要熟練掌握兩種以上的編程語言,能編寫規范的源程序。
(3)熟悉問題求解的數據結構或數據庫,即數據建模。數據結構適合于系統軟件、工具軟件的建模,數據庫應用于管理信息系統軟件建模。
(4)有良好的文檔書寫習慣,真正理解軟件是“知識、程序、數據和文檔”的集合,掌握符合國際標準規范的文檔撰寫方法,以便國際軟件工程師之間互通交流。
(5)在軟件工程技術上與時俱進,掌握主流的軟件開發工具及環境,如各種CASE工具和軟件配置管理工具等。
(6)努力跟蹤所在行業領域知識,不斷適應客戶需求的變化。因為任何軟件企業,都不可能面向許多行業,而只能面向一兩個行業,所以必須掌握這些行業領域的最新業務知識。
(7)在技術或管理上不斷總結經驗,吸取教訓,做到每年都有所進步。
(8)在業務工作中提倡與遵守團隊精神,反對個人英雄主義。
以上八條是一個整體,對于不同的人、不同的崗位及不同的軟件企業,可能各自有所側重。
1.6.2 軟件工程師的職業道德規范
什么樣的人才能成為出色的軟件工程師呢?他們要遵守軟件開發規范,要有詩人的激情,藝術家的靈感,孩童的好奇心,要有團隊合作精神,要能忍耐寂寞,要有很強的自我控制能力,要有溫情的性格,要有耐心細膩的作風,要喜歡軟件、熱愛軟件。此外,軟件工程師還特別肩負著社會責任,所以更要有良好的職業道德的約束。
軟件工程師的職業道德規范有如下八條:
(1)首先必須做一位遵紀守法的公民。
(2)做事認真負責,一絲不茍,每一條語句都經過周密思考。
(3)再忙再累也不會走捷徑,對自己拿出手的東西絕不馬虎。
(4)不會給合作方造成麻煩。
(5)看得見、看不見都會做到更好,自我控制已經形成習慣、成為風格。
(6)永遠在學新東西,讓自己不斷進步。
(7)善于吸取教訓,勇于承擔責任。
(8)有聰明才智,對軟件要有悟性。
如果讀者正在從事編程工作,遵守規范、認真負責、耐心細致就是最基本的職業要求。
如果讀者正在從事項目管理,就要統一規劃,全面考慮,心胸寬廣,心地善良,頭腦冷靜,因為心靜才能發現問題。否則,遇到開發和測試問題就會越改越亂,甚至跟測試人員發生沖突。要知道,軟件設計是不可輕易改動的,軟件代碼打補丁是不可取的。
如果讀者正在從事高層的系統分析工作,就更要堅定信念,不怕麻煩,從全局到細節都要考慮周全,像法律文件一樣滴水不漏,不然軟件產品就會漏洞百出,最后要么報廢,要么補丁摞補丁。
一大批具有良好職業道德水平的軟件工程管理人員、設計人員、編程人員、測試人員、實施人員和維護人員,才是發展和振興民族軟件產業的可靠保障。
1.6.3 軟件工程師職業實踐的準則
(1)自覺遵守公民道德規范標準和中國軟件行業基本公約。
(2)講誠信,堅決反對各種弄虛作假現象,不承接自己能力尚難以勝任的任務,對已經承諾的事,要保證做到,在情況變化和有特殊原因實在難以做到時,應及早向當事人報告說明。忠實做好各種作業記錄,不隱瞞、不虛構,對提交的軟件產品功能,在有關文檔上不作夸大不實的說明。
(3)講團結、講合作,有良好的團隊協作精神,善于溝通和交流。在業務討論上,積極坦率地發表自己的觀點和意見,對理解不清楚和有疑問的地方,決不放過。在做同行評審和技術審核時,實事求是地反映和指出問題,對事不對人,要自覺協助項目經理做好項目管理,積極提出工作改進建議。
(4)有良好的知識產權保護觀念,自覺抵制各種違反知識產權保護的行為,不購買和使用盜版軟件,不參與侵犯知識產權的活動,在自己開發的產品中,不復制/復用未取得使用許可的他方內容。
(5)樹立正確的技能觀,努力提高自己的技能,為社會和人民造福,絕不利用自己的技能從事危害公眾利益的活動,包括構造虛假信息和不良內容、制造計算機病毒、參與盜版活動、非法解密存取、黑客行為和攻擊網站等,提倡健康的網絡道德準則和交流活動。對于利用自己的計算機知識、積極參與社會科學普及和應用推廣活動,應大力鼓勵和提倡。
(6)認真履行簽訂的合同和協議,有良好的責任感。不能以追求個人利益為目的而做出如下行為:不顧協議與合同規定,不顧對原先已承諾的項目開發任務的影響,甚至以攜帶原企業的資料提高自己的身價。自覺遵守保密規定,不隨意向他人泄露工作和客戶機密。
(7)軟件業是一個不斷變化和不斷創新的行業,面對飛速發展的技術,能自覺跟蹤技術發展動態,積極參與各種技術交流、技術培訓和繼續教育活動,不斷改進和提高自己的技能,自覺參與項目管理和軟件過程改進活動,注意對個人軟件過程活動的監控和管理,積累工程數據,研究和不斷改進自己的軟件生產率和質量,并積極參與發展高效的團隊軟件過程的管理,使各項軟件產出都能達到國際和國家標準與規范。
(8)努力提高自己的技術和職業道德素質,力爭做到與國際接軌,提交的軟件和文檔資料,技術上符合國際和國家的有關標準;在職業道德規范上,也符合國際軟件工程職業道德規范標準。
(9)有良好的編碼能力,軟件工程師的一個重要職責,是把用戶的需求功能用某種計算機語言加以實現。編碼能力直接決定了項目開發的效率,這就要求軟件工程師至少精通一兩門編程語言,熟悉它們的基本語法、技術特點和API(應用程序接口)。
(10)信息是以數據為中心的,因此與數據庫的交互在所有軟件中都是必不可少的,了解數據庫操作和編程是軟件工程師需要具備的基本素質之一。
(11)程序世界的主導語言是英文,編寫程序開發文檔和開發工具幫助文件離不開英文,了解業界的最新動向、閱讀技術文章也離不開英文,與世界各地編程高手交流、發布幫助請求同樣離不開英文。作為軟件工程師,具有一定的英語基礎對于提升自身的學習和工作能力極有幫助。
1.6.4 軟件工程師職業實踐的國際標準
軟件工程職業道德規范和實踐要求5.2版
IEEE-CS和ACM軟件工程道德和職業實踐聯合工作組推薦
經IEEE-CS和ACM批準定為講授和實踐軟件工程的標準
簡明版
序言
本規范的簡明版以更高的摘要形式歸納了規范的主要意向,完整版所包括的條款則給出了范例和細節,說明這些意向會如何改變軟件工程專業人員的行為。沒有這些意向,細節會變得過于法律化和煩瑣;而沒有細節補充,意向又會顯得高調而空洞,因此意向和細節使規范構成一個整體。
軟件工程師應履行其實踐承諾,使軟件的需求分析、規格說明、設計、開發、測試和維護成為一項有益和受人尊敬的職業。為實現他們對公眾健康、安全和利益的承諾目標,軟件工程師,應當堅持以下八項原則:
(1)公眾——軟件工程師應當以公眾利益為目標。
(2)客戶和雇主——在保持與公眾利益一致的原則下,軟件工程師應注意滿足客戶和雇主的最高利益。
(3)產品——軟件工程師應當確保他們的產品和相關的改進符合最高的專業標準。
(4)判斷——軟件工程師應當維護他們職業判斷的完整性和獨立性。
(5)管理——軟件工程的經理和領導人員應贊成和促進對軟件開發和維護合乎道德規范的管理。
(6)專業——在與公眾利益一致的原則下,軟件工程師應當推進其專業的完整性和聲譽。
(7)同行——軟件工程師對其同行應持平等、互助和支持的態度。
(8)自我——軟件工程師應當參與終生職業實踐的學習,并促進合乎道德的職業實踐方法。