Bài giảng Kỹ nghệ phần mềm (nhập môn) - Chương 1: Phần mềm và kỹ nghệ phần mềm

Tài liệu Bài giảng Kỹ nghệ phần mềm (nhập môn) - Chương 1: Phần mềm và kỹ nghệ phần mềm: Đại học quốc gia Hà Nội - Khoa công nghệ Bộ môn công nghệ phần mềm _________________________ PGS. Nguyễn Quốc Toản, PGS.TS. Nguyễn Văn Vỵ, PGS.TS.Vũ Đức Thi, TS. Lê văn Phùng Bài giảng Kỹ nghệ phần mềm (nhập môn) Hà Nội - 2000 Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 1 Mở đầu Sau 20 năm phát triển, kỹ nghệ phần mềm (SE-Software Engineering) đến nay được thừa nhận là một bộ môn chính thống nhưng còn là một lĩnh vực tranh luận sôi nổi. Trong ngành công nghiệp: người lập trình  kỹ sư phần mềm. Kỹ nghệ phần mềm (hay còn gọi là công trình học phần mềm ) được xem như là một tên gọi công việc. Các phương pháp, công cụ, thủ tục của SE đã được chấp nhận và ứng dụng thành công trong rất nhiều lĩnh vực ứng dụng công nghiệp. Các nhà quản lý và chuyên gia công nghệ thông tin đều ...

pdf25 trang | Chia sẻ: honghanh66 | Lượt xem: 1157 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Kỹ nghệ phần mềm (nhập môn) - Chương 1: Phần mềm và kỹ nghệ phần mềm, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Đại học quốc gia Hà Nội - Khoa cơng nghệ Bộ mơn cơng nghệ phần mềm _________________________ PGS. Nguyễn Quốc Toản, PGS.TS. Nguyễn Văn Vỵ, PGS.TS.Vũ Đức Thi, TS. Lê văn Phùng Bài giảng Kỹ nghệ phần mềm (nhập mơn) Hà Nội - 2000 Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 1 Mở đầu Sau 20 năm phát triển, kỹ nghệ phần mềm (SE-Software Engineering) đến nay được thừa nhận là một bộ mơn chính thống nhưng cịn là một lĩnh vực tranh luận sơi nổi. Trong ngành cơng nghiệp: người lập trình  kỹ sư phần mềm. Kỹ nghệ phần mềm (hay cịn gọi là cơng trình học phần mềm ) được xem như là một tên gọi cơng việc. Các phương pháp, cơng cụ, thủ tục của SE đã được chấp nhận và ứng dụng thành cơng trong rất nhiều lĩnh vực ứng dụng cơng nghiệp. Các nhà quản lý và chuyên gia cơng nghệ thơng tin đều nhận ra nhu cầu về cách tiếp cận cĩ nguyên tắc hơn tới việc phát triển phần mềm . Bản chất thực của cách tiếp cận SE vẫn cịn chưa được thống nhất, cịn nhiều ý kiến trái ngược nhau. Phương pháp tiếp cận của người thực hành: theo sát các hoạt động tổng quát đã được thực hiện bất kể tới mơ hình SE đã được chọn thay vì duy trì một quan điểm vịng đời chặt chẽ. Các chủ đề quan tâm: 1. Vấn đề quản lý dự án phần mềm (tiến trình phát triển dự án phần mềm và việc quản lý nĩ) 2. Phân tích hệ thống và yêu cầu phần mềm (các vấn đề cơ bản trong phân tích, phương pháp mơ hình hố yêu cầu, các kí pháp,...) 3. Thiết kế và cài đặt phần mềm (nhấn mạnh tới các định mức thiết kế cơ bản dẫn tới hệ thống chất lượng cao và các phương pháp thiết kế để chuyển một mơ hình phân tích thành giải pháp phần mềm) 4. Đảm bảo, kiểm chứng và duy trì tính tồn vẹn phần mềm (nhấn mạnh vào các hoạt động được ứng dụng để đảm bảo chất lượng trong suốt tiến trình phần mềm ) 5. Vai trị của tự động hố (nhấn mạnh sự hỗ trợ của máy tính lên tiến trình phát triển phần mềm ) Quan tâm đến thiết kế : chủ đề 3 Quan tâm đến phương pháp: cả 5 chủ đề Quan tâm đến quản lý: chủ đề 1 và 4 Cơng trình học phần mềm khơng phải là chính việc sản sinh ra sản phẩm mà nĩ liên quan đến việc sản sinh ra sản phẩm một cách hiệu quả. Với những nguồn lực khơng hạn chế thì đa số các vấn đề phần mềm là giải quyết được. Thử thách đối với kỹ sư phần mềm là tạo ra phần mềm chất lượng cao với hạn chế về nguồn lực và phải theo một lịch định trước. Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 2 Chương 1 Phần mềm và kỹ nghệ phần mềm 3 Chương II Đặc tả phần mềm 25 Chương III thiết kế phần mềm 52 chương iv Lập trình hiệu quả 84 Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 3 Chương 1 Phần mềm và kỹ nghệ phần mềm I.1.Sự phát triển của phần mềm .1.1.1.Quá trình tiến hố của phần mềm 1.1.2.Các thách thức đối với phần mềm máy tính 1.2.Phần mềm 1.2.1.Mơ tả về phần mềm 1.2.2.Các đặc trưng phần mềm 1.2.3. Các thành phần của phần mềm 1.2 4..Việc ứng dụng phần mềm 1.3. Kỹ nghệ phần mềm 1.3.1. Định nghĩa 1.3.2. Mơ hình Vịng đời cổ điển 1.3.3. Mơ hình làm bản mẫu 1.3 4.Mơ hình xoắn ốc 1.3.5. Kỹ thuật thế hệ thứ 4 1.3.6. Tổ hợp các khuơn cảnh 1.4. Các bước tổng quát trong tiến trình kỹ nghệ phần mềm 1.4.1..Giai đoạn xác định 1.4.2. Giai đoạn phát triển 1.4.3. Giai đoạn bảo trì I.5.Đánh giá tổng quát về chất lượng hệ thống Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 4 Chương 1 Phần mềm và kỹ nghệ phần mềm 1980, trong tạp chí Business week, dịng tiêu đề "phần mềm - lực điều khiển mới hay phần mềm đã vào một thời đại"  đánh dấu chủ đề đáng quan tâm của các tạp chí  báo hiệu cho một cách hiểu mới về tầm quan trọng của phần mềm máy tính  đem đến những cơ hội và thách thức mới. Phần mềm (SW) bây giờ đã vượt trội hơn phần cứng (HW): điều mấu chốt cho sự thành cơng của nhiều hệ thống dựa trên máy tính Phần mềm -nhân tố đánh giá sự khác biệt, điều này thể hiện ở chỗ:  Tính đầy đủ và đúng thời hạn của thơng tin do phần mềm cung cấp (và các CSDL liên quan)  khác biệt một cơng ty này với các đối thủ cạnh tranh  thiết kế và " tính thân thiện con người" của sản phẩm phần mềm cũng làm khác biệt nĩ với các sản phẩm cạnh tranh cĩ cùng chức năng tương tự khác. Sự thơng minh và chức năng do phần mềm được nhúng trong đĩ đưa ra thường làm khác biệt 2 sản phẩm tiêu thụ hay cơng nghiệp tương tự nhau Như vậy, chính phần mềm tạo ra sự khác biệt đĩ I.1.Sự phát triển của phần mềm Thách thức trước những năm 1990: phát triển phần cứng nhằm giảm giá thành xử lý và lưu trữ dữ liệu. Ví dụ vào những năm 1980 tiến bộ trong vi điện tử: phát sinh năng lực tính tốn mạnh, giá thành thấp đáng kể Thách thức trong những năm 1990: cải thiện chất lượng và giảm giá thành của các giải pháp dựa trên máy tính - giải pháp được cài đặt bằng phần mềm Khả năng lưu trữ của phần cứng biểu thị cho tiềm năng tính tốn. Cịn phần mềm -một cơ chế giúp chúng ta chế ngự và khai thác tiềm năng này .1.1.1.Quá trình tiến hố của phần mềm 1.Những năm đầu(từ 1950 đến 1960): Phần cứng thay đổi liên tục, phần lớn được chuyên dụng cho ứng dụng đặc biệt. Phần mềm được coi là nghệ thuật, chưa cĩ phương pháp hệ thống. Phát triển phần mềm chưa được quản lý Mơi trường phần mềm cĩ tính cá nhân thiết kế -tiến trình khơng tường minh, thường khơng cĩ tài liệu. Kết quả: Học được việc cài đặt hệ thống dựa trên máy tính, khơng học được mấy về kỹ nghệ hệ thống máy tính 2.Thời kỳ trải rộng từ những năm 1960 đến cuối 1970: - Hệ thống đa lập trình và đa người sử dụng  khái niệm mới về tương tác người máy. Kỹ thuật tương tác mở ra thế giới mới cho các ứng dụng và mức độ mới tinh vi cho cả phần mềm và phần cứng Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 5 - Hệ thống thời gian thực: thu thập, phân tích và biến đổi dữ liệu từ nhiều nguồn khác nhaukiểm sốt được các tiến trình và sản xuất ra cái ra trong phần nghìn giây thay vì nhiều phút - Tiến bộ lưu trữ trực tuyến thế hệ đầu tiên của hệ quản trị CSDL - Số lượng các hệ thống dựa trên máy tính phát triển  thư viện phần mềm mở rộng phát sinh số lượng lớn câu lệnh cần sửa chữa khi gặp lỗi, cần sửa đổi lại khi yêu cầu của người dùng thay đổi hay phải thích nghi với những phần cứng mới vừa mua bảo trì phần mềm . 3. Thời kỳ giữa những năm 1970 đến nay: - Hệ thống phân bố (bao gồm nhiều máy tính, mỗi máy thực hiện một chức năng tương tranh và liên lạc với các máy khác)  tăng độ phức tạp - Mạng tồn cục và cục bộ, liên lạc số giải thơng cao, tăng nhu cầu thâm nhập dữ liệu  yêu cầu lớn phát triển phần mềm - Tiến bộ lớn và sử dụng phổ cập các bộ vi xử lý (ơ tơ, robot, lị vi sĩng, thiết bị chẩn đốn máu,...) máy tính cá nhân và các máy trạm để bàn - Chi phí phần mềm cĩ khuynh hướng > chi phí mua máy tính 4. Thời kỳ sau 1990 (Thời kỳ thứ tư mới chỉ bắt đầu): - Kỹ nghệ hướng sự vật là cách tiếp cận mới đang nhanh chĩng thay thế nhiều cách tiếp cận phát triển phần mềm truyền thống trong các lĩnh vực ứng dụng - Hệ chuyên gia và phần mềm trí tuệ nhân tạo: chuyển từ phịng thí nghiệm  thực tế - Phần mềm mạng nơ ron nhân tạo: mở ra khả năng nhận dạng và thực hiện khả năng xử lý thơng tin kiểu con người 1.1.2.Các thách thức đối với phần mềm máy tính Các thách thức đối với phần mềm máy tính gia tăng vì những nguyên nhân sau: 1. Sự tinh vi của phần cứng đã vượt quá khả năng của chúng ta để xây dựng phần mềm đạt tới tiềm năng của phần cứng 2. Khả năng xây dựng các chương trình mới khơng thể giữ cùng nhịp với nhu cầu cĩ các chương trình mới 3. Khả năng bảo trì các chương trình hiện cĩ rất khĩ khăn vì thiết kế sơ sài, tài nguyên khơng thích hợp Tất cả các thách thức trên chấp nhận thực hành kỹ nghệ phần mềm 1.2.Phần mềm 1.2.1.Mơ tả về phần mềm Việc mơ tả phần mềm trong sách giáo khoa cĩ 1 trong những dạng sau: -Các lệnh (chương trình máy tính) khi được thực hiện thì đưa ra hoạt động và kết quả mong muốn -Các cấu trúc dữ liệu làm cho chương trình thao tác thơng tin thích hợp -Các tài liệu mơ tả thao tác và cách dùng chương trình Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 6 Nhận xét: chưa đủ cần đưa ra định nghĩa hình thức hơn 1.2.2.Các đặc trưng phần mềm Phần mềm là phần tử hệ thống logic chưa khơng phải là hệ thống vật lý. Do đĩ phần mềm cĩ đặc trưng khác biệt đáng kể với các đậc trưng của phần cứng 1.Phần mềm được phát triển hay được kỹ nghệ hố, nĩ khơng được chế tạo theo nghĩa cổ điển: thiết kế chế tạo sản phẩm tốt HW:    chất lượng chất lượng thiết kế sửa đổi sản phẩm tốt SW:    chất lượng chất lượng Hai quá trình này phụ thuộc vào con người Chi phí phần mềm tập trung vào kỹ nghệ  khái niệm xưởng phần mềm  khuyến cáo sử dụng cơng cụ tự động 2.Phần mềm khơng "hỏng đi" Phần mềm khơng cảm ứng đối với những khiếm khuyết mơi trường vốn gây cho phần cứng bị mịn cũ đi t t Đường cong hỏng hĩc cho HW Đường cong hỏng hĩc cho SW (lý tưởng) Thực tế, phần mềm sẽ trải qua sự thay đổi (bảo trì). Khi thay đổi được thực hiện cĩ thể là một số khiếm khuyết mới sẽ được đưa vào, gây ra cho đường cong tỷ lệ hỏng hĩc trở thành cĩ đầu nhọn như trong hình vẽ dưới đây. Trước khi đường cong đĩ cĩ thể trở về tỷ lệ hỏng hĩc ổn định ban đầu thì một thay đổi khác lại được yêu cầu, lại gây ra đường cong phát sinh đỉnh nhọn một lần nữa. Dần dần, mức tỷ lệ hỏng hĩc tối thiểu bắt đầu nâng lên- phần mềm bị thối hố do sự thay đổi. thời gian Tỷ lệ hỏng chết yểu mịn cũ giữ tỷ lệ cho đến khi lạc hậu Đường cong lý tưởng tỷ lệ hỏng thay đổi Đường cong thực tế Đường cong lý tưởng Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 7 Đường cong hỏng hĩc thực tế của phần mềm Nhận xét: Phần cứng hỏng cĩ "vật tư thay thế", nhưng khơng cĩ phần mềm thay thế cho phần mềm . Mọi hỏng hĩc phần mềm đều chỉ ra lỗi trong thiết kế hay trong tiến trình chuyển thiết kế thành mã máy thực hiện được. Do đĩ, việc bảo trì phần mềm bao gồm độ phức tạp phụ thêm đáng kể so với bảo trì phần cứng. 3.Phần lớn phần mềm đều được xây dựng theo đơn đặt hàng, chứ ít khi được lắp ráp từ các thành phần cĩ sẵn Cách thiết kế và xây dựng phần cứng điều khiển cho một sản phẩm dựa trên bộ vi xử lý: vẽ sơ đồ mạch số  thực hiện phân tích để đảm bảo chức năng đúng  phân loại các danh mục thành phần  gắn cho mỗi mạch tích hợp (thường gọi là "IC" hay "chip") một số hiệu một chức năng đã định và hợp lệ, một giao diện đã xác định rõ, một tập các hướng dẫn tích hợp chuẩn hố Phần mềm: -Khơng cĩ danh mục các thành phần -Đặt hàng với đơn vị hồn chỉnh, khơng phải là những thành phần cĩ thể được lắp ráp lại thành chương trình mới. 1.2.3. Các thành phần của phần mềm Phần mềm máy tính (gọi tắt là phần mềm ) là thơng tin tồn tại dưới 2 dạng cơ sở: thành phần máy khơng thực hiện được và các thành phần máy thực hiện được. ở đây chỉ xét những thành phần phần mềm trực tiếp đưa tới các lệnh máy thực hiện được Mọi thành phần phần mềm đều bao gồm một cấu hình Thành phần phần mềm được tạo ra thơng qua một loạt những hoạt động chuyển hố (translation) yêu cầu của người dùng thành mã máy thực hiện được: một mơ hình yêu cầu (hay bản mẫu)  dịch  thiết kế  dịch dạng ngơn ngữ xác định cấu trúc dữ liệu, thuộc tính, thủ tục phần mềm, các yêu cầu liên quan  dịch  lệnh mã máy thực hiện được Tính tái dụng là một đặc trưng quan trọng của thành phần phần mềm chất lượng cao, tức là thành phần cần được thiết kế và cài đặt sao cho người ta cĩ thể dùng lại chúng trong nhiêù chương trình khác nhau (thư viện chương trình con mẫu về khoa học) Chú ý: ngày nay đã mở rộng cách nhìn về việc dùng lại để bao hàm khơng chỉ các thuật tốn mà cịn cả cấu trúc dữ liệu. Ví dụ: các giao diện tương tác thường được xây dựng bằng cách dùng các thành phần dùng lại cĩ khả năng tạo ra cửa sổ đồ hoạ, menu kéo xuống và rất nhiều cơ chế tương tác. Cấu trúc dữ liệu và chi tiết xử lý cần để xây đựng giao diện được đặt bên trong các thư viện các thành phần dùng lại. Các thành phần phần mềm được xây dựng bằng cách nào? Dùng ngơn ngữ lập trình với vốn từ vựng hạn chế, một văn phạm hồn tồn xác định rõ cùng với các quy tắc thành lập chặt chẽ về cú pháp và ngữ nghĩa. Các thuộc tính này là điều chủ chốt trong việc dịch thành mã máy. Các dạng ngơn ngữ hiện dùng ngày nay là các ngơn ngữ mức máy, ngơn ngữ cấp cao và ngơn ngữ phi thủ tục. +Ngơn ngữ mức máy: là một biểu diễn ký hiệu cho tập lệnh của đơn vị xử lý trung tâm -Nếu phần mềm viết tốt, bảo trì được, tư liệu tốt  ngơn ngữ máy giúp sử dụng bộ nhớ hiệu quả, tăng được tốc độ thực hiện Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 8 -Nếu phần mềm thiết kế tồi, ít tài liệu  ngơn ngữ máy trở thành cơn ác mộng +Ngơn ngữ cấp cao: Cho phép người phát triển phần mềm và chương trình được độc lập với máy song từ vựng, văn phạm, cú pháp, ngữ nghĩa phức tạp hơn nhiều so với ngơn ngữ máy. Trong hàng trăm ngơn ngữ lập trình được dùng, phổ biến chỉ khoảng 10 loại: cobol, fortran, Pascal,C,Ada,C++, Pascal đối tượng, eiffei, các ngơn ngữ đặc thù (APL, LIST,OPS5, PROLOG và các ngơn ngữ mơ tả cho mạng nơ ron nhân tạo Mã máy, hợp ngữ, ngơn n gữ lập trình cấp cao thường cịn được coi như là "3 thế hệ đầu" của ngơn ngữ máy tính. Với những ngơn ngữ này, bản thân người lập trình phải quan tâm cả tới việc đặc tả cấu trúc thơng tin lẫn điều khiển chương trình. Do đĩ các ngơn ngữ trong 3 thế hệ này cịn được gọi là các ngơn ngữ thủ tục +Ngơn ngữ phi thủ tục: Cĩ trên một thập kỷ qua, thay vì phải yêu cầu người phát triển phần mềm cần xác định chi tiết thủ tục thì các ngơn ngữ phi thủ tục đưa đến một chương trình bằng cách "xác định kết quả mong muốn thay vì xác định hành động cần để đạt được kết quả đĩ". Phần mềm hỗ trợ sẽ dịch đặc tả thành chương trình máy thực hiện được. 1.2.4.Việc ứng dụng phần mềm Phần mềm cĩ thể được áp dụng khi đã cĩ một tập các bước thủ tục (như một thuật tốn) đã được xác định trước (trừ phần mềm hệ chuyên gia và phần mềm mạng nơron) Nội dung thơng tin và tính tất định là các nhân tố quan trọng trong việc xác định bản chất của ứng dụng phần mềm : -Nội dung thơng tin nĩi tới ý nghĩa và hình dạng của thơng tin vào và ra -Tính tất định thơng tin nĩi tới việc tiên đốn trước trật tự và thời gian của thơng tin Phân loại phần mềm ứng dụng (7 loại): 1. Phần mềm hệ thống: -Là một tập hợp các chương trình được viết để phục vụ cho các chương trình khác -Xử lý cấu trúc thơng tin phức tạp nhưng xác định (trình biên dịch, trình soạn thảo, tiện ích quản lý tệp) -Đặc trưng bởi tương tác chủ yếu với phần cứng máy tính -Phục vụ nhiều người dùng -Cấu trúc dữ liệu phức tạp và nhiều giao diện ngồi 2. Phần mềm thời gian thực Phần mềm điều phối hoặc phân tích hoặc kiểm sốt các sự kiện thế giới thực ngay khi chúng xuất hiện được gọi là phần mềm thời gian thực. Phần mềm thời gian thực bao gồm các yếu tố: -Một thành phần thu thập dữ liệu để thu và định dạng thơng tin từ ngồi -Một thành phần phân tích để biến đổi thơng tin theo yêu cầu của ứng dụng -Một thành phần kiểm sốt hoặc đưa ra đáp ứng mơi trường ngồi -Một thành phần điều phối để điều hồ các thành phần khác sao cho cĩ thể duy trì việc đáp ứng thời gian thực. Hệ thống thời gian thực phải đáp ứng trong những ràng buộc thời gian chặt chẽ 3.Phần mềm nghiệp vụ Xử lý thơng tin nghiệp vụ là lĩnh vực ứng dụng phần mềm lớn nhất Các hệ thống rời rạc: hệ thơng tin quản lý Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 9 Các ứng dụng phần mềm nghiệp vụ cịn bao gồm cả tính tốn tương tác (như xử lý giao tác cho các điểm bán hàng) ngồi ứng dụng xử lý dữ liệu 4.Phần mềm khoa học và cơng nghệ -Được đặc trưng bởi các thuật tốn -Trong ứng dụng mới, thiết kế cĩ máy tính trợ giúp (CAD), cĩ chú ý đến các đặc trưng thời gian thực và cả phần mềm hệ thống. 5. Phần mềm nhúng -Nằm trong bộ nhớ chỉ đọc và được dùng để điều khiển các sản phẩm và hệ thống cho người dùng và thị trường cơng nghiệp -Cĩ thể thực hiện các chức năng rất giới hạn và huyền bí (điều khiển bàn phím cho lị vi sĩng) hay đưa ra các khả năng điều khiển và vận hành (chức năng số hố ở ơ tơ, kiểm sốt xăng, biểu thị bảng đồng hồ, hệ thống phanh) 6.Phần mềm máy tính cá nhân -Bùng nổ trong hơn thập kỷ qua (xử lý văn bản, trang tính, đồ hoạ, quản trị CSDL) -Tiếp tục biểu thị thiết kế giao diện người-máy: được cải tiến nhiều nhất. 7.Phần mềm trí tuệ nhân tạo -Dùng các thuật tốn phi số để giải quyết các vấn đề phức tạp mà tính tốn hay phân tích trực tiếp khơng quản lý nổi -Hoạt động mạnh nhất là hệ chuyên gia (hệ cơ sở tri thức) -Lĩnh vực nhận dạng (hình ảnh và tiếng nĩi) -Chứng minh định lý và chơi trị chơi -Phát triển mạng nơ ron nhân tạo: mơ phỏng cấu trúc của việc xử lý trong bộ ĩc. 1.3. Kỹ nghệ phần mềm 1.3.1. Định nghĩa Fritz Bauer nêu ra định nghĩa ban đầu về kỹ nghệ phần mềm : Kỹ nghệ phần mềm là việc thiết lập và sử dụng các nguyên lý cơng nghệ đúng đắn để thu được phần mềm một cách kinh tế vừa tin cậy vừa làm việc hiệu quả trên các máy thực Các định nghĩa về sau đều nhấn mạnh vào yêu cầu về một kỷ luật cơng nghệ trong việc phát triển phần mềm Kỹ nghệ phần mềm - sự phát triển của kỹ nghệ phần cứng và hệ thống. Nĩ bao gồm một tập các bước chứa đựng 3 yếu tố chủ chốt: - Phương pháp -Cơng cụ -Thủ tục Các yếu tố này giúp người quản lý kiểm sốt được tiến trình phát triển phần mềm và cung cấp cho người kỹ sư phần mềm một nền tảng để xây dựng phần mềm chất lượng cao theo một cách thức hiệu quả 1.Các phương pháp (đưa ra các "cách làm" về mặt kỹ thuật để xây dựng phần mềm ): Các phương pháp bao hàm trong nhiều nhiệm vụ: lập kế hoạch, ước lượng dự án, phân tích yêu cầu hệ thống và phần mềm , thiết kế cấu trúc dữ liệu, kiến trúc chương trình và thủ tục thuật tốn, mã hố kiểm thử và bảo trì Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 10 Các phương pháp cho kỹ nghệ phần mềm thường đưa ra các ký pháp đồ hoạ hay hướng ngơn ngữ đặc biệt, đưa ra một tập các tiêu chuẩn về chất lượng sản phẩm phần mềm. 2.Các cơng cụ (cung cấp sự hỗ trợ tự động hay bán tự động cho từng phương pháp): Khi các cơng cụ được tích hợp đến mức các thơng tin do chúng tạo ra cĩ thể được dùng cho các cơng cụ khác thì hệ thống hỗ trợ cho việc phát triển phần mềm đã được thiết lập và cịn được gọi là kỹ nghệ phần mềm cĩ máy tính hỗ trợ (CASE) 3.Các thủ tục (chất keo dán các phương pháp và cơng cụ lại với nhau và làm cho chúng được sử dụng hợp lý và đúng hạn trong quá trình phát triển phần mềm): Thủ tục: -Xác định ra trình tự các phương pháp sẽ được áp dụng, -Tạo sản phẩm cần bàn giao (tài liệu báo cáo, bản mẫu,...) cần cho việc kiểm sốt để đảm bảo chất lượng và điều hồ thay đổi, -Xác định những cột mốc để cho người quản lý phần mềm nắm được tiến độ. Như vậy, kỹ nghệ phần mềm bao gồm một tập các bước bao hàm cả phương pháp, cơng cụ và thủ tục đã được xác định ở trên. Các bước này thường được gọi là các khuơn cảnh (paradigm) kỹ nghệ phần mềm . Mỗi bước trong kỹ nghệ phần mềm được lựa chọn dựa trên bản chất của dự án, dựa vào phương pháp và cơng cụ sử dụng, vào cách kiểm sốt, cách bàn giao. Sau đây, chúng ta sẽ xét tới 4 cách tiếp cận cơ bản trong tiến trình phát triển phần mềm: 1.3.2. Mơ hình Vịng đời cổ điển (cách tiếp cận 1) Kỹ nghệ phần mềm được minh hoạ theo khuơn cảnh vịng đời cổ điển. Mơ hình vịng đời cổ điển đơi khi cịn được gọi là mơ hình thác nước. Khuơn cảnh vịng đời yêu cầu tiếp cận một cách hệ thống, tuần tự tới việc phát triển phần mềm, bắt đầu ở mức hệ thống và tiến dần xuống phân tích, thiết kế, mã hố, kiểm thử và bảo trì. Như vậy khuơn cảnh vịng đời bao gồm các hoạt động trong mơ hình thác nước sau: Kỹ nghệ hệ thống Phân tích & định rõ yêu cầu Thiết kế hệ thống & phần mềm Mã hố Kiểm thử đơn vị, tích hợp & hệ thống Vận hành và Bảo trì Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 11 1.Kỹ nghệ và phân tích hệ thống Vì phần mềm bao giờ cũng là một phần tử của hệ thống lớn hơn  bắt đầu từ việc thiết lập yêu cầu cho mọi phần tử của hệ thống  cấp phát một tập con các yêu cầu đĩ cho phần mềm Kỹ nghệ và phân tích hệ thống bao gồm việc thu thập yêu cầu ở mức hệ thống với một lượng nhỏ thiết kế và phân tích mức đỉnh 2. Phân tích yêu cầu phần mềm -Tiến trình thu thập yêu cầu được tập trung và làm sạch đặc biệt vào phần mềm -Tìm hiểu lĩnh vực thơng tin đối với phần mềm, các chức năng cần cĩ, hiệu năng và giao diện -Lập tư liệu về yêu cầu cho hệ thống và phần mềm  khách hàng duyệt lại 3. Thiết kế -Tiến trình nhiều bước, tập trung vào 4 thuộc tính phân biệt của chương trình: +Cấu trúc dữ liệu +Kiến trúc phần mềm +Chi tiết thủ tục +Đặc trưng giao diện -Chuyển hố các yêu cầu thành mơ tả phần mềm trước khi mã hố -Lập tư liệu thiết kế (một phần của cấu hình phần mềm ) 4.Mã hố -Dịch thiết kế thành dạng mã máy đọc được 5. Kiểm thử -Việc kiểm thử bắt đầu sau khi đã sinh ra mã -Tiến trình kiểm thử tập trung vào phần logic bên trong chương trình đảm bảo tất cả các câu lệnh đều được kiểm thử. Về phần chức năng bên ngồi thì đảm bảo rằng việc kiểm thử phát hiện ra lỗi và đảm bảo những cái vào xác định sẽ tạo ra kết quả thực tế thống nhất với kết quả muốn cĩ. 6.Bảo trì Phần mềm chắc chắn cĩ những thay đổi sau khi được bàn giao cho khách hàng (trừ phần mềm nhúng) Do lỗi hoặc thích ứng với thay đổi trong mơi trường bên ngồi (hệ điều hành mới, thiết bị ngoại vi mới) hoặc yêu cầu nâng cao chức năng hay hiệu năng  bảo trì Bảo trì áp dụng lại các bước vịng đời cho chương trình hiện tại ( khơng phải mới) Nhận xét: -Vịng đời cổ điển là khuơn cảnh cũ nhất và được sử dụng rộng rãi nhất cho kỹ nghệ phần mềm -Các dự án thực hiếm khi tuân theo dịng chảy tuần tự. Việc lập bao giờ cũng xuất hiện và gây ra các vấn đề khi áp dụng khuơn cảnh này -Khách hàng khĩ phát biểu hết yêu cầu tường minh của dự án  dễ cĩ bất trắc -Khách hàng phải kiên nhẫn. ở cuối thời gian dự án mới cĩ bản chương trình làm việc được. Nếu chương trình gặp lỗi  thảm hoạ Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 12 -Cĩ vị trí quan trọng và xác định trong cơng việc và kỹ nghệ phần mềm: đưa ra các phương pháp khoa học, đưa ra các bước tổng quát áp dụng được cho mọi khuơn cảnh kỹ nghệ phần mềm  cịn là mơ hình thủ tục được sử dụng rộng rãi -Cịn điểm yếu nhưng vẫn tốt hơn đáng kể so với cách tiếp cận ngẫu nhiên 1..3.3. Mơ hình làm bản mẫu (cách tiếp cận 2) Cách tiếp cận làm bản mẫu cho kỹ nghệ phần mềm là cách tiếp cận tốt nhất khi: -Khách hàng xác định được mục tiêu tổng quát cho phần mềm, nhưng chưa xác định được input và output -Người phát triển khơng chắc về hiệu quả của thuật tốn, về thích nghi hệ điều hành hay giao diện người máy cần cĩ Làm bản mẫu là một tiến trình giúp người phát triển cĩ khả năng tạo ra một mơ hình cho phần mềm cần xây dựng. Mơ hình cĩ thể lấy một trong 3 dạng: 1.Bản mẫu trên giấy hay trên PC mơ tả giao diện người-máy dưới dạng làm cho người dùng hiểu được cách các tương tác xuất hiện 2.Bản mẫu làm việc cài đặt một tập con chức năng phần mềm mong muốn 3.Một chương trình mà cĩ thực hiện một phần hay tất cả chức năng mong muốn nhưng cần cải tiến thêm các tính năng khác tuỳ theo khả năng phát triển . Dãy các sự kiện của khuơn cảnh làm bản mẫu được minh hoạ trong hình sau: giống như mọi cách tiếp cận tới việc phát triển phần mềm, việc làm bản mẫu với việc thu thập yêu cầu. Người phát triển và khách hàng gặp nhau và xác định mục tiêu tổng thể cho phần mềm, xác Tập hợp yêu cầu và làm mịn xác định mục tiêu tổng thể, khảo sát thêm để định rõ yêu cầu thiết kế nhanh (input, output) Xây dựng bản mãu Đánh giá của khách hàng về bản mãu Làm mịn bản mãu Sản phẩm  (vi chỉnh Y/C) Kết thúc Bắt đầu  Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 13 định các yêu cầu nào đã biết, miền nào cần khảo sát thêm. Rồi đến việc thiết kế nhanh. Thiết kế nhanh tập trung vào việc biểu diễn các khía cạnh của phần mềm thấy được đối với người dùng (cách đưa vào và định dạng đưa ra). Thiết kế nhanh  xây dựng một bản mẫu  người dùng đánh giá  làm mịn các yêu cầu cho phần mềm. Tiến trình lặp đi lặp lại xảy ra để cho bản mẫu được “vi chỉnh” thoả mãn yêu cầu của khách, đồng thời giúp người phát triển hiểu kỹ hơn cần phải thực hiện nhu cầu nào. Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 14 1.3.4.Mơ hình xoắn ốc (cách tiếp cận 3) -Bao gồm các tính năng tốt nhất của cả vịng đời cổ điển và làm bản mẫu + phân tích rủi ro -Xác định bởi 4 hoạt động chính: 1. Lập kế hoạch: xác định mục tiêu, giải pháp và ràng buộc 2. Phân tích rủi ro: phân tích các phương án và xác định/ giải quyết rủi ro 3. Kỹ nghệ: phát triển sản phẩm “mức tiếp theo” 4. Đánh giá của khách hàng: khẳng định kết quả của kỹ nghệ -Với mỗi lần lặp xung quanh xoắn ốc (bắt đầu từ tâm), xác định thêm các phiên bản được hồn thiện dần. Nếu phân tích rủi ro chỉ ra rằng khơng chắc chắn trong các yêu cầu thì việc làm bản mẫu cĩ thể được sử dụng trong gĩc phần tư kỹ nghệ; các mơ hình và các mơ phỏng khác cũng được dùng để làm rõ hơn vấn đề và làm mịn yêu cầu Khách đưa ra những gợi ý thay đổivịng xốy mới. Tại mỗi vịng xung quanh xoắn ốc, cao điểm của việc phân tích rủi ro là quyết định ”tiến hành hay khơng tiến hành”. Nếu rủi ro quá lớn thì cĩ thể đình chỉ dự án Mọi mạch đi xung quanh xoắn ốc đều địi hỏi kỹ nghệ (gĩc đơng-nam) cĩ thể được thực hiện bằng cách tiếp cận vịng đời và làm bản mẫu. Tất nhiên số các hoạt động phát triển phải tăng lên khi hoạt động chuyển xa hơn ra khỏi trung tâm vịng xốy ốc Nhận xét: -Khuơn cảnh mơ hình xoắn ốc đối với kỹ nghệ phần mềm hiện tại là cách tiếp cận thực tế nhất đến việc phát triển cho các hệ thống và phần mềm quy mơ lớn. Trong đĩ người ta dùng cách làm bản mẫu như một cơ chế làm giảm bớt rủi ro. -Mơ hình này tương đối mới và cịn chưa được sử dụng rộng rãi như vịng đời/ làm bản mẫu Cách tiếp cận thực tế nhất cho việc phát triển các hệ thống và phần mềm cĩ quy mơ lớn 1.3.5. Kỹ thuật thế hệ thứ 4 (cách tiếp cận 4) kế hoạch phân tích rủi ro kỹ nghệ Đánhgiácủakhách tập hợp yêu cầu ban đầu và kế hoạch dự án phân tích rủi ro dựa trên yêu cầu ban đầu bản mẫu ban đầu bản mẫu tiếp theo đánh giá của khách hàng kế hoạch dựa trên ý kiến của khách hàng phân tích rủi ro dựa trên phản ứng của khách hàng Quyết định cĩ tiếp tục hay khơng ? (cao điểm của việc phân tích rủi ro) Hướng tới hệ thống hồn chỉnh Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 15 Thuật ngữ “kỹ thuật thứ 4” (4GT) bao gồm một phạm vi rộng các cơng cụ phần mềm cĩ một điểm chung: -Mỗi cơng cụ đều cho phép người phát triển phần mềm xác định một số đặc trưng của phần mềm ở mức cao. Cơng cụ đĩ tự động sinh ra mã chương trình gốc theo nhu cầu của người phát triển. Khuơn cảnh 4GT tập trung vào khả năng xác định phần mềm ở mức độ gần với ngơn ngữ tự nhiên hay dùng một ký pháp ứng với chức năng. Mơi trường phát triển phần mềm hỗ trợ cho khuơn cảnh 4GT bao gồm một số hoặc tất cả các cơng cụ sau: -Ngơn ngữ phi thủ tục để truy vấn CSDL -Bộ sinh báo cáo -Bộ thao tác dữ liệu -Bộ tương tác và xác định màn hình -Bộ sinh chương trình/mã (code generation) -Khả năng đồ hoạ mức cao -Khả năng làm trang tính Khuơn cảnh 4GT cho kỹ nghệ phần mềm được thể hiện trên sơ đồ: Nhận xét: -Việc dùng khuơn cảnh 4GT cịn nhiều tranh cãi: +Người ủng hộ: cho rằng 4GT làm giảm đáng kể thời gian phát triển phần mềm, tăng hiệu suất của người phát triển phần mềm +Người phản đối: cho rằng 4GT khơng phải tất cả đều dễ dàng hơn các ngơn ngữ lập trình, các chương trình gốc do các cơng cụ này tạo ra là “khơng hiệu quả” và rằng việc bảo trì các hệ thống phần mềm lớn hơn được phát triển bằng cách dùng 4GT sẽ sinh ra nhiều vấn đề mới. -Đối với CSDL lớn, 4GT chỉ mới giới hạn vào các ứng dụng hệ thơng tin nghiệp vụ, đặc biệt, việc phân tích thơng tin và làm báo cáo (nhân tố chủ chốt cho các CSDL lớn). -Đối với ứng dụng vừa và nhỏ, thời gian thu thập dữ liệu sơ bộ cần để tạo phần mềm được giảm đáng kể. Khối lượng thiết kế cho các ứng dụng nhỏ cũng được rút bớt Tập hợp yêu cầu Chiến lược thiết kế Cài đặt sử dụng Kiểm thử Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 16 -Để phát triển phần mềm lớn địi hỏi tập trung nhiều vào phân tích, thiết kế và kiểm thử để đạt tới việc tiết kiệm thời gian là chủ yếu. -Các kỹ thuật thế hệ 4 đã trở thành phần quan trọng của việc phát triển phần mềm trong lĩnh vực ứng dụng hệ thơng tin. Bản chất thay đổi của sự phát triển phần mềm được thể hiện như sau: 1970 1980 1990 1.3.6. Tổ hợp các khuơn cảnh Bất kỳ một trong các khuơn cảnh cũng đều là cĩ thể dùng làm nền tảng để tích hợp các khuơn cảnh khác Sơ đồ tổ hợp các khuơn cảnh Trong mọi trường hợp, cơng việc bắt đầu: xác định mục tiêu, phương án, ràng buộc (thu thập yêu cầu sơ bộ). Từ điểm này, bất kỳ một con đường nào rẽ nhánh đều cĩ thể chọn. Ví dụ: đường bên trái (vịng đời cổ điển). Nếu yêu cầu cịn chưa được chắc chắn thì cĩ thể sử dụng bản mẫu để xác định yêu cầu đầy đủ hơn. Bằng cách dùng bản mẫu như một bản hướng dẫn, người phát triển cĩ thể trở lại vịng đời cổ điển (thiết kế, mã hố, kiểm thử). Theo một cách khác, bản mẫu cĩ thể tiến hố thành hệ thống sản xuất, quay trở về khuơn cảnh vịng đời để kiểm thử. Nhu cầu phần mềm Nhu cầu trung bình áp dụng các kỹ thuật thế hệ 4 Tập hợp các yêu cầu ban đầu (xác định các mục tiêu, các phương án, các ràng buộc) phân tích yêu cầu làm b ản mẫu 4GT Mơ hình xốy ốc thiết kế Mã hố Kiểm chứng 4GT Bản mẫu: vịng thứ n 4GT Mơ hình: vịng thứ n hệ thống hoạt động Bảo trì Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 17 Các kỹ thuật thế hệ 4 được dùng để cài đặt bản mẫu hay cài đặt hệ thống sản xuất trong bước mã hố của vịng đơì. 4GT cĩ thể được dùng kèm với mơ hình xốy ốc cho các bước làm bản mẫu hay mã hố Chú ý: Khơng nên cứng nhắc về việc chọn khuơn cảnh cho kỹ nghệ phần mềm. Dựa vào bản chất của ứng dụng mà ấn định ra cách tiếp cận cần được chọn. Bằng cách tổ hợp các cách tiếp cận thì ích lợi một tổng thể sẽ cịn lớn hơn là tổng của từng thành phần. 1.4. Các bước tổng quát trong tiến trình kỹ nghệ phần mềm Tiến trình phát triển kỹ nghệ phần mềm chứa 3 giai đoạn chính: -Xác định (trọng tâm là phân tích và xác định yêu cầu phần mềm ) -Phát triển (cấu trúc dữ liệu , kiến trúc phần mềm , thủ tục thuật tốn, giao diện) -Bảo trì (sửa lỗi, thích nghi, nâng cao) trong mọi miền ứng dụng, mọi cỡ dự án, mọi độ phức tạp. 1.4.1.Giai đoạn xác định +Tập trung vào cái gì? -Xác định thơng tin nào cần được xử lý -Chức năng và hiệu năng nào là cần cĩ -Giao diện nào cần được thiết lập -Ràng buộc thiết kế nào hiện cĩ -Tiêu chuẩn hợp lệ nào cần cĩ -Yêu cầu chủ chốt của hệ thống và phần mềm +Các phương pháp: Các phương pháp thay đổi tuỳ theo khuơn cảnh kỹ nghệ phần mềm (hay tổ hợp các khuơn cảnh) được áp dụng, song tối thiểu cần cĩ 3 bước riêng dưới dạng: - Phân tích hệ thống : Đã được mơ tả trong vịng đời cổ điển Xác định vai trị của từng phần tử trong hệ thống dựa trên máy tính Vạch ra vai trị mà phần mềm giữ - Lập kế hoạch dự án phần mềm : Xác định nhiệm vụ, cơng việc Lập lịch - Phân tích yêu cầu : Xác định phạm vi cho phần mềm Xác định chi tiết lĩnh vực thơng tin và chức năng phần mềm phải đảm nhận trước khi sang giai đoạn phát triển.  Hệ thống máy tính bao gồm 3 phần: 1. Các máy tính: máy chủ, máy trạm, máy đơn lẻ, các trang thiết bị mạng, hỗ trợ mạng và truyền thơng Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 18 2. phần mềm hệ thống : hệ điều hành mạng, trạm, các chương trình dịch, các ngơn ngữ lập trình, các hệ quản trị dữ liệu 3. Các phần mềm ứng dụng: giải quyết một lớp bài tốn cụ thể nào đĩ +Các bước tổng quát cần thực hiện :  .Lập kế hoạch phần mềm (bước khởi đầu): Cần: Xây dựng ra 1 mơ tả vắn tắt về phạm vi hoạt động của phần mềm Phân tích rủi ro Dự kiến tài nguyên cần cho việc xây dựng phần mềm Thiết lập các ước lượng chi phí và lịch biểu Mục tiêu: -Đưa ra một chỉ dẫn sơ bộ về tính khả thi của dự án với các ràng buộc về chi phí và lịch biểu mà cĩ thể thiết lập trước -Cần tạo ra được bản kế hoạch dự án phần mềm và được cấp quản lý dự án xét duyệt  Phân tích và xác định yêu cầu phần mềm : +Xác định chi tiết phần tử hệ thống được cấp phát cho phần mềm +Cĩ 2 cách phân tích và xác định yêu cầu : -Phân tích lĩnh vực thơng tin hình thức: sử dụng mơ hình luồng và cấu trúc thơng tin  mở rộng để trở thành đặc tả phần mềm -Xây dựng bản mẫu phần mềm + khách đánh giá củng cố yêu cầu / giới hạn tài nguyên  dịch thành các đặc trưng thiết kế phần mềm +Phân tích tổng thể phần mềm  xác định ra những tiêu chuẩn hợp lệ  phục vụ kế hoạch kiểm thử  tỏ rằng các yêu cầu được đáp ứng + Do cả người xây dựng phần mềm lẫn khách hàng tiến hành  .Bản đặc tả yêu cầu phần mềm : -là tài liệu bàn giao, được tạo ra do kết quả của bước phân tích yêu cầu và xác định phần mềm -thể hiện đỉnh điểm kết quả cuộc họp xét duyệt kỹ thuật giữa khách hàng và người phát triển phần mềm chức năng phần mềm lập kế hoạch dự án phần mềm phân tích & xác định yêu cầu phần mềm hay bản mẫu duyệt xét duyệt xét kế hoạch dự án (được cấp quản lý dự án xét duyệt) Đặc tả yêu cầu bản mẫu tính khả thi đảm bảo tính hợp lệ tài liệu bàn giao Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 19  Kế hoạch dự án phần mềm -Hình thành khi các yêu cầu (chấp nhận được) đã được xác định -Là cơ sở để đánh giá lại tính đúng đắn -Là tài liệu bàn giao của giai đoạn xác định cho giai đoạn tiếp theo 1.4.2. Giai đoạn phát triển +Tập trung vào thế nào? Khi xác định, người phát triển phần mềm cố gắng xác định cách cấu trúc dữ liệu và kiến trúc phần mềm cần được thiết kế, cách các chi tiết thủ tục được cài đặt, cách dịch thiết kế thành ngơn ngữ lập trình, cách thực hiện kiểm thử + Phương pháp áp dụng: thay đổi nhưng cĩ 3 bước đặc thù bao giờ cũng xuất hiện dưới dạng: 1.Thiết kế phần mềm: thiết kế việc chuyển hố các yêu cầu về phần mềm  tập các biểu diễn (dựa trên đồ hoạ, bảng, hay ngơn ngữ) +mơ tả cấu trúc dữ liệu , +kiến trúc phần mềm +mơ tả thủ tục thuật tốn, +đặc trưng giao diện 2.Mã hố: các biểu diễn thiết kế dịch thành 1 ngơn ngữ nhân tạo  kết quả là các lệnh thực hiện được trên máy tính 3.Kiểm thử phần mềm : phát hiện khiếm khuyết khi vận hành, trong logic và trong cài đặt +Các bước tổng quát cần được thực hiện : Đây là giai đoạn xây dựng hoặc triển khai việc chuyển hố các yêu cầu thành phần tử hệ thống vận hành mà ta quen gọi là phần mềm Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 20  Bước đầu cần hồn thành thiết kế : -Mơ tả về thiết kế kiến trúc và dữ liệu (tức là xây dựng một kiến trúc modul xác định giao diện, thiết lập cấu trúc dữ liệu, các tiêu chí định giá chất lượng) -Thiết kế sơ bộ: xét duyệt tính đầy đủ và khả năng theo dõi các yêu cầu phần mềm -Đặc tả thiết kế là bản thảo sơ bộ được bàn giao và trở thành một phần của cấu hình phần mềm  Thiết kế thủ tục: -Xét thủ tục cuả từng thành phần modul của thiết kế -Các mơ tả thủ tục chi tiết được bổ sung vào bản đặc tả thiết kế  Mã hố: dùng ngơn ngữ lập trình thích hợp/ cơng cụ CASE -Được đánh giá là kết quả của việc thiết kế tốt -Bản in chương trình ngơn n gữ gốc cho từng modul thành phần phần mềm là cấu hình bàn giao  Hoạt động kiểm chứng và làm hợp lệ: -Kiểm thử hiệu suất chức năng của từng modul -Kiểm thử tích hợp chức năng và giao diện -Kiểm thử tính hợp lệ (xác nhận mọi yêu cầu đã được đáp ứng chưa) Sau từng bước cĩ thể tiến hành gỡ lỗi-chẩn đốn-sửa lỗi  Kế hoạch và thủ tục kiểm thử: xây dựng cho từng bước kiểm thử 1.4.3. Giai đoạn bảo trì Giai đoạn bảo trì tập trung vào những thay đổi. Thay đổi gắn với việc sửa lỗi, thích ứng khi mơi trường phần mềm tiến hố và sự nâng cấp Giai đoạn bảo trì áp dụng lại các bước của giai đoạn xác định và phát triển nhưng trong hồn cảnh phần mềm đã cĩ. +Cĩ 3 kiểu thay đổi gặp phải trong giai đoạn bảo trì: 1.Sửa đổi: thay đổi phần mềm để khắc phục khiếm khuyết thiết kế dữ liệu và kiến trúc duyệt xét thiết kế thủ tục duyệt xét lập trình duyệt xét Đặc tả thiết kế sơ bộ Đặc tả thiết kế chi tiết bản mẫu mã gốc chương trình tài liệu bàn giao Kiểm thử (đơn vị, tích hợp và hợp lệ) gỡ lỗi Kế hoạch, thủ tục, kết quả kiểm thử tài liệu bàn giao Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 21 2.Thích nghi: mơi trường ban đầu thay đổi (CPU, hệ điều hành, ngoại vi) để phát triển phần mềm  thay đổi. Bảo trì thích nghi thực hiện việc sửa đổi phần mềm để thích hợp với những thay đổi mơi trường ngồi. 3.Nâng cao: chức năng phụ phát sinh bảo trì hồn thiện mở rộng phần mềm ra ngồi các yêu cầu chức năng gốc của nĩ +Các bước tổng quát cần thực hiện : Sai sãt cã thĨ g©y ra viƯc trë l¹i c¸c b­íc tr­íc Đây là giai đoạn kiểm chứng, bàn giao và bảo trì: cần tìm ra tối đa số lỗi trước khi bàn giao sản phẩm cho khách hàng, chuẩn bị phần mềm để bàn giao, bảo trì phần mềm thơng qua cuộc đời cĩ ích của nĩ.  Trước khi bàn giao: cần tiến hành một loạt hoạt động đảm bảo chất lượng, chú ý các tài liệu bàn giao cĩ chứa danh mục, cơ chế kiểm sốt, cấu hình thích hợp  Sau khi bàn giao: Bảo trì- sửa lỗi, thích nghi mơi trường và nâng cao chức năng. Những thay đổi về phần mềm bao gồm khơng chỉ cĩ mã máy mà cịn phải cĩ tồn bộ cấu hình (như mọi chương trình, dữ liệu, tư liệu đã được phát triển trong các giai đoạn xác định và xây dựng) Nhận xét: -Trong các khuơn cảnh vịng đời cổ điển và mơ hình xốy trơn ốc: các giai đoạn và các bước được mơ tả đều được xác định một cách tường minh -Trong các khuơn cảnh làm bản mẫu và 4GT: một số bước được nêu ra nhưng khơng được xác định tường minh. Cách tiếp cận tới từng bước cĩ thể biến động từ khuơn cảnh nọ sang khuơn cảnh kia, nhưng tồn bộ cách tiếp cận yêu cầu bao gồm việc xác định, phát triển và bảo trì vẫn khơng thay đổi. -Cĩ thể tiến hành từng giai đoạn theo kỉ luật và phương pháp đã được xác định rõ hoặc cũng cĩ thể làm lộn xộn qua mỗi bước một cách ngẫu nhiên. Từ đây, chúng ta quan tâm đến cách tiếp cận tới việc phát triển phần mềm nhấn mạnh vào kỷ luật và phương pháp đã được xác định rõ - một cách tiếp cận quen gọi là kỹ nghệ phần mềm Kiểm thử (đơn vị, tích hợp và hợp lệ) Gỡ lỗi phát hành và phân phối duyệt xét Bảo trì (sửa đổi, thích nghi mơi trường, duyệt xét Kế hoạch, thủ tục và kết quả việc kiểm chứng Tài liệu người dùng Chương trình vận hành mã gốc chương trình Tài liệu đã sửa tài liệu bàn giao tài liệu bàn giao tài liệu bàn giao tài liệu bàn giao Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 22 -Người ta cĩ thể chia việc phát triển phần mềm bao gồm 4 pha: +Phân tích và xác định yêu cầu +Thiết kế hệ thống và thiết kế phần mềm +Thực hiện và thử nghiệm các đơn vị của phần mềm +Tích hợp và thử nghiệm hệ thống Khi đĩ vịng đời phần mềm được biểu diễn theo 5 giai đoạn: 1.Giai đoạn phân tích và xác định yêu cầu 2.Giai đoạn thiết kế hệ thống và thiết kế phần mềm 3.Giai đoạn thực hiện và thử nghiệm các đơn vị của phần mềm 4.Giai đoạn tích hợp và thử nghiệm hệ thống 5.Giai đoạn vận hành và bảo trì -Mơ hình quá trình phần mềm: tạo nguyên mẫu (phát triển một hệ để cho người dùng thực nghiệm, rồi thiết lập các yêu cầu mới, tạo nguyên mẫu mới cho tới khi sản phẩm đạt yêu cầu) là gần giống như mơ hình thăm dị (phát triển càng nhanh càng tốt một hệ thống rồi cải biên hệ thống đĩ cho tới khi nĩ thực hiện được những yêu cầu) Trong một số trường hợp riêng biệt, mơ hình quá trình phần mềm cĩ thể theo kiểu tập hợp các thành phần dùng lại được để xây dựng phần mềm thoả mãn các yêu cầu. -Bên cạnh mơ hình thác nước phổ dụng (quá trình phần mềm được chia thành một số giai đoạn, khi mỗi giai đoạn kết thúc thì quá trình chuyển sang giai đoạn kế tiếp), người ta cĩ nghiên cứu các mơ hình khác như: +Mơ hình biến đổi hình thức: phát triển một đặc tả hình thức của một hệ phần mềm, biến đổi đặc tả đĩ (bảo đảm tính đúng đắn của các phép biến đổi) cho tới khi cĩ được một chương trình thoả mãn các yêu cầu. -Theo Raccoon thì trong những năm gần đây người ta quan tâm đến mơ hình xoắn ốc nhiều hơn cả. Mơ hình được Boehm đưa ra năm 1988. Mơ hình này dựa trên việc phân tích yếu tố rủi ro. Quá trình phát triển được chia thành nhiều thời kỳ, mỗi thời kỳ bắt đầu bằng việc phân tích rủi ro rồi tạo nguyên mẫu, cải tạo và phát triển hệ thống, duyệt lại, và cứ thế tiếp tục -Theo Ian Sommerville thì Boehm đã đưa ra các tỷ lệ chi phí trong phần việc như bảng sau: Kiểu hệ thống phân tích yêu cầu & thiết kế (%) thực hiện (mã hố) (%) thử nghiệm (%) 1.Các hệ thống lệnh và điều khiển 2.Các hệ thống điều hành 3.Các hệ thống khoa học 4.Các hệ thống tác nghiệp 46 33 44 44 20 17 26 28 34 50 30 28 I.5.Đánh giá tổng quát về chất lượng hệ thống Việc đánh giá tổng quát về chất lượng hệ thống bao gồm việc đánh giá chất lượng tài liệu đặc tả, chất lượng thiết kế và chất lượng của phần mềm cơng trình (kỹ nghệ) tốt thơng qua các thuộc tính chung. Bốn thuộc tính chủ chốt mà một hệ phần mềm tốt hẳn là phải cĩ: Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 23  Cĩ thể bảo trì được: phần mềm tuổi thọ dài phải được viết và được lập tư liệu sao cho việc thay đổi cĩ thể tiến hành được mà khơng quá tốn kém  Đáng tin cậy: phần mềm phải thực hiện được điều mà người tiêu dùng mong mỏi và khơng thất bại nhiều hơn những điều đã được đặc tả  Cĩ hiệu quả: hệ thống phải khơng lãng phí nguồn lực bộ nhớ, bộ xử lý. Khơng địi hỏi phải cực đại hố độ hiệu quả vì rằng việc đĩ cĩ thể làm cho phần mềm rất khĩ thay đổi  Cĩ giao diện người sử dụng thích hợp: giao diện người sử dụng phải phù hợp với khả năng và kiến thức của người dùng hệ thống Giá cả phải được tính đến khi xây dựng 1 phần mềm cơng trình tốt. Bảo trì được coi là thuộc tính chủ chốt vì rằng các chi phí gắn kết với sản phẩm phần mềm chủ yếu là trong giai đoạn phần mềm đĩ được đưa vào sử dụng Việc tối ưu hố mọi thuộc tính này là rất khĩ khăn. Quan hệ giữa chi phí và sự cải thiện từng thuộc tính khơng phải là tuyến tính và các cải thiện nho nhỏ trong bất kỳ thuộc tính nào cũng là rất đắt. Kỹ nghệ phần mềm ________________________________________________________________________ _______________________________________________________________________ Nguyễn Quốc Toản - Nguyên văn Vỵ - Vũ Đức Thi - Lê Đình Phùng 24 Tĩm tắt Phần mềm đã trở thành phần tử chủ chốt trong tiến hố của các hệ thống và sản phẩm dựa trên máy tính. Hơn 40 năm qua, bản thân phần mềm đã tiến hố từ một cơng cụ phân tích thơng tin và giải quyết vấn đề  một ngành cơng nghiệp Kỹ nghệ phần mềm là một bộ mơn tích hợp cả các phương pháp, cơng cụ, thủ tục để phát triển kỹ nghệ phần mềm máy tính. Cĩ thể đề ra một số khuơn cảnh khác nhau cho kỹ nghệ phần mềm, mỗi khuơn cảnh đều cĩ điểm mạnh, điểm yếu, nhưng nĩi chung tất cả đều cĩ một dãy các giai đoạn tổng quát. ? củng cố 1. Mơn học kỹ nghệ phần mềm (SE) phục vụ cho ai là chính và tại sao họ cần nĩ ? 2. Phương pháp tiếp cận của người thực hành là gì ? 3. Các chủ đề cần quan tâm trong SE ? 4. Tại sao nĩi phần mềm là nhân tố để đánh giá sự khác biệt ? 5. Việc chấp nhận thực hành SE là do các thách thức nào ? 6. Các thành phần phần mềm được xây dựng bằng cách nào ? 7. Bản chất của ứng dụng phần mềm được xác định bởi các nhân tố nào ? 8. Phần mềm ứng dụng được phân loại theo các chủ đề nào ? 9. Anh (chị) hiểu thế nào là SE ? 10. So sánh các cách tiếp cận cơ bản trong tiến trình phát triển phần mềm ? (chú ý đến các sơ đồ) 11. ý nghĩa của việc tổ hợp các khuơn cảnh ? (chú ý đến các sơ đồ) 12. Nêu và phân tích các bước tổng quát trong tiến trình SE ? (chú ý đến sơ đồ) 13. Giới thiệu tĩm tắt các kiểu mơ hình quá trình phần mềm ? 14. Nêu các thuộc tính chủ chốt mà hệ phần mềm tốt phải cĩ? 14 maart, 2015

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_ki_nghe_phan_mem_1_3118.pdf
Tài liệu liên quan