根據(jù)訪談素材,整理出以下內(nèi)容:
Q:您認(rèn)為工業(yè)軟件與傳統(tǒng)信息化軟件研發(fā)的主要區(qū)別在哪里?
A:傳統(tǒng)的信息化軟件以處理流程和業(yè)務(wù)邏輯為主,突出特點(diǎn)當(dāng)業(yè)務(wù)需求轉(zhuǎn)化為軟件處理流程事件和任務(wù)的單元時(shí),如果相應(yīng)的資源配置充分(例如人力、技術(shù)路線、組織架構(gòu)等),軟件過程和成果質(zhì)量就是可控的。
而工業(yè)軟件最顯著的特點(diǎn)是其自身存在不可控的地方,主要原因有以下3 方面:算法的不可控性、技術(shù)的不可控性及軟件工程的不可控性。
算法不可控比較容易理解,不是說(shuō)有了客觀的形式化表達(dá)(數(shù)學(xué)表達(dá)),就一定能轉(zhuǎn)化成有效或有價(jià)值的軟件算法,這是算法的不可控。
技術(shù)的不可控性主要體現(xiàn)為工業(yè)軟件是軟件技術(shù)的綜合,如涉及較為復(fù)雜的圖形技術(shù),其不同于其他軟件的圖形技術(shù)(比如:游戲中的圖形處理),而是要與具體算法和具體功能相匹配、相適應(yīng)。
軟件工程方面存在的不可控,主要體現(xiàn)在過程溝通。工業(yè)軟件涉及工業(yè)知識(shí)、學(xué)科知識(shí)與軟件知識(shí)的綜合,研發(fā)人員包括計(jì)算機(jī)專業(yè)和其他專業(yè)學(xué)科,例如:物理、數(shù)學(xué)等等,這就導(dǎo)致軟件過程中存在很大的溝通問題。比如,具備深厚軟件功底的人,讓他理解物理、機(jī)械原理就很難,而學(xué)科人員可能對(duì)軟件的認(rèn)識(shí)又存在很大偏差,因?yàn)樗膶W(xué)習(xí)體系里沒有這方面知識(shí),也即在軟件工程中存在的最大問題就是缺乏溝通的可理解性。
Q:工業(yè)軟件是典型的多學(xué)科和跨學(xué)科技術(shù)產(chǎn)物,你們?cè)趨f(xié)調(diào)不同專業(yè)背景人員協(xié)同工作方面有哪些措施呢?
A:與傳統(tǒng)軟件開發(fā)相比,工業(yè)軟件的開發(fā)有更長(zhǎng)的周期和積累過程,這是由不同專業(yè)技能的人組合工作時(shí)技能和溝通方面的鴻溝所造成的。
一種解決方案是“小組進(jìn)化”模式,即按照專業(yè)劃分研究小組,通過計(jì)劃路徑不斷進(jìn)化從而奠定技術(shù)基座,比如圖形圖像處理、基本的軟件架構(gòu)、開發(fā)語(yǔ)言種類、學(xué)科專業(yè)如結(jié)構(gòu)或者流體。單個(gè)研究小組只關(guān)注自己的領(lǐng)域,并給予較長(zhǎng)的訓(xùn)練和成長(zhǎng)周期,就小組內(nèi)部而言,溝通這一塊就基本可控了。
具體而言,研究小組的整體績(jī)效不以成果為考核目標(biāo),而是選定方向上的能力提升為主要目標(biāo),實(shí)現(xiàn)內(nèi)部暢通和可控。而在產(chǎn)品級(jí)上則跟據(jù)需要的技術(shù)組合小組,溝通的問題落實(shí)在小組上而不是個(gè)人上,這樣產(chǎn)品級(jí)的溝通也相對(duì)可控。這樣,在基于工程需求、工程場(chǎng)景定義相應(yīng)產(chǎn)品時(shí),相應(yīng)的儲(chǔ)備資源就能夠形成一個(gè)相對(duì)比較好的合力。在產(chǎn)品定義及開發(fā)時(shí)就可以按照標(biāo)準(zhǔn)軟件工程進(jìn)行計(jì)劃和任務(wù)。
此外,在研究小組內(nèi)部要做好資源的冗余設(shè)計(jì),雖然會(huì)增加成本,但能將不可控因素變成可控。這種模式也存在問題,即將矛盾和風(fēng)險(xiǎn)向上層傳導(dǎo),例如小組間需要管理層協(xié)調(diào),產(chǎn)品定義需要管理層掌控,小組的新設(shè)和退出需要管理層判定等等,當(dāng)然這種情況符合工業(yè)軟件研發(fā)特點(diǎn),但對(duì)于傳統(tǒng)軟件行業(yè)可能不是最佳實(shí)踐。
Q:公司人員變動(dòng),尤其是工業(yè)軟件研發(fā)人員變動(dòng)所帶來(lái)的影響是很大的,你們?nèi)绾喂芾砉救藛T變動(dòng)呢?
A:對(duì)于公司而言,人員變動(dòng)都會(huì)產(chǎn)生負(fù)面影響,無(wú)論是工程專業(yè)人員變動(dòng)還是軟件開發(fā)人員變動(dòng),都會(huì)導(dǎo)致交接和繼承問題,只是在工業(yè)軟件中更明顯。軟件本身的唯一生產(chǎn)者是人,這是產(chǎn)生不確定因素的根本原因。對(duì)于傳統(tǒng)軟件中人員變動(dòng)的交接成本是可控的(極端下對(duì)業(yè)務(wù)重新開發(fā))。
工業(yè)軟件的人員變動(dòng)就可能會(huì)產(chǎn)生嚴(yán)重問題,如果人員變化造成接續(xù)人員很難理解前人的思想,尤其當(dāng)涉及算法這一部分問題時(shí)則會(huì)更為嚴(yán)重。例如,算法思想和實(shí)現(xiàn)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)思想、圖形技術(shù)路線和功能符號(hào)性等這些就會(huì)存在嚴(yán)重問題。
人員變動(dòng)引發(fā)的風(fēng)險(xiǎn)既不可避免,也不存在最佳規(guī)避模式。行之有效的實(shí)踐就是拿成本置換風(fēng)險(xiǎn),盡最大可能將工業(yè)軟件的不可控因素變成可控,減少整體風(fēng)險(xiǎn)。
對(duì)于軟件方面,可供應(yīng)對(duì)的方式是建好研究小組梯隊(duì),增加小組中人員冗余;對(duì)于工程人員方面,越是底層和基本算法越要適當(dāng)引入商業(yè)合作,與具備相應(yīng)能力的穩(wěn)定科研機(jī)構(gòu)形成供給關(guān)系,而不是依靠自身力量發(fā)展。本質(zhì)上,這是在將人員變動(dòng)的風(fēng)險(xiǎn)進(jìn)行分?jǐn)偅布磸V泛開展合作。
Q:對(duì)于第三方機(jī)構(gòu)(例如高校)提交的代碼是否會(huì)進(jìn)行重寫?
A:這個(gè)問題需要個(gè)體評(píng)判,一般情況下對(duì)于高校科研人員提交的算法,重點(diǎn)修改側(cè)重于性能提升,而非功能完善,因?yàn)楣δ苁怯杉s定時(shí)規(guī)定的。性能提升,比如單機(jī)環(huán)境需要修改為并行環(huán)境,以及考慮環(huán)境的遷移性、操作系統(tǒng)的兼容性。
Q:能否談?wù)勓芯繄F(tuán)隊(duì)的組織及不同研究小組之間的溝通方式?
A:在研發(fā)初始階段,一個(gè)研究小組只會(huì)安排兩個(gè)人,但是會(huì)賦予他們一項(xiàng)權(quán)利,隨著自己研究的深入,可自主吸納更多的人進(jìn)去,相當(dāng)于獎(jiǎng)懲制度。某個(gè)研究小組的成果如果在實(shí)際工程應(yīng)用中效果更好,就可以吸納更多的人進(jìn)去。相反,如果該研究方向在后續(xù)實(shí)踐過程中沒有什么貢獻(xiàn),可能該研究小組就會(huì)被合并到其他小組。
同一個(gè)研究小組內(nèi)部研究?jī)?nèi)容相近,在相近的工作環(huán)境中工作,比如說(shuō)至少是一個(gè)公司的人,很有可能還是一個(gè)辦公室的人,因此溝通基本不存在問題。如果是不同的研究小組,比如說(shuō)開發(fā)CAD 和CAE 圖形處理的人員,通常是兩個(gè)不同的研究小組,因?yàn)樗麄兊幕A(chǔ)渲染算法不同,但是由于都是圖形學(xué)問題,所以相互還是可以溝通的。
對(duì)于專業(yè)差別較大的研究小組,其實(shí)不需要刻意安排溝通,在項(xiàng)目實(shí)施過程中去溝通即可。一是項(xiàng)目實(shí)施過程中通常都是相對(duì)比較淺顯的問題,如果能夠積極加以討論,溝通問題自然會(huì)被解決;二是復(fù)雜溝通問題由管理層協(xié)調(diào),問題向上傳導(dǎo)。其實(shí)就是建立一種機(jī)制,給予最基礎(chǔ)資源讓各自有足夠的自由發(fā)揮空間,這樣團(tuán)隊(duì)自然如同進(jìn)化一樣,價(jià)值低的方向會(huì)逐漸被淘汰,價(jià)值高的方向就會(huì)不斷地滾動(dòng)成長(zhǎng)。這種模式本質(zhì)上還是為了應(yīng)對(duì)工業(yè)軟件開發(fā)中更復(fù)雜的不可控性問題。
Q:您認(rèn)為CAE軟件開發(fā)人員需要哪些專業(yè)背景?
A:CAE 軟件研發(fā)除軟件專業(yè)人員外,還需要力學(xué)背景人員。一般情況下,一位新員工,尤其是應(yīng)屆畢業(yè)生,進(jìn)入公司后還有一個(gè)相對(duì)長(zhǎng)的學(xué)習(xí)過程,很難在一開始就決定他們會(huì)朝哪個(gè)方向發(fā)展,新員工可能最后成長(zhǎng)成為一名銷售,或者是一名程序員。也就是說(shuō),公司內(nèi)部有一個(gè)再培養(yǎng)過程,但是招聘都需要有一定基礎(chǔ)背景,即純粹的軟件工程或者力學(xué)背景。
Q:CAE 軟件開發(fā)過程中,對(duì)于架構(gòu)(architecture)和框架(framework)是如何定義的?
A:架構(gòu)通常指一整套管理模式,比如產(chǎn)品定義、成本、團(tuán)隊(duì)組織和溝通。因此,架構(gòu)通常有兩個(gè)基本目標(biāo):降低成本和解決溝通問題。降低成本是指在成本可控的情況下,要盡量壓縮團(tuán)隊(duì)規(guī)模,在質(zhì)量可控的情況下,盡量壓縮工期。
以下十條原則可用于降低成本:明確業(yè)務(wù)需求、任務(wù)優(yōu)先排序、消除過度設(shè)計(jì)、最小可行性定義、引入敏捷方法、具備自動(dòng)測(cè)試能力、統(tǒng)一生命周期管理、促進(jìn)團(tuán)隊(duì)協(xié)作、變更響應(yīng)機(jī)制、強(qiáng)化復(fù)用代碼。一個(gè)團(tuán)隊(duì)怎么建立起有效的溝通方式,則沒有確定答案,需要不斷地嘗試,從而確定適合的溝通方式。
框架則是面向系統(tǒng)的具體規(guī)范,也有兩個(gè)目標(biāo):第一,明確接口,設(shè)定好技術(shù)規(guī)范;第二,明確測(cè)量,重點(diǎn)在于最終產(chǎn)品的質(zhì)量而不是單一模塊的質(zhì)量。
Q:CAE軟件開發(fā)過程中,遇到的痛點(diǎn)問題有哪些呢?
A:一般認(rèn)為CAE 軟件的痛點(diǎn)在算法上,但個(gè)人認(rèn)為CAE 軟件長(zhǎng)期迭代中的主要痛點(diǎn)還是數(shù)據(jù)結(jié)構(gòu)的問題。
數(shù)據(jù)結(jié)構(gòu)在軟件中不僅僅是對(duì)外數(shù)據(jù)接口,更重要的是需要定義CAE 內(nèi)部的大量功能和非功能需求,例如存取特性、運(yùn)行效率、軟硬件適配、兼容、資源分配、業(yè)務(wù)邏輯優(yōu)化等方方面面的問題。數(shù)據(jù)結(jié)構(gòu)確定之后,其變動(dòng)越小越好,因?yàn)橐坏┳儎?dòng),可能影響到各種解釋器、數(shù)據(jù)傳遞、數(shù)據(jù)變量的規(guī)格等,所引發(fā)的問題可能會(huì)非常大。
核心問題是:如果邏輯有問題能很容易被發(fā)現(xiàn),而數(shù)據(jù)結(jié)構(gòu)問題因?yàn)閭鞑ヂ窂礁蓴_,會(huì)很難定位和修正。這點(diǎn)在工業(yè)軟件中尤為突出,例如數(shù)據(jù)精度設(shè)計(jì)偏差可能導(dǎo)致頻繁的數(shù)據(jù)轉(zhuǎn)換中錯(cuò)誤不斷累積。例如,特定數(shù)據(jù)類型是雙精度的浮點(diǎn)型還是整型,或者字符串類型,從最初始明確下來(lái)可能在整個(gè)軟件生命周期中都不會(huì)再次定義。
Q:CAE 軟件開發(fā)過程中,文檔要求、質(zhì)量規(guī)范及支撐工具情況是怎么樣的?您能談?wù)剢幔?/p>
A:一般情況下不會(huì)刻意要求更多的文檔,而是更關(guān)注記錄思路演變,這與CAE 軟件特性相關(guān),即開發(fā)的過程和目標(biāo)存在不確定性。
CAE 軟件目標(biāo)的不確定性有很大原因是需求實(shí)現(xiàn)存在不同路徑,路徑差異可能還非常大。為此,一般將文檔分成兩類:一類是業(yè)務(wù)人員,要求他們?cè)敿?xì)地描述其需求;第二類是開發(fā)人員,前期測(cè)試不需要文檔支撐,但是要求在其產(chǎn)生成果時(shí)做詳細(xì)總結(jié)。
其他場(chǎng)景與通用軟件開發(fā)相同,代碼中需要注釋的地方要求有注釋。
CAE 軟件開發(fā)質(zhì)量保證。這個(gè)問題因人而異,比較復(fù)雜,舉兩個(gè)例子:建立程序封裝界面的可測(cè)試框架作為強(qiáng)制開發(fā)技術(shù)規(guī)范;使用任何語(yǔ)言都要求嚴(yán)格的代碼形式化檢查。
CAE 軟件開發(fā)支撐工具。主要選用合適的版本控制機(jī)制和工具,再配合適用的問題追蹤系統(tǒng)。
Q:關(guān)于工業(yè)軟件人才培養(yǎng),您有什么好的建議?
A:對(duì)于高校相關(guān)專業(yè)而言,應(yīng)該將CAE 軟件主流編程語(yǔ)言納入必修課,例如C 和C++,并且貫穿學(xué)生的整個(gè)學(xué)習(xí)過程,至少?gòu)拇蠖_始,每學(xué)期要求用C++語(yǔ)言去完成一個(gè)項(xiàng)目。當(dāng)前整個(gè)培養(yǎng)體系中對(duì)C++人才的培養(yǎng)遠(yuǎn)遠(yuǎn)不夠。
公司簡(jiǎn)介:上海索辰信息科技有限公司成立于2006 年,總部位于上海,公司人員70%為研發(fā)與技術(shù)工程師。始終倡導(dǎo)與貫徹軟件自主研發(fā),至今已擁有眾多國(guó)際/國(guó)內(nèi)領(lǐng)先的軟件核心技術(shù),獲得自主軟件著作權(quán)30 余項(xiàng),通過ISO9001 和國(guó)軍標(biāo)9001B 質(zhì)量管理體系認(rèn)證。遵照“理性創(chuàng)新、和衷共濟(jì)、互利共贏”的共同行為準(zhǔn)則,基于全球最佳實(shí)踐和領(lǐng)先技術(shù),為客戶提供產(chǎn)品全生命周期協(xié)同研制系統(tǒng)軟硬件、SAAS 服務(wù)。產(chǎn)品和服務(wù)覆蓋研發(fā)前沿工程、數(shù)字化設(shè)計(jì)及智能制造,客戶廣泛分布在重型機(jī)械、地面交通、電子、建筑、航空、航天、兵器、船舶、光電、動(dòng)力設(shè)備等行業(yè)。