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

Bài giảng Nhập môn công nghệ phần mềm - Phan Phương Lan

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.02 MB, 229 trang )

NHẬP MÔN
CÔNG NGHỆ PHẦN MỀM
GIỚI THIỆU

Phan Phương Lan

1

Nội dung
z

Phần I: Tổng quan về Công nghệ phần mềm
z
z
z

z

z

Chương 1: Giới thiệu về Cơng nghệ phần mềm
Chương 2: Các mơ hình về tiến trình phần mềm
Chương 3: Quản lý phần mềm
z Quản lí nhân sự và tổ chức
z Quản lí chất lượng
z Quản lí cấu hình
z Quản lí dự án
Chương 4: Ước lượng giá thành

Phần II: Tiến trình phần mềm
z


z
z
z
z
z

Chương 5: Đặc tả yêu cầu
Chương 6: Thiết kế
Chương 7: Lập trình
Chương 8: Kiểm thử
Chương 9: Triển khai hệ thống
Chương 10: Bảo trì

2


Tài liệu tham khảo
z

Sách tham khảo chính:
z Shari Lawrence Pleeger, Joanne M.Atlee, Software
Engineering theory and practice, 3th edition, 2006.
z Ian Sommerville, Software Engineering, 8th edition, 2006.

z

Sách đọc thêm:
z Hans Van Vliet, Software Engineering principles and
practice, John Wiley, 2000.
z Pressman, Roger S., Software Engineering: A Practitioner’s

Approach, McGraw-Hill, 5th edition, 2003.
3


NHẬP MÔN
CÔNG NGHỆ PHẦN MỀM
CHƯƠNG 1 – GIỚI THIỆU VỀ
CÔNG NGHỆ PHẦN MỀM

1

Nội dung
z
z
z

z

Định nghĩa về CNPM
Các giai đoạn trong phát triển phần mềm
Những người tham gia trong dự án phát triển
phần mềm
Các yếu tố chính làm thay đổi sự phát triển phần
mềm

2


Định nghĩa về CNPM
z


z

IEEE: CNPM là

(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)
NATO: CNPM là việc thiết lập và dùng các nguyên tắc
công nghệ đúng đắn để thu được phần mềm một cách
kinh tế nhất và chạy hiệu quả trên các máy thật.
3

Định nghĩa về CNPM
z

Mục tiêu của CNPM là làm sao để tạo ra phần mềm:
z

z
z
z

Có chất lượng cao
z Đúng, thỏa yêu cầu khách hàng
z Dễ khai thác, vận hành
z Dễ bảo trì
Đúng kế hoạch thời gian

Trong phạm vi ngân sách dự kiến
Giá thành ngày càng hạ
4


Các giai đoạn phát triển phần mềm
Định nghĩa & Phân
tích yêu cầu
Thiết kế

Cài đặt

Kiểm thử

Phát hành
Bảo trì

5

Các giai đoạn phát triển phần mềm
z

Định nghĩa & Phân tích yêu cầu: thu thập mơ tả
đầy đủ của bài tốn
z
z
z
z

z


z

Chức năng/tính năng của PM
Khả năng mở rộng
Các loại tài liệu đòi hỏi
Thời gian đáp ứng hoặc các yêu cầu về chất lượng của
hệ thống
Nghiên cứu khả thi

Thiết kế: thiết kế hệ thống và thiết kế chi tiết
6


Các giai đoạn phát triển phần mềm
z

Cài đặt: tập trung vào từng module riêng lẻ:
z
z
z

z

Giải thuật
Tài liệu
Coding

Kiểm thử (kiểm thử đơn vị, kiểm thử tích hợp và kiểm
thử hệ thống): thử và xác nhận tính đúng đắn của

z
z
z
z

Tài liệu đặc tả
Thiết kế
Module
Chuyển tiếp giữa các giai đoạn
7

Các giai đoạn phát triển phần mềm
z

Bảo trì
z
z

Sửa lỗi sau khi phần mềm đã được triển khai
Đáp ứng sự thay đổi yêu cầu, sự thay đổi về môi
trường, v.v

8


Các giai đoạn phát triển phần mềm
z

Công sức của từng giai đoạn: 40 – 20 – 40
Thiết kế 15%


Cài đặt 20%

Đặc tả 10%
Xác định yêu cầu 10%
Kiểm thử 45%

9

Các giai đoạn phát triển phần mềm
z

Công sức của từng giai đoạn – Giai đoạn bảo trì
z

z

z

Hoạt động bảo trì chiếm khoảng 50 – 70% tồn bộ
cơng sức
Các loại bảo trì: Hồn thiện, Phịng ngừa, Hiệu chỉnh
và Thích ứng
Sự phân phối của các loại bảo trì
Hiệu chỉnh 21%

Hồn thiện 50%
Thích ứng 25%
Phịng ngừa 4%


10


Những người tham gia trong dự
án phát triển phần mềm
z

Những người tham gia: Khách hàng, Nhà phát
triển và Người sử dụng.

11

Những người tham gia trong dự
án phát triển phần mềm
z

Các thành viên trong đội phát triển phần mềm:
z
z
z
z
z
z
z
z

Nhà phân tích yêu cầu: làm việc với khách hàng để xác định và
tư liệu hóa các yêu câu
Nhà thiết kế: tạo ra bản mô tả mức hệ thống về cái mà hệ thống
phải thực hiện

Lập trình viên: viết mã lệnh cài đặt sự thiết kế
Nhà kiểm thử: bắt các lỗi
Người hướng dẫn: chỉ dẫn người dùng cách sử dụng hệ thống
Bảo trì viên: chỉnh sửa các lỗi khi hệ thống đã được phát hành và
đáp ứng các thay đổi
Thủ thư: chuẩn bị và lưu giữ các tài liệu chẳng hạn như các đặc
tả u cầu
Nhóm quản lý cấu hình: duy trì sự phù hợp giữa các thành phần
được tạo ra
12


Những người tham gia trong dự
án phát triển phần mềm
z

Các vai trò tiêu biểu được thực hiện bởi những thành viên
trong đội phát triển phần mềm

13

Các yếu tố chính làm thay đổi sự
phát triển phần mềm
z

Các yếu tố chính:

14



NHẬP MƠN
CƠNG NGHỆ PHẦN MỀM
CHƯƠNG 2 – CÁC MƠ HÌNH
VỀ TIẾN TRÌNH PHẦN MỀM

1

Nội dung
z
z

Tiến trình
Các mơ hình về tiến trình phần mềm
z
z
z
z
z
z
z

Mơ hình thác nước
Mơ hình chữ V
Mơ hình bản mẫu
Mơ hình phát triển ứng dụng nhanh
Mơ hình gia tăng
Mơ hình xoắn ốc
Mơ hình RUP
2



Tiến trình (Process)
z

z

Tiến trình: một chuỗi các bước bao gồm các hoạt
động, các ràng buộc và các tài nguyên mà chúng
tạo ra kết quả được mong đợi
Tiến trình: bao gồm một bộ các cơng cụ và các
kỹ thuật

3

Tiến trình
z

Các đặc trưng của tiến trình
z Quy định tất cả các hoạt động chính của tiến
trình
z Sử dụng các nguồn tài ngun, phụ thuộc vào
tập các ràng buộc (chẳng hạn như kế hoạch làm
việc)
z Tạo ra các sản phẩm cuối cùng hoặc trung gian
z Có thể được tạo thành từ các tiến trình con
bằng hệ thống phân cấp hay các liên kết
4


Tiến trình

z

Các đặc trưng của tiến trình
z Mỗi hoạt động của tiến trình có tiêu chuẩn vào
và ra
z Các hoạt động được tổ chức theo trình tự vì thế
sự tính tốn về thời gian là rõ ràng
z Mỗi tiến trình có các nguyên tắc hướng dẫn,
bao gồm các mục tiêu của từng hoạt động
z Các ràng buộc có thể áp dụng vào một hoạt
động, tài nguyên hay sản phẩm
5

Tiến trình
z

Tầm quan trọng của tiến trình
z Áp đặt cấu trúc và tính bền vững lên một tập
các hoạt động
z Hướng dẫn ta hiểu, điều khiển, kiểm tra và cải
thiện các hoạt động
z Cho phép ta có được các kinh nghiệm

6


Tiến trình
z

Lý do để mơ hình hóa một tiến trình

z
z

z

z

Hình thành một cách hiểu chung
Tìm ra sự khơng nhất qn, sự dư thừa hay sự bỏ
sót
Tìm ra và đánh giá các hoạt động phù hợp để đạt
được các mục tiêu của tiến trình
Cụ thể hóa một tiến trình chung cho một hồn cảnh
cụ thể
7

Tiến trình
z

Chu kỳ sống của phần mềm
z Khi một tiến trình liên quan tới việc xây dựng
một phần mềm, tiến trình có thể được xem như
chu kỳ sống của phần mềm.

8


Các mơ hình về tiến trình phần mềm
z
z

z
z
z
z
z

Mơ hình thác nước
Mơ hình chữ V
Mơ hình bản mẫu
Mơ hình phát triển ứng dụng nhanh
Mơ hình gia tăng
Mơ hình xoắn ốc
Mơ hình RUP
9

Mơ hình thác nước
(Waterfall Model)
z

z

z
z

Một trong các mơ hình đầu tiên về tiến trình phần
mềm
Phù hợp với những bài tốn được hiểu kỹ có rất ít
hay khơng có các thay đổi về yêu cầu
Đơn giản và dễ giải thích với khách hàng
Nó biểu diễn

z
z

Một tổng quan mức rất cao của tiến trình phát triển
Một chuỗi tuần tự các hoạt động của tiến trình
10


Mơ hình thác nước
Phân tích u cầu
Thiết kế hệ thống
Thiết kế chi tiết
Lập trình
Kiểm thử đơn vị & tích hợp
Kiểm thử hệ thống
Kiểm thử chấp nhận
Vận hành & bảo trì
11

Mơ hình thác nước
z
z

Khơng có sự lặp lại trong mơ hình thác nước
Thực tế, các dự án ít khi tuân theo dịng tuần tự của mơ
hình, mà thường có lặp lại

12



Mơ hình thác nước
z

Hạn chế của mơ hình thác nước
z

z

z

z

Khơng có các hướng dẫn về cách thức xử lý những
thay đổi về sản phẩm và hoạt động trong suốt sự
phát triển
Xem sự phát triển phần mềm như một tiến trình sản
xuất hơn là tiến trình sáng tạo
Khơng có các hoạt động lặp để tạo ra sản phẩm
cuối
Phải chờ đợi lâu trước khi có sản phẩm cuối
13

Mơ hình chữ V (V Model)
z
z

z
z

z


Một sự biến đổi của mơ hình thác nước
Sử dụng kiểm thử đơn vị để xác minh (verify) thiết kế chi
tiết
Sử dụng kiểm thử tích hợp để xác minh thiết kế hệ thống
Sử dụng kiểm thử chấp nhận để thẩm định (validate) các
yêu cầu
Nếu các vấn đề được tìm thấy trong suốt sự xác minh và
thẩm định, phần bên trái của mơ hình chữ V có thể được
tái thực hiện trước khi việc kiểm thử phần bên phải được
tái thực hiện
14


Mơ hình chữ V

15

Mơ hình bản mẫu
(Prototyping Model)
z

z

z

Cho phép sự nghiên cứu về các yêu cầu và thiết
kế được lặp lại
Giảm sự rủi ro và sự không chắc chắn trong phát
triển

Sử dụng mơ hình bản mẫu khi các u cầu chưa
rõ ràng

16


Mơ hình bản mẫu

17

Mơ hình phát triển ứng dụng nhanh
(Rapid Application Development: RAD)
z
z
z
z

z

Là tiến trình phát triển phần mềm gia tăng
Thời gian phát triển phần mềm rất ngắn
Sử dụng các kỹ thuật thế hệ thứ tư
Xây dựng dựa trên hướng thành phần với khả năng tái
sử dụng
Gồm một số nhóm, mỗi nhóm làm 1 RAD theo các
pha: Mơ hình hóa nghiệp vụ, Mơ hình hóa dữ liệu, Mơ
hình hóa xử lý, Tạo ứng dụng, Kiểm thử và đánh giá
( Business, Data, Process, Application Generation,
Testing)
18



Team #3

Mơ hình
phát triển
ứng dụng
nhanh

Business
Business
Modeling
Modeling

Team #2
Business
Business
Modeling
Modeling

Team #1
Business
Business
Modeling
Modeling

Data
Data
Modeling
Modeling

Process
Process
Modeling
Modeling
Application
Data
Application
Data
Generation
Generation
Modeling
Modeling
Testing
Testing&&
Process
Process
Turnover
Turnover
Modeling

Data
Data
Modeling
Modeling

Modeling
Application
Application
Generation
Generation

Testing
Testing&&
Process
Turnover
Process
Turnover

Modeling
Modeling
Application
Application
Generation
Generation

Testing
Testing&&
Turnover
Turnover

60 - 90 days
19

Mơ hình phát triển ứng dụng nhanh
z

z

z

z


Cần nguồn nhân lực dồi dào để tạo các nhóm cho các
chức năng chính
u cầu hai bên cam kết trong thời gian ngắn phải có
phần mềm hoàn chỉnh, thiếu trách nhiệm của một bên
dễ làm dự án đổ vỡ
RAD không phải tốt cho mọi ứng dụng, nhất là với
ứng dụng khơng thể module hóa hoặc địi hỏi tính
năng cao
RAD khơng phù hợp khi các rủi ro kỹ thuật cao
20


Mơ hình gia tăng
(Incremental Model)
z

z

z

z

Kết hợp mơ hình tuần tự và ý tưởng lặp lại của
chế bản mẫu
Sản phẩm lõi cho những yêu cầu cơ bản nhất của
hệ thống được phát triển
Các chức năng cho những yêu cầu khác được phát
triển thêm sau (gia tăng)
Lặp lại quy trình để hồn thiện dần


21

Mơ hình gia tăng
Phát hành lần 1

Phát hành lần 2



22


Mơ hình xoắn ốc (Spiral Model)
z
z

z
z

Được đề nghị bởi Boehm (1988)
Kết hợp các hoạt động phát triển với sự quản lý rủi ro để
giảm đến mức tối thiểu và kiểm sốt các rủi ro
Thích hợp với các hệ lớn
Mơ hình được trình bày ở dạng xoắn ốc trong đó mỗi lần
lặp được biểu diễn bởi một đường vòng gồm bốn hoạt
động chính
z
z
z

z

Lập kế hoạch
Xác định các mục tiêu, các lựa chọn và các ràng buộc
Đánh giá các lựa chọn và các rủi ro
Phát triển và kiểm thử

23

Mơ hình xoắn ốc

24


RUP – Rational Unified Process
z
z

z

Bổ sung cho UML
Cách tiếp cận lặp cho các hệ thống hướng đối tượng, bao gồm
các use case để mơ hình hóa các u cầu
Các giai đoạn của RUP
z

z

z
z


Inception: thiết lập phạm vi, giới hạn, các use case quan trọng, các
kiến trúc ứng viên, các dự đốn về chi phí và kế hoạch làm việc
Elaboration: đạt được kiến trúc hoàn chỉnh, thiết lập sự hỗ trợ cơng
cụ, có tất cả các use case, giải quyết tất cả các rủi ro chính
Construction: xây dựng tiến trình, một hay nhiều sự phát hành
Transition: phát hành ra cộng đồng người dùng, thường là một số
phát hành
25

RUP

26


NHẬP MƠN
CƠNG NGHỆ PHẦN MỀM
CHƯƠNG 3 - QUẢN LÝ

1

NỘI DUNG
z
z
z
z

Qu¶n lý nhân sự
Quản lý chất lợng
Quản lý cấu hình

Quản lý dự án (Lập kế hoạch v kiểm soát dự án)

2


Ni dung Qun lý nhõn s
z
z
z

Chọn nhân sự
Thúc đẩy nhân sự
Quản lý nhóm

3

Chọn nhân sự
z
z

z

Nhân sự l thnh phần quan trọng nhất của tổ chức
Việc quản lý nhân sự kém sẽ dẫn đến sự thất bại của
dự án
Các yếu tố quản lý nhân sự
z
z
z
z


Không phân biệt đối xử
Tôn trọng
Lắng nghe
Trung thùc
4


Chọn nhân sự
z

z

Một công việc quản lý dự án quan trọng l chọn nhóm
lm việc
Các thông tin cần cho sự lựa chọn nhân sự gồm:
z Thông tin đợc cung cấp bởi ứng viên
z Thông tin do phỏng vấn v nói chuyện với ứng viên
z Thông tin từ th tiến cử hay sù giíi thiƯu cđa nh÷ng
ng−êi biÕt hay nh÷ng ng−êi lm việc với ứng viên

5

Chọn nhân sự
z

Một số lu ý trong việc chọn nhân sự
z

z

z

z

Các nh quản lý trong công ty không muốn mất ngời
cho các dự án mới. Vì vậy, ta phải chấp nhận những
ngời chỉ có thể lm việc bán thời gian trong dự án.
Các kỹ năng cần thiết cho dự án l khan hiếm =>
không có đợc nhiều ứng viên để chọn.
Những sinh viên mới ra trờng kh«ng cã nhiỊu kinh
nghiƯm cơ thĨ nh−ng hä th−êng nhiƯt tình v dễ học
công nghệ mới
Sự thnh thạo về kỹ thuật có thể ít quan trọng hơn các
kỹ năng xà héi
6


×