軟件開發

軟件開發係軟件工程嘅範疇，根據用戶去開發軟件系統嘅過程，涉及到程式設計、軟件文件、軟件測試、除Bug等過程。

可行性研究

可行性研究係指諗清楚啲軟件嘅需求之後，首先決定個項目係咪真係有得搞：好多時，啲客對於電腦軟件方面嘅嘢都唔係咁熟，會提出一啲冇可能達得到嘅要求；又或者係位軟件工程師想整一啲有返咁上下嶄新嘅功能，同時又因為呢啲功能嶄新得滯，唔肯定係咪真係有可能整到出嚟；可行性研究就係指
攞住手上嗰啲已知嘅軟件需求，
做一大輪嘅分析，再決定隻軟件係咪真係有可能整得成。
可行性研究嘅過程會同時用到技術同經濟方面嘅考量－一個軟件開發計劃如果過唔到可行性研究，可以係因為現有嘅軟件技術做唔到啲需求，亦都可以係因為現時嘅技術係就係做到啲需求，但要用嘅成本極高，負責做呢個開發計劃嘅單位唔肯揼咁多本去做：
「要完全徹底噉測試嗮所有可能性」係冇可能嘅：測試當中搵到錯處能夠證明隻軟件有錯，但測試搵唔到錯處唔能夠證明隻軟件完美無誤；現實應用上嘅軟件都會頗為複雜，閒閒哋會有成幾萬行源碼，所以「隻軟件行嗰陣有可能處於嘅狀態」呢個數值極之大，現實世界嘅軟件工程師唔會有咁多時間試嗮呢啲可能情況，做大量嘅測試都頂櫳只係能夠減低隻軟件有意外甩漏嘅機率。軟件工程師通常淨係會揀最有可能出現嗰啲情況，再試吓呢啲情況下會唔會有 bug，如果冇，佢哋就會假設隻軟件喺其餘嘅情況下都唔會有問題。歸納。
要盡早做測試：軟件工程師通常會有咁早得咁早開始做測試，喺寫隻軟件嘅源碼嗰時就經已喺度做啲小型嘅測試，行吓隻軟件啲細部份睇吓有冇問題；一般認為，bug 呢家嘢係愈早發現愈好嘅，遲發現嘅 bug 好多時都會搞到工程師損失慘重。
錯誤聚埋一齊：有啲軟件工程師指「80% 嘅錯處都係由 20% 嘅模塊嗰度嚟嘅」；現實嘅經驗表明咗，好多時一隻軟件嘅錯誤都係源自其中一兩個部份嘅錯，而同時淨低嗰啲部份查實冚唪唥都冇問題。
農藥悖論：重複噉用同一個個案嚟做測試係唔會搵到新嘅 bug 嘅，做測試嗰陣有必要用一大堆唔同樣嘅個案嚟做測試，先至可以全面噉搵到唔同嘅 bug。
無錯謬論：如果一隻軟件係 99% 冇 bug 但滿足唔到啲功能性需求，噉隻軟件係完全冇用嘅；「測試冇 bug」只不過係一隻軟件要出街嘅必要條件，唔係出得街嘅充分條件。
... 呀噉。

軟件工程

攷

軟件工程