SlideShare a Scribd company logo
1 of 72
Download to read offline
PHẦN MỀM VÀ KỸ NGHỆ PHẦN MỀM
HÀ NỘI - 2021
Nguyễn Thị Thanh Huyền
Bộ môn CNPM – Khoa CNTT
ntthuyen@hnue.edu.vn
§ Phần mềm và vai trò của phần mềm
§ Chất lượng phần mềm
§ Thách thức đối với phát triển phần mềm
§ Khái niệm về kỹ nghệ phần mềm
NỘI DUNG CHÍNH
PHẦN MỀM VÀ VAI TRÒ
§ Định nghĩa phần mềm
§ Phân loại phần mềm
§ Vai trò của phần mềm
§ Thực trạng sử dụng
§ Quá trình tiến hoá
PHẦN MỀM LÀ GÌ?
4
Phần mềm là gì?
Phần mềm là các chương trình máy tính và
những tài liệu liên quan như: các yêu cầu, mô
hình thiết kế, tài liệu hướng dẫn sử dụng…
§ Phần mềm dưới góc nhìn của người sử dụng:
• Chương trình thực thi được trên máy tính hoặc các thiết bị
chuyên dụng khác
• Nhằm hỗ trợ cho các nhà chuyên môn trong từng lĩnh vực
chuyên ngành thực hiện tốt hơn các thao tác nghiệp vụ của
mình
PHẦN MỀM LÀ GÌ?
5
§ Thành phần giao tiếp (Giao diện):
§ Cho phép tiếp nhận các yêu cầu về việc sử dụng phần mềm từ
người sử dụng, từ các thiết bị thu thập dữ liệu, hoặc từ các
phần mềm khác
§ Cho phép trình bày các kết quả
§ Thực hiện các yêu cầu cho người dùng
§ Điều khiển hoạt động các thiết bị điều khiển (đóng/mở cửa,
dừng hay cho chuyển động…)
PHẦN MỀM LÀ GÌ?
6
§ Môi trường triển khai phần mềm:
§ Máy tính: Desktop, Laptop, Tablet PC…
§ Thiết bị chuyên dụng: PDA, Pocket PC, smartphone
§ Các thiết bị chuyên dụng khác: set-top box, router,...
§ Hỗ trợ làm tốt hơn các thao tác nghiệp vụ:
§ Tin học hóa nghiệp vụ hiện đang làm thủ công
§ Cải tiến chức năng nghiệp vụ hiện đang được thực hiện trên
máy tính
§ Đề ra, xây dựng và triển khai chức năng nghiệp vụ mới
PHẦN MỀM LÀ GÌ?
7
§ Phần mềm dưới góc nhìn của chuyên viên Tin học:
• Là một hệ thống bao gồm 3 thành phần cơ bản:
§ Thành phần giao tiếp
§ Thành phần xử lý
§ Thành phần lưu trữ
à Cần được xây dựng để thực hiện theo yêu cầu của người sử
dụng
PHẦN MỀM LÀ GÌ?
8
§ Thành phần giao tiếp (Giao diện):
• Một cách tổng quát, thành phần giao tiếp cho phép nhập/xuất
thông tin cùng với hình thức trình bày/giao tiếp tương ứng.
• Mục tiêu chính của thành phần này là đưa thông tin từ thế giới
thực bên ngoài phần mềm (người sử dụng, các thiết bị, phần
mềm khác…) vào bên trong, hoặc ngược lại.
PHẦN MỀM LÀ GÌ?
9
§ Thành phần xử lý:
§ Kiểm tra tính hợp lệ của thông tin nguồn được cung cấp từ
người dùng theo các quy định ràng buộc trong thế giới thực
o Ví dụ: chỉ cho mượn tối đa 3 quyển sách, mỗi lớp học không
quá 50 học sinh…
§ Tiến hành xử lý cho ra kết quả mong đợi theo quy định tính
toán có sẵn trong thế giới thực
§ Tiến hành xử lý theo thuật giải tự đề xuất
PHẦN MỀM LÀ GÌ?
10
§ Thành phần xử lý (tt):
§ Việc xử lý dựa trên thông tin nguồn từ người sử dụng cung cấp
o Ví dụ: tính nghiệm phương trình bậc 2 dựa trên các hệ số nhập vào
hoặc dữ liệu lưu trữ có sẵn
o Ví dụ: tính tiền phạt dựa trên ngày trả sách được nhập vào và thông tin
về loại sách đã được lưu trữ
§ Việc xử lý cho ra kết quả có thể dùng để xuất cho người dùng
xem qua thành phần giao diện, hay lưu trữ lại qua thành phần
lưu trữ, hoặc cả hai
PHẦN MỀM LÀ GÌ?
11
§ Một cách tổng quát, thành phần xử lý là hệ thống chuyên xử lý
tính toán, biến đổi dữ liệu.
§ Dùng thông tin nguồn từ thành phần giao diện (chức năng nhập) hay
thành phần dữ liệu (chức năng đọc);
§ Kiểm tra tính hợp lệ (chức năng kiểm tra) và sau đó tiến hành xử lý (chức
năng xử lý) – nếu cần thiết
§ Để cho ra kết quả sẽ được trình bày thông qua thành phần giao diện
(chức năng xuất) hoặc lưu trữ lại trong thành phần dữ liệu (chức năng
ghi)
PHẦN MỀM LÀ GÌ?
12
§ Thành phần lưu trữ (thành phần dữ liệu)
§ Cho phép lưu trữ lại (chức năng ghi) các kết quả đã xử lý
o Ví dụ: Việc mượn sách đã được kiểm tra hợp lệ, bảng lương
tháng đã được tính trên bộ nhớ phụ với tổ chức lưu trữ được
xác định trước
o Ví dụ: tập tin có cấu trúc, tập tin nhị phân, cơ sở dữ liệu
PHẦN MỀM LÀ GÌ?
13
§ Thành phần lưu trữ (thành phần dữ liệu)
§ Cho phép truy xuất lại (chức năng đọc) các dữ liệu đã lưu trữ
phục vụ cho các hàm xử lý tương ứng
§ Một cách tổng quát thành phần dữ liệu là hệ thống chuyên
đọc ghi dữ liệu cùng với mô hình tổ chức lưu trữ dữ liệu tương
ứng.
§ Mục tiêu chính của thành phần này là chuyển đổi dữ liệu giữa
bộ nhớ chính và bộ nhớ phụ
PHẦN MỀM LÀ GÌ?
14
PHÂN LOẠI PHẦN MỀM (1/3)
(TRÊN QUAN ĐIỂM NGƯỜI DÙNG)
15
§ 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
-
• Thu thập dữ liệu
• Phân tích dữ liệu
• Kiểm soát, điều khiển
• Điều phối
PHÂN LOẠI PHẦN MỀM (2/3)
(TRÊN QUAN ĐIỂM NGƯỜI DÙNG)
16
§ 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
PHÂN LOẠI PHẦN MỀM (3/3)
(TRÊN QUAN ĐIỂM NGƯỜI DÙNG)
17
§ Phần mềm trí tuệ nhân tạo
§ Phần mềm máy tính cá nhân
• 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...
• 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 công cụ cho kỹ nghệ phần mềm
• Trình biên dịch, các công cụ CASE...
PHÂN LOẠI PHẦN MỀM
(TRÊN QUAN ĐIỂM CỦA NGƯỜI PHÁT TRIỂN)
18
§ Sản phẩm đặt hàng (may đo)
- 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 thương mại
- 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ì
§ Phần mềm có một tầm quan trọng đặc biệt trong xã hội
hiện đại trên nhiều mặt:
§ Nền kinh tế
§ Xã hội
§ Các hệ thống đang tồn tại
VAI TRÒ CỦA PHẦN MỀM
§ Nền kinh tế tất cả các nước đều phụ thuộc vào phần
mềm
§ Phần mềm sai hỏng, kinh tế tổn thất
§ Chi phí cho phần mềm chiếm tỷ trọng đáng kể trong GNP ở
các nước phát triển
§ Phần mềm tạo nên sự khác biệt của tổ chức
§ Thay đổi phong cách làm việc
§ Quyết định năng suất của tổ chức
VAI TRÒ CỦA PHẦN MỀM (1/2)
20
KHÓ KHĂN VÀ THÁCH THỨC
21
§ Phát triển phần mềm được coi 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)
MỘT SỐ DỰ ÁN THẤT BẠI
22
OS/MVS (IBM 370) 7M dòng lệnh
OS 360 • > 1M dòng lệnh
• 1963~1966 (gấp đôi dự kiến)
• 5000 năm công
• 200 M USD
TSS 360 khởi động mất 10'
Multics (Multiplexed Information and Computing Service)
- 1965 ~2000
- http://www.multicians.org/
§ 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)
TỔN THẤT DO LỖI PHẦN MỀM
23
THỰC TRẠNG SỬ DỤNG
24
Huỷ bỏ
17%
Không được phân
phối
27%
Được phân phối
nhưng không sử
dụng
45%
Được sử dụng sau
khi sửa đổi
6%
Được sử dụng ngay
khi phân phối
5%
THỰC TRẠNG SỬ DỤNG
25
§ Bản chất 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 hạ tầng - phần cứng
sự tiến hóa của phần mềm là tất yếu
TIẾN HÓA CỦA PHẦN MỀM
GIAI ĐOẠN 1
§ Phần cứng thay đổi liên tục
§ Xử lí theo lô
§ Sản xuất đơn chiếc
§ Ngôn ngữ: mã máy, đặc thù
cho từng máy.
§ Lập trình theo bản năng,
chưa có phương pháp
GIAI ĐOẠN 2
§ Đa nhiệm, đa người sử dụng
§ Hệ thống thời gian thực;
§ Xuất hiện lưu trữ trực tuyến (CSDL)
§ Ngôn ngữ có cấu trúc: PLI, Fortran, COBOL
§ Lập trình có phương pháp
§ Phát triển hệ thống chưa có phương pháp
GIAI ĐOẠN 3
• Phần cứng phát triển
• Xuất hiện mạng máy tính và hệ
thống phân tán
• Ngôn ngữ lập trình bậc cao,
hướng đối tượng
• Phát triển hệ thống có phương
pháp và công cụ.
1960s 1990s
1970s
§ Phần mềm ngày càng phức tạp
§ Unix : 4 M dòng lệnh
§ Windows 2K : ~100 M dòng lệnh
§ Lý do
• Năng lực máy tính ngày càng mạnh
• Các hệ thống được liên kết lại
• Nhu cầu của người dùng ngày càng lớn
TIẾN HÓA CỦA PHẦN MỀM
27
§ 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 nặng tính thủ công
• Giá thành cao
CHI PHÍ CỦA PHẦN MỀM
28
§ 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ó
THÁCH THỨC ĐỐI VỚI PHẦN MỀM
29
Cần có những phương pháp, công cụ hiện đại để
phát triển phần mềm
KHÓ KHĂN TRONG PHÁT TRIỂN PHẦN MỀM
30
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
"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"
• 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)
CHẤT LƯỢNG PHẦN MỀM
§ Chất lượng phần mềm dưới góc nhìn người sử dụng
§ Chất lượng phần mềm dưới góc nhìn của người phát triển
§ Yếu tố ảnh hưởng tới chất lượng phần mềm
§ Khủng hoảng trong phát triển phần mềm
CHẤT LƯỢNG PHẦN MỀM
32
Phần mềm
Con người
Phần cứng
Phần mềm khác
Tính đúng đắn
Tính đúng đắn:
- Đầy đủ
- Chính xác
Dưới góc nhìn của Người sử dụng
33
Phần mềm
Con người
Phần cứng
Phần mềm khác
Tính tiện dụng
Tính tiện dụng:
- Dễ học
- Dễ sử dụng
- Giao diện trực quan
- Tự nhiên
Tính đúng đắn
Dưới góc nhìn của Người sử dụng
CHẤT LƯỢNG PHẦN MỀM
CHẤT LƯỢNG PHẦN MỀM
34
Phần mềm
Con người
Phần cứng
Phần mềm khác
Tính hiệu quả
Tính hiệu quả:
- Tối ưu sử dụng CPU*
- Tối ưu sử dụng bộ nhớ*
- Tối ưu sử dụng thiết bị
Tính đúng đắn
Tính tiện dụng
Dưới góc nhìn của Người sử dụng
35
Phần mềm
Con người
Phần cứng
Phần mềm khác
Tính tương thích
Tính tương thích:
- Import/Export dữ liệu
- Tương tác
Tính đúng đắn
Tính tiện dụng
Tính hiệu quả
Dưới góc nhìn của Người sử dụng
CHẤT LƯỢNG PHẦN MỀM
CHẤT LƯỢNG PHẦN MỀM
36
Phần mềm
Con người
Phần cứng
Phần mềm khác
Tính tiến hóa
Tính tiến hóa: một trong các
tính chất quan trọng nhất
được xem xét trong ngành
Công nghệ Phần mềm
Tính đúng đắn
Tính tiện dụng
Tính hiệu quả
Tính tương thích
Dưới góc nhìn của Người sử dụng
CHẤT LƯỢNG PHẦN MỀM
37
Phần mềm
Con người
Phần cứng
Phần mềm khác
Tính tiến hóa
Tính đúng đắn
Tính tiện dụng
Tính hiệu quả
Tính tương thích
………
Dưới góc nhìn của Người sử dụng
CHẤT LƯỢNG PHẦN MỀM
38
Phần mềm
Con người
Phần cứng
Phần mềm khác
Tính tiến hóa
Tính đúng đắn
Tính tiện dụng
Tính hiệu quả
Tính tương thích
Dưới góc nhìn của Người sử dụng
???
GIÁ CẢ HỢP LÝ!
CHẤT LƯỢNG PHẦN MỀM
39
§ Khó tối ưu đồng thời các thuộc tính
Ví dụ: hiệu quả <> dễ bảo trì, dễ sử dụng
§ Yêu cầu cân đối, thỏa hiệp:
§ Chi phí cho tối ưu là không
tuyến tính
hiệu năng
giá
thành
40
vTính dễ kiểm tra: Làm cho việc kiểm tra phần mềm (có phù hợp
yêu cầu) dễ dàng nhất có thể
vTính dễ sửa lỗi: Việc phát hiện chính xác “vị trí lỗi” và sửa lỗi là
nhanh nhất có thể được.
vTính dễ bảo trì: Cập nhật phần mềm là nhanh, chính xác nhất có
thể được và hạn chế tối đa ảnh hưởng đến các thành phần khác
vTính tái sử dụng: Các thành phần đã thực hiện có thể dùng lại
trong các phần mềm cùng lớp (hoặc cùng lĩnh vực) với thời gian và
công sức ít nhất có thể được
………
CHẤT LƯỢNG PHẦN MỀM
Dưới góc nhìn của người phát triển
CHẤT LƯỢNG PHẦN MỀM
41
Các chỉ tiêu cơ bản
Tính dễ hiểu
Thời gian
(Phần cứng phát triển)
Yếu
tố
khái
niệm
phần
mềm
tốt
Đặc
trưng
gần
đây
Hiệu suất xử lý
§ Số lượng các phần mềm tăng vọt (do sự phát triển của phần
cứng: tăng khả năng, giá thành hạ)
§ Có quá nhiều khuyết điểm trong các phần mềm được dùng trong
xã hội:
• Thực hiện không đúng yêu cầu (tính toán sai, không ổn định…)
• Thời gian bảo trì nâng cấp quá lâu, chi phí cao, hiệu quả thấp
• Khó sử dụng, Thực hiện chậm
• Không chuyển đổi dữ liệu giữa các phần mềm
KHỦNG HOẢNG PHÁT TRIỂN PHẦN MỀM
42
§ Một số kết luận:
§ Việc tăng vọt số lượng phần mềm là điều hợp lý và sẽ còn tiếp
diễn
§ Các khuyết điểm của phần mềm có nguồn gốc chính từ
phương pháp, cách thức và quy trình tiến hành xây dựng phần
mềm:
§ Cảm tính: mỗi người theo một phương pháp riêng
§ Thô sơ, đơn giản: chỉ tập trung vào việc lập trình mà ít quan tâm đến
các công việc cần làm khác (khảo sát hiện trạng, phân tích yêu cầu,
thiết kế…)
§ Thủ công: còn thiếu các công cụ hỗ trợ quy trình phát triển
KHỦNG HOẢNG PHÁT TRIỂN PHẦN MỀM
43
KỸ NGHỆ PHẦN MỀM
§ Định nghĩa
§ Các yếu tố cơ bản
§ Lịch sử phát triển
§ Kỹ nghệ phần mềm (Software Engineering - SE)
• 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 một cách kinh tế: vừa đáng
tin cậy vừa hiệu quả
• 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ẩm phần
mềm.
ĐỊNH NGHĨA KỸ NGHỆ PHẦN MỀM
45
§ IEEE [1993] SE:
1. Việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và
được lượng hóa trong phát triển, vận hành và bảo trì phần
mềm;
2. Nghiên cứu các phương pháp tiếp cận được dùng trong (1)
§ Pressman [1995]: SE là bộ môn tích hợp cả qui trình, các
phương pháp, các công cụ để phát triển phần mềm máy
tính
ĐỊNH NGHĨA KỸ NGHỆ PHẦN MỀM
46
§ Công nghệ (kỹ nghệ) phần mềm là ngành khoa học nghiên cứu về việc xây
dựng các phần mềm có chất lượng cao trong thời gian và chi phí thực hiện
hợp lý
ĐỊNH NGHĨA KỸ NGHỆ PHẦN MỀM
47
CÁC YẾU TỐ CƠ BẢN CỦA KỸ NGHỆ PHẦN MỀM
48
01
02
03
PHƯƠNG PHÁP
Cách thức xây dựng
phần mềm
CÔNG CỤ
Phần mềm, phần cứng hỗ trợ
QUY TRÌNH
Các bước cần thực hiện, các
mốc thời gian và sản phẩm
cần đạt được
§ 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
CÁC PHƯƠNG PHÁP – METHODS (1)
49
• 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)
§ 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 đối với các 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ÁC PHƯƠNG PHÁP – METHODS (2)
50
§ Cung cấp sự trợ giúp tự động/bán tự động cho từng phương pháp
§ Computer Aided Software Engineering – CASE
• Các công cụ được chuẩn hóa để hỗ trợ các công đoạn khác nhau trong quá
trình phát triển phần mềm
§ 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ÁC CÔNG CỤ – TOOLS
51
§ 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 (milestones) và sản phẩn bàn giao
QUY TRÌNH - PROCEDURES
52
ü Đề xướng, hình thành (70s)
§ Các phương pháp lập trình và cấu trúc dữ liệu
• Khái niệm về tính môđun
• Khái niệm thiết kế, lập trình top-down, chi tiết hóa từng bước (N. With)
• Lập trình có cấu trúc (Dijkstra)
• Phương pháp luận về qui trình thiết kế; phương pháp phân chia mô đun
• Trừu tượng hóa dữ liệu (Liskov)
LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (1/4)
53
ü Tăng trưởng (nửa đầu 80s)
§ Xuất hiện các phương pháp phát triển hệ thống
• Công nghệ CSDL(Mô hình quan hệ)
• Phân thích thiết kế hướng cấu trúc
§ Các bộ công cụ phát triển
• Công cụ trợ giúp phân tích thiết kế
• Bộ khởi tạo chương trình (giao diện đồ họa,biên dịch)
• Các ngôn ngữ bậc cao (FoxPro, SQL...)
§ Bắt đầu quan tâm đến quản lý làm phần mềm
• Các độ đo phần mềm
LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (2/4)
54
ü Phát triển (từ giữa 80s)
§ Hoàn thiện công nghệ cấu trúc, ra đời công nghệ hướng đối tượng
• Nhiều mô hình hướng cấu trúc được triển khai và chuẩn hóa
• CASE hoàn thiện, đạt mức tự động hóa cao
• Ngôn ngữ thế hệ 4 ra đời (LIPS, PROLOG,..)
• Công nghệ hướng đối tượng bắt đầu phát triển:
o Quy trình RUP
o Ngôn ngữ mô hình hóa thống nhất (UML)
o Các cụng cụ phần mềm đầy đủ (ROSE, JBUILDER,..)
• Sử dụng lại chiếm vị trí quan trọng trong phát triển
LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (3/4)
55
ü Phát triển (từ giữa 80s)(t)
§ Phát triển các mô hình quản lý
• Chuẩn quản lý được công nhận (CMM, IS9000-03)
• Nhiều mô hình tổ chức làm phần mềm được đề xuất
• Nhiều công cụ trợ giúp quản lý dự án hoàn thiện
LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (4/4)
56
§ Là khoảng thời gian tính từ khi phần mềm được đề suất cho đến
khi bỏ đi: cụ thể là từ khi được đặt hàng, phát triển, sử dụng đến
khi bị loại bỏ
§ Vòng đời phần mềm được phân chia thành các pha chính như
xác định yêu cầu, phát triển, vận hành và bảo trì. Phạm vi, thứ
tự các pha khác nhau tùy theo từng mô hình, dự án cụ thể.
TIẾN TRÌNH PHÁT TRIỂN PHẦN MỀM (1/3)
57
TIẾN TRÌNH PHÁT TRIỂN PHẦN MỀM (3/3)
XÁC ĐỊNH YÊU CẦU
§ Phân tích hệ thống
§ Lập kế hoạch
§ Phân tích yêu cầu
PHÁT TRIỂN
§ Thiết kế
§ Mã hóa
§ Kiểm thử
BẢO TRÌ
§ Sửa lỗi
§ Thích nghi
§ Nâng cao
§ Dự phòng
XÁC ĐỊNH YÊU CẦU
61
§ Xác định: Hệ thống làm gì? Những ràng buộc cần tuân
thủ?
§ Phân tích hệ thống: vai trò của phần mềm cần
phát triển trong hệ thống
§ Lập kế hoạch: ước lượng công việc, lập lịch biểu,
phân công công việc
§ Phân tích yêu cầu
• Xác định yêu cầu chi tiết (chức năng, ràng
buộc)
• Đặc tả yêu cầu
PHÁT TRIỂN
62
Tiến hành sản xuất phần mềm như thế nào?
Thiết kế (design)
Dịch các yêu cầu
thành bản thiết kế
(kiến trúc, dữ liệu, thủ
tục xử lý, giao diện)
Mã hóa (coding)
Chuyển thiết kế thành
chương trình máy tính
(trong một ngôn ngữ
lập trình)
Kiểm thử (testing)
Phát hiện và sửa lỗi
chương trình (lỗi lập
trình, lỗi thiết kế...
kiểm thử đơn vị, kiểm
thử tích hợp)
BẢO TRÌ
63
Hoàn thiện hệ thống sau khi đưa vào hoạt động?
ü Sửa lỗi: Sửa lỗi phần mềm
ü Thích nghi: Sửa đổi để thích nghi với môi trường thay đổi
ü Nâng cao: Thêm các chức năng mới, hoàn thiện chức năng
cũ
§ Tiến trình phần mềm là một tập các hoạt động có mục tiêu nhắm
phát triển và làm tiến hóa phần mềm
§ Các hoạt động chung nhất:
• Đặc tả: xác định yêu cầu
• Triển khai: tạo ra phần mềm
• Thẩm định: kiểm tra xem phần mềm đáp ứng được yêu cầu của khách
hàng không?
• Tiến hóa phần mềm: Thay đổi phần mềm nhằm đáp ứng yêu cầu thay
đổi
TIẾN TRÌNH PHẦN MỀM – SOFTWARE PROCESS
64
§ Mô hình tiến trình phần mềm là một cách biểu diễn
trừu tượng một tiến trình phần mềm đã đơn giản hóa
được thể hiện dưới một góc nhìn nào đó
§ Các góc nhìn tiến trình:
• Luồng công việc: trình tự các hoạt động
• Luồng dữ liệu: luồng các dữ liệu di chuyển
• Vai trò/hành động: hành vi của tác nhân
MÔ HÌNH TIẾN TRÌNH PHẦN MỀM
SOFTWARE PROCESS MODEL
65
§ Chi phí của kỹ nghệ phần mềm: gồm các khoản chi liên
quan đến phát triển phần mềm
§ Chi phí phụ thuộc vào:
• Loại hệ thống được phát triển (đơn giản, phức tạp)
• Yêu cầu đặt ra cho hệ thống (nhiều, ít)
• Các thuộc tính về mức độ hoàn thiện của hệ thống (độ tin cậy,
an toàn, bảo mật)
• Năng lực của tổ chức phát triển
CHI PHÍ CỦA KỸ NGHỆ PHẦN MỀM
66
§ Chi phí phần mềm thường chiếm phần lớn chi phí của cả hệ
thống máy tính.
§ Chi phí phần mềm trên máy PC thường lớn hơn chi phí phần
cứng.
§ Chi phí biến đổi tuỳ thuộc vào từng loại hệ thống được xây dựng
và các yêu cầu về đặc điểm của hệ thống.
CHI PHÍ KỸ NGHỆ PHẦN MỀM
§ Việc phân bổ chi phí cũng
phụ thuộc vào mô hình
phát triển hệ thống được
sử dụng.
§ Chi phí phục vụ cho việc
thay đổi, cải tiến phần
mềm sau khi nó đã được
đưa vào sử dụng.
§ Ngoài ra, bảo trì chiếm
trên 50% kinh phí dự án
PHÂN BỔ CHI PHÍ TRONG KỸ NGHỆ PHẦN MỀM
PHÂN BỔ NỖ LỰC PHÁT TRIỂN TRONG KỸ NGHỆ PHẦN MỀM
69
§ Kỹ nghệ hệ thống liên quan đến tất cả các mặt của việc phát
triển các hệ thống dựa trên máy tính: phần cứng, phần mềm, tổ
chức, quản lý
§ Kỹ nghệ phần mềm là một phần của kỹ nghệ hệ thống
KỸ NGHỆ HỆ THỐNG vs KỸ NGHỆ PHẦN MỀM
70
Kỹ nghệ
hệ
thống
Kỹ nghệ
phần mềm
§ Kỹ sư hệ thống bao gồm tất cả
những người tham gia các hoạt
động tạo lên hệ thống: đặc tả,
thiết kế kiến trúc, tích hợp, triển
khai …
KHOA HỌC MÁY TÍNH vs KỸ NGHỆ PHẦN MỀM
§71
§ Khoa học máy tính liên quan đến những vấn đề lý thuyết và nền
tảng cho máy tính
§ Kỹ nghệ phần mềm liên quan đến thực tiễn của việc phát triển
và xuất ra các phần mềm hiệu quả
§ Lý thuyết khoa học máy tính không đủ cho hoạt động của kỹ
nghệ phần mềm
Khoa học
máy tính
Kỹ nghệ
phần mềm
1. Định nghĩa mô hình tiến trình? Các mô hình có thể nhận được
từ các nhìn nhận nào?
2. Chi phí của SE gồm những thành phần nào và phụ thuộc vào
những cái gì?
3. Kỹ nghệ hệ thống là gì? Quan hệ giữa nó với kỹ nghệ phần
mềm ra sao?
4. Khoa học máy tính là gì? Quan hệ giữa nó và kỹ nghệ phần
mềm như thế nào?
CÂU HỎI ÔN TẬP
72
5. Các giai đoạn của lịch sử phát triển kỹ nghệ phần mềm? đặc trưng
của mỗi giai đoạn đó (sản phẩm, phương pháp, công cụ, quản lý và
tổ chức làm việc)?
6. Định nghĩa kỹ nghệ phần mềm?
7. Giải thích nội dung các yếu tố cơ bản trong SE? Lấy ví dụ minh
hoạ về phương pháp, công cụ qua phương pháp thiết kế hướng cấu
trúc?
8. Tiến trình phần mềm là cái gì? Các bước chung nhất của tiến trình
là gì?
CÂU HỎI ÔN TẬP
73
CÂU HỎI THẢO LUẬN
74

More Related Content

Similar to Lecture01_Phan mem va ky nghe phan mem.pdf

KyngheYC_Requirements 18.pptx
KyngheYC_Requirements 18.pptxKyngheYC_Requirements 18.pptx
KyngheYC_Requirements 18.pptxssuser73ecd9
 
Giaotrinh hedieuhanh
Giaotrinh hedieuhanhGiaotrinh hedieuhanh
Giaotrinh hedieuhanhHai Nguyen
 
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.pptBài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.pptBnhGo3
 
C01_TongQuanPTTKHT.pdf
C01_TongQuanPTTKHT.pdfC01_TongQuanPTTKHT.pdf
C01_TongQuanPTTKHT.pdfSnMinhThun
 
Chuong1 tongquanvehedieuhanh
Chuong1 tongquanvehedieuhanhChuong1 tongquanvehedieuhanh
Chuong1 tongquanvehedieuhanhluyenshare
 
Bc thực tập nghiên cứu, phát triển xây dựng hệ thống giám sát mạng bằng phần ...
Bc thực tập nghiên cứu, phát triển xây dựng hệ thống giám sát mạng bằng phần ...Bc thực tập nghiên cứu, phát triển xây dựng hệ thống giám sát mạng bằng phần ...
Bc thực tập nghiên cứu, phát triển xây dựng hệ thống giám sát mạng bằng phần ...nataliej4
 
Phan Tich Httt Bang Uml
Phan Tich Httt Bang UmlPhan Tich Httt Bang Uml
Phan Tich Httt Bang Umlhbgfd
 
Chuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttChuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttvo nhan
 
phan tich thiet ke he thong
phan tich thiet ke he thongphan tich thiet ke he thong
phan tich thiet ke he thongvantinhkhuc
 
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPducminh28092018
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_umlMai Mit
 
Phan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umlPhan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umldlmonline24h
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_umlAxnet Dung
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmTrần Gia Bảo
 
Unit 2 using windows vista vn
Unit 2 using windows vista vnUnit 2 using windows vista vn
Unit 2 using windows vista vnHG Rồng Con
 
Bai1-Tongquan.pptx
Bai1-Tongquan.pptxBai1-Tongquan.pptx
Bai1-Tongquan.pptxHuyTin20
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programmingDucLe868608
 

Similar to Lecture01_Phan mem va ky nghe phan mem.pdf (20)

KyngheYC_Requirements 18.pptx
KyngheYC_Requirements 18.pptxKyngheYC_Requirements 18.pptx
KyngheYC_Requirements 18.pptx
 
Chuong2 nmth
Chuong2 nmthChuong2 nmth
Chuong2 nmth
 
04.mo daucnpm
04.mo daucnpm04.mo daucnpm
04.mo daucnpm
 
Giaotrinh hedieuhanh
Giaotrinh hedieuhanhGiaotrinh hedieuhanh
Giaotrinh hedieuhanh
 
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.pptBài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
 
C01_TongQuanPTTKHT.pdf
C01_TongQuanPTTKHT.pdfC01_TongQuanPTTKHT.pdf
C01_TongQuanPTTKHT.pdf
 
Chuong1 tongquanvehedieuhanh
Chuong1 tongquanvehedieuhanhChuong1 tongquanvehedieuhanh
Chuong1 tongquanvehedieuhanh
 
Bc thực tập nghiên cứu, phát triển xây dựng hệ thống giám sát mạng bằng phần ...
Bc thực tập nghiên cứu, phát triển xây dựng hệ thống giám sát mạng bằng phần ...Bc thực tập nghiên cứu, phát triển xây dựng hệ thống giám sát mạng bằng phần ...
Bc thực tập nghiên cứu, phát triển xây dựng hệ thống giám sát mạng bằng phần ...
 
Phan Tich Httt Bang Uml
Phan Tich Httt Bang UmlPhan Tich Httt Bang Uml
Phan Tich Httt Bang Uml
 
Chuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttChuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_httt
 
phan tich thiet ke he thong
phan tich thiet ke he thongphan tich thiet ke he thong
phan tich thiet ke he thong
 
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
 
01_SE intro1.pptx
01_SE intro1.pptx01_SE intro1.pptx
01_SE intro1.pptx
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_uml
 
Phan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umlPhan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng uml
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_uml
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềm
 
Unit 2 using windows vista vn
Unit 2 using windows vista vnUnit 2 using windows vista vn
Unit 2 using windows vista vn
 
Bai1-Tongquan.pptx
Bai1-Tongquan.pptxBai1-Tongquan.pptx
Bai1-Tongquan.pptx
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programming
 

Recently uploaded

TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfVyTng986513
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Lecture01_Phan mem va ky nghe phan mem.pdf

  • 1. PHẦN MỀM VÀ KỸ NGHỆ PHẦN MỀM HÀ NỘI - 2021 Nguyễn Thị Thanh Huyền Bộ môn CNPM – Khoa CNTT ntthuyen@hnue.edu.vn
  • 2. § Phần mềm và vai trò của phần mềm § Chất lượng phần mềm § Thách thức đối với phát triển phần mềm § Khái niệm về kỹ nghệ phần mềm NỘI DUNG CHÍNH
  • 3. PHẦN MỀM VÀ VAI TRÒ § Định nghĩa phần mềm § Phân loại phần mềm § Vai trò của phần mềm § Thực trạng sử dụng § Quá trình tiến hoá
  • 4. PHẦN MỀM LÀ GÌ? 4 Phần mềm là gì? Phần mềm là các chương trình máy tính và những tài liệu liên quan như: các yêu cầu, mô hình thiết kế, tài liệu hướng dẫn sử dụng…
  • 5. § Phần mềm dưới góc nhìn của người sử dụng: • Chương trình thực thi được trên máy tính hoặc các thiết bị chuyên dụng khác • Nhằm hỗ trợ cho các nhà chuyên môn trong từng lĩnh vực chuyên ngành thực hiện tốt hơn các thao tác nghiệp vụ của mình PHẦN MỀM LÀ GÌ? 5
  • 6. § Thành phần giao tiếp (Giao diện): § Cho phép tiếp nhận các yêu cầu về việc sử dụng phần mềm từ người sử dụng, từ các thiết bị thu thập dữ liệu, hoặc từ các phần mềm khác § Cho phép trình bày các kết quả § Thực hiện các yêu cầu cho người dùng § Điều khiển hoạt động các thiết bị điều khiển (đóng/mở cửa, dừng hay cho chuyển động…) PHẦN MỀM LÀ GÌ? 6
  • 7. § Môi trường triển khai phần mềm: § Máy tính: Desktop, Laptop, Tablet PC… § Thiết bị chuyên dụng: PDA, Pocket PC, smartphone § Các thiết bị chuyên dụng khác: set-top box, router,... § Hỗ trợ làm tốt hơn các thao tác nghiệp vụ: § Tin học hóa nghiệp vụ hiện đang làm thủ công § Cải tiến chức năng nghiệp vụ hiện đang được thực hiện trên máy tính § Đề ra, xây dựng và triển khai chức năng nghiệp vụ mới PHẦN MỀM LÀ GÌ? 7
  • 8. § Phần mềm dưới góc nhìn của chuyên viên Tin học: • Là một hệ thống bao gồm 3 thành phần cơ bản: § Thành phần giao tiếp § Thành phần xử lý § Thành phần lưu trữ à Cần được xây dựng để thực hiện theo yêu cầu của người sử dụng PHẦN MỀM LÀ GÌ? 8
  • 9. § Thành phần giao tiếp (Giao diện): • Một cách tổng quát, thành phần giao tiếp cho phép nhập/xuất thông tin cùng với hình thức trình bày/giao tiếp tương ứng. • Mục tiêu chính của thành phần này là đưa thông tin từ thế giới thực bên ngoài phần mềm (người sử dụng, các thiết bị, phần mềm khác…) vào bên trong, hoặc ngược lại. PHẦN MỀM LÀ GÌ? 9
  • 10. § Thành phần xử lý: § Kiểm tra tính hợp lệ của thông tin nguồn được cung cấp từ người dùng theo các quy định ràng buộc trong thế giới thực o Ví dụ: chỉ cho mượn tối đa 3 quyển sách, mỗi lớp học không quá 50 học sinh… § Tiến hành xử lý cho ra kết quả mong đợi theo quy định tính toán có sẵn trong thế giới thực § Tiến hành xử lý theo thuật giải tự đề xuất PHẦN MỀM LÀ GÌ? 10
  • 11. § Thành phần xử lý (tt): § Việc xử lý dựa trên thông tin nguồn từ người sử dụng cung cấp o Ví dụ: tính nghiệm phương trình bậc 2 dựa trên các hệ số nhập vào hoặc dữ liệu lưu trữ có sẵn o Ví dụ: tính tiền phạt dựa trên ngày trả sách được nhập vào và thông tin về loại sách đã được lưu trữ § Việc xử lý cho ra kết quả có thể dùng để xuất cho người dùng xem qua thành phần giao diện, hay lưu trữ lại qua thành phần lưu trữ, hoặc cả hai PHẦN MỀM LÀ GÌ? 11
  • 12. § Một cách tổng quát, thành phần xử lý là hệ thống chuyên xử lý tính toán, biến đổi dữ liệu. § Dùng thông tin nguồn từ thành phần giao diện (chức năng nhập) hay thành phần dữ liệu (chức năng đọc); § Kiểm tra tính hợp lệ (chức năng kiểm tra) và sau đó tiến hành xử lý (chức năng xử lý) – nếu cần thiết § Để cho ra kết quả sẽ được trình bày thông qua thành phần giao diện (chức năng xuất) hoặc lưu trữ lại trong thành phần dữ liệu (chức năng ghi) PHẦN MỀM LÀ GÌ? 12
  • 13. § Thành phần lưu trữ (thành phần dữ liệu) § Cho phép lưu trữ lại (chức năng ghi) các kết quả đã xử lý o Ví dụ: Việc mượn sách đã được kiểm tra hợp lệ, bảng lương tháng đã được tính trên bộ nhớ phụ với tổ chức lưu trữ được xác định trước o Ví dụ: tập tin có cấu trúc, tập tin nhị phân, cơ sở dữ liệu PHẦN MỀM LÀ GÌ? 13
  • 14. § Thành phần lưu trữ (thành phần dữ liệu) § Cho phép truy xuất lại (chức năng đọc) các dữ liệu đã lưu trữ phục vụ cho các hàm xử lý tương ứng § Một cách tổng quát thành phần dữ liệu là hệ thống chuyên đọc ghi dữ liệu cùng với mô hình tổ chức lưu trữ dữ liệu tương ứng. § Mục tiêu chính của thành phần này là chuyển đổi dữ liệu giữa bộ nhớ chính và bộ nhớ phụ PHẦN MỀM LÀ GÌ? 14
  • 15. PHÂN LOẠI PHẦN MỀM (1/3) (TRÊN QUAN ĐIỂM NGƯỜI DÙNG) 15 § 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 - • Thu thập dữ liệu • Phân tích dữ liệu • Kiểm soát, điều khiển • Điều phối
  • 16. PHÂN LOẠI PHẦN MỀM (2/3) (TRÊN QUAN ĐIỂM NGƯỜI DÙNG) 16 § 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
  • 17. PHÂN LOẠI PHẦN MỀM (3/3) (TRÊN QUAN ĐIỂM NGƯỜI DÙNG) 17 § Phần mềm trí tuệ nhân tạo § Phần mềm máy tính cá nhân • 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... • 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 công cụ cho kỹ nghệ phần mềm • Trình biên dịch, các công cụ CASE...
  • 18. PHÂN LOẠI PHẦN MỀM (TRÊN QUAN ĐIỂM CỦA NGƯỜI PHÁT TRIỂN) 18 § Sản phẩm đặt hàng (may đo) - 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 thương mại - 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ì
  • 19. § Phần mềm có một tầm quan trọng đặc biệt trong xã hội hiện đại trên nhiều mặt: § Nền kinh tế § Xã hội § Các hệ thống đang tồn tại VAI TRÒ CỦA PHẦN MỀM
  • 20. § Nền kinh tế tất cả các nước đều phụ thuộc vào phần mềm § Phần mềm sai hỏng, kinh tế tổn thất § Chi phí cho phần mềm chiếm tỷ trọng đáng kể trong GNP ở các nước phát triển § Phần mềm tạo nên sự khác biệt của tổ chức § Thay đổi phong cách làm việc § Quyết định năng suất của tổ chức VAI TRÒ CỦA PHẦN MỀM (1/2) 20
  • 21. KHÓ KHĂN VÀ THÁCH THỨC 21 § Phát triển phần mềm được coi 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)
  • 22. MỘT SỐ DỰ ÁN THẤT BẠI 22 OS/MVS (IBM 370) 7M dòng lệnh OS 360 • > 1M dòng lệnh • 1963~1966 (gấp đôi dự kiến) • 5000 năm công • 200 M USD TSS 360 khởi động mất 10' Multics (Multiplexed Information and Computing Service) - 1965 ~2000 - http://www.multicians.org/
  • 23. § 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) TỔN THẤT DO LỖI PHẦN MỀM 23
  • 24. THỰC TRẠNG SỬ DỤNG 24 Huỷ bỏ 17% Không được phân phối 27% Được phân phối nhưng không sử dụng 45% Được sử dụng sau khi sửa đổi 6% Được sử dụng ngay khi phân phối 5%
  • 25. THỰC TRẠNG SỬ DỤNG 25 § Bản chất 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 hạ tầng - phần cứng sự tiến hóa của phần mềm là tất yếu
  • 26. TIẾN HÓA CỦA PHẦN MỀM GIAI ĐOẠN 1 § Phần cứng thay đổi liên tục § Xử lí theo lô § Sản xuất đơn chiếc § Ngôn ngữ: mã máy, đặc thù cho từng máy. § Lập trình theo bản năng, chưa có phương pháp GIAI ĐOẠN 2 § Đa nhiệm, đa người sử dụng § Hệ thống thời gian thực; § Xuất hiện lưu trữ trực tuyến (CSDL) § Ngôn ngữ có cấu trúc: PLI, Fortran, COBOL § Lập trình có phương pháp § Phát triển hệ thống chưa có phương pháp GIAI ĐOẠN 3 • Phần cứng phát triển • Xuất hiện mạng máy tính và hệ thống phân tán • Ngôn ngữ lập trình bậc cao, hướng đối tượng • Phát triển hệ thống có phương pháp và công cụ. 1960s 1990s 1970s
  • 27. § Phần mềm ngày càng phức tạp § Unix : 4 M dòng lệnh § Windows 2K : ~100 M dòng lệnh § Lý do • Năng lực máy tính ngày càng mạnh • Các hệ thống được liên kết lại • Nhu cầu của người dùng ngày càng lớn TIẾN HÓA CỦA PHẦN MỀM 27
  • 28. § 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 nặng tính thủ công • Giá thành cao CHI PHÍ CỦA PHẦN MỀM 28
  • 29. § 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ó THÁCH THỨC ĐỐI VỚI PHẦN MỀM 29 Cần có những phương pháp, công cụ hiện đại để phát triển phần mềm
  • 30. KHÓ KHĂN TRONG PHÁT TRIỂN PHẦN MỀM 30 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 "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" • 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)
  • 31. CHẤT LƯỢNG PHẦN MỀM § Chất lượng phần mềm dưới góc nhìn người sử dụng § Chất lượng phần mềm dưới góc nhìn của người phát triển § Yếu tố ảnh hưởng tới chất lượng phần mềm § Khủng hoảng trong phát triển phần mềm
  • 32. CHẤT LƯỢNG PHẦN MỀM 32 Phần mềm Con người Phần cứng Phần mềm khác Tính đúng đắn Tính đúng đắn: - Đầy đủ - Chính xác Dưới góc nhìn của Người sử dụng
  • 33. 33 Phần mềm Con người Phần cứng Phần mềm khác Tính tiện dụng Tính tiện dụng: - Dễ học - Dễ sử dụng - Giao diện trực quan - Tự nhiên Tính đúng đắn Dưới góc nhìn của Người sử dụng CHẤT LƯỢNG PHẦN MỀM
  • 34. CHẤT LƯỢNG PHẦN MỀM 34 Phần mềm Con người Phần cứng Phần mềm khác Tính hiệu quả Tính hiệu quả: - Tối ưu sử dụng CPU* - Tối ưu sử dụng bộ nhớ* - Tối ưu sử dụng thiết bị Tính đúng đắn Tính tiện dụng Dưới góc nhìn của Người sử dụng
  • 35. 35 Phần mềm Con người Phần cứng Phần mềm khác Tính tương thích Tính tương thích: - Import/Export dữ liệu - Tương tác Tính đúng đắn Tính tiện dụng Tính hiệu quả Dưới góc nhìn của Người sử dụng CHẤT LƯỢNG PHẦN MỀM
  • 36. CHẤT LƯỢNG PHẦN MỀM 36 Phần mềm Con người Phần cứng Phần mềm khác Tính tiến hóa Tính tiến hóa: một trong các tính chất quan trọng nhất được xem xét trong ngành Công nghệ Phần mềm Tính đúng đắn Tính tiện dụng Tính hiệu quả Tính tương thích Dưới góc nhìn của Người sử dụng
  • 37. CHẤT LƯỢNG PHẦN MỀM 37 Phần mềm Con người Phần cứng Phần mềm khác Tính tiến hóa Tính đúng đắn Tính tiện dụng Tính hiệu quả Tính tương thích ……… Dưới góc nhìn của Người sử dụng
  • 38. CHẤT LƯỢNG PHẦN MỀM 38 Phần mềm Con người Phần cứng Phần mềm khác Tính tiến hóa Tính đúng đắn Tính tiện dụng Tính hiệu quả Tính tương thích Dưới góc nhìn của Người sử dụng ??? GIÁ CẢ HỢP LÝ!
  • 39. CHẤT LƯỢNG PHẦN MỀM 39 § Khó tối ưu đồng thời các thuộc tính Ví dụ: hiệu quả <> dễ bảo trì, dễ sử dụng § Yêu cầu cân đối, thỏa hiệp: § Chi phí cho tối ưu là không tuyến tính hiệu năng giá thành
  • 40. 40 vTính dễ kiểm tra: Làm cho việc kiểm tra phần mềm (có phù hợp yêu cầu) dễ dàng nhất có thể vTính dễ sửa lỗi: Việc phát hiện chính xác “vị trí lỗi” và sửa lỗi là nhanh nhất có thể được. vTính dễ bảo trì: Cập nhật phần mềm là nhanh, chính xác nhất có thể được và hạn chế tối đa ảnh hưởng đến các thành phần khác vTính tái sử dụng: Các thành phần đã thực hiện có thể dùng lại trong các phần mềm cùng lớp (hoặc cùng lĩnh vực) với thời gian và công sức ít nhất có thể được ……… CHẤT LƯỢNG PHẦN MỀM Dưới góc nhìn của người phát triển
  • 41. CHẤT LƯỢNG PHẦN MỀM 41 Các chỉ tiêu cơ bản Tính dễ hiểu Thời gian (Phần cứng phát triển) Yếu tố khái niệm phần mềm tốt Đặc trưng gần đây Hiệu suất xử lý
  • 42. § Số lượng các phần mềm tăng vọt (do sự phát triển của phần cứng: tăng khả năng, giá thành hạ) § Có quá nhiều khuyết điểm trong các phần mềm được dùng trong xã hội: • Thực hiện không đúng yêu cầu (tính toán sai, không ổn định…) • Thời gian bảo trì nâng cấp quá lâu, chi phí cao, hiệu quả thấp • Khó sử dụng, Thực hiện chậm • Không chuyển đổi dữ liệu giữa các phần mềm KHỦNG HOẢNG PHÁT TRIỂN PHẦN MỀM 42
  • 43. § Một số kết luận: § Việc tăng vọt số lượng phần mềm là điều hợp lý và sẽ còn tiếp diễn § Các khuyết điểm của phần mềm có nguồn gốc chính từ phương pháp, cách thức và quy trình tiến hành xây dựng phần mềm: § Cảm tính: mỗi người theo một phương pháp riêng § Thô sơ, đơn giản: chỉ tập trung vào việc lập trình mà ít quan tâm đến các công việc cần làm khác (khảo sát hiện trạng, phân tích yêu cầu, thiết kế…) § Thủ công: còn thiếu các công cụ hỗ trợ quy trình phát triển KHỦNG HOẢNG PHÁT TRIỂN PHẦN MỀM 43
  • 44. KỸ NGHỆ PHẦN MỀM § Định nghĩa § Các yếu tố cơ bản § Lịch sử phát triển
  • 45. § Kỹ nghệ phần mềm (Software Engineering - SE) • 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 một cách kinh tế: vừa đáng tin cậy vừa hiệu quả • 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ẩm phần mềm. ĐỊNH NGHĨA KỸ NGHỆ PHẦN MỀM 45
  • 46. § IEEE [1993] SE: 1. Việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được lượng hóa trong phát triển, vận hành và bảo trì phần mềm; 2. Nghiên cứu các phương pháp tiếp cận được dùng trong (1) § Pressman [1995]: SE là bộ môn tích hợp cả qui trình, các phương pháp, các công cụ để phát triển phần mềm máy tính ĐỊNH NGHĨA KỸ NGHỆ PHẦN MỀM 46
  • 47. § Công nghệ (kỹ nghệ) phần mềm là ngành khoa học nghiên cứu về việc xây dựng các phần mềm có chất lượng cao trong thời gian và chi phí thực hiện hợp lý ĐỊNH NGHĨA KỸ NGHỆ PHẦN MỀM 47
  • 48. CÁC YẾU TỐ CƠ BẢN CỦA KỸ NGHỆ PHẦN MỀM 48 01 02 03 PHƯƠNG PHÁP Cách thức xây dựng phần mềm CÔNG CỤ Phần mềm, phần cứng hỗ trợ QUY TRÌNH Các bước cần thực hiện, các mốc thời gian và sản phẩm cần đạt được
  • 49. § 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 CÁC PHƯƠNG PHÁP – METHODS (1) 49 • 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)
  • 50. § 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 đối với các 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ÁC PHƯƠNG PHÁP – METHODS (2) 50
  • 51. § Cung cấp sự trợ giúp tự động/bán tự động cho từng phương pháp § Computer Aided Software Engineering – CASE • Các công cụ được chuẩn hóa để hỗ trợ các công đoạn khác nhau trong quá trình phát triển phần mềm § 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ÁC CÔNG CỤ – TOOLS 51
  • 52. § 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 (milestones) và sản phẩn bàn giao QUY TRÌNH - PROCEDURES 52
  • 53. ü Đề xướng, hình thành (70s) § Các phương pháp lập trình và cấu trúc dữ liệu • Khái niệm về tính môđun • Khái niệm thiết kế, lập trình top-down, chi tiết hóa từng bước (N. With) • Lập trình có cấu trúc (Dijkstra) • Phương pháp luận về qui trình thiết kế; phương pháp phân chia mô đun • Trừu tượng hóa dữ liệu (Liskov) LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (1/4) 53
  • 54. ü Tăng trưởng (nửa đầu 80s) § Xuất hiện các phương pháp phát triển hệ thống • Công nghệ CSDL(Mô hình quan hệ) • Phân thích thiết kế hướng cấu trúc § Các bộ công cụ phát triển • Công cụ trợ giúp phân tích thiết kế • Bộ khởi tạo chương trình (giao diện đồ họa,biên dịch) • Các ngôn ngữ bậc cao (FoxPro, SQL...) § Bắt đầu quan tâm đến quản lý làm phần mềm • Các độ đo phần mềm LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (2/4) 54
  • 55. ü Phát triển (từ giữa 80s) § Hoàn thiện công nghệ cấu trúc, ra đời công nghệ hướng đối tượng • Nhiều mô hình hướng cấu trúc được triển khai và chuẩn hóa • CASE hoàn thiện, đạt mức tự động hóa cao • Ngôn ngữ thế hệ 4 ra đời (LIPS, PROLOG,..) • Công nghệ hướng đối tượng bắt đầu phát triển: o Quy trình RUP o Ngôn ngữ mô hình hóa thống nhất (UML) o Các cụng cụ phần mềm đầy đủ (ROSE, JBUILDER,..) • Sử dụng lại chiếm vị trí quan trọng trong phát triển LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (3/4) 55
  • 56. ü Phát triển (từ giữa 80s)(t) § Phát triển các mô hình quản lý • Chuẩn quản lý được công nhận (CMM, IS9000-03) • Nhiều mô hình tổ chức làm phần mềm được đề xuất • Nhiều công cụ trợ giúp quản lý dự án hoàn thiện LỊCH SỬ PHÁT TRIỂN KỸ NGHỆ PHẦN MỀM (4/4) 56
  • 57. § Là khoảng thời gian tính từ khi phần mềm được đề suất cho đến khi bỏ đi: cụ thể là từ khi được đặt hàng, phát triển, sử dụng đến khi bị loại bỏ § Vòng đời phần mềm được phân chia thành các pha chính như xác định yêu cầu, phát triển, vận hành và bảo trì. Phạm vi, thứ tự các pha khác nhau tùy theo từng mô hình, dự án cụ thể. TIẾN TRÌNH PHÁT TRIỂN PHẦN MỀM (1/3) 57
  • 58. TIẾN TRÌNH PHÁT TRIỂN PHẦN MỀM (3/3) XÁC ĐỊNH YÊU CẦU § Phân tích hệ thống § Lập kế hoạch § Phân tích yêu cầu PHÁT TRIỂN § Thiết kế § Mã hóa § Kiểm thử BẢO TRÌ § Sửa lỗi § Thích nghi § Nâng cao § Dự phòng
  • 59. XÁC ĐỊNH YÊU CẦU 61 § Xác định: Hệ thống làm gì? Những ràng buộc cần tuân thủ? § Phân tích hệ thống: vai trò của phần mềm cần phát triển trong hệ thống § Lập kế hoạch: ước lượng công việc, lập lịch biểu, phân công công việc § Phân tích yêu cầu • Xác định yêu cầu chi tiết (chức năng, ràng buộc) • Đặc tả yêu cầu
  • 60. PHÁT TRIỂN 62 Tiến hành sản xuất phần mềm như thế nào? Thiết kế (design) Dịch các yêu cầu thành bản thiết kế (kiến trúc, dữ liệu, thủ tục xử lý, giao diện) Mã hóa (coding) Chuyển thiết kế thành chương trình máy tính (trong một ngôn ngữ lập trình) Kiểm thử (testing) Phát hiện và sửa lỗi chương trình (lỗi lập trình, lỗi thiết kế... kiểm thử đơn vị, kiểm thử tích hợp)
  • 61. BẢO TRÌ 63 Hoàn thiện hệ thống sau khi đưa vào hoạt động? ü Sửa lỗi: Sửa lỗi phần mềm ü Thích nghi: Sửa đổi để thích nghi với môi trường thay đổi ü Nâng cao: Thêm các chức năng mới, hoàn thiện chức năng cũ
  • 62. § Tiến trình phần mềm là một tập các hoạt động có mục tiêu nhắm phát triển và làm tiến hóa phần mềm § Các hoạt động chung nhất: • Đặc tả: xác định yêu cầu • Triển khai: tạo ra phần mềm • Thẩm định: kiểm tra xem phần mềm đáp ứng được yêu cầu của khách hàng không? • Tiến hóa phần mềm: Thay đổi phần mềm nhằm đáp ứng yêu cầu thay đổi TIẾN TRÌNH PHẦN MỀM – SOFTWARE PROCESS 64
  • 63. § Mô hình tiến trình phần mềm là một cách biểu diễn trừu tượng một tiến trình phần mềm đã đơn giản hóa được thể hiện dưới một góc nhìn nào đó § Các góc nhìn tiến trình: • Luồng công việc: trình tự các hoạt động • Luồng dữ liệu: luồng các dữ liệu di chuyển • Vai trò/hành động: hành vi của tác nhân MÔ HÌNH TIẾN TRÌNH PHẦN MỀM SOFTWARE PROCESS MODEL 65
  • 64. § Chi phí của kỹ nghệ phần mềm: gồm các khoản chi liên quan đến phát triển phần mềm § Chi phí phụ thuộc vào: • Loại hệ thống được phát triển (đơn giản, phức tạp) • Yêu cầu đặt ra cho hệ thống (nhiều, ít) • Các thuộc tính về mức độ hoàn thiện của hệ thống (độ tin cậy, an toàn, bảo mật) • Năng lực của tổ chức phát triển CHI PHÍ CỦA KỸ NGHỆ PHẦN MỀM 66
  • 65. § Chi phí phần mềm thường chiếm phần lớn chi phí của cả hệ thống máy tính. § Chi phí phần mềm trên máy PC thường lớn hơn chi phí phần cứng. § Chi phí biến đổi tuỳ thuộc vào từng loại hệ thống được xây dựng và các yêu cầu về đặc điểm của hệ thống. CHI PHÍ KỸ NGHỆ PHẦN MỀM
  • 66. § Việc phân bổ chi phí cũng phụ thuộc vào mô hình phát triển hệ thống được sử dụng. § Chi phí phục vụ cho việc thay đổi, cải tiến phần mềm sau khi nó đã được đưa vào sử dụng. § Ngoài ra, bảo trì chiếm trên 50% kinh phí dự án PHÂN BỔ CHI PHÍ TRONG KỸ NGHỆ PHẦN MỀM
  • 67. PHÂN BỔ NỖ LỰC PHÁT TRIỂN TRONG KỸ NGHỆ PHẦN MỀM 69
  • 68. § Kỹ nghệ hệ thống liên quan đến tất cả các mặt của việc phát triển các hệ thống dựa trên máy tính: phần cứng, phần mềm, tổ chức, quản lý § Kỹ nghệ phần mềm là một phần của kỹ nghệ hệ thống KỸ NGHỆ HỆ THỐNG vs KỸ NGHỆ PHẦN MỀM 70 Kỹ nghệ hệ thống Kỹ nghệ phần mềm § Kỹ sư hệ thống bao gồm tất cả những người tham gia các hoạt động tạo lên hệ thống: đặc tả, thiết kế kiến trúc, tích hợp, triển khai …
  • 69. KHOA HỌC MÁY TÍNH vs KỸ NGHỆ PHẦN MỀM §71 § Khoa học máy tính liên quan đến những vấn đề lý thuyết và nền tảng cho máy tính § Kỹ nghệ phần mềm liên quan đến thực tiễn của việc phát triển và xuất ra các phần mềm hiệu quả § Lý thuyết khoa học máy tính không đủ cho hoạt động của kỹ nghệ phần mềm Khoa học máy tính Kỹ nghệ phần mềm
  • 70. 1. Định nghĩa mô hình tiến trình? Các mô hình có thể nhận được từ các nhìn nhận nào? 2. Chi phí của SE gồm những thành phần nào và phụ thuộc vào những cái gì? 3. Kỹ nghệ hệ thống là gì? Quan hệ giữa nó với kỹ nghệ phần mềm ra sao? 4. Khoa học máy tính là gì? Quan hệ giữa nó và kỹ nghệ phần mềm như thế nào? CÂU HỎI ÔN TẬP 72
  • 71. 5. Các giai đoạn của lịch sử phát triển kỹ nghệ phần mềm? đặc trưng của mỗi giai đoạn đó (sản phẩm, phương pháp, công cụ, quản lý và tổ chức làm việc)? 6. Định nghĩa kỹ nghệ phần mềm? 7. Giải thích nội dung các yếu tố cơ bản trong SE? Lấy ví dụ minh hoạ về phương pháp, công cụ qua phương pháp thiết kế hướng cấu trúc? 8. Tiến trình phần mềm là cái gì? Các bước chung nhất của tiến trình là gì? CÂU HỎI ÔN TẬP 73
  • 72. CÂU HỎI THẢO LUẬN 74