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 bai_giang_cong_nghe_phan_mem_chuong_1_tong_quan_ve_cong_nghe.pdf




