Professional Documents
Culture Documents
KHOA ĐIỆN TỬ
1
Giới thiệu môn học
• 2 tín chỉ = 45 Tiết
• Điểm QT= một phần BTL + ý thức học trên lớp + một số bài
kiểm tra không báo trước
• Điểm cuối kỳ = Bài tập lớn
• Mục đích môn học:
̶ Các khái niệm cơ bản trong kỹ thuật phần mềm
̶ Các bước cơ bản xây dựng phần mềm, từ lập kế hoạch, phân
tích, thiết kế cho đến bảo trì phần mềm
̶ Có kỹ năng thực hành làm phần mềm theo nhóm
2
Tài liệu tham khảo
3
Chương 1. Giới thiệu tổng quan
4
Khái niệm phần mềm
• Máy tính: Thực hiện các nhiệm vụ rất khác nhau bằng cách sử
dụng các phần mềm khác nhau
=> Phần mềm tạo ra sự khác biệt giữa các máy tính và cũng quyết
định năng lực của máy tính.
• Phần mềm: là một cấu phần quan trọng của một hệ thống
thông tin, nó là cách gọi khác của chương trình. Nó bao gồm
tập lệnh để từng bước hướng dẫn máy tính làm việc nhằm
chuyển đổi dữ liệu thành thông tin.
5
Sản phẩm phần mềm
• Sản phẩm chung
̶ Hệ thống độc lập được tiếp thị và bán cho bất kỳ khách hàng
nào muốn mua chúng.
̶ Ví dụ: phần mềm PC như phần mềm soạn thảo văn bản,
chương trình đồ họa, công cụ quản lý dự án; Phần mềm
CAD;
• Sản phẩm tùy chỉnh
̶ Phần mềm được ủy quyền bởi một khách hàng cụ thể để đáp
ứng nhu cầu riêng của họ.
̶ Ví dụ: hệ thống điều khiển nhúng, phần mềm kiểm soát
không lưu, hệ thống giám sát giao thông.
6
Tại sao phần mềm quan trọng?
• Nền kinh tế của TẤT CẢ các quốc gia phát triển đều phụ
thuộc vào phần mềm.
• Ngày càng có nhiều hệ thống được điều khiển bằng phần
mềm (giao thông, y tế, giáo dục, viễn thông, quân sự, công
nghiệp, giải trí,…)
• Chi tiêu cho phần mềm chiếm một phần đáng kể GNP ở tất
cả các nước phát triển.
7
Các giai đoạn tiến hóa phần mềm
̶ Việc bảo trì phần mềm tiêu tốn công sức và tài nguyên
8
Các giai đoạn tiến hóa phần mềm
9
Chi phí phần mềm
• Chi phí phần mềm thường chi phối chi phí của hệ thống máy
tính. Chi phí phần mềm trên PC thường lớn hơn chi phí phần
cứng.
• Phần mềm tốn nhiều chi phí để bảo trì hơn là để phát triển.
• Đối với các hệ thống có tuổi thọ cao, chi phí bảo trì có thể
gấp vài lần chi phí phát triển.
• Kỹ thuật phần mềm quan tâm đến việc phát triển phần mềm
hiệu quả về chi phí.
10
Phân loại phần mềm
11
Phần mềm hệ thống
• Xử lý các cấu trúc thông tin phức tạp nhưng xác định
12
Phần mềm thời gian thực
• Là các chương trình giám sát/phân tích/điều khiển các sự
kiện trong thế giới thực ngay khi nó xảy ra.
̶ Thành phần phân tích: để biến đổi thông tin theo yêu cầu của
ứng dụng
̶ Thành phần kiểm soát hoặc đưa ra đáp ứng môi trường ngoài
̶ Thành phần điều phối: để điều hòa các thành phần khác sao
cho có thể duy trì việc đáp ứng thời gian thực
13
Phần mềm nghiệp vụ
• Phục vụ các hoạt động kinh doanh hay các nghiệp vụ của
tổ chức, doanh nghiệp
• Là các hệ thống thông tin quản lý gắn chặt với CSDL, các
ứng dụng tương tác như xử lý giao tác cho các điểm bán
hàng.
14
Phần mềm khoa học và kỹ thuật
• Thường đòi hỏi phần cứng có năng lực tính toán cao
• Ứng dụng trong các lĩnh vực khoa học khác nhau
15
Phần mềm nhúng
• Thực hiện các chức năng một cách hạn chế và đóng kín
̶ Có các đặc trưng của phần mềm thời gian thực và phần
mềm hệ thống
16
Phần mềm cho máy tính cá nhân
• Phát triển mạnh trong khoảng hơn 1 thập kỷ trở lại đây
̶ …
17
Phần mềm trí tuệ nhân tạo
• Sử dụng các thuật toán phi số để giải quyết các vấn đề phức
tạp mà tính toán hay phân tích trực tiếp không quản lý nổi
• Các ứng dụng chính: hệ chuyên gia (hay hệ thống dựa trên
tri thức, các hệ thống nhận dạng (tiếng nói và hình ảnh),
chứng minh định lý, mô phỏng và các trò chơi
18
Phần mềm phục vụ KTPM
• Có thể xuất hiện dưới dạng phần mềm máy tính cá
nhân, phần mềm hệ thống hoặc là phần mềm nghiệp
vụ.
19
Đặc điểm của phần mềm
• Là hàng hóa vô hình
• Không hao mòn nhưng giá trị suy giảm theo thời gian
• Chức năng của phần mềm thường biến hóa, thay đổi theo
thời gian
• Phần mềm vốn chứa ý tưởng và sáng tạo của tác giả/nhóm
làm ra nó
21
Các chỉ tiêu cơ bản để đánh giá phần
mềm tốt
• Phản ánh đúng yêu cầu người dùng (tính hiệu quả)
• Giá thành không vượt quá giá ước lượng ban đầu
22
Đặc điểm của phần mềm
23
Khái niệm kỹ thuật phần mềm
24
Tầm quan trọng của kỹ thuật phần
mềm
• Ngày càng có nhiều cá nhân và xã hội dựa vào các hệ thống
phần mềm tiên tiến.
=> cần có khả năng sản xuất các hệ thống đáng tin cậy, kinh
tế và nhanh chóng.
• Đối với hầu hết các loại hệ thống, phần lớn chi phí là chi phí
thay đổi phần mềm sau khi nó được đưa vào sử dụng.
25
Thành phần của phần mềm
Phần mềm (sản phẩm phần mềm), bao gồm:
̶ Chương trình (Program): là phần được thi hành trên máy
tính
26
Các lớp của kỹ thuật phần mềm
Tools
Methods
Process Model
Quality Focus
27
Quality Focus
Đảm bảo chất lượng sản phẩm hay dịch vụ luôn là một
nhiệm vụ sống còn của các công ty hay tổ chức. Do đó,
mọi nền tảng công nghệ và kỹ thuật đều phải lấy việc đảm
bảo chất lượng là mục tiêu hướng tới, và kỹ thuật phần
mềm cũng không thể nằm ngoài mục tiêu này
28
Process Model
29
Methods
30
Tools
31
Tiến trình phần mềm
• Là một dãy các giai đoạn và các hoạt động trong đó,
cũng như các kết quả kèm theo. Kết quả cuối cùng chính
là phần mềm cần phải xây dựng, đáp ứng được các yêu
cầu của người dùng, và hoàn thành theo đúng kế hoạch
về thời gian và ngân sách
32
Tiến trình phần mềm
Lập kế hoạch dự án
Thiết kế
Giai đoạn
Phát triển Cài đặt và kiểm thử
Giai đoạn
Hỗ trợ Bảo trì
33
Tiến trình phần mềm
Giai đoạn định nghĩa: tập trung vào làm rõ Cái gì, bao
gồm
̶ Thông tin gì cần xử lý, bao gồm thông tin đầu vào và đầu
ra.
̶ Các tiêu chuẩn hợp lệ nào để đánh giá được sự đúng đắn
và thành công của hệ thống.
34
Tiến trình phần mềm
Giai đoạn phát triển: tập trung vào Làm thế nào, bao
gồm
̶ Kiến trúc hệ thống (system architecture) được tổ chức thế
nào.
̶ Các chức năng được cài đặt và liên kết với nhau thế nào.
35
Tiến trình phần mềm
Giai đoạn hỗ trợ: còn gọi là giai đoạn bảo trì, tập trung
vào việc ứng phó với các thay đổi của hệ thống phần mềm,
bao gồm
̶ Sửa lỗi (Correction)
36
Mô hình tiến trình phần mềm
• Mô hình tiến trình cũng còn được gọi là mẫu tiến trình
(process paradigm), hay mô hình phát triển phần mềm.
37
Các mô hình tiến trình
38
Mô hình tuyến tính cổ điển
Lập kế hoạch
Phân tích
Thiết kế
Triển khai
Kiểm thử
Hệ thống
39
Mô hình tuyến tính cổ điển
̶ Thời gian thực hiện mỗi bước thường kéo dài do phải làm
thật hoàn chỉnh
̶ Thường chỉ tiếp xúc với người dùng vào giai đoạn đầu và
giai đoạn cuối. Người dùng thường không tham gia vào
các bước ở giữa, như từ thiết kế, cài đặt và đến tích hợp
40
Mô hình tuyến tính cổ điển
• Ưu điểm:
̶ Đơn giản và rõ ràng
̶ Đóng vai trò như một mẫu tham chiếu cho các mô hình khác
̶ Vẫn còn được sử dụng rộng rãi cho đến nay
• Nhược điểm:
̶ Không dễ dàng cho việc thu thập đầy đủ và tường minh tất cả các yêu
cầu hệ thống ngay từ ban đầu
̶ Người dùng phải chờ đến cuối cùng mới có được hệ thống để dùng, nên
thời gian chờ đợi là khá lâu, có khi đến hàng năm. Khi đó có thể có các
yêu cầu mới đã phát sinh, dễ dẫn khả năng hệ thống không còn đáp
ứng được kỳ vọng của người dùng.
̶ Dễ dẫn đến tình trạng “blocking states”, tức là khi có một nhóm bị chậm
tiến độ, thì các nhóm khác phải chờ, và thời gian chờ đợi thậm chí vượt
quá thời gian làm việc.
41
Mô hình phát triển song song
Lập kế hoạch
Thiết kế
Phân tích
Triển khai
Thiết kế
Phân hệ 2
Triển khai Tích hợp
hệ thống
Kiểm thử
Phân hệ 1
Hệ thống 42
Mô hình phát triển song song
• Cải tiến vấn đề thời gian từ pha phân tích đến khi sản
phẩm được hoàn thiện và chuyển giao cho người dùng.
• Mỗi hệ thống con sẽ đồng thời được thiết kế, xây dựng và
kiểm thử riêng.
̶ Người dùng nhanh nhận được hệ thống của mình hơn, giảm được
rủi ro phải làm lại từ đầu hay hủy bỏ dự án do yêu cầu nghiệp vụ
thay đổi khi hệ thống đang được xây dựng
• Nhược điểm
̶ Gặp vấn đề khi phải quay lại các pha trước
44
Mô hình phát triển theo giai đoạn
Lập kế hoạch
Phân tích
Phân tích
Thiết kế
Triển khai
Phân tích
Kiểm thử
Thiết kế
Hệ thống
(Phiên bản 1)
Triển khai
Phân tích
Kiểm thử
Thiết kế
Hệ thống
Triển khai (Phiên bản 2)
Kiểm thử
Hệ thống
(Phiên bản 3) 45
Mô hình phát triển theo giai đoạn
• Chia hệ thống thành các phiên bản khác nhau, xây dựng lần lượt
từng phiên bản.
• Giai đoạn phân tích:
– Xác định tất cả khái niệm về hệ thống mới
– Phân loại yêu cầu cho các giai đoạn phát triển khác nhau.
– Các yêu cầu quan trọng nhất được liệt kê và đưa vào phiên bản đầu
tiên.
• Phiên bản 1 sẽ được phân tích, thiết kế, triển khai và kiểm thử như
một hệ thống hoàn chỉnh.
• Kết thúc phiên bản 1, hệ thống được triển khai cho khách hàng
• Tiến hành đồng thời công việc phân tích, thiết kế, triển khai và
kiểm thử cho các chức năng cần bổ sung thêm cho phiên bản 1 để
thu được phiên bản 2. Quá trình này sẽ tiếp tục tương tự cho các
phiên bản tiếp theo cho đến khi thu được một hệ thống hoàn chỉnh
hoặc không thể sử dụng được nữa. 46
Mô hình phát triển theo giai đoạn
• Ưu điểm
̶ Nhanh chóng có được phiên bản của hệ thống để triển khai cho
khách hàng ngay cả khi hệ thống vẫn còn được xây dựng.
̶ Trong quá trình triển khai các phiên bản trước, nếu phát sinh lỗi
hoặc nghiệp vụ thay đổi cũng sẽ lập tức được cập nhật trong các
phiên bản tiếp theo.
• Nhược điểm
̶ Giai đoạn đầu người dùng sử dụng hệ thống là một sản phẩm
chưa hoàn thiện.
̶ Cần phải xác định được đâu là yêu cầu cần thiết nhất để đưa
ngay vào giai đoạn đầu tiên.
̶ Trong trường hợp mọi yêu cầu đều phải xây dựng xong thì mới có
thể triển khai được thì phương pháp này kém hiệu quả. 47
Mô hình bản mẫu
48
Mô hình bản mẫu
Thông thường trong thực tế, các yêu cầu của hệ thống khó có
thể xác định rõ ràng và chi tiết ngay trong giai đoạn đầu của dự
án phần mềm:
̶ Người dùng cũng chỉ đưa ra các mục tiêu tổng quát của phần
mềm, chứ chưa định rõ được một cách chi tiết các chức năng cụ
thể, hay các thông tin chi tiết đầu vào, đầu ra như thế nào.
̶ Nhà phát triển cũng chưa xác định rõ ràng ngay các yêu cầu,
cũng như chắc chắn về chất lượng phần mềm, khả năng thỏa
mãn của khách hàng
→ mô hình bản mẫu
49
Mô hình bản mẫu
Gồm các giai đoạn:
̶ Thu thập các yêu cầu (requirements gathering): khách hàng và nhà
phát triển sẽ gặp nhau để xác định ra các mục tiêu tổng thể của phần
mềm. Sau đó họ sẽ định ra phần nào đã rõ, phần nào cần phải định
nghĩa thêm.
̶ Thiết kế nhanh (quick design): thiết kế này tập trung vào những phần
mà khách hàng có thể nhìn thấy được (giao diện, các dữ liệu vào, ra).
Sau đó, từ thiết kế này, một bản mẫu sẽ được xây dựng.
̶ Kiểm tra và đánh giá bản mẫu: Bản mẫu này sẽ được dùng để cho
phép người dùng đánh giá, nhằm làm rõ hơn các yêu cầu của họ.
Đồng thời, thông qua bản mẫu, người phát triển hệ thống cũng hình
dung cụ thể hơn về những yêu cầu của khách hàng, cũng như khả
năng cài đặt và hiệu quả hoạt động của hệ thống.
50
Mô hình bản mẫu
• Ưu điểm:
̶ Cho phép người dùng xác định yêu cầu của mình rõ ràng và cụ thể
hơn, đồng thời nhà phát triển cũng nắm được chính xác hơn các yêu
cầu đó.
̶ Cả người dùng và nhà phát triển thường đều thích mô hình này, do
người dùng luôn cảm nhận được hệ thống thực sẽ như thế nào, và nhà
phát triển cũng luôn có cái để xây dựng và dần hoàn thiện.
• Nhược điểm:
̶ Để có được bản mẫu nhanh, việc thiết kế cũng được làm nhanh, nên
thường được làm không cẩn thận. Điều này dễ dẫn đến các thiết kế có
tính chắp vá, không có cái nhìn tổng thể và dài hạn.
̶ Việc làm bản mẫu nhanh cũng thường kéo theo việc lựa chọn các công
cụ cài đặt vội vàng, không cẩn thận, (như ngôn ngữ lập trình, hệ quản
trị cơ sở dữ liệu,v.v). Điều này sẽ ảnh hưởng đến các giai đoạn phát
triển sau khi quy mô và yêu cầu của hệ thống ngày càng lớn lên
51
Mô hình xoáy ốc
• Cũng là một mô hình tiến hóa kết hợp đặc tính lặp lại của
mô hình bản mẫu và tính hệ thống của mô hình thác
nước cổ điển
• Mô hình này cũng cho phép tạo ra một dãy các phiên bản
tăng trưởng (incremental release). Tuy nhiên khác với mô
hình tăng trưởng, các phiên bản đầu tiên của mô hình
xoáy ốc thường chỉ là các mô hình trên giấy hoặc bản
mẫu (prototype). Đến các phiên bản sau thì mới là các
bản chạy được và càng ngày càng hoàn chỉnh.
52
Mô hình xoáy ốc
53
Mô hình xoáy ốc
• Mô hình này phân chia thành các giai đoạn, được gọi là
các vùng nhiệm vụ (task regions).
• Mỗi vùng lại bao gồm một tập các nhiệm vụ (set of
tasks), và số lượng cũng thay đổi tùy theo tính chất của
dự án.
54
Mô hình xoáy ốc
• Ưu điểm:
̶ Linh hoạt, dễ thích ứng với các loại phần mềm và các nhu cầu
sử dụng khác nhau, nhất là các phần mềm quy mô lớn
̶ Có khá đầy đủ các bước trong tiến trình phát triển, nhất là việc
chú trọng phân tích tính rủi ro (risk) của phần mềm cả về mặt
kỹ thuật và quản lý
• Hạn chế:
̶ Phức tạp, cần khá nhiều thời gian để hiểu và vận dụng được một
cách hiệu quả
̶ Khó khăn trong việc quản lý nhiều chu trình phát triển
55