Các kinh nghiệm quí của công nghệ phần mềm
Khám phá các triệu chứng và cácnguyên nhân c ốt lõi của các
vấn đ ề trong phát triển phần mềm
w Trình bày 6 kinhnghiệm tốt của Rational trong quá trình phát
triển phần mềm
w Xem xét cách sử dụng các kinh nghiệm này để giảI quyết các
vấn đề trong phát triển phần mềm
Collaboration Diagrams Activity Diagrams Activity Diagrams State Diagrams State DiagramsState Diagrams State DiagramsClas Diagrams Clas Diagrams Công cụ môi trường phát triển phần mềm 39 Mô hình hóa trực quan dùng các lược đồ UML Actor A use-case 1 use-case 2 Actor B user : »ç¿ëÀÚ mainWnd : MainWnd fileMgr : FileMgr repository : Repository document : Document gFile : GrpFile 9: sortByN ame ( ) L 1: Doc view request ( ) 2: fetchDoc( ) 5: readDoc ( ) 7: readFile ( ) 3: create ( ) 6: fillDocument ( ) 4: create ( ) 8: fillFile ( ) GrpFile read( ) open( ) create( ) fillFile( ) rep Repository name : char * = 0 readDoc( ) readFile( ) (from Persistence) FileMgr fetchDoc( ) sortByName( ) DocumentList add( ) delete( ) Document name : int docid : int numField : int get( ) open( ) close( ) read( ) sortFileList( ) create( ) fillDocument( ) fList 1 FileList add( ) delete( ) File read( ) read() fill the code.. UI MFC RogueWave global DocumentApp Persistence Wi ndow95 ¹®¼-°ü¸® Ŭ¶óÀ̾ðÆ®.EXE Wi ndows NT ¹®¼-°ü¸® ¿£Áø.EXE Wi ndows NT Wi ndows95 Solaris ÀÀ¿ë¼-¹ö.EXE Alpha UNIX IBM Mainframe µ¥ÀÌŸº£À̽º¼- ¹ö Wi ndows95 ¹®¼-°ü¸® ¾ÖÇ Ã¸´ ºÐ»ê ȯ°æÀÇ Çϵå¿þ¾ î¹× ³× Æ®¿÷À¸·ÎÀÇ Á¤º¸ ½ ýºÅÛ ¿¬°á ¸ 𵨠- À©µµ¿ì 95 : Ŭ¶óÀ̾ ðÆ® - À©µµ¿ì NT: ÀÀ¿ë¼-¹ ö - À¯´Ð½º ¸Ó½Å: ÀÀ¿ë ¼-¹ö ¹ × µ¥ÀÌŸ ¼-¹ö, Åë½Å ¼-¹ö - IBM ¸ÞÀÎÇÁ·¹ÀÓ: µ¥ÀÌŸ ¼-¹ ö, Åë½ Å ¼-¹ö Document FileManager GraphicFile File Repository DocumentList FileList user mainWnd fileMgr : FileMgr repositorydocument : Document gFile 1: Doc view request ( ) 2: fetchDoc( ) 3: create ( ) 4: create ( ) 5: readDoc ( ) 6: fillDocument ( ) 7: readFile ( ) 8: fillFile ( ) 9: sortByN ame ( ) ƯÁ¤¹®¼-¿¡ ´ëÇÑ º¸±â¸¦ »ç¿ëÀÚ°¡ ¿äÃ»Ç Ñ´Ù. È-ÀÏ°ü¸®ÀÚ´Â Àоî¿Â ¹®¼-ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼- °´Ã¼¿¡ ¼ ³Á¤À» ¿äÃ»Ç Ñ´Ù. È-¸é °´Ã¼ ´Â ÀÐ ¾îµéÀÎ °´Ã¼µé¿¡ ´ëÇØ À̸§º°·Î Á¤·ÄÀ» ½ ÃÄÑ È- ¸é¿¡ º¸¿©ÁØ´ Ù. Customer name addr withdraw() fetch() send() receive() > Forward Engineering (Code Generation) and Reverse Engineering Executable System User Interface Definition Domain Expert Openning Writing Reading Closing add file [ numberOffile==MAX ] / flag OFF add file close file close file use-case 3 Source Code edit, compile, debug, link Use-Case Diagram Class Diagram Collaboration Diagram Sequence Diagram Component Diagram State Diagram Package Diagram Deployment DiagramClass Công cụ môi trường phát triển phần mềm 40 Thay đổi bản thiết kế? Mô hình hóa trực quan và phát triển theo vòng lặp Yêu cầu ban đầu implementation & testing risk targeting deployment Đánh giá requirements analysis & design Công cụ môi trường phát triển phần mềm 41 Cái gì thay đổi? Những thay đổi này được phép không? Mô hình hóa trực quan và phát triển theo vòng lặp Yêu cầu ban đầu implementation & testing risk targeting deployment Đánh giá requirements analysis & design Công cụ môi trường phát triển phần mềm 42 Giải quyết vấn đề nhờ mô hình hóa trực quan Các use-case và scenario đặc tả hành vi rõ ràng Các mô hình nắm bắt tường minh các thiết kế Các kiến trúc không đơn thể hay cứng nhắc bị phơi bày Các chi tiết không cần thiết được che dấu khi cần Các thiết kế tường minh chỉ ra các mâu thuẫn dễ dàng Chất lượng của ứng dụng đi kèm với bản thiết kế tốt Các ccụ trực quan hỗ trợ cho mô hình hóa bằng UML Các nguyên nhân cốt lõi Lời giải þ Thiếu y/c đ/v HT þ Truyền tin mơ hồ þ Kiến trúc kém bền þ Quá phức tạp ¨ Đánh giá chủ quan þ Các mâu thuẫn chưa xác định þ Test kém ¨ Qui trình thác nước ¨ Thay đổi không thể KS þ Thiếu ccụ tự động Công cụ môi trường phát triển phần mềm 43 Kinh nghiệm 5: Kiểm định chất lượng phần mềm Phát triển theo vòng lặp Quản trị các yêu cầu Kiểm định chất lượng Kiểm soát các thay đổi trong hệ thống Sử dụng kiến trúc Component Mô hình hóa trực quan Công cụ môi trường phát triển phần mềm 44 Chi phí tìm kiếm và sửa chữa các vấn đề của phần mềm sẽ tăng hàng trăm, hàng ngàn lần sau khi phát triển Development Deployment Cost Kinh nghiệm 5: Kiểm định chất lượng phần mềm (tt) Công cụ môi trường phát triển phần mềm 45 Phát triển theo vòng lặp cho phép test liên tục T I M E Test Test Test T C D R Iteration 1 Iteration 2 Iteration 3 T C D R T C D R Test Life Cycle Evaluate Plan Design Implement Execute Evaluate Plan Design Implement Execute Evaluate Plan Design Implement Execute Công cụ môi trường phát triển phần mềm 46 Test trong một môi trường phát triển theo vòng lặp R eq ui re m en ts R eq ui re m en ts Test Suite 1 Iteration 2 Iteration 3 Iteration 4 Test Suite 2 Test Suite 3 Test Suite 4 Iteration 1 Au to m at ed T es ts Au to m at ed T es ts Công cụ môi trường phát triển phần mềm 47 Tự động hóa giảm thời gian và công sức test One Manual Test Cycle 13,000 Tests 2 Weeks 6 People 13,000 Test 6 giờ 1 người 13,000 Test 6 giờ 1 người Một chu trình test hủ ông 13,000 lần Test 2 Tuần 6 Người Test tự động Chạy ngày càng nhiều test hơn Công cụ môi trường phát triển phần mềm 48 Các khía cạnh của chất lượng phần mềm Chức năng Độ tin cậy Hiệu năng ứng dụng Hiệu năng của hệ thống Ứng dụng của tôi có làm những gì được yêu cầu? Ứng dụng của tôi có làm mất bộ nhớ? Ứng dụng của tôi có hồi đáp hợp lệ? Ứng dụng của tôi có hoạt động dưới công suất thiết kế? Tạo cácTest case cho mỗi scenario đã cài đặt Các công cụ phân tích và các thiết bị coding Kiểm tra hiệu năng của mỗi use-case/scenario đã cài đặt Kiểm tra hiệu năng của tất cả use-case ở mức độ tin cậy và trường hợp xấu nhất Kiểu Tại sao? Thế nào? Công cụ môi trường phát triển phần mềm 49 Các vấn đề được giải quyết nhờ kiểm định chất lượng Testing đánh giá khách quan về trạng thái dự án Đánh giá khách quan triệt tiêu các mâu thuần sớm Testing và kiểm định tập trung vào vùng high risk Tìm thấy thiếu sót sớm và chi phí sửa chữa thấp Các ccụ test tự động giúp test độ tin cậy, chức năng và hiệu năng Nguyên nhân cốt lõi Cách giải quyết ¨ Thiếu y/c đ/v HT ¨ Truyền tin mơ hồ ¨ Kiến trúc kém bền ¨ Quá phức tạp þ Đánh giá chủ quan þ Các mâu thuẫn chưa được xác định þ Test kém ¨ Qui trình thác nước ¨ Thay đổi không thể KS þ Thiếu ccụ tự động Công cụ môi trường phát triển phần mềm 50 Kinh nghiệm 6: Kiểm soát thay đổi trong phần mềm Phát triển theo vòng lặp Quản trị các yêu cầu Kiểm soát các thay đổi trong hệ thống Sử dụng kiến trúc Component Mô hình hóa trực quan Kiểm định chất lượng Công cụ môi trường phát triển phần mềm 51 Thiếu sự kiểm soát tường minh, đầy đủ Phát triển song song dễ biến thành hỗn độn Kinh nghiệm 6: Kiểm soát thay đổi trong phần mềm (tt) w Nhiều developer w Nhiều team w Nhiều vị trí w Nhiều vòng lập w Nhiều release w Nhiều project w Nhiều platform Công cụ môi trường phát triển phần mềm 52 Ba khía cạnh chính của CM System Công cụ môi trường phát triển phần mềm 53 Các khái niệm của Configuration & Change M. w Phân rã kiến trúc thành các subsystem và gán trách nhiệm thực hiện các subsystem cho mỗi nhóm w Thiết lập vùng làm việc an toàn cho mỗi developer § Cho phép cô lập với các thay đổi tạo bởi vùng làm việc khác § Kiểm soát tất cả software artifact - models, code, docs, … w Thiết lập một vùng làm việc tích hợp w Thiết lập một cơ chế khả thi kiểm soát các thay đổi w Nắm bắt thay đổi xuất hiện nào xuất hiện trong release nào w Đưa ra một đường ranh giới hạn chỗ hoàn tất của mỗi vòng lặp Công cụ môi trường phát triển phần mềm 54 Kiểm soát thay đổi hỗ trợ tất cả Best Practices khác w Phát triển theo qui trình lặp w Quản lý yêu cầu w Dùng kiến trúc component w Mô hình hóa trực quan w Kiểm định chất lượng è Dự án chỉ tiến triển khi các thay đổi được kiểm soát è Để loại bỏ sự dãn phạm vị, đánh giá ảnh hưởng của mọi thay đổi dự kiến trước khi chấp nhận è Các Component phải đáng tin cậy, i.e., tìm thấy phiên bản đúng đắn của tất cả các phần hợp thành è Để bảo đảm sự hội tụ, phải tăng dần kiểm soát các model khi các thiết kế ổn định è Test chỉ có ý nghĩa nếu các version các phần tử đang test được biết rõ và các phần tử được bỏa vệ trước các thay đổi Công cụ môi trường phát triển phần mềm 55 Các vần đề được giải quyết nhờ kiểm soát thay đổi Requirements change workflow được xác định và lặp lại đi lặp lại Các Change request làm cho thông tin trao đổi rõ ràng Vùng làm việc biệt lập giảm các trở ngại do làm việc song song Thống kê về mức độ thay đổi là độ đo tốt cho các đánh giá khách quan về trạng thái của dự án Vùng làm việc chứa tất cả các artifact dễ tạo sự nhất quán Kiểm soát được sự lan truyền các thay đổi Các thay đổi được duy trì trong một hệ thống mạnh mẽ, có khả năng tùy chỉnh Nguyên nhân cốt lõi Cách giải quyết þ Thiếu y/c đ/v HT þ Truyền tin mơ hồ ¨ Kiến trúc kém bền þ Quá phức tạp þ Đánh giá chủ quan þ Mâu thuẫn chưa được xác định ¨ Test kém ¨ Qui trình thác nước þ Thay đổi không thể kiểm soát þ Thiếu ccụ tự động Công cụ môi trường phát triển phần mềm 56 Các kinh nghiệm hỗ trợ lẫn nhau Ensures users involved as requirements evolve Validates architectural decisions early on Addresses complexity of design/implementation incrementally Measures quality early and often Evolves baselines incrementally Phát triển theo vòng lặp Kiểm soát các thay đổi trong hệ thống Sử dụng kiến trúc Component Quản trị các yêu cầu Mô hình hóa trực quan Kiểm định chất lượng Công cụ môi trường phát triển phần mềm 57 Tổng kết w Kết quả là phần mềm trở nên § Đúng thời hạn § Bảo đảm ngân sách § Thỏa mãn nhu cầu user Project Manager Performance Engineer Release Engineer Analyst Developer Tester Kiểm soát các thay đổI trong hệ thống Phát triển theo vòng lặp Sử dụng kiến trúc Component Quản trị các yêu cầu Mô hình hóa trực quan Kiểm định chất lượng
File đính kèm:
- Các kinh nghiệm quí của công nghệ phần mềm.pdf