1 迴歸測試git
教材中2.1.3寫到github
在3.1.5版本, 模塊A的編號爲125的測試用例是經過了的, 可是在新的版本3.1.6上, 這個測試用例卻失敗了, 這就是一個倒退。 工程師們應該在新版本上運行全部已經過的測試樣例設計模式
我有一點疑問, 新的版本的軟件可能在新加的部分有缺陷, 也多是由於破壞了之前的功能, 或者是兩者連接起來出了問題, 而要檢測這樣的bug須要跑全部的測試, 這樣是否會有很大的時間成本開銷? 是否有好的方式可以把新增的代碼單獨測試? 以及用更通用的測試去驗證流程的正確性?xcode
2 如何理解軟件的泛化?緩存
在教材3.2中寫到架構
過早擴大化\泛化app
請問如何理解泛化? 爲何過早泛化不是很好的事情?svn
3 瀑布模型和生魚片模型函數
教材 5.3.2中提到工具
生魚片模型是瀑布模型的變形
請問生魚片模型和瀑布模型有什麼不一樣? 各自有什麼優缺點?
4 認知阻力
教材中12.2提到
假若認知阻力大, 學習曲線就會比較陡; 可是通過學習和練習, 若是用戶適應了新的認知模式, 工做效率就會有較大的提升
我認爲這並不徹底正確, 有些時候, 認知阻力大是由於軟件團隊沒有考慮徹底用戶的使用簡便性, 以及給出清晰的說明文檔, 因此形成了很大的認知阻力。
好比LaTeX在安裝, 編譯過程當中的一些報錯和版本有很大關係, 以及缺乏像git那樣有interactive的教程, 若是增長這些內容的話, 軟件的認知阻力大大減小。
再好比colmap和vsfm都是三維重建中很是優秀的軟件, 可是colmap用的會簡單不少, 由於colmap給出了詳細的教程和文檔來適應不一樣的人羣。
在軟件開發的過程當中, 我認爲要考慮不一樣用戶的認知能力和需求, 不能一味讓用戶適用本身的認知模式。
5 驗收測試和構建驗證測試
請問構建驗證測試和通常的驗收測試有什麼區別。
6 敏捷開發
書中6.5提到
咱們須要敏捷的開發流程, 可是不須要衝忙或者忙亂的開發流程
請問在敏捷開發中, 什麼樣的設計模式和軟件架構可以適應敏捷開發的流程? 在招聘中, 如何判斷一個成員是否可以勝任敏捷開發的工做?
分享一個關於科學寫做神器tex的故事
高德納在寫完TAOCP第三卷的時候, 以爲排版技術太粗糙, 因而開始開發tex, 原本覺得半年時間就能開發完, 以後能夠用方便的工具寫做, 沒想到用了十年時間。 tex的版本號碼也很是有趣, 每次在小數點後面加入一個新數字, 高德納曾經表示等本身過世後把版本改成\(\pi\) 那時任何漏洞都被當作程序的功能。
1.git
2.Bugzilla
3.trac
4.github
5.apple xcode
6.svn
使用git進行版本管理十分方便,我嘗試瞭如下功能
工做區到index \\ 從工做區添加到index(staged, cache), 或者開始追蹤文件 Git add file \\ 從index裏面取消對文件的追蹤 Git rm —cached Git rm -f file \\ 從工做區和Index都刪除 \\ 從index裏取出文件而且放回到工做區 Git checkout —- file index到版本庫 \\ 把Index的文件提交到版本庫 Git commit -m 「message「 \\ 把index文件提交到版本庫而且不建立新的commit, 自動和上一個commit合併 Git commit —amend \\ 把版本庫的文件取出放到index, 同時版本庫也回退 Git reset commit ID \\ 某些把版本庫裏的取出放到Index Git reset [commit ID] file \\ 查看以前全部commit, 重返將來 Git reflog \\ git reset 查看不一樣點 \\查看變化 還沒有緩存的改動 Git diff \\已經緩存的改動 Git diff —cached \\查看已經緩存和沒有緩存的全部改動, HEAD能夠替換成其餘的commi id Git dfiff HEAD \\文件移動 同時修改工做區和暫存區的某個文件名稱和位置 Git mv 遠程操做 \\添加remote Git remote add [name] [url] \\ 從遠程取回 Git fetch [remote] [branch] \\ 查看改動fetch回來的內容和本地的有什麼差異 git log -p FETCH_HEAD \\ 當前的三個工做目錄與遠程的分支合併 Git merge \\ pull操做 Git pull = git fetch + git merge \\ 查看remote的url Git remote -v \\ 重命名 Git remote rename [ori_name] [new_name] \\ 刪除 Git remote rm [remote name] 分支管理 \\建立分支 Git branch [branch name] \\切換分支 Git checkout [branch name] \\刪除分支 Git branch -d [branch name] \\將分支的commit合併到當前分支 Git merge [branch name] 若是merge失敗的話, git會把成功的放到index, 不成功的放到工做區, 而後本身修改文件後再add, 再commit 歷史查看 \\ 查看所有commit Git log \\ 簡潔版本 Git log --oneline \\ 分支合併拓撲圖 Git log —-oneline —graph \\ 逆向查看 Git log —reverse —oneline \\ 查看指定用戶的日誌 Git log —author GIT標籤 \\ 到了項目的歷史性時刻, 用git tag打一個標籤 Git tag -a [tag name] \\ 若是忘了打標籤, 能夠追加的 Git tag -a [tag name] [commit id] \\ 查看全部標籤 Git tag \\ 刪除標籤 Git tag -d [tag name] \\ 查看標籤裏的版本修改的內容 Git show [tag name] \\ push tag Git push [remote name] [tag name]
用Xcode調試有bug的代碼很方便
好比
打斷點
查看變量
以及查看內存圖