1、五個問題:linux
1.軟件開發時,好比web2.0的rest風格架構,先後端徹底分離,然而其交接時,極可能出現問題,而且由於徹底分離,因此有可能出現開發不一樣步的問題,先後端的交互耦合,開發同步的問題該如何解決。git
2.數據操做,和邏輯操做,實體操做等如何分離解耦。github
3.若是有效果的分層解耦,三層框架是什麼。web
4.過分解耦,或者大規模模塊化開發時遇到的依賴冗餘問題如何解決。數據庫
5.如何在開發成本和收益之間權衡需求,如何判斷剛性需求,僞需求。apache
6.如何在開發過程當中設計框架和預留接口使得迭代更加高效,維護更加輕鬆。windows
2、請問 「軟件」 和 「軟件工程」 這些詞彙是如何出現的 - 什麼時候、何地、何人?後端
軟件在阿波羅計劃計劃的初期還被看成初初學步的孩子通常對待,徹底不像其餘工程學科;例如像硬件工程那樣的受到重視,並且在你們的眼光中他就像是藝術、魔術通常,而不是一門科學。
一直以來Margaret Hamilton堅信這項發明流着藝術與科學的血液,雖然當時不多人是這麼想。所以,她致力於爲軟件以及那些發明者爭取應有的正統性與尊重,因此她開始使用「軟件工程」這樣的字眼來將之與硬件還有其餘工程學類作出區別。
當她第一次使用這樣的語詞時,你們都以爲有些可笑,甚至有很長一段時間被看成笑話。他們常笑她極端的想法。但最終,軟件學科確實獲得了應有的尊重!
安全
3、代碼版本管理軟件:服務器
1.Visual Source Safe( 簡稱 VSS )
易學易用是 VSS 的強項, VSS 採用標準的 windows 操做界面,只要對微軟的產品熟悉,就能很快上手。 VSS 的安裝和配置很是簡單,對於該產品,不須要外部的培訓(能夠爲公司省去一筆不菲的費用)。只要參考微軟完備的隨機文檔,就能夠很快的用到實際的工程當中。VSS 的配置管理的功能比較基本,提供文件的版本跟蹤功能,對於 build 和基線的管理, VSS 的打標籤的功能能夠提供支持。 VSS 提供 share (共享 ) 、 branch( 分支)和合並( merge) 的功能,對於團隊的開發進行支持。 VSS 不提供對流程的管理功能,如對變動的流程進行控制。 VSS 不能提供對異地團隊開發的支持。此外 VSS 只能在 windows 平臺上運行,不能運行在其餘操做系統上。VSS 的安全性不高,對於 VSS 的用戶,能夠在文件夾上設置不可讀,可讀,可讀 / 寫 , 可徹底控制四級權限。但因爲 VSS 的文件夾是要徹底共享給用戶後,用戶才能進入,因此用戶對 VSS 的文件夾均可以刪除。這一點也是 VSS 的一個比較大的缺點。VSS 沒有采用對許可證進行收費的方式,只要安裝了 VSS ,對用戶的數目是沒有限制的。所以使用 VSS 的費用是較低的。
2.SVN(Subversion) - CVS(Concurrent Version System)的替代和升級版本
Subversion支持linux和windows,更可能是安裝在linux下。svn服務器有2種運行方式:獨立服務器和藉助apache。2種方式各有利弊。目前業界評價的SVN易用性正在提升。它的客戶機 / 服務器存取方法使得開發者能夠從任何因特網的接入點存取最新的代碼;它的無限制的版本管理檢出 (checkout :注 1)的模式避免了一般的由於排它檢出模式而引發的人工衝突;它的客戶端工具能夠在絕大多數的平臺上使用。一樣, SVN 也不提供對變動流程的自動管理功能。通常來講, SVN 的權限設置單一,沒法完成複雜的權限控制;可是 SVN 經過 SVN ROOT 目錄下的腳本,提供了相應功能擴充的接口,不但能夠完成精細的權限控制,還能完成更加個性化的功能。SVN 是開發源碼軟件,無需支付購買費用。一樣由於 SVN 是開發源碼軟件,沒有生產廠家爲其提供技術的支持。如發現問題,一般只能靠本身查找網上的資料進行解決。
3.ClearCase
ClearCase 的安裝和維護遠比 VSS 複雜,要成爲一個合格的 ClearCase 的系統管理員,須要接收專門的培訓。 ClearCase 提供命令行和圖形界面的操做方式,但從 ClearCase 的圖形界面不能實現命令行的全部功能。若是Unix/Linux服務器上安裝了Samba服務,能夠直接經過Windows下Clearcase的客戶端 直接訪問源代碼,相對比較簡單。ClearCase 提供 VSS, SVN所支持的功能,但不提供變動管理的功能。 Rational 另提供了 ClearQuest 工具提供對變動管理的功能,與 VSS不一樣, ClearCase 後臺的數據庫是專有的結構。 ClearCase 對於 windows 和 unix 平臺都提供支持。 ClearCase 經過多點複製支持多個服務器和多個點的可擴展性,並擅長設置複雜的開發過程。ClearCase 的權限設置功能與 SVN 相比, SVN 有獨立的安全管理機制, ClearCase 沒有專用的安全性管理機制,依賴於操做系統。要選用 ClearCase ,須要考慮的費用除購買 license 的費用外,還有必不可少的技術服務費用,沒有 Rational 公司的專門的技術服務,很難發揮出 ClearCase 的威力。如如今網上雖有 ClearCase 的破解軟件,但嘗試應用的公司大多失敗的緣故。另外,對於 web 訪問的支持,對於變動管理的支持功能都要另行購買相應的軟件。Rational 公司已被 IBM 公司收購,因此有可靠的售後服務保證。
4.git與svn的比較:
1)適用對象不一樣。 Git 適用於參與開源項目的開發者。 他們因爲水平高,更在意的是效率而不是易用性。Svn 則不一樣, 它適合普通的公司開發團隊。使用起來更加容易。
2)使用的場合不一樣。 Git 適用於經過Internet,有多個開發角色的單個項目開發, Svn 適合企業內部由項目經理統一協調的多個並行項目的開發。
3)權限管理策略不一樣。 Git 沒有嚴格的權限管理控制,只要有賬號,就能夠導出、導入代碼,甚至執行回退操做。 Svn 則有嚴格的權限管理, 能夠按組、按我的進行鍼對某個子目錄的權限控制。區分讀、寫權限。更嚴格的,不支持回退操做。保證代碼永遠能夠追蹤。
4)分支( branch )的使用範圍不同。 Git 中, 你只能針對整個倉庫做 branch, 並且一旦刪除,便沒法恢復。 而 svn 中, branch 能夠針對任何子目錄,它本質上是一個拷貝操做。 因此,能夠創建很是多、層次性的 branch, 而且,在不須要時將 其刪除,而之後須要時只要 checkout 老的 svn 版本就能夠了。
5 )基於第三點, Git 適用於單純的軟件項目,典型的就是一些開源項目,好比 Linux 內核、 busybox 等。相 反, Svn 擅長多項目管理。 好比,你能夠在一個 svn 倉庫中存放一個手機項目的 bsp/ 設計文檔 / 文件系統/ 應用程序 / 自動化編 譯腳本, 或者在一個 svn 中存放 5 款手機項目的文件系統。 git 中必須創建 n ( 項目數 )* m (組件數) 個倉庫。 Svn 中只須要最多 n 或者 m 個就能夠了。
6)Git 使用 128 位 ID 做爲版本號, 並且 checkout 時要註明是哪一個 branch, 而 svn 使用一個遞增的序 列號做爲全局惟一的版本號, 更加簡明易懂。雖然可使用 git tag 來創建一些文字化的別名,可是畢竟那只是針對特殊版本。
7)可跟蹤性,git 的典型開發過程爲: 創建分支,進行開發,提交到本地 master,刪除分支。這樣作的後果是之前 的修改 細節會丟失。 而在 svn 下作一樣的事情,不會丟失任何細節。 這裏是一個有趣的連接,代表了 git 下典型的工做方式:(以master爲核心,不斷建立新branch, 刪除舊branch):
8)局部更新,局部還原。SVN因爲是在每一個文件夾創建一個.svn文件夾來實現管理,因此能夠很簡單實現局部更新或者還原。假如你只但願更新 某些部分,則svn能夠很好實現。同時代碼寫錯了,同時能夠很好實現局部還原,固然git也能夠經過歷史版本還原,可是沒法簡單地實現局部還原。
比svn更快速的分支切換,由於分支都在本地。這使得git特別適合處理臨時需求,或者小實驗。
能夠在星巴克寫代碼的時候隨時提交,由於各版本快照(commit)都在本地
有一個全世界最大的開源社區——github,上面能夠看到各類優秀的各語言代碼,去官網語言列表看看才知道有那麼多語言,就跟奧運會開幕式才知道世界上有那麼多國家同樣
總之, 公司的開發團隊在進行復雜的多項目開發時, svn 是更好的選擇。