Tải bản đầy đủ (.pdf) (55 trang)

tài liệu Công nghệ Phần mềm (Software Engineering)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.3 MB, 55 trang )

1
CNPM/NN
Công nghệ Phần mềm (Software Engineering)
Tài liệu tham khảo
 Software Engineering - A practitioner’s approach, R.S. Pressman,
McGraw-Hill (ebook)
 Ian Sommerville’s , “Software Engineering 7th Ed.”
 Nhập môn kỹ nghệ phần mềm; Ngô Trung Việt, Nguyễn kim Ánh;
NXB Khoa học và kỹ thuật
 />2
CNPM/NN
Mục tiêu
 Những luồng công việc và sự kiện trong nỗ lực phát triển phần
mềm
 Vai trò của kỹ sư phần mềm trong việc xây dựng phần mềm
 Cung cấp những kiến thức nền tảng, tạo điều kiện cần thiết để
sinh viên vận dụng trong thực tế sản xuất phần mềm: phân
tích, thiết kế, tạo code, kiểm thử và bảo trì, cũng như các công
việc hỗ trợ như: Quản lý chất lượng, quản lý dự án…
3
CNPM/NN
Kế hoạch học
 Thời gian: 45 tiết (9 tuần x 5)
 Kiểm tra
 Điểm giữa học kỳ được tính 20% (tuần 5 – tự luận)
 Điểm tiểu luận được tính 30% (nhận vào tuần thứ 2)
 Điểm thi kết thúc học phần được tính 50% (trắc nghiệm)
4
CNPM/NN
Yêu cầu
 Có kiến thức về ngôn ngữ lập trình và đã từng lập trình các


ứng dụng cơ bản, cấu trúc dữ liệu và giải thuật.
 Có hiểu biết về mạng máy tính, Cơ sở dữ liệu.
5
CNPM/NN
CÔNG NGHỆ PHẦN MỀM
Chương 1
Tổng quan
MÔN HỌC
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
6
CNPM/NN
Nội dung
1. Phần mềm
2. Công nghệ Phần mềm.
3. Lịch sử phát triển của Công nghệ Phần mềm.
4. Những thách thức trong Công nghệ phần mềm.
5. Một số thuật ngữ công nghệ phần mềm.
6. Nghề nghiệp.
7. Các nhận thức sai lầm.
7
CNPM/NN
1. Phần mềm (Software)?
 Sản phẩm phần mềm là những chương trình điều khiển máy
tính để thực hiện các chức năng hữu ích, nó thường bao gồm
các tài liệu hướng dẫn.
 Trong sản xuất phần mềm, các tài liệu đi theo với phần mềm
là hết sức cần thiết. Các tài liệu đó là: tài liệu phân tích, tài liệu
về kiến trúc phần mềm, các dữ liệu kiểm thử (testing), các tài
liệu về các thành phần sử dụng lại, tài liệu theo dõi các phiên
bản…

 Ngoài việc cung cấp phần mềm, đơn vị sản xuất thường kèm
theo các công việc như: cài đặt, bảo trì, nâng cấp, huấn
luyện…
8
CNPM/NN
Phần mềm dùng làm gì?
 Phần mềm là một sản phẩm
 Dùng cho tính toán.
 Tạo, quản lý, thu nhận, biến đổi, thể hiện hay là truyền thông tin.
 Phần mềm là một phương tiện tạo sản phẩm
 Hỗ trợ hay cung cấp trực tiếp các chức năng cho hệ thống.
 Điều khiển những chương trình khác (HĐH).
 Thực hiện truyền thông (PM Mạng).
 Giúp cho việc tạo các chương trình khác (Tool, Framework).
9
CNPM/NN
Phần mềm gồm những gì?
Phần mềm là tập hợp những mục hay là
đối tượng mà hình thành một cấu hình bao
gồm:
• Chương trình.
• Tài liệu.
• Dữ liệu…
10
CNPM/NN
source
codes
object
object
codes

plans
reports
manuals
documents
documents
test suites
test suites
prototypes
prototypes
data
test results
Phần mềm gồm những gì?
11
CNPM/NN
Đặc điểm của phần mềm?
 Phần mềm phải được tạo bằng cách phát triển
(develop or engineer) chứ không phải đơn thuần
là sản xuất (manufacture).
 Phần mềm không hao mòn.
 Phần mềm thì phức tạp, chi phí cho những thay
đổi (change) ở những giai đoạn sau rất cao.
 Hầu hết phần mềm vẫn phải xây dựng bằng
cách tùy biến.
12
CNPM/NN
Lỗi theo thời gian
13
CNPM/NN
Bản chất của phần mềm
Phần mềm

 Phần mềm không sờ thấy được.
 Phần mềm dễ dàng nhân bản.
 Phần mềm khó đánh giá về chất lượng.
 Phần mềm dễ dàng thay đổi.
 Phần mềm không hao mòn.
Nhận xét
 Nhiều phần mềm thiết kế nghèo nàn đang gây lỗi.
 Nhu cầu phần mềm không ngừng gia tăng.
 Chúng ta đang ở trong tình trạng khủng hoảng không
ngừng (‘SW crisis’)
 Chúng ta phải học để phát triển phần mềm
14
CNPM/NN
Hai loại sản phẩm phần mềm
 Các sản phẩm phần mềm được chia thành 2 nhóm:
 Sản phẩm đại trà (Generic Product)
 Sản phẩm theo đơn hàng (Bespoke Product hoặc
Customised Product)
 Một phần mềm mới có thể được tạo ra bằng cách phát
triển các chương trình mới, thay đổi và điều chỉnh các hệ
thống phần mềm đại trà hoặc tái sử dụng lại các phần
mềm đã tồn tại…
15
CNPM/NN
Những loại phần mềm
 Phần mềm hệ thống.
 Phần mềm ứng dụng.
 Phần mềm khoa học kỹ thuật.
 Phần mềm nhúng.
 Phần mềm máy tính cá nhân.

 Ứng dụng Web.
 Phần mềm AI (Artificial Intelligence)…
16
CNPM/NN
1.161.16
17
CNPM/NN
2. Công nghệ phần mềm?
 Công nghệ phần mềm là sự thiết lập và sử dụng những
nguyên lý công nghệ đúng đắn nhằm đạt được phần mềm có
tính kinh tế tức là phần mềm có tính tin cậy và làm việc hiệu
quả trên những máy móc thực
 Công Nghệ Phần Mềm (software engineering): là sự áp dụng
những phương pháp có tính hệ thống, có qui tắc và có thể
định lượng được nhằm phát triển, vận hành và bảo trì phần
mềm, tức là áp dụng những kiến thức công nghệ vào phần
mềm (theo IEEE)
18
CNPM/NN
 Software engineering is the establishment and use of
sound engineering principles in order to obtain
economically software that is reliable and works efficiently
on real machines
 Software engineering is the application of a systematic,
disciplined, quantifiable approach to the development,
operation and maintenance of software, that is , the
application of engineering to software [IEEE90a]
Software Engineering?
Công nghệ phần mềm?
19

Phần mềm
(Hệ thống)
(Chương trình, Tài liệu,
cấu hình )
Kỹ sư
Phần mềm
Phát triển
sản phẩm phần mếm
Công nghệ phần mềm
Nguyên tắc :
1. Tập trung vào vào việc phát triển hệ thống phần mềm chất lượng
cao với chi phí hiệu quả.
2. Tập trung vào tất cả các khía cạnh của sản phẩm phần mềm
•Từ: Đặc tả.
•Tới: Phát hành và sử dụng.
20
CNPM/NN
 Chi phí phần mềm chiếm phần lớn trong những hệ
thống dựa vào phần mềm.
 Đối với những hệ thống có chu kỳ sống dài chi phí
bảo trì có thể cao hơn chi phí phát triển nhiều lần.
 Công nghệ phần mềm thì bị chi phối bởi lợi nhuận.
Tại sao phải kỹ nghệ phần mềm?
21
CNPM/NN
Công nghệ học trong CNPM ?
 Như các ngành công nghệ học khác, CNPM cũng lấy các
phương pháp khoa học làm cơ sở.
 Các kỹ thuật về thiết kế, chế tạo, kiểm thử và bảo trì phần
mềm đã được hệ thống hóa thành phương pháp luận và hình

thành nên CNPM.
 Toàn bộ qui trình phát triển phần mềm gắn liền với khái niệm
chu kỳ sống phát triểncủa phần mềm (Software development Life
Cycle).
22
CNPM/NN
3. Lịch sử phát triển CNPM…
 Năm 1968: Tại Tây Đức, Hội nghị khoa học của NATO đã đưa
ra từ “Software Engineering”. Bắt đầu bàn luận về khủng
khoảng phần mềm và xu hướng hình thành CNPM như một
ngành riêng.
 Giữa những năm 1970: Hội nghị quốc tế đầu tiên về CNHPM
được tổ chức (1975): International Conference on SE (ICSE).
 Nửa sau những năm 1970: Cuộc “cách tân sản xuất phần
mềm” đã bắt đầu trên phạm vi các nước công nghiệp.
 Nửa đầu những năm 1980: Xuất hiện các sản phẩm phần
mềm và các công cụ khác nhau làm tăng năng suất sản xuất
phần mềm đáng kể, phát triển các kỹ thuật bảo trì.
23
CNPM/NN
Lịch sử phát triển CNPM
 Nửa cuối những năm 1980 đến nay: Chất lượng phần mềm
tập trung chủ yếu ở năng suất, độ tin cậy và việc bảo trì.
Nghiên cứu hỗ trợ tự động hóa sản xuất phần mềm. Nhiều
trung tâm, viện nghiên cứu CNPM ra đời. Các trường đưa vào
giảng dạy SE.
 Hiện nay:
 Công nghiệp hóa sản xuất phần mềm bằng cách đưa những kỹ
thuật công nghệ học (Engineering techniques) thành cơ sở khoa
học của CNPM.

 Vận dụng những lý luận trong sản xuất phần mềm và áp dụng
các phương pháp luận một cách nhất quán.
 Tăng cường nghiên cứu và tạo công cụ trợ giúp sản xuất phần
mềm.
24
CNPM/NN
Sự tiến triển của các phương pháp phát triển PM
 1970.
 Phương pháp luận về quy trình thiết kế phần mềm với phương
pháp phân chia môđun và thiết kế trong từng môđun.
 Phát triển: nửa đầu 1980.
 Ngôn ngữ đối thoại đơn giản (4GL, DB SQL).
 Hệ trợ giúp: Hệ trợ giúp kiểm thử; Hệ trợ giúp quản lý thư viện
mã; Hệ trợ giúp tái sử dụng.
 Biến đổi: nửa cuối 1980 đến nay.
 Đưa ra các môi trường mới về phát triển phần mềm. Triển khai
mới về kết hợp giữa CNPM và CN Tri thức (Knowledge
Engineering).
 Triển khai những môi trường bậc cao về phát triển phần mềm;
Tự động hóa sản xuất phần mềm; Tạo bản mẫu (Prototyping);
Lập trình hướng đối tượng - OOP; Hướng sử dụng thành phần
(component).
25
CNPM/NN
4. Những thách thức đối với CNPM…
 Cứ 6 đề án triển khai thì có 2 bị huỷ bỏ.
 Trung bình thời gian thực hiện thực tế bị kéo dài 50% (cá biệt
200-300%).
 Các đề án lớn dễ thất bại.
 3/4 các hệ thống lớn có lỗi khi thực thi.

 Quá trình phân tích yêu cầu (5% công sức): để lại 55% lỗi, có
18% phát hiện được.
 Quá trình thiết kế (25% công sức): để lại 30% lỗi, có 10% phát
hiện được.
 Quá trình mã hoá, kiểm tra và bảo trì: để lại 15% lỗi, có 72%
phát hiện được.

×