Bài giảng Giới thiệu công nghệ phần mềm - Nguyễn Thanh Bình

 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)

 hoạt động tốt trong những điều kiện sử dụng

khác nhau

pdf13 trang | Chuyên mục: Công Nghệ Phần Mềm | Chia sẻ: dkS00TYs | Lượt xem: 1803 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Giới thiệu công nghệ phần mềm - Nguyễn Thanh Bình, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
1Giới thiệu
công nghệ phần mềm 
(1)
Nguyễn Thanh Bình
Khoa Công nghệ Thông tin
Trường ðại học Bách khoa
ðại học ðà Nẵng
2
Nội dung
 Lịch sử phát triển phần mềm và
khủng hoảng phần mềm ?
 Công nghệ phần mềm
 Khái niệm
 Mục ñích
 Nguyên tắc
 Chất lượng phần mềm
 Phân loại phần mềm
23
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”
4
Lịch sử phát triển phần mềm
 Từ thủ công ñến công nghệ
• 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
1968, hội thảo khoa học ñầu tiên về “Công nghệ phần mềm”
35
Khủng hoảng phần mềm
 Về mặt sản phẩm
 chất lượng sản phẩm phần mềm
• không ñáp ứng yêu cầu thực tế
• khó sử dụng
• không tin cậy
• khó bảo trì
• khách hàng không hài lòng
6
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 quy trình quản lý
47
Khủng hoảng phần mềm
 ðiều tra của General Acounting Office 
(1982) trên nhiều sự á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%
8
Khủng hoảng phần mềm
59
Công nghệ phần mềm
Khái niệm
 Công nghệ phần mềm 
 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 
phc tp, bn vng và cht lưng
10
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
611
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)
12
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)
713
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
14
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)
815
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 trúc phần cứng
• xây dựng tài liệu
• ñặc tả bới ñiều kiện trước và sau
16
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 phải 
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 nghệ
917
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
18
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ô ñặc tả / một kiến trúc / ...
• mô hình phát triển
• mô hình lặp
10
19
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)
 hoạt ñộng tốt trong những ñiều kiện sử dụng 
khác nhau
20
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
11
21
Chất lượng phần mềm
 Tính dễ bảo trì (maintainability)
 dễ xác ñịnh và sửa lỗi
 dễ tạo ra những phiên bản mới khi có sự mở
rộng
 Tính tái sử dụng (reusability)
 dễ tái sử dụng trong những phần mềm mới
 Tính khả chuyển (portability)
 dễ sử dụng trong các môi trường mới
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ư ñối 
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ả
12
23
Chất lượng phần mềm
 Khả năng giao sản phẩm ñúng hạn 
(timeliness)
 giao sản phẩm theo từng gói
 Tính trong suốt (visibility)
 ñối với người phát triển/người quản lý
• hiểu rỏ tiến ñộ phát triển
• hiểu rỏ ảnh hưởng của các quyết ñịnh
 ñối với khách hàng
• hiểu rỏ tiến ñộ phát triển
• hiểu rỏ ảnh hưởng của các quyết ñịnh
24
Chất lượng phần mềm
 Sự thỏa hiệp giữa các tiêu chuẩn 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ả
13
25
Phân loại phần mềm
 Các hệ thống thông tin (Information Systems)
 quản lý thông tin
 cơ sở dữ liệu + giao tác
 Các hệ thống thời gian thực (Real-Time 
System)
 các hệ thống khi hoạt ñộng cần phải trả lời 
các sự kiện với một thời gian ñược quy ñịnh 
nghiêm ngặt
26
Phân loại phần mềm
 Các hệ thống phân tán (Distributed Systems)
 mạng máy tính 
 phân tán dữ liệu 
 phân tán xử lí
 Các hệ thống nhúng (Emmbedded Systems)
 giao tiếp với các hệ thống/mạch ñiện tử

File đính kèm:

  • pdf1_GioiThieu.pdf