Bài giảng Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm - Lê Thị Mỹ Hạnh
Nội dung
Lịch sử phát triển phần mềm và khủng hoảng
phần mềm
Phân loại phần mềm
Chất lượng phần mềm
Đặc trưng của phần mềm
Công nghệ phần mềm
Khái niệm
Mục đích
Nguyên tắc
Đặc trưn
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm - Lê Thị Mỹ Hạnh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm - Lê Thị Mỹ Hạnh
Tổng quan về Công nghệ phần mềm (1) Lê Thị Mỹ Hạnh Khoa Công nghệ Thông tin Trường Đại học Bách khoa Đại học Đà Nẵng Lê Thị Mỹ Hạnh - Khoa CNTT 2 Nội dung Lịch sử phát triển phần mềm và khủng hoảng phần mềm Phân loại phần mềm Chất lượng phần mềm Đặc trưng của phần mềm Công nghệ phần mềm Khái niệm Mục đích Nguyên tắc Đặc trưng Lê Thị Mỹ Hạnh - Khoa CNTT 3 Lịch sử phát triển phần mềm 1946, máy tính điện tử ra đời 1950, máy tính được thương mại hóa Phần mềm bắt đầu được phát triển Những năm 1960 Những thất bại về phát triển phần mềm Sản phẩm phần mềm phức tạp Nhiều lỗi Tổ chức sản xuất: giá thành, tiến độ, ... Người ta nói đến “Khủng hoảng phần mềm” Lê Thị Mỹ Hạnh - Khoa CNTT 4 Lịch sử phát triển phần mềm Từ thủ công đến công nghệ Năm 1968, hội thảo đầu tiên về “Công nghệ phần mềm” Chương trình nhỏ không chuyên nghiệp 1 người làm Người sử dụng = người phát triển 1 sản phẩm = mã nguồn Tiến trình phát triển đơn giản Dự án lớn chuyên nghiệp Nhiều người làm khách hàng & nhà cung cấp Nhiều sản phẩm Tiến trình phát triển phức tạp Lê Thị Mỹ Hạnh - Khoa CNTT 5 Khủng hoảng phần mềm Về mặt quản lý Kế hoạch Không đánh giá đúng giá thành Không đúng tiến độ Chi phí phát triển/chi phí bảo trì Về mặt pháp lý Hợp đồng không rõ ràng, không chặt chẽ Nhân lực Đào tạo Giao tiếp Thiếu tiêu chuẩn đánh giá sản phẩm Thiếu qui trình quản lý Lê Thị Mỹ Hạnh - Khoa CNTT 6 Khủng hoảng phần mềm Điều tra của General Acounting Office (1982) trên nhiều dự án với tổng vốn đầu tư $68.000.000 Không giao sản phẩm: 29% Không được sử dụng: 47% Bỏ cuộc: 19% Được sử dụng sau khi đã chỉnh sửa: 3% Tốt: 2% Lê Thị Mỹ Hạnh - Khoa CNTT 7 Khủng hoảng phần mềm Lê Thị Mỹ Hạnh - Khoa CNTT 8 Khã khăn vµ th¸ch thøc Ph¸t triÓn phÇn mÒm thùc tÕ lµ lÜnh vùc ®Çy khã khăn, th¸ch thøc (rñi ro cao): NhiÒu dù ¸n lín thÊt b¹i Chi phÝ ph¸t triÓn cao Kh«ng ®¹t ®−îc môc ®Ých (kh«ng ®−îc ®−a vµo sö dông, hiÖu qu¶ thÊp) Lê Thị Mỹ Hạnh - Khoa CNTT 9 VÝ dô: c¸c dù ¸n thÊt b¹i OS 360 > 1M dßng lÖnh Tõ 1963->1966 (gÊp ®«i dù kiÕn) 5000 nh©n c«ng 200 M USDOS/MVS Ö(IBM 370) 7M dßng lÖnh Lê Thị Mỹ Hạnh - Khoa CNTT 10 VÝ dô: tæn thÊt do lçi phÇn mÒm 1978: vÖ tinh phãng lªn sao Kim bÞ háng do lçi cña phÇn mÒm lçi cña c©u lÖnh FOR (Fortran) 1996: vÖ tinh Ariane 5 háng do lçi phÇn mÒm g©y thiÖt h¹i 500M$ lçi phÐp to¸n sè thùc (Ada) Lê Thị Mỹ Hạnh - Khoa CNTT 11 B¶n chÊt cña vÊn ®Ò TÝnh phøc t¹p lµ b¶n chÊt cña phÇn mÒm Yªu cÇu sö dông phÇn mÒm kh«ng ngõng thay ®æi Sù tiÕn bé nhanh cña phÇn mÒm vµ phÇn cøng (h¹ tÇng -phÇn nÒn): thay ®æi Ö Yªu cÇu tiÕn hãa phÇn mÒm lµ tÊt yÕu Lê Thị Mỹ Hạnh - Khoa CNTT 12 TiÕn hãa cña phÇn mÒm Chi phÝ cho phÇn mÒm cao PhÇn mÒm trë thµnh ngµnh c«ng nghiÖp khæng lå PhÝ ph¸t triÓn OS 360 (1963~1966) : 200M$ Chi phÝ phÇn mÒm năm 1985 : 70B$ Chi phÝ cho phÇn mÒm năm 2000 : 770B$ (møc tăng 12%/năm) Năng suÊt lËp trình vÉn thÊp ph¸t triÓn phÇn mÒm mang tÝnh thñ c«ng gi¸ thµnh cao Lê Thị Mỹ Hạnh - Khoa CNTT 13 Th¸ch thøc ®èi víi phÇn mÒm Kh¶ năng x©y dùng phÇn mÒm kh«ng ®¸p øng kÞp nhu cÇu tăng nhanh (cã internet, mäi lÜnh vùc x· héi) Qui m« vµ ®é phøc t¹p ngµy cµng tăng khiÕn chi phÝ ph¸t triÓn, b¶o trì cµng ngµy cµng tèn kÐm Sù tinh vi cña phÇn cøng vưît xa kh¶ năng t¹o ra phÇn mÒm ®Ó khai th¸c nã Ö CÇn cã những phư¬ng ph¸p, c«ng cô hiÖn ®¹i ®Ó ph¸t triÓn phÇn mÒm Lê Thị Mỹ Hạnh - Khoa CNTT 14 Khã khăn cña ph¸t triÓn phÇn mÒm "Khã s¶n xuÊt ®−îc phÇn mÒm cã chÊt l−îng theo ®óng lÞch trình & kinh phÝ cho tr−íc" PhÇn mÒm lµ phÇn tö logic: kh«ng kiÓm so¸t ®−îc theo ph−¬ng ph¸p th«ng th−êng trong s¶n xuÊt(rñi ro, tÝnh thñ c«ng) Ö trong b¶o trì (lín, phøc t¹p, thay ®æi nhanh) trong kiÓm so¸t chÊt l−îng( lµm thñ c«ng, nhiÒu ng−êi, nhiÒu c«ng ®o¹n) Lê Thị Mỹ Hạnh - Khoa CNTT 15 ®Þnh nghÜa vÒ phÇn mÒm PhÇn mÒm bao gåm: Ch−¬ng trình m¸y tÝnh PhÇn vËn hµnh ®−îc: m· m¸y Kh«ng vËn hµnh: m· nguån C¸c cÊu tróc dữ liÖu CÊu tróc lµm viÖc (bé nhí trong) CÊu tróc l−u trữ Tµi liÖu sö dông H−íng dÉn sö dông Tham kh¶o kü thuËt Tµi liÖu ®Æc t¶, ph©n tÝch, thiÕt kÕ, kiÓm thö Lê Thị Mỹ Hạnh - Khoa CNTT 16 Phân loại phần mềm (trên mục đích sử dụng) PhÇn mÒm hÖ thèng TËp c¸c ch−¬ng trình phôc vô cho c¸c ch−¬ng trình T−¬ng t¸c trùc tiÕp víi phÇn cøng Phôc vô nhiÒu ng−êi dïng PhÇn mÒm thêi gian thùc Thu thËp, xölÝ c¸c dữ kiÖn thÕ giíi thùc иp øng yªu cÇu chÆt chÏvÒ thêi gian •kiÓm so¸t, ®iÒu khiÓn •®iÒu phèi •thu thËp dữ liÖu •ph©n tÝch dữ liÖu Lê Thị Mỹ Hạnh - Khoa CNTT 17 Phân loại phần mềm (tt) PhÇn mÒm nghiÖp vô Xö lÝ c¸c th«ng tin nghiÖp vô, th−êng g¾n víi CSDL Xö lÝ c¸c giao t¸c (m¹ng m¸y tÝnh b¸n hµng...) LÜnh vùc øng dông rÊt lín PhÇn mÒm khoa häc küthuËt ĐÆc tr−ng bëi thuËt to¸n (tÝnh to¸n vËt lÝ, m«pháng) Đßi hái năng lùc tÝnh to¸n cao PhÇn mÒm nhóng (embeded software) ChØ ®äc ra khi thiÕt bÞ khëi ®éng, Thùc hiÖn chøc năng h¹n chÕ (®iÒu khiÓn s¶n phÈm) Lµ sù kÕt hîp giữa hÖ thèng vµ thêi gian thùc Lê Thị Mỹ Hạnh - Khoa CNTT 18 Phân loại phần mềm (tt) PhÇn mÒm m¸y tÝnh c¸ nh©n C¸c bµi to¸n nghiÖp vô nhá(øng dông văn phßng) Giao diÖn ®å häa ph¸t triÓn Cã nhu cÇu rÊt cao PhÇn mÒm trÝ tuÖ nh©n t¹o Dïng c¸c thuËt to¸n phi sè(logic): suy luËn, tìm kiÕm HÖ chuyªn gia, nhËn d¹ng, trßch¬i... PhÇn mÒm c«ng cô cho Công nghÖ phÇn mÒm compiler, c¸c c«ng cô CASE... Lê Thị Mỹ Hạnh - Khoa CNTT 19 Ph©n lo¹i phÇn mÒm (trªn quan ®iÓm cña ng−êi ph¸t triÓn) S¶n phÈm ®Æt hµng s¶n xuÊt theo ®¬n ®Æt hµng (HTTT qu¶n lý...) ®¬n chiÕc, yªu cÇu ®Æc thï S¶n phÈm chung b¸n réng r·i tháa m·n yªu cÇu chung cña sè lín users ª Mçi lo¹i cã c¸ch thøc tiÕp cËn riªng, nhÊt lµ ë c¸c b−íc ph©n tÝch, b¶o trì Lê Thị Mỹ Hạnh - Khoa CNTT 20 Chất lượng phần mềm Tính đúng đắn (correctness) Thực hiện đúng các đặc tả về chức năng (functional specification) Tính tin cậy (reliability) Đáp ứng được những yêu cầu đặt ra Tính bền vững (robustness) Họat động tốt trong những điều kiện sử dụng khác nhau Lê Thị Mỹ Hạnh - Khoa CNTT 21 Chất lượng phần mềm Tính hiệu quả (efficiency) Sử dụng hiệu quả các nguồn tài nguyên (bộ nhớ, CPU, ...) Tính thân thiện (user friendlyness) Dễ sử dụng Tính dễ kiểm tra (verifiability) Dễ kiểm tra chất lượng Lê Thị Mỹ Hạnh - Khoa CNTT 22 Chất lượng phần mềm Tính dễ hiểu (understandability) Dễ hiểu đối với người sử dụng cũng như với người phát triển Tính hợp tác (interoperability) Dễ hợp tác với các phần mềm khác Sản xuất hiệu quả (productivity) Tiến trình sản xuất phần mềm phải hiệu quả Lê Thị Mỹ Hạnh - Khoa CNTT 23 Chất lượng phần mềm Sự thỏa hiệp giữa các tiêu chí chất lượng tính thân thiện / tính bền vững tính khả chuyển / tính hiệu quả Lê Thị Mỹ Hạnh - Khoa CNTT 24 Đặc trưng của phần mềm Ph¸t triÓn phÇn mÒm kh¸c chÕ t¹o phÇn cøng S¶n xuÊt mang tÝnh thñ c«ng (s¸ng t¹o, kh«ng theo khu«n mÉu) Khã kiÓm so¸t chÊt l−îng ë c¸c b−íc trung gian Khã dù ®o¸n tr−íc vÒ hiÖu năng Ø ¸p dông c¸c ph−¬ng ph¸p tiªn tiÕn Tù ®éng những kh©u cô thể Lê Thị Mỹ Hạnh - Khoa CNTT 25 Đặc trưng của phần mềm (tiếp) PhÇn mÒm tho¸i hãa theo thêi gian M«i tr−êng sö dông, nhu cÇu thay ®æi Lçi sinh ra tăng do n©ng cÊp PhÇn mÒm kh«ng ®−îc l¾p r¸p theo mẫu Kh«ng cã danh môc chi tiết cho trước Đ−îc ®Æt hµng theo tõng yªu cÇu riªng Ø "b¶o trì phÇn mÒm phøc t¹p h¬n h¼n so víi b¶o trì phÇn cøng" Lê Thị Mỹ Hạnh - Khoa CNTT 26 Tóm tắt PhÇn mÒm cã tÇm quan träng ®Æc biÖt: t¹o nªn sù kh¸c biÖt cña tæ chøc, cña hÖ thèng Ph¸t triÓn phÇn mÒm lµ c«ng viÖc phøc t¹p, rñi ro lµ phÇn tö logic, kh«ng cã ®é ®o trùc quan, khã kiÓm so¸t chÊt l−îng khi ph¸t triÓn kh«ng ®−îc ®Þnh hình tr−íc, khã dù ®o¸n hiÖu năng khi ch−a cã s¶n phÈm mang tÝnh thñ c«ng, phô thuéc vµo con ng−êi bÞ ¶nh h−íng lín tõ m«i tr−êng->nhiÒu rñi ro CÇn ¸p dông c¸c ph−¬ng ph¸p tiªn tiÕn (kü nghÖ phÇn mÒm) Lê Thị Mỹ Hạnh - Khoa CNTT 27 Công nghệ phần mềm Khái niệm Công nghệ phần mềm (Software Engineering-SE) nghiên cứu và phát triển các phương pháp, kĩ thuật và công cụ nhằm xây dựng các phần mềm một cách kinh tế, có độ tin cậy cao và hoạt động hiệu quả Thiết kế, xây dựng và bảo trì các phần mềm phức tạp, bền vững và chất lượng. Lê Thị Mỹ Hạnh - Khoa CNTT 28 Công nghÖ phÇn mÒm Các khái niệm Bauer [1969]:SE 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 1 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 Parnas [1987]:SE lµ viÖc x©y dùng phÇn mÒm nhiÒu phiªn b¶n bëi nhiÒu ng−êi Sommerville [1995]:SE lµ mét nguyªn lý kü nghÖ liªn quan ®Õn tÊt c¶ c¸c mÆt (lý thuyÕt, ph−¬ng ph¸p vµ c«ng cô) cña s¶n phÇn mÒm Lê Thị Mỹ Hạnh - Khoa CNTT 29 Công nghệ phần mềm Mục đích Mục đích Áp dụng thực tế Các kiến thức khoa học Các nguyên tắc kinh tế Các nguyên tắc quản lý Các kỹ thuật và công cụ thích hợp Để sản xuất và bảo trì các phần mềm nhằm bảo đảm 4 yêu cầu (FQCD): Phần mềm tạo ra phải đáp ứng được yêu cầu người sử dụng Phần mềm phải đạt được các tiêu chuẩn về chất lượng Giá thành phải nằm trong giới hạn đặt ra Tiến độ xây dựng phần mềm phải đảm bảo Lê Thị Mỹ Hạnh - Khoa CNTT 30 Công nghệ phần mềm Nguyên tắc Các nguyên tắc cơ bản Chặt chẽ (rigor and formality) Chia nhỏ (separation of concerns) Mô-đun hóa (modularity) Trừu tượng (abstraction) Phòng ngừa sự thay đổi (anticipation of change) Tổng quát hóa (generality) Giải quyết từng bước (incrementality) Lê Thị Mỹ Hạnh - Khoa CNTT 31 Công nghệ phần mềm Nguyên tắc Chặt chẽ (rigor and formality) Sử dụng mô hình lý thuyết và toán học áp dụng cho tất cả các bước, tất cả các sản phẩm Ví dụ “chọn z là giá trị lớn nhất của x và y” z = max(x, y) Lê Thị Mỹ Hạnh - Khoa CNTT 32 Công nghệ phần mềm Nguyên tắc Chia nhỏ (separation of concerns) Làm chủ độ phức tạp Chỉ tập trung một lĩnh vực cùng một lúc Chia vấn đề thành các phần nhỏ hơn Giải quyết một phần nhỏ sẽ đơn giản hơn “chia để trị” (divide and conquer) Có thể chia nhỏ theo thời gian: lập kế hoạch khái niệm: giao diện / thuật toán Xử lý: chia các xử lý con Lê Thị Mỹ Hạnh - Khoa CNTT 33 Công nghệ phần mềm Nguyên tắc Mô-đun hóa (modularity) Chia nh độ phức tạp Dễ hiểu Dễ quản lý các hệ thống phức tạp Quan hệ mật thiết với nguyên tắc “chia nhỏ” Các phương pháp mô-đun hóa Chiến lưọc từ trên xuống (top-down) Chiến lưọc từ dưới lên (bottom-up) Chất lượng của mô-đun hóa liên kết lỏng lẻo (low coupling) Kết cố cao (high cohesion) Lê Thị Mỹ Hạnh - Khoa CNTT 34 Công nghệ phần mềm Nguyên tắc Trừu tượng (abstraction) Loại bỏ những gì không quan trọng Chỉ xem xét các yếu tố quan trọng Sử dụng các mô hình mô hình cho người sủ dụng mô hình cho người phát triển Ví dụ Ngôn ngữ lập trình/cấu truc phần cứng Xây dựng tài liệu Đặc tả bởi điều kiện trước/sau Lê Thị Mỹ Hạnh - Khoa CNTT 35 Công nghệ phần mềm Nguyên tắc Phòng ngừa sự thay đổi (anticipation of change) Phần mềm là sản phẩm thường xuyên thay đổi Dự báo các yếu tố có thể thay đổi ảnh hưởng có thể các thay đổi thường gặp Trong đặc tả yêu cầu Trong ngữ cảnh sử dụng Khả năng về công ngệ Lê Thị Mỹ Hạnh - Khoa CNTT 36 Công nghệ phần mềm Nguyên tắc Tổng quát hóa (generality) xem xét vấn đề trong ngữ cảnh tổng quát Giải quyết vấn đề lớn hơn Mục đích Tái sử dụng dễ dàng Có thể sử dụng các công cụ có sẵn Sử dụng design patterns Chi phí có thể tăng cao Lê Thị Mỹ Hạnh - Khoa CNTT 37 Công nghệ phần mềm Nguyên tắc Giải quyết từng bước (incrementality) Nguyên tắc xác định một phần (tập con) Phát triển Đánh giá Bắt đầu lại Áp dụng cho Phát triển một sản phẩm Một đặc tả/một kiến trúc/ Mô hình phát triển Mô hình lặp Lê Thị Mỹ Hạnh - Khoa CNTT 38 Công nghệ phần mềm Các đặc trưng cơ bản Lµ mét qu¸ trình kü nghÖ gåm ba mÆt: Thñ tôc (procedures) Ph−¬ng ph¸p (methods) C«ng cô (tools) Nh»m t¹o ra phÇn mÒm hiÖu qu¶, víi c¸c giíi h¹n cho tr−íc Lê Thị Mỹ Hạnh - Khoa CNTT 39 C¸c thñ tôc (procedures) qui trình qu¶n lý: X¸c ®Þnh trình tù thùc hiÖn c¸c c«ng viÖc X¸c ®Þnh c¸c tµi liÖu, s¶n phÈm cÇn bµn giao, vµ c¸ch thøc thùc hiÖn ĐÞnh c¸c mèc thêi gian (millestones) vµ s¶n phÈm bµn giao Công nghệ phần mềm Các đặc trưng cơ bản Lê Thị Mỹ Hạnh - Khoa CNTT 40 C¸c ph−¬ng ph¸p (methods) C¸ch lµm cô thÓ ®Ó x©y dùng phÇn mÒm Mçi c«ng ®o¹n lµm phÇn mÒm cã c¸c ph−¬ng ph¸p riªng Ph−¬ng ph¸p ph©n tÝch (x¸c ®Þnh, ®Æc t¶) Ph−¬ng ph¸p thiÕt kÕ (m« hình, thuËt to¸n, dữ liÖu...) Ph−¬ng ph¸p lËp trình (h−íng ®èi t−îng) Ph−¬ng ph¸p kiÓm thö (chøc năng, cÊu tróc) Công nghệ phần mềm Các đặc trưng cơ bản Lê Thị Mỹ Hạnh - Khoa CNTT 41 C¸c ph−¬ng ph¸p (methods) Ph−¬ng ph¸p h−íng cÊu tróc th−êng bao gåm: M« hình vÒ hÖ thèng: th−êng m« t¶ b»ng ®å thÞ C¸c ký ph¸p: gióp m« t¶ c¸c m« hình C¸c quy t¾c: c¸c rµng buéc ®Æt lªn m« hình C¸c ®Ò xuÊt: c¸c lêi khuyªn cho thiÕt kÕ tèt H−íng dÉn vÒ tiÕn trình: c¸c ho¹t ®éng cÇn thùc hiÖn Công nghệ phần mềm Các đặc trưng cơ bản Lê Thị Mỹ Hạnh - Khoa CNTT 42 C¸c c«ng cô - tools Cung cÊp sù trî gióp tù ®éng / b¸n tù ®éng cho tõng ph−¬ng ph¸p Computer Aided Software Engineering –CASEc¸c c«ng cô ph©n mÒm ®−îc chuÈn hãa ®Ó trî giópc¸c c«ng ®o¹n kh¸c nhau trong qu¸ trình ph¸t triÓn VÝ dô: compiler, debugger c«ng cô sinh giao diÖn (C Builder,...) hç trî ph©n tÝch, thiÕt kÕ (Rwin,Modeler(Oracle Designer, Rational Rose,...) Công nghệ phần mềm Các đặc trưng cơ bản
File đính kèm:
- bai_giang_cong_nghe_phan_mem_chuong_1_tong_quan_ve_cong_nghe.pdf