Bài giảng Môn học phát triển vận hành và bảo trì phần mềm
Số ĐVHT: 3 • Các môn học trước: CNPM, Phát triển phần mềm hướng đối tương, lập trình hướng đối tượng, kiểm thử phầm mềm, đặc tả hình thức
Bạn đang xem trước 20 trang tài liệu Bài giảng Môn học phát triển vận hành và bảo trì phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Môn học
PHÁT TRIỂN VẬN HÀNH VÀ
BẢO TRÌ PHẦN MỀM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CNPM
--------0O0--------
GIỚI THIỆU MÔN HỌC
• Số ĐVHT: 3
• Các môn học trước:
CNPM, Phát triển phần mềm hướng đối tương, lập
trình hướng đối tượng, kiểm thử phầm mềm, đặc
tả hình thức
• Nội dung tóm tắt:
– Các khái niệm liên quan đến công nghệ
phần mềm
– Nhấn mạnh các hoạt động trong hai giai
đoạn cuối của quy trình sản xuất phần
mềm theo công nghệ: Phát triển, vận hành
và bảo trì sản phẩm phần mềm
GIỚI THIỆU MÔN HỌC(tt)
• Tài liệu tham khảo
[1] Software Engineering a Practitioner's
approach; Roger S.Pressman
[2] Designing Object System; Steve Cook,
John Danniels
[3] Analyzing Requirement and Defining
Solution Architechtures; Ian Lewis - Bruce
Nielson
[4] UML toolkit; Hans-Erick Ericsson
[5] A Discipline for software engineering;
Watts S.Humphrey
GIỚI THIỆU MÔN HỌC(tt)
[6] Microsotf Application Architecture Guide; 2nd
Edition; Microsoft Corporation ISBN:
9780735627109; 2009
[7] With the J2EETM Platform, Second Edition;
Inderjeet Singh, BethStearns, Mark Johnson,
and the Enterprise Team, 2002
• Hình thức đánh giá:
»Thang điểm môn học: 10
»Thi giữa kỳ và điểm kiểm tra
thường xuyên: chiếm 30% kết
quả cuối cùng
»Thi cuối kỳ: chiếm 70% kết
quả cuối cùng
GIỚI THIỆU MÔN HỌC (tt)
NỘI DUNG
Chương 1: TỔNG QUAN
Chương 2: PHÁT TRIỂN PHẦN MỀM
Chương 3: VẬN HÀNH PHẦN MỀM
Chương 4: BẢO TRÌ PHẦN MỀM
Chương 1: TỔNG QUAN
Mục đích:
Nhắc lại một số lý thuyết trong môn học
công nghệ phần mềm để thấy được
những kiến thức mà môn học sẽ đặt
trọng tâm
NỘI DUNG CHÍNH
1.1 Nhắc lại một số k/n liên quan đến CNPM
1.1.1 Định nghĩa CNPM
1.1.2 Tiến trình, phương pháp, công cụ
1.1.3 Một cái nhìn tổng quan về CNPM
1.2 Mô tả chu trình phát triển của một phần mềm
1.2.1 Sản xuất phần mềm – một BT phức tạp
1.2.2 Chu trình phát triển của một sản phẩm p/m
1.2.3 Các g/đoạn của chu trình phát triển p/m
1.1 Nhắc lại một số khái niệm
liên quan đến CNPM
1.1.1 Định nghĩa CNPM
* Định nghĩa CNPM cổ điển (Fritz Bauer)
“Công nghệ phần mềm là sự thiết lập và sử
dụng các nguyên tắc khoa học nhằm mục
đích tạo ra các sản phầm phần mềm một
cách kinh tế mà các sản phầm phần mềm
lại hoạt động một cách hiệu quả và tin cậy
trên các máy tính”
* Định nghĩa khác về CNPM
- CNPM là các quy trình đúng kỷ luật và có định
lượng được áp dụng cho sự phát triển, thực thi
và bảo trì các hệ thống thiên về phần mềm.
- CNPM tập trung vào quy trình, sự đo lường,
sản phẩm, tính đúng thời gian và chất lượng
1.1.2 Tiến trình, phương pháp, công cụ
• Tiến trình (process):
Định nghĩa một bộ khung các tiêu chuẩn
được thiết lập để triển khai CNPM
• Phương pháp (method):
Chỉ ra cách thức (“how to”) thực hiện
những công việc cụ thể, như:
• Phân tích đặc tả yêu cầu
• Thiết kế
• Xây dựng chương trình
• Kiểm tra
• Sửa lỗi
• ....
• Công cụ (tools):
- Cung cấp các hỗ trợ tự động hay bán tự
động đối với tiến trình và phương pháp.
- Các công cụ được tích hợp thành CASE
(Computer Aided Software Engineering)
- Một số Case Tools như: UML, Enterprise
Architecture, Rasional Rose…..
1.1.3 Một cách nhìn tổng quan
về công nghệ phần mềm
• CNPM có thể chia làm 3 giai đoạn lớn:
– Giai đoạn định nghĩa: Phân tích hệ thống (software
engineering); hoạch định đề tài dự án (software project
management); phân tích yêu cầu (requirement
analysis)
– Giai đoạn phát triển: Thiết kế phần mềm (software
developtment); sinh mã (code generation); kiểm tra
phần mềm (software testing)
– Giai đoạn vận hành và bảo trì : Sửa lỗi (correction),
thay đổi môi trường thực thi (adaptation), nâng cấp
(enhancement)
1.2 MÔ TẢ CHU TRÌNH PHÁT TRIỂN P/M
• 1.2.1 Sản xuất p/m – một bài toán phức tạp
• 1.2.2 Chu trình phát triển p/m
• 1.2.3 Các giai đoạn ↑ P/M
1.2.1 Sản xuất p/m – một bài toán phức tạp
• Một số lý do thường gặp:
– Developers khó hiểu đúng những gì Users
cần
– Yêu cầu thường thay đổi trong (t) phát
triển
– Yêu cầu thường được mô tả bằng văn
bản, dài dòng, khó hiểu, thậm chí mâu
thuẫn
=> k/n phát triển?
Một số lý do thường gặp:
– Developers khó nhận thức thấu đáo các
mối quan hệ tiềm ẩn và phức tạp cần được
thể hiện chính xác trong các ứng dụng lớn
– Khả năng nắm bắt các dữ liệu phức tạp
của con người tại một thời điểm là có hạn
– Khó định lượng chính xác hiệu xuất của
các thành phần và thỏa mãn chính xác sự
mong chờ từ phía người dùng
– Lựa chọn p/c và p/m thích hợp cho 1
solution là 1 trong những thách thức lớn
đối với Designers
Một số lý do thường gặp:
• P/M cần phải có khả năng thích ứng và
mở rộng
=> P/m đứng vững trước những biến đổi trong môi
trường dù từ phía cộng đồng người dùng hay công
nghệ
=> Một số khuyết điểm thường gặp:
– Không hỗ trợ tốt các chức năng nghiệp vụ
cần thiết (Hiểu ko đúng những gì người dùng cần)
– Hệ thống ko thể thích ứng cho phù hợp với
những thay đổi về yêu cầu
– Các Module không khớp với nhau
– Phần mềm khó bảo trì và nâng cấp, mở rộng
– Phát hiện trễ các lỗ hổng của dự án
Một số khuyết điểm thường gặp:
– Chất lượng phần mềm kém
– Hiệu năng của phần mềm thấp
– Các thành viên trong nhóm không biết
được ai đã thay đổi cái gì, khi nào, ở đâu,
tại sao phải thay đổi.
1.2.2 – Chu trình phát triển p/m
(Software Development Life Cycle)
Khái niệm:
Chu trình p/triển p/mềm là một chuỗi
các hoạt động của nhà phân tích
(Analyst), nhà thiết kế (Designer),
người lập trình (Developer) ngoài ra
cần sự hợp tác của người dùng (User)
và các chuyên gia lĩnh vực (Domain
Expert) để phát triển và thực hiện một
hệ thống thông tin
Nhà phân tích
• Là người nghiên cứu yêu cầu của
khách hàng/người dùng để:
- Đ/nghĩa phạm vi cho bài toán,
- nhận dạng nhu cầu của một tổ chức,
- xác định xem nhân lực, phương pháp và
công nghệ máy tính có thể
=> nhằm cải thiện một cách tốt nhất công tác
của tổ chức này ( => p/m có ý nghĩa, được mong
muốn)
Nhà thiết kế
• T/kế hệ thống theo hướng cấu trúc của
database, screens, forms và reports
• Quyết định các y/cầu về p/cứng và
p/mềm cho hệ thống cần được phát
triển.
Chuyên gia lĩnh vực
(Domain Experts)
• Là những người hiểu thực chất vấn đề
và tất cả những sự phức tạp của hệ
thống cần tin học hoá
=> Q/trình p/triển p/m sẽ có rất nhiều thuận lợi
nếu đội ngũ làm p/mềm có được sự trợ giúp
của họ
Lập trình viên
• Là những người dựa trên các phân tích
và thiết kế để viết chương trình
(coding) cho hệ thống bằng ngôn ngữ
lập trình đã được thống nhất.
Người dùng
Là đối tượng phục vụ của hệ thống cần
được phát triển
1.2.3 Các giai đoạn ↑ P/M
a) Nghiên cứu sơ bộ
• Trả lời câu hỏi: “Đây có đúng là một hệ
thống để thực hiện không/được mong muốn
không?”
• Hình thành các ý tưởng cho dự án. Ý
tưởng này đi // với việc nắm bắt các
yêu cầu mà xuất hiện trong giai đoạn
khởi đầu để hoàn tất 1 phát biểu: “Hệ
thống mà chúng ta mong muốn sẽ làm được
những việc như sau …….”
• Các hoạt động thường được thực hiện
trong giai đoạn này:
- Thu thập các ý tưởng: Đến từ nhiều nguồn
khác nhau (khách hành, chuyên gia lĩnh vực, các
nhà p/triển khác, chuyên gia về kỹ nghệ, các bản
nghiên cứu khả thi, xem xét các hệ thống đang tồn
tại)
– Nhận biết rủi ro (rủi ro của dự án, rủi ro của sản
phẩm, rủi ro của doanh nghiệp)
– Nhận biết các giao diện bên ngoài
– Nhận biết các chức năng chính mà hệ thống
cần cung cấp
– Tạo một vài nguyên mẫu người dùng để
“minh chứng các k/n của hệ thống”
• Nhóm nc cần xem xét:
– Các y/c của doanh nghiệp
– Các nguồn tài nguyên có thể s/dụng
– Các công nghệ, cộng đồng người
dùng cũng như các ý tưởng của họ
đối với hệ thống mới
Tạo 1 phiên bản thô về lịch trình và
kế hoạch sd tài nguyên
Kết quả nc nếu được thực hiện:
* Tốt: lập lên 1 tập hợp các y/cầu (dù ở
mức độ khái quát cao) đối với h/thống khả
thi và được mong muốn
* Ko tốt: sẽ dẫn đến các hệ thống:
- Ko mong muốn
- Đắt tiền
- Bất khả thi
- và được định nghĩa lầm lạc
=> Thường không được hoàn thành hay ko được
sd
b) Phân tích yêu cầu
• Là giai đoạn thường được coi là quan
trọng nhất trong các giai đoạn: hiểu hệ
thống cần xây dựng.
=> Người thực hiện công việc này là nhà
phân tích.
• P/tích nhằm trả lời câu hỏi: Hệ thống cần
phải làm gì?
• Các công việc cần làm:
– Nc chi tiết hệ thống doanh nghiệp hiện thời,
– Tìm ra nguyên lý hoạt động của nó và những vị trí
có thể được nâng cao, cải thiện
– Nc xem xét các chức năng mà hệ thống cần cung
cấp, mối quan hệ của chúng với bên trong và bên
ngoài hệ thống
=> Nhà phân tích và người dùng cùng cộng tác
b) Phân tích yêu cầu
• Mục tiêu của giai đoạn p/tích
– Xác định hệ thống cần phải làm gì.
– Nghiên cứu thấu đáo tất cả các chức năng
cần cung cấp và những yếu tố liên quan
– Xây dựng một mô hình nêu bật bản chất
vấn đề từ một hướng nhìn có thực (trong
đời sống thực)
– Trao định nghĩa vấn đề cho chuyên gia
lĩnh vực để nhận sự đánh giá, góp ý.
=> Kết quả của giai đoạn phân tích là bản Đặc Tả
Yêu Cầu (Requirements Specifications).
b) Phân tích yêu cầu
c) Thiết kế hệ thống
• Nhằm trả lời câu hỏi chính: Hệ thống làm
cách nào để thỏa mãn các yêu cầu đã được
nêu trong Đặc Tả Yêu Cầu?
• Các công việc thường được tiến hành:
– Nhận biết form nhập liệu tùy theo các thành phần
dữ liệu cần nhập.
– Nhận biết reports và những output mà hệ thống
mới phải sản sinh
– Thiết kế forms (vẽ trên giấy hay máy tính, sử dụng
công cụ thiết kế)
Các công việc thường được tiến hành:
- Nhận biết các thành phần dữ liệu và mối quan
hệ dữ liệu để tổ chức quản lý, lưu trữ
database
- Ước tính các thủ tục giải thích quá trình xử
lý từ input đến output.
- Phân chia các thành phần vào các vùng liên
quan và lựa chọn cách thức tổ chức quản lý
thích hợp => kiến trúc ứng dụng thích hợp
=> Kết quả giai đoạn thiết kế là Đặc Tả Thiết Kế
(Design Specifications).
d) Xây dựng p/mềm
• Là giai đoạn viết lệnh (code)
• Từng người viết code sẽ :
– Mã hóa để thực hiện những yêu cầu đã
được nhà thiết kế định sẵn.
– chịu trách nhiệm viết tài liệu liên quan đến
chương trình, giải thích thủ tục
(procedure) mà mình tạo nên được viết
như thế nào và lý do cho việc này.
– tiến hành thử nghiệm phần chương trình
của mình, hđ này chia làm 2 bước:
• Thử nghiệm đơn vị:
– Xây dựng kế hoạch thử
– Chạy thử chương trình với dữ liệu giả (dữ
liệu thử)
=> Mục đích ktra chương trình có cho ra kq mong
đợi không
• Thử nghiệm đơn vị độc lập:
– Do thành viên khác trong nhóm đảm
nhiệm (đảm bảo tính độc lập)
– Thử nghiệm dựa trên kế hoạch người viết
code soạn sẵn
e) Thử nghiệm hệ thống
• Mọi thủ tục được tích hợp và chạy thử,
kiểm tra xem mọi chi tiết ghi trong Đặc
Tả Yêu Cầu và những mong chờ của
người dùng có được thoả mãn ko.
• Dữ liệu thử cần được chọn lọc đặc
biệt, kết quả cần được phân tích để
phát hiện mọi lệch lạc so với mong
chờ.
f) Vận hành, triển khai
• Hệ thống vừa được phát triển đc triển
khai đến người dùng
• Để đảm bảo hệ thống được sd hữu
hiệu nhất, người phát triển cần:
– Tạo các tài liệu hướng dẫn sd
– Huấn luyện cho người dùng
g) Bảo trì, nâng cấp
• Bảo trì, nâng cấp để hệ thống phù hợp
với các biến đổi môi trường và những
y/cầu thay đổi
Môn học tập trung vào 2 giai đoạn cuối của
CNPM:
- Phát triển
- Vận hành và bảo trì hệ thống p/m
HẾT CHƯƠNG