俞光回 軟體工程 chap8
匿名 / anonymous
==chap8== Verification: build product right? 驗證 看是否滿足規格 Validation: build right product? 驗收 看是否滿足使用者真正需要的 validation testing: 看是否有滿足用戶的requirement defect testing: 刻意用錯誤的東西來測試 如不符合規格的輸入...等 V & V confidence: >> software purpose: 取決於軟體對於一間公司是否關鍵 >> user expectation: 有時候使用者對於特定軟體會有低度期待 >> Marketing environment: 快點推出可能比找缺陷重要 Inspections and testing Inspections: >> 人員去測試 看看是否找到問題 檢查是不需要執行系統的 因此可以在implment前就檢查 >> 優點: 不用擔心錯誤掩蓋其他錯誤 因為檢查時不需要執行系統 / 在還沒完成的版本前就能檢查 不用等到開發完成 / 除了缺陷 還可以找廣泛的質量屬性 像是是否符合標準 可移植性 可維護性 >> 檢查和測試是相輔相成的 檢查可以看是否滿足規格 但不知道有沒有達成客戶requirement,檢查不能檢查非功能性需求(像是性能) three stages of testing: Development testing: 開發階段的測試 找看看有沒有bug阿 Release testing: 發布前測試 看完整的系統有沒有問題 User testing: 用戶或潛在用戶 在他們自己的環境當中測試 Development testing >> Unit testing: 單元測試 對單個program或class測試 >>>> Unit testing is the process of testing individual components in isolation >>>> 測試單獨的function 或class 或composite components >>>> 測試關於這個object的所有操作 >>>> 測試所有可能的狀態 >>>> 對每個object的attribute設置並check看看 單元測試應該要自動化 >> set up >> call >> assertion >>>> 基於normal operation 看是否一切安好 >>>> 基於abnormal inputs 看錯誤是否有被正確處理 並且不要crash這個unit >> Interface testing: 多個單元組合成的組件測試 關注於組件的interface >>>> 關注於interface Parameter interfaces: 傳遞給其他人時 Shared memory interfaces: 共享記憶體 Procedural interfaces: 一個sub system封裝好資訊 以利讓其他sub system使用 Message passing interfaces: 一個sub system從另一個sub system要求服務時 error: Interface misuse: 使用上錯誤 e.g. parameters in the wrong order. Interface misunderstanding: call了錯誤的組件 called component which are incorrect. Timing errors: the called and the calling component operate at different speeds and out-of-date information is accessed. 測試方法: 數值極端、空pointer、傳值壓力測試、改變激活順序 >> system testing: 系統測試 對多個組件整合起來的系統 做測試 關注在components之間的互動
俞光回 軟體工程 chap7
匿名 / anonymous
==chap7== Software design: is a creative activity in which you identify software components and their relationships, based on a customer's requirements. Implementation: is the process of realizing the design as a program. COTS : 商用現成系統 Object-oriented design using the UML >> 有很多不同的model參與其中 需要大量的開發和維護 對於不同團隊開發的大型系統,設計模型是重要的溝通橋樑。這個方法並不適合小型系統 >> 過程 Define the context and modes of use of the system; Design the system architecture; Identify the principal system objects; Develop design models; Specify object interfaces. System context and interactions >> A system context is a structural model (e.g., a class diagram) >> An interaction model is a dynamic model (e.g., a use case diagram) Architectural design Design models >> Structural models: static structure >>>> subsystem models dynamic models >> dynamic interaction >>>> sequence models >>>> state machine models Reuse >> The abstraction level: don't reuse software directly but use knowledge of successful abstractions in the software design. >> The object level: directly reuse objects from a library rather than writing the code yourself. >> The component level: components (collections of objects and object classes) are reused in application systems. >> The system level: entire application systems are reused. cost: time / buying / integrating / configuring Configuration management >> version management >> system integration >> problem tracking >> release management development platform tool包含: >> compiler >> debug system >> 圖形化編輯工具 >> 測試工具 >> 管理工具
載入中