Quy trình xây dựng và phát triển phần mềm một cách có hệ thống và khoa học . Hiểu được các giai đoạn trong xây dựng và phát triển phần mềm như : Đặc tả yêu cầu , Phân tích , Thiết kế , Kiểm thử , Cài đặt và Bảo trì . Sinh viên có kỹ năng về lập kế hoạch, ước lượng thời gian và chi phí cho phần mềm . + Sinh viên có kỹ năng quản lý chất lượng phần mềm một cách khoa học . Nhận thức rõ giá trị và tầm quan trọng của phần mềm và công nghệ phần mềm trong hệ thống máy tính .
Trang 1Lớp 1705HTTT Giảng viên: Ths Bùi Thị Thanh
Trang 2
Kiến thức
+ Sau khi học xong học phần Công nghệ phần mềm sinh viên có kiến thức về phần mềm, đặc điểm của phần mềm, chu kỳ sống của phần mềm Quy trình xây dựng
và phát triển phần mềm một cách có hệ thống và khoa học
+ Sinh viên hiểu được các giai đoạn trong xây dựng và phát triển phần mềm như: đặc tả yêu cầu, phân tích, thiết kế, kiểm thử, cài đặt và bảo trì
Mục tiêu học phần
Trang 3Nhận thức rõ giá trị và tầm quan trọng của phần mềm
và công nghệ phần mềm trong hệ thống máy tính
Mục tiêu học phần
Trang 5
Kiểm tra thường xuyên: Đánh giá sự chuyên cần và thái độ
học tập của sinh viên Sinh viên phải tham dự tối thiểu
80% tổng số giờ của học phần Điểm kiểm tra đánh giá
định kỳ mới được dự thi kết thúc học phần
Kiểm tra đánh giá định kỳ: tự luận, điểm kiểm tra đánh giá định kỳ mới được dự thi kết thúc học phần
Thi kết thúc học phần: Theo hình thức vấn đáp lý thuyết
– Bài tập lớn (không sử dụng tài liệu)
Kiểm tra đánh giá
Trang 6
6.1 Học liệu học bắt buộc
[1] Lương Mạnh Bá, Cơ sở Công nghệ phần mềm,
(2010), NXB Khoa học & Kỹ thuật
[2] Lê Đức Trung , Công nghệ phần mềm, (2005) NXB
Thông tin và truyền thông
6.2 Học liệu tham khảo:
[3] Software Engineering (ninth edition), Ian
Sammerville
[4] TS Lê Văn Phùng, Kỹ nghệ phần mềm, (2014) NXB
Thông tin và truyền thông.
Tài liệu tham khảo
Trang 7
Chương 1 Tổng quan về CNPM
Chương 2 Mô hình vòng đời phần mềm Chương 3 Quy trình xây dựng phần mềm Chương 4 Quản lý phần mềm
Nội dung học phần
Trang 9
-Phần mềm (software) là một tập hợp các câu lệnh được
viết bằng ngôn ngữ lập trình, nhằm tự động thực hiện một số các chức năng giải quyết một bài toán nào đó
- Phần mềm thường được mô tả với 3 bộ phận cấu thành chính
• Tập các lệnh
• Các cấu trúc dữ liệu
• Các tài liệu
1.1 Một số khái niệm
Trang 10
Ba bộ phận cấu thành chính của PM
Tập các lệnh (ctr máy tính) khi được thực hiện sẽ
cung cấp những chức năng và kết quả mong muốn
Cấu trúc dữ liệu: làm cho ctr thao tác hiệu quả với
các thông tin thích hợp và nội dung thông tin được số hóa
Các tài liệu: để mô tả thao tác, cách sử dụng và bảo trì
phần mềm
1.1 Một số khái niệm
Trang 11
- Công nghệ (technology) là nói tới cách thức
hay phương pháp để làm một việc gì đó, cụ thể
hoặc trừu tượng, có áp dụng các thành tựu của khoa học và được thực hiện một cách có hệ
thống
1.1 Một số khái niệm
Trang 121.1 Một số khái niệm
Trang 13
Khoa học (science) là hệ thống các tri thức do con
người khám phá ra Khoa học tập trung vào việc tìm hiểu và rút ra các quy luật thực tế (của tự nhiên và cuả con người) Các quy luật này thường phát biểu dưới dạng định lý, các mệnh đề,…
1.1 Một số khái niệm
Trang 14
-Kỹ thuật (technique) là chỉ ra cách thức tiến hành một
công việc cụ thể nào đó Cách làm này thường áp dụng kiến thức khoa học và được hệ thống thành các bước sao
cho mọi người đều có thể học và làm theo
-Công nghiệp (industry) là khái niệm bao chùm cả một
ngành lớn, trong đó bên cạnh các yếu tố kỹ nghệ còn có thêm các yếu tố khác như kinh tế, tài chính, tổ chức xã hội
1.1 Một số khái niệm
Trang 15
- Phần cứng (hardware) là các thiết bị cấu kiện mang
tính vật lý, có thể tiếp xúc được như máy in, ổ đĩa, máy quét,
-Chương trình (program): Phần mềm là các chương
trình chứa các dòng lệnh chỉ thị cho máy tính thực hiện một công việc nào đó Trong công nghệ phần mềm thì phần mềm không chỉ là các chương trình, dữ liệu, mà còn gồm cả các tài liệu liên quan như các thiết kế, hướng dẫn sử dụng
1.1 Một số khái niệm
Trang 16
Phần mềm = chương trình + tài liệu
- Công nghệ phần mềm: là cách làm phần mềm tuân
theo nguyên tắc của công nghệ truyền thống
- Vòng đời phần mềm (software life-cycle) là các bước
mà một phần mềm trải qua, bắt đầu từ khảo sát nhu cầu khách hàng cho đến khi phần mềm không còn được sử dụng
- Phát triển phần mềm (software development) là quá
trình xây dựng phần mềm từ bắt đầu cho đến khi chuyển giao cho khách hàng
1.1 Một số khái niệm
Trang 17
- Người phát triển (software developer) là tên gọi
chung của những người tham gia xây dựng phần mềm
- Nhóm đảm bảo chất lượng phần mềm (software
quality assurance group = SQA group): nhóm chuyên kiểm tra chất lượng phần mềm, kiểm tra kết quả của giai đoạn xây dựng phần mềm
1.1 Một số khái niệm
Trang 18
Quy trình phần mềm (software process) là cách thức
làm ra phần mềm, bao gồm vòng đời phần mềm, các công cụ và những người phát triển phần mềm
-Pha (phase) là một giai đoạn trong quá trình xây
dựng phần mềm VD: pha xác định yêu cầu, pha
phân tích,
1.1 Một số khái niệm
Trang 19
Xác định Yêu cầu (requirements) là pha đầu tiên
trong quá trình xây dựng phần mềm Pha này thường
có tên gọi là tìm hiểu khái niệm (concept exploration) Trong đó người phát triển và khách hàng ngồi lại với nhau Khách hàng nêu ra những yêu cầu mà phần mềm phải có, còn những người phát triển ghi chép lại
1.1 Một số khái niệm
Trang 20
Đặc tả /phân tích (analysis): trên cơ sở của những yêu cầu của khách hàng, người phát triển mô tả lại chính xác hơn các yêu cầu mà phần mềm phải có (cách mô
tả này có tính chuyên môn)
Phân tích hệ thống (system analysis): người ta thường gộp 2 pha yêu cầu và pha phân tích thành một pha gọi là phân tích hệ thống
1.1 Một số khái niệm
Trang 21
Thiết kế (design) là pha tiếp theo đặc tả Căn cứ vào
tài liệu đặc tả, pha này mô tả cách thức mà phần mềm thực hiện các công việc cụ thể Pha này thường có 2 phần: thiết kế kiến trúc và thiết kế chi tiết
Cài đặt (implementation) hay mã hóa code, hay lập
trình (programming): là viết chương trình bằng một ngôn ngữ cụ thể nào đó
1.1 Một số khái niệm
Trang 22
- Tích hợp (integration): là kết nối các phần chương
trình đã viết thành một phần mềm thống nhất và chạy thử, hiệu chỉnh cho đến khi chạy tốt Pha này gọi là kiểm thử
- Bảo trì (maintenance): đôi khi được gọi là hỗ trợ
1.1 Một số khái niệm
Trang 23
- Bảo trì: Sản phẩm được sử dụng để thực hiện các công việc đã
đặt ra trước đó Trong quá trình này có thể xảy ra các sự cố:
đó có thể là các lỗi chương trình chưa được loại trừ hết, hay kết quả không được như khách hàng mong đợi
- Người ta phân công bảo trì thành 2 loại: bảo trì sửa lỗi và
bảo trì cập nhật
1.1 Một số khái niệm
Trang 24
- Bảo trì sửa lỗi như tên gọi của nó, là sửa các lỗi có thể
vẫn còn xuất hiện khi chạy chương trình
- Bảo trì cập nhật được chia làm 2 loại: bảo trì hoàn thiện
và bảo trì thích nghi Bảo trì hoàn thiện là sửa đổi phần mềm theo ý khách hàng để nâng cao hiệu quả Bảo trì
thích nghi là sửa đổi để phần mềm thích nghi với môi
trường mới
1.1 Một số khái niệm
Trang 25
1955-1970: tính toán và quản lý rời rạc, quản lý nhỏ Đặc tả những yêu cầu của khách hàng lúc đó còn dùng ngôn ngữ tự nhiên thông thường
1971-1985: lúc này đã có nhu cầu xây dựng các phần mềm thời gian thực
Từ 1986 đến nay: đây là thời kỳ của máy vi tính PC, thời nối mạng tầm rộng, mạng toàn cầu Internet
1.2 Lịch sử
Trang 26
Mục tiêu của công nghệ phần mềm:
Là sản xuất ra các phần mềm không có lỗi, đƣợc hoàn thành đúng thời hạn với kinh phí cho phép, và thỏa mãn yêu cầu khách hàng Hơn nữa, phần mềm
phải dễ sửa đổi khi cần thiết
Để đạt được điều này yêu cầu kỹ sư phần mềm phải làm những gì?
“ Công nghệ phần mềm” liệu có lợi ích gì, có thực
sự cần thiết đối với những người phát triển phần mềm không?
1.3 Phạm vi
Trang 27
Để xây dựng một phần mềm có khoa học ta thực hiện nhƣ sau:
Phần mềm xây dựng theo đơn đặt hàng Như vậy cần
có một ngôn ngữ chung giữa người xây dựng phần mềm
và khách hàng
Phần mềm thường do nhiều người xây dựng Cần có một cách thức diễn đạt các công việc sao cho mỗi kỹ sư phần mềm đều có thể trao đổi dễ dàng ý tưởng và công việc của mình với các kỹ sư trong nhóm làm việc
1.3 Phạm vi
Trang 29
CNPM nhìn từ góc độ lịch sử
1955-1970: tính toán và quản lý rời rạc, quản lý nhỏ Đặc
tả những yêu cầu của khách hàng lúc đó còn dùng ngôn ngữ tự nhiên thông thường
1971-1985: lúc này đã có nhu cầu xây dựng các phần mềm thời gian thực
Từ 1986 đến nay: đây là thời kỳ của máy vi tính PC, thời nối mạng tầm rộng, mạng toàn cầu Internet
1.3 Phạm vi
Trang 30
Mô hình thác đổ (waterfall): mô hình này bao gồm
7 giai đoạn như sau:
Xác định yêu cầu (Requirements phase)
Phân tích (đặc tả) (Analysis or specification phase)
Thiết kế (Design phase)
Cài đặt (implementation phase)
Tích hợp (Integration phase)
Bảo trì (Maintenance phase)
Thôi sử dụng (Retirement)
Mô hình vòng đời
Trang 31
Trong thực tế, có thể một vài pha được bỏ qua hoặc được thay thế bởi các pha khác Ví dụ người ta hợp nhất 2 pha đầu tiên thành pha hệ thống Người ta lại cho rằng việc tích hợp phải được thực hiện trong quá trình cài đặt, cài đặt xong thì phải có thời gian kiểm thử,
Mô hình vòng đời
Trang 32Với phần mềm lớn, nhiều người viết thì việc tích hợp
là rất quan trọng và nên để tách riêng thành một pha, còn với phần mềm vừa và nhỏ thì nên kết hợp cài đặt
và tích hợp thành một pha, trong đó bao hàng cả tích hợp
PM nhỏ Yêu cầu Đặc tả Thiết kế Cài đặt và tích hợp Bảo trì Thôi sử
dụng
PM lớn Yêu cầu Đặc tả Thiết kế Cài đặt Tích hợp Bảo trì Thôi sử
dụng
Mô hình vòng đời
Trang 33
Từ năm 1975-1985, phương pháp hướng cấu trúc
(structured paradigm) ra đời, đánh dấu một sự thay đổi
trong kỹ thuật phần mềm Kỹ thuật này bao gồm: phân
tích hệ thống có cấu trúc, phân tích dòng dữ liệu, lập trình cấu trúc và kiểm thử theo cấu trúc
Phương pháp này xem dữ liệu là quan trọng nhất
Phương pháp hướng cấu trúc
Trang 34+ Không hỗ trợ việc kế thừa
Các chương trình hướng cấu trúc phụ thuộc chặt chẽ vào cấu trúc dữ liệu và bài toán cụ thể
+ Không phù hợp cho phát triển các phần mềm lớn
+ khó quản lý mối quan hệ giữa các modul và khó kiểm thử và bảo trì
Trang 35
Nhược điểm của phương pháp này:
Phương pháp lập trình hướng cấu trúc không phù hợp với những phần mềm chứa khoảng trên 5000 dòng lệnh
Khi xây dựng phần mềm, dự kiến về trung bình thì kinh phí bảo trì chiếm khoảng 2/3 tổng kinh phí
Ƣ u và nhƣợc điểm
Trang 36
Phương pháp hướng đối tượng: xem dữ liệu và hành
động đều quan trọng như nhau Người ta xem đối tượng
là thành phần của một phần mềm trong đó bao gồm dữ liệu và các hành động thao tác trên dữ liệu ấy
Các đối tượng trong một hệ thống tương đối độc lập với nhau và phần mềm sẽ được xây dựng bằng cách kết hợp các đối tượng đó lại với nhau thông qua các mối quan hệ và tương tác giữa chúng
Phương pháp hướng đối tượng
Trang 37+ Đóng gói che giấu thông
tin làm cho hệ thống tin cậy
luồng dữ liệu do có nhiều luồng dữ liệu ở đầu vào + Giải thuật lại không phải
là vấn đề trọng tâm của phương pháp này
Trang 38
Tài khoản ngân hàng là một ví dụ về đối tượng Dữ liệu của đối tượng là số dư tài khoản Các hành động tác động lên số dư tài khoản là việc gửi tiền, rút tiền và tính số dư Theo quan điểm hướng đối tượng thì tài khoản ngân hàng là một đối tượng bao gồm 3 thành phần trên Ta có thể biểu diễn các phương pháp này trong các hình sau đây:
Ví dụ
Trang 39Thông báo (a) Phương pháp cấu trúc (b) Phương pháp hướng đối tượng
Trang 40
Sự khác biệt được thể hiện trong cách thức đối tượng vận hành Trong phương pháp cấu trúc, số dư tài khoản được khai báo sao cho các hành động gủi tiền, rút tiền, hay tính toán số dư có thể tác động lên nó Đây là thao tác bên ngoài Như vậy, ngoài 3 hành động trên, số dư có thể bị thay đổi bởi một thao tác khác
So sánh sự tính toán tài khoản ngân hàng bằng 2
phương pháp
Trang 41
Trong phương pháp HĐT thì số dư chỉ chịu tác động của 3 thao tác của đối tượng Bên ngoài nếu muốn biết thông tin về số dư thì chỉ có thể gửi thông báo đến đối tượng
VD: Nếu khách hàng gửi 10$ thì sẽ gửi thông báo và kích hoạt hàm gửi tiền, hàm gửi tiền sẽ tăng số dư lên 10&
So sánh sự tính toán tài khoản ngân hàng bằng 2
phương pháp
Trang 42
Ƣ u điểm:
Thể hiện trong quá trình bảo trì phần mềm
Phương pháp HĐT được thiết kế tốt thì các đối tượng
là những phần độc lập, ít phụ thuộc nhau Do đó, dễ phân chia công việc cho nhiều người thực hiện
Cũng nhờ tính độc lập của các đối tượng mà khả
năng sử dụng lại phương pháp HĐT cao hơn
Ư u và nhược của phương pháp HĐT
Trang 43Phương pháp cấu trúc Phương pháp HĐT
modul, và thiết kế chi tiết, tức là
thiết kế chi tiết các modul)
3 Thiết kế HĐT (thiết kế chi tiết các đối tượng)
4 Lập trình HĐT
5 Tích hợp
6 Bảo trì
7 Thôi sử dụng
So sánh giữa 2 phương pháp Cấu trúc và phương pháp
Hướng đối tượng
Trang 44
Trong phương pháp cấu trúc, pha phân tích trả lời câu hỏi:
“phần mềm làm gì?”, còn pha thiết kế trả lời câu hỏi: “làm như thế nào?” Pha thiết kế gồm 2 pha con: thiết kế kiến trúc (phần mềm được chia thành các modul như thế nào?) và thiết kế chi tiết (mối modul được thiết kế như thế nào?)
Với phương pháp HĐT, trong pha phân tích, ngoài việc xác định phần mềm sẽ làm những gì (như phương pháp cấu trúc) còn phải xác định các đối tượng trong phần mềm là những đối tượng nào?; trong pha thiết kế không phải xác định các đối tượng nữa, mà chỉ cần thiết kế chi tiết các đối tượng
So sánh sự tính toán tài khoản ngân hàng bằng 2
phương pháp
Trang 45
Như vậy, trong phương pháp HĐT các bước chuyển tiếp
từ pha này sang pha khác mịn hơn, và do đó giảm được các lỗi trong quá trình phát triển
So sánh sự tính toán tài khoản ngân hàng bằng 2
phương pháp
Trang 46
Từ những năm đầu 1950 – 1960
- Phần cứng liên tục thay đổi
- Phần mềm được coi là nghệ thuật, chưa có phương pháp hệ thống Phát triển phần mềm chưa được quản
lý
Thời kỳ tiếp theo (từ 1960 đến 1970)
- Hệ thống đa lập trình và đa người sử dụng dẫn đến khái niệm mới tương tác về người máy
- Tiến bộ lưu trữ trực tuyến dẫn đến thế hệ đầu tiên của
hệ quản trị CSDL
Lịch sử phát triển phần mềm
Trang 47- Chi phí phần mềm có khuynh hướng lớn hơn chi phí mua máy tính
Lịch sử phát triển phần mềm
Trang 48
Thời kỳ sau năm 1990
- kỹ nghệ hướng đối tượng là cách tiếp cận mới đang nhanh chóng thay thế nhiều cách tiếp cận phát triển phần mềm truyền thống trong các lĩnh vực ứng dụng
- Hệ chuyên gia và phần mềm trí tuệ nhân tạo: chuyển
từ phòng thí nghiệm sang thực tế
- Hướng tới phát triển phần mềm dựa trên công nghệ khoa học và tin cậy hơn như là kỹ nghệ phần mềm hướng thành phần
Lịch sử phát triển phần mềm
Trang 49
1.2.1 Phân loại phần mềm
1.2 Các tiêu chuẩn của phần mềm
1 • Theo vai trò chức năng
2 • Theo lĩnh vực ứng dụng
Trang 50
Phân loại theo vai trò – chức năng
- Phần mềm hệ thống (system software): là tập hợp
các chương trình thực hiện chức năng quản lý và
điều khiển các nguồn nhân lực của máy tính và các chương trình khác nhau chạy trên máy tính Chúng
bao gồm các hệ điều hành, các hệ tiện ích hệ thống
1.2.1 Phân loại phần mềm