SE1 Tong Quan

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 44

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
Nội dung
n Lịch sử phát triển phần mềm và khủng hoảng
phần mềm
n Phân loại phần mềm
n Chất lượng phần mềm
n Đặc trưng của phần mềm
n Công nghệ phần mềm
n Khái niệm
n Mục đích
n Nguyên tắc
n Đặc trưng

Lê Thị Mỹ Hạnh - Khoa CNTT 2


Lịch sử phát triển phần mềm
n 1946, máy tính điện tử ra đời
n 1950, máy tính được thương mại hóa
n Phần mềm bắt đầu được phát triển
n Những năm 1960
n Những thất bại về phát triển phần mềm
n Sản phẩm phần mềm phức tạp
n Nhiều lỗi
n Tổ chức sản xuất: giá thành, tiến độ, ...
n Người ta nói đến “Khủng hoảng phần mềm”
Lê Thị Mỹ Hạnh - Khoa CNTT 3
Lịch sử phát triển phần mềm
n Từ thủ công đến công nghệ

n Chương trình nhỏ n Dự án lớn


n không chuyên nghiệp n chuyên nghiệp
n 1 người làm n Nhiều người làm
n Người sử dụng = người phát triển n khách hàng & nhà cung cấp
n 1 sản phẩm = mã nguồn n Nhiều sản phẩm
n Tiến trình phát triển đơn giản n Tiến trình phát triển phức tạp

n Năm 1968, hội thảo đầu tiên về “Công nghệ phần mềm”

Lê Thị Mỹ Hạnh - Khoa CNTT 4


Khủng hoảng phần mềm
n Về mặt sản phẩm
n Chất lượng sản phẩm phần mềm
n Không đáp ứng yêu cầu thực tế
n Khó sử dụng
n Không tin cậy
n Khó bảo trì

Þ Khách hàng không hài lòng

Lê Thị Mỹ Hạnh - Khoa CNTT 5


Khủng hoảng phần mềm
n Về mặt quản lý
n Kế hoạch
n Không đánh giá đúng giá thành
n Không đúng tiến độ
n Chi phí phát triển/chi phí bảo trì
n Về mặt pháp lý
n Hợp đồng không rõ ràng, không chặt chẽ
n Nhân lực
n Đào tạo
n Giao tiếp
n Thiếu tiêu chuẩn đánh giá sản phẩm
n Thiếu qui trình quản lý
Lê Thị Mỹ Hạnh - Khoa CNTT 6
Khủng hoảng phần mềm
n Đ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
n Không giao sản phẩm: 29%
n Không được sử dụng: 47%
n Bỏ cuộc: 19%
n Được sử dụng sau khi đã chỉnh sửa: 3%
n 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
n 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):
n Nhiều dự án lớn thất bại
n Chi phí phát triển cao
n 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
n OS 360
n > 1M dòng lệnh
n Từ 1963->1966 (gấp đôi dự kiến)
n 5000 nhân công
n 200 M USD
n ð(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
n 1978: vệ tinh phóng lên sao Kim bị
hỏng do lỗi của phần mềm
n lỗi của câu lệnh FOR (Fortran)
n 1996: vệ tinh Ariane 5 hỏng do lỗi
phần mềm gây thiệt hại 500M$
n 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 đề
n Tính phức tạp là bản chất của phần mềm
n Yêu cầu sử dụng phần mềm không ngừng
thay đổi
n 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
n Chi phí cho phần mềm cao
n Phần mềm trở thành ngành công nghiệp khổng lồ
n Phí phát triển OS 360 (1963~1966) : 200M$
n Chi phí phần mềm năm 1985 : 70B$
n Chi phí cho phần mềm năm 2000 : 770B$
(mức tăng 12%/năm)
n Năng suất lập trình vẫn thấp
n phát triển phần mềm mang tính thủ công
n giá thành cao

Lê Thị Mỹ Hạnh - Khoa CNTT 13


Thách thức đối với phần mềm
n 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)
n 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
n 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
n "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"
n 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:
n Chương trình máy tính
n Phần vận hành được: mã máy
n Không vận hành: mã nguồn
n Các cấu trúc dữ liệu
n Cấu trúc làm việc (bộ nhớ trong)
n Cấu trúc lưu trữ
n Tài liệu sử dụng
n Hướng dẫn sử dụng
n Tham khảo kỹ thuật
n 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)

n Phần mềm hệ thống


n Tập các chương trình phục vụ cho các chương trình
n Tương tác trực tiếp với phần cứng
n Phục vụ nhiều người dùng
n Phần mềm thời gian thực
n Thu thập, xử lí các dữ kiện thế giới thực
n Đá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)
n Phần mềm nghiệp vụ
n Xử lí các thông tin nghiệp vụ, thường gắn với CSDL
n Xử lí các giao tác (mạng máy tính bán hàng...)
n Lĩnh vực ứng dụng rất lớn
n Phần mềm khoa học kỹthuật
n Đặc trưng bởi thuật toán (tính toán vật lí, môphỏng)
n Đòi hỏi năng lực tính toán cao
n Phần mềm nhúng (embeded software)
n Chỉ đọc ra khi thiết bị khởi động,
n Thực hiện chức năng hạn chế (điều khiển sản phẩm)
n 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)
n Phần mềm máy tính cá nhân
n Các bài toán nghiệp vụ nhỏ(ứng dụng văn phòng)
n Giao diện đồ họa phát triển
n Có nhu cầu rất cao
n Phần mềm trí tuệ nhân tạo
n Dùng các thuật toán phi số (logic): suy luận, tìm kiếm
n Hệ chuyên gia, nhận dạng, tròchơi...
n Phần mềm công cụ cho Cụng nghệ phần mềm
n 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)

n Sản phẩm đặt hàng


n sản xuất theo đơn đặt hàng (HTTT quản lý...)
n đơn chiếc, yêu cầu đặc thù
n Sản phẩm chung
n bán rộng rãi
n 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
n Tính đúng đắn (correctness)
n Thực hiện đúng các đặc tả về chức năng
(functional specification)
n Thuật toán đúng
n Tính tin cậy (reliability)
n Đáp ứng được những yêu cầu đặt ra
n Tính bền vững (robustness)
n 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
n Tính hiệu quả (efficiency)
n Sử dụng hiệu quả các nguồn tài nguyên
(bộ nhớ, CPU, ...)
n Tính thân thiện (user friendlyness)
n Dễ sử dụng
n Tính dễ kiểm tra (verifiability)
n Dễ kiểm tra chất lượng

Lê Thị Mỹ Hạnh - Khoa CNTT 22


Chất lượng phần mềm

n Tính dễ bảo trì (maintainability)


n Dễ xác định và sửa lỗi
n Dễ tạo phiên bản mới khi có sự mở rộng
n Tính tái sử dụng (reusability)
n Dễ tái sử dụng trong các phần mềm mới
n Tính khả chuyển (portability)
n Dễ sử dụng trong môi trường mới

Lê Thị Mỹ Hạnh - Khoa CNTT 23


Chất lượng phần mềm
n Tính dễ hiểu (understandability)
n Dễ hiểu đối với người sử dụng cũng như với người
phát triển
n Tính hợp tác (interoperability)
n Dễ hợp tác với các phần mềm khác
n Sản xuất hiệu quả (productivity)
n Tiến trình sản xuất phần mềm phải hiệu quả
n Khả năng giao sản phầm đúng hạn(timeliness)
n Giao sản phẩm theo từng gói
Lê Thị Mỹ Hạnh - Khoa CNTT 24
Chất lượng phần mềm
n Sự thỏa hiệp giữa các tiêu chí chất
lượng
n tính thân thiện / tính bền vững
n tính khả chuyển / tính hiệu quả

Lê Thị Mỹ Hạnh - Khoa CNTT 25


Đặc trưng của phần mềm
n Phát triển phần mềm khác chế tạo phần
cứng
n Sản xuất mang tính thủ công (sáng tạo, không theo
khuôn mẫu)
n Khó kiểm soát chất lượng ở các bước trung gian
n 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 26


Đặc trưng của phần mềm (tiếp)
n Phần mềm thoái hóa theo thời gian
n Môi trường sử dụng, nhu cầu thay đổi
n Lỗi sinh ra tăng do nâng cấp
n Phần mềm không được lắp ráp theo mẫu
n Không có danh mục chi tiết cho trước
n Đượ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 27


Tóm tắt
n 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
n Phát triển phần mềm là công việc phức tạp, rủi ro
n 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
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
n mang tính thủ công, phụ thuộc vào con người
n bị ảnh hướng lớn từ môi trường->nhiều rủi ro
n 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 28
Công nghệ phần mềm
Khái niệm

n Công nghệ phần mềm (Software Engineering-SE)

n 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ả

n 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 29


Công nghệ phần mềm
Các khái niệm

n 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
n 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
n 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 30
Công nghệ phần mềm
Mục đích

n Mục đích
n Áp dụng thực tế
n Các kiến thức khoa học
n Các nguyên tắc kinh tế
n Các nguyên tắc quản lý
n Các kỹ thuật và công cụ thích hợp
n Để 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):
n Phần mềm tạo ra phải đáp ứng được yêu cầu người sử dụng
n Phần mềm phải đạt được các tiêu chuẩn về chất lượng
n Giá thành phải nằm trong giới hạn đặt ra
n Tiến độ xây dựng phần mềm phải đảm bảo

Lê Thị Mỹ Hạnh - Khoa CNTT 31


Công nghệ phần mềm
Nguyên tắc

n Các nguyên tắc cơ bản


n Chặt chẽ (rigor and formality)
n Chia nhỏ (separation of concerns)
n Mô-đun hóa (modularity)
n Trừu tượng (abstraction)
n Phòng ngừa sự thay đổi (anticipation of change)
n Tổng quát hóa (generality)
n Giải quyết từng bước (incrementality)

Lê Thị Mỹ Hạnh - Khoa CNTT 32


Công nghệ phần mềm
Nguyên tắc

n Chặt chẽ (rigor and formality)


n Sử dụng mô hình lý thuyết và toán học
n áp dụng cho tất cả các bước, tất cả các
sản phẩm
n Ví dụ
n “chọn z là giá trị lớn nhất của x và y”
n z = max(x, y)

Lê Thị Mỹ Hạnh - Khoa CNTT 33


Công nghệ phần mềm
Nguyên tắc

n Chia nhỏ (separation of concerns)


n Làm chủ độ phức tạp
n Chỉ tập trung một lĩnh vực cùng một lúc
n Chia vấn đề thành các phần nhỏ hơn
n Giải quyết một phần nhỏ sẽ đơn giản hơn
n “chia để trị” (divide and conquer)
n Có thể chia nhỏ theo
n thời gian: lập kế hoạch
n khái niệm: giao diện / thuật toán
n Xử lý: chia các xử lý con

Lê Thị Mỹ Hạnh - Khoa CNTT 34


Công nghệ phần mềm
Nguyên tắc

n Mô-đun hóa (modularity)


n Chia nhỏ độ phức tạp
n Dễ hiểu
n Dễ quản lý các hệ thống phức tạp
n Quan hệ mật thiết với nguyên tắc “chia nhỏ”
n Các phương pháp mô-đun hóa
n Chiến lưọc từ trên xuống (top-down)
n Chiến lưọc từ dưới lên (bottom-up)
n Chất lượng của mô-đun hóa
n liên kết lỏng lẻo (low coupling)
n Kết cố cao (high cohesion)

Lê Thị Mỹ Hạnh - Khoa CNTT 35


Công nghệ phần mềm
Nguyên tắc

n Trừu tượng (abstraction)


n Loại bỏ những gì không quan trọng
n Chỉ xem xét các yếu tố quan trọng
n Sử dụng các mô hình
n mô hình cho người sủ dụng
n mô hình cho người phát triển
n Ví dụ
n Ngôn ngữ lập trình/cấu truc phần cứng
n Xây dựng tài liệu
n Đặc tả bởi điều kiện trước/sau

Lê Thị Mỹ Hạnh - Khoa CNTT 36


Công nghệ phần mềm
Nguyên tắc

n Phòng ngừa sự thay đổi (anticipation of


change)
n Phần mềm là sản phẩm thường xuyên thay đổi
n Dự báo các yếu tố có thể thay đổi
n ảnh hưởng có thể
n các thay đổi thường gặp
n Trong đặc tả yêu cầu
n Trong ngữ cảnh sử dụng
n Khả năng về công ngệ

Lê Thị Mỹ Hạnh - Khoa CNTT 37


Công nghệ phần mềm
Nguyên tắc

n Tổng quát hóa (generality)


n xem xét vấn đề trong ngữ cảnh tổng quát
n Giải quyết vấn đề lớn hơn
n Mục đích
n Tái sử dụng dễ dàng
n Có thể sử dụng các công cụ có sẵn
n Sử dụng design patterns
n Chi phí có thể tăng cao

Lê Thị Mỹ Hạnh - Khoa CNTT 38


Công nghệ phần mềm
Nguyên tắc

n Giải quyết từng bước (incrementality)


n Nguyên tắc
n xác định một phần (tập con)
n Phát triển
n Đánh giá
n Bắt đầu lại
n Áp dụng cho
n Phát triển một sản phẩm
n Một đặc tả/một kiến trúc/…
n Mô hình phát triển
n Mô hình lặp

Lê Thị Mỹ Hạnh - Khoa CNTT 39


Tóm tắt - Công nghệ phần mềm
Các đặc trưng cơ bản

n Là một quá trình kỹ nghệ gồm ba mặt:


n Thủ tục (procedures)
n Phương pháp (methods)
n Công cụ (tools)
n 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 40


Công nghệ phần mềm
Các đặc trưng cơ bản

n Các thủ tục (procedures)


n qui trình quản lý:
n Xác định trình tự thực hiện các công việc
n 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
n Định các mốc thời gian (millestones) và
sản phẩm bàn giao

Lê Thị Mỹ Hạnh - Khoa CNTT 41


Công nghệ phần mềm
Các đặc trưng cơ bản

n Các phương pháp (methods)


n Cách làm cụ thể để xây dựng phần mềm
n Mỗi công đoạn làm phần mềm có các phương
pháp riêng
n Phương pháp phân tích (xác định, đặc tả)
n Phương pháp thiết kế (mô hỡnh, thuật toán, dữ
liệu...)
n Phương pháp lập trỡnh (hướng đối tượng)
n Phương pháp kiểm thử (chức năng, cấu trúc)
Lê Thị Mỹ Hạnh - Khoa CNTT 42
Công nghệ phần mềm
Các đặc trưng cơ bản

n Các phương pháp (methods)


n Phương pháp hướng cấu trúc thường bao
gồm:
n Mô hình về hệ thống: thường mô tả bằng đồ thị
n Các ký pháp: giúp mô tả các mô hỡnh
n Các quy tắc: các ràng buộc đặt lên mô hỡnh
n Các đề xuất: các lời khuyên cho thiết kế tốt
n Hướng dẫn về tiến trình: các hoạt động cần
thực hiện
Lê Thị Mỹ Hạnh - Khoa CNTT 43
Công nghệ phần mềm
Các đặc trưng cơ bản

n Các công cụ - tools


n Cung cấp sự trợ giúp tự động / bán tự động cho từng phương
pháp
n 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
n Ví dụ:
n compiler, debugger
n công cụ sinh giao diện (C Builder,...)
n hỗ trợ phân tích, thiết kế (Rwin,Modeler(Oracle Designer, Rational
Rose,...)
Lê Thị Mỹ Hạnh - Khoa CNTT 44

You might also like