CHƯƠNG 1: LƯỢC SỬ VÀ MỤC TIÊU CỦA
CÔNG NGHỆ PHẦN MỀM
1 01/15/10 Bài giảng môn CNPM
I. Mục tiêu
– Kiến thức: Giúp sinh viên
– Kỹ năng:
Kỹ năng tìm tòi, nghiên cứu tài liệu.
– Thái độ:
Nghiêm túc trong công việc, ham học hỏi, tự học để nâng cao
trình độ.
2 01/15/10 Bài giảng môn CNPM
II. Chuẩn bị
– Giáo viên:
Giáo án, máy tính, projector.
– Sinh viên:
Tài liệu, vở, viết.
III. Phương pháp
Phương pháp thuyết trình
Phương pháp đặt vấn đề.
3 01/15/10 Bài giảng môn CNPM
Chương 1. LƯỢC SỬ VÀ MỤC TIÊU CỦA CÔNG
NGHỆ PHẦN MỀM
1.1. Kỹ thuật lập trình giai đoạn thế hệ thứ
nhất của máy tính điện tử.
1.2. Cuộc khủng hoảng lập trình những
năm 60.
1.3. Công nghệ phần mềm là gì?
1.4. Những nội dung cơ bản của Công
nghệ phần mềm.
4 01/15/10 Bài giảng môn CNPM
1.1. Kỹ thuật lập trình giai đoạn thế hệ thứ nhất của máy
tính điện tử
Năng suất làm các sản phẩm phần mềm là
thấp nhất so với các hoạt động trí tuệ khác.
Việc kiểm tra, tìm lỗi và hoàn thiện sản phẩm
mất rất nhiều thời gian.
Trước những năm 60 người ta coi lập trình
như là hoạt động nghệ thuật nhuốm màu sắc
tài nghệ cá nhân hơn là khoa học.
5 01/15/10 Bài giảng môn CNPM
1.2. Cuộc khủng hoảng lập trình những năm 60
Chi phí cho tin học quá lớn, trong đó chi phí
cho phần mềm chiếm tỷ lệ cao và ngày càng
tăng so với chi phí kỹ thuật tin học (phần
cứng).
Rất nhiều đề án lớn nhằm ứng dụng tin học
bị thất bại liên tiếp. Nguyên nhân thất bại chủ
yếu là do phần đảm bảo chương trình.
6 01/15/10 Bài giảng môn CNPM
1.3. Công nghệ phần mềm là gì?
Khi tìm hiểu về công nghệ phần mềm, chúng ta thường đặt
ra một số câu hỏi sau:
– Phần mềm là gì?
– Công nghệ phần mềm là gì?
– Sự khác biệt giữa công nghệ phần mềm và khoa học máy tính?
– Sự khác biệt giữa công nghệ phần mềm và công nghệ hệ thống?
– Quy trình phần mềm là gì?
– Mô hình quy trình phát triển phần mềm là gì?
– Chi phí của công nghệ phần mềm bao gồm những gì?
– Các phương pháp công nghệ phần mềm là gì?
– CASE (Computer-Aided Software Engineering) là gì?
– Thế nào là một phần mềm tốt?
7 01/15/10 Bài giảng môn CNPM
1.3. Công nghệ phần mềm là gì? (2)
1.3.1. Định nghĩa
1.3.2. Triển khai phần mềm theo sắc thái công
nghệ.
1.3.3. Đảm bảo sự thông hiểu lẫn nhau.
1.3.4. Tận dụng quỹ thuật toán và chương trình.
1.3.5. Phần mềm cho công nghệ phần mềm.
8 01/15/10 Bài giảng môn CNPM
1.3.1. Định nghĩa
Khái niệm về công nghệ phần mềm được
đưa ra lần đầu tiên vào năm 1968 tại hội nghị
thảo luận về khủng hoảng phần mềm.
Công nghệ phần mềm đề cập tới các lý
thuyết, phương thức và công cụ để xây dựng
phần mềm chuyên nghiệp, mang lại lợi nhuận
cao.
9 01/15/10 Bài giảng môn CNPM
1.3.1. Định nghĩa (2)
Công nghệ phần mềm (Software Engineering) là
lĩnh vực nghiên cứu của Tin học nhằm đề xuất
các nguyên lý, phương pháp, công cụ, cách tiếp
cận và phương tiện phục vụ cho việc thiết kế và
cài đặt các sản phẩm phần mềm nhằm đạt
được các chỉ tiêu cơ bản sau đây một cách tốt
nhất:
– Tính đúng đắn,
– Tính khoa học,
– Tính dễ học và dễ sửa đổi, cải tiến,
– Tính dễ sử dụng,
– Tính phổ dụng,
10 – Tính độc lập với thiết bị.
01/15/10 Bài giảng môn CNPM
1.3.2. Triển khai PM theo sắc thái công nghệ
Công nghệ sản xuất một mặt hàng nào đó thường
gồm các giai đoạn sau:
1. Tìm hiểu nhu cầu của khách hàng.
2. Xác định các chức năng cần có của sản phẩm.
3. Chia các chức năng thành những nhóm độc lập tương đối với
nhau. Mỗi nhóm ứng với một bộ phận hợp thành sản phẩm.
4. Giao việc thiết kế và sản xuất từng bộ phận cho từng người
hoặc nhóm người.
5. Các nhóm triển khai công việc: Thực hiện các bước thiết kế,
sản xuất, thử nghiệm.
11 01/15/10 Bài giảng môn CNPM
1.3.2. Triển khai PM theo sắc thái công nghệ (2)
Công nghệ sản xuất một mặt hàng nào đó
thường gồm các giai đoạn sau:
6. Ghép nối các bộ phận, chi tiết thành sản
phẩm.
7. Thử nghiệm sản phẩm, sửa nếu cần.
8. Bán hoặc giao lô sản phẩm đầu tiên cho
khách hàng.
9. Thu thập thông tin phản hồi từ phía người
sử dụng. Quyết định sửa lại sản phẩm, cải
tiến hoặc hủy bỏ việc sản xuất sản phẩm
12 này. 01/15/10 Bài giảng môn CNPM
1.3.3. Đảm bảo sự thông hiểu lẫn nhau
Là một trong những yếu tố quan trọng hàng
đầu.
Phương tiện giao tiếp trong nhóm chính là
ngôn ngữ đặc tả.
Các nguyên tắc hành động đảm bảo trong
sáng, dễ hiểu: triển khai chương trình theo
cấu trúc, từ trên xuống và tinh chế dần.
13 01/15/10 Bài giảng môn CNPM
Cách tiếp cận từ trên xuống (top-down approach)
Trừu tượng hóa mức cao:
Thế giới bên ngoài Thế giới bên ngoài,
trạng thái chưa rõ ràng
Chi
tiết
hóa Trừu tượng hóa mức trung gian:
Đặc tả yêu cầu Xác định yêu cầu và đặc tả
từng những định nghĩa yêu cầu
bước
Trừu tượng hóa mức thấp:
Ngôn ngữ Từng lệnh của chương trình được
chương trình viết bởi ngôn ngữ thủ tục nào đó
14 01/15/10 Bài giảng môn CNPM
1.3.4. Tận dụng quỹ thuật toán và chương trình
Tìm và sử dụng lại những module, thủ tục
hoặc thuật toán đã có sẵn.
Hãy làm việc theo nguyên tắc “mình vì mọi
người, mọi người vì mình”.
15 01/15/10 Bài giảng môn CNPM
1.3.5. Phần mềm cho công nghệ phần mềm
CASE (Computer-Aided Software
Engineering) là những hệ chương trình được
sử dụng để hỗ trợ các hoạt động trong quy
trình xây dựng phần mềm.
CASE trợ giúp các nhóm làm phần mềm trong
tất cả các giai đoạn. Có 2 loại CASE:
– Upper-CASE: công cụ để hỗ trợ các hoạt động
đầu tiên như đặc tả yêu cầu và thiết kế.
– Lower-CASE: công cụ để hỗ trợ các hoạt động
sau như lập trình, gỡ lỗi và kiểm thử.
16 01/15/10 Bài giảng môn CNPM
1.4. Những nội dung cơ bản của CNPM
1.4.1. Tìm hiểu và phân tích yêu cầu
1.4.2. Đặc tả chương trình
1.4.3. Lập trình cấu trúc
1.4.4. Kiểm thử
1.4.5. Chứng minh tính đúng đắn của chương
trình.
1.4.6. Xem xét chất lượng chương trình.
1.4.7. Quản lý thiết kế, cài đặt, lập hồ sơ.
1.4.8. Đảm bảo việc cung cấp các phần mềm
trợ giúp cho hoạt động của nhóm thiết kế.
17 01/15/10 Bài giảng môn CNPM
MỘT CÁCH NHÌN TỔNG QUAN VỀ QUY TRINH PHAT
̀ ́
̉ ̀ ̀
TRIÊN PHÂN MÊM
Gồm 3 giai đoạn lớn:
– Giai đoạn định nghĩa: Phân tích hệ thống, Hoạch
định đề tài, Phân tích yêu cầu.
– Giai đoạn phát triển: Thiết kế phần mềm, Sinh
mã, Kiểm tra phần mềm.
– Giai đoạn bảo trì.
18 01/15/10 Bài giảng môn CNPM
Ví dụ: Trình tự giải quyết vấn đề từ mức thiết kế
chương trình đến mức lập trình
Bài toán: từ một nhóm N số khác nhau tăng dần,
hãy tìm số có giá trị bằng K (nhập từ ngoài vào)
và in ra vị trí của nó?
Giải từng bước từ khái niệm đến chi tiết hóa
từng câu lệnh bởi ngôn ngữ lập trình nào đó.
Chọn giải thuật tìm kiếm nhị phân (pp nhị
phân)
19 01/15/10 Bài giảng môn CNPM
Cụ thể hóa thủ tục qua các chức năng
Bài toán đã cho Nhập giá trị K
Nhận giá trị nhóm N số
Tìm kiếm giá trị (pp nhị phân)
In ra vị trí (nếu có)
20 01/15/10 Bài giảng môn CNPM