Đặc trưng của phần mềm 2 Được kỹ nghệ engineered hay phát triển developed, không phải được chế tạo manufactured Chế tạo: Biến đổi vật liệu thành sản phẩm Kỹ nghệ: Phân tích, thiết
Trang 1Tổng quan về phần mềm và công nghệ phần
mềm
CHƯƠNG 1
Trang 41.1 Một số khái niệm cơ bản (1)
Phần mềm máy tính (Computer Software): 3 phần
Chương trình (mã nguồn + mã máy)
Các cấu trúc dữ liệu (cấu trúc làm việc + cấu trúc lưu trữ)
Các tài liệu liên quan (hướng dẫn sử dụng, tham khảo
kỹ thuật, tài liệu phát triển).
Ví dụ:
Phần mềm soạn thảo văn bản của Microsoft – MSWord
Chương trình: winword.exe
Dữ liệu: doc files, bitmaps, auto shapes, wordarts, charts,
Tài liệu hướng dẫn: Help
Phần mềm chat Yahoo! Messenger
Trang 5Công nghệ phần mềm 5
1.1 Một số khái niệm cơ bản (2)
Hệ thống phần mềm (Software System):
Tập (hệ thống) các phần mềm có thể hợp tác để thực hiện chức năng lớn hơn
Mỗi phần mềm thực hiện một công việc
Kết hợp các công việc để hoàn thành nhiệm vụ chung
Mỗi phần mềm trong hệ thống còn được gọi là phân hệ/ hệ thống con (subsystem) hay module phần mềm.
Ví dụ
Có thể xem MSWord là một hệ thống phần mềm bao gồm
Module soạn thảo cơ bản
Module kiểm tra chính tả, ngữ pháp và sửa lỗi
Module xử lý công thức toán học và các ký tự đặc biệt
Module tìm kiếm, thay thế văn bản
Module tính toán excel
Module email, tạo website
Trang 6 1.2 Tầm quan trọng của phần mềm
Trang 7Công nghệ phần mềm 7
1.2 Tầm quan trọng của phần mềm
(1)
Phần mềm - Linh hồn của các hệ thống máy tính
Có vai trò nền tảng của mọi hoạt động xã hội
Trang 81.2 Tầm quan trọng của phần mềm
(2)
Sự phụ thuộc của các nền kinh tế vào phần mềm
Thu, chi từ phần mềm chiếm tỷ trọng đáng kể trong GDP của các nước phát triển
Thế giới có >7 triệu kỹ sư CNTT tạo ra 600 tỷ $/ năm
Chi phí cho phần mềm năm 2000 lên tới 770 tỷ $
Trang 9 Phong cách công nghiệp
Tăng năng suất, chất lượng
Trang 10 Hàng không: PM điều khiển không lưu
Ngân hàng: PM giao dịch, liên ngân hàng
Giáo dục: PM chấm thi trắc nghiệm, PM quản lý đào tạo
Trang 12 Mang tính logic nhiều hơn tính vật lý
Nhiều khái niệm khác nhau, khó hiểu
Không nhìn thấy muốn hiểu phải tư duy trừu tượng
Khắc phục lỗi không đơn giản bằng cách sửa chữa hay thay thế mà phải thay đổi chính thiết kế và cài đặt thiết kế mới
Không có thành phần để thay thế như đối với phần cứng, mà phải sửa đổi lại
Trang 13Công nghệ phần mềm 13
1.3 Đặc trưng của phần mềm (2)
Được kỹ nghệ (engineered) hay phát triển (developed), không phải được chế tạo (manufactured)
Chế tạo: Biến đổi vật liệu thành sản phẩm
Kỹ nghệ: Phân tích, thiết kế, tạo và kiểm thử sản phẩm
Phát triển: Làm tăng trưởng
Khó kiểm soát chất lượng phần mềm tại các khâu trung gian
Khó dự đoán trước hiệu năng của phần mềm
Trang 141.3 Đặc trưng của phần mềm (3)
Phần mềm thoái hóa (wear out) theo thời gian
Không bị tác động vật lý của môi trường như: bụi, nhiệt độ, chấn động -> không bị hỏng
Phần cứng bị hỏng khi dùng lâu do tác động của môi trường -> thay thế
Luôn phải đối mặt với những thay đổi : yêu cầu thay đổi, bổ sung chức năng… -> thoái hóa vì không đáp ứng được yêu cầu bổ sung, yêu cầu sửa đổi.
Trang 15Công nghệ phần mềm 15
1.3 Đặc trưng của phần mềm (4)
Thay đổi là bản chất
Là mô hình thế giới thực thay đổi theo thời gian
Môi trường nghiệp vụ thay đổi
Nhu cầu con người thay đổi
> Thay đổi để đáp ứng người dùng
Thay đổi thích ứng với môi trường vận hành
Các phần mềm nền (hệ điều hành,…)
Thiết bị phần cứng
Trang 161.3 Đặc trưng của phần mềm (5)
Là sản phẩm của tập thể
Quy mô phần mềm ngày càng lớn
Thời gian bàn giao sản phẩm ngắn
Năng suất nhóm không tỷ lệ thuận với số thành viên
- Trao đổi thông tin lớn
- Khó kiểm soát chất lượng
- Rủi ro về mặt nhân sự rất dễ xảy ra (một thành viên quan trọng của nhóm có thể không tiếp tục hợp tác…)
Trang 17Công nghệ phần mềm 17
1.3 Chất lượng sản phẩm phần
mềm
Chất lượng (Quality) bao gồm:
Chức năng (functions) phần mềm thực hiện hay dịch vụ
(services) được phần mềm cung cấp
Sử dụng được (Usability)
Dùng được và có ích
Cần có giao diện tốt và đủ tài liệu hướng dẫn
Bảo trì được (Maintainability)
Có thể sửa đổi khi yêu cầu thay đổi
Tin cậy (Dependability)
An toàn (safety): Không gây thiệt hại cho hệ thống hoặc thiệt hại kinh
tế cho đơn vị sử dụng khi xuất hiện lỗi
An ninh (Security): Bảo đảm không bị phá hoại vô tình hoặc cố ý
Hiệu suất (Efficiency)
Sử dụng tài nguyên vừa phải, cho kết quả nhanh
Chi phí thấp (Low cost)
Chi phí để phát triển
Giá bán
Khó có thể thỏa mãn tất cả các tính chất, cần phải biết, với từng hệ thống, tính chất nào quan trọng hơn để ưu tiên cho tính chất đó
Trang 18 1.4 Phân loại phần mềm
Trang 19 Tương tác nhiều với phần cứng
Sử dụng bởi nhiều người đồng thời
Thao tác tương tranh, cần phải lập lịch
Chia sẻ tài nguyên
Dữ liệu có cấu trúc phức tạp
Nhiều giao diện ngoài
Các phần mềm thuộc loại này chủ yếu do các hãng lớn sản xuất và thường phải liên kết với các sản xuất phần cứng
Ví dụ:
Hệ điều hành (Operating System)
Trình điều khiển (driver)
Phần mềm giải trí (Entertainment Software)
…
Trang 20 Các hệ thống điều khiển dây chuyền sản xuất, hệ thống nhà
ga, giữ cân bằng tốc độ sản xuất điện năng, giữ ổn định mức độ phản ứng lò hạt nhât, cân bằng nhiệt độ…
Tương lai sẽ có nhiều phần mềm loại này vì máy móc tự động hóa ngày càng được sử dụng nhiều.
Thường phải kết hợp với điện tử, viễn thông.
Trang 21Công nghệ phần mềm 21
1.4 Phân loại phần mềm (3)
Theo tính năng (3)
Phần mềm nghiệp vụ (Business software)
Xử lý thông tin nghiệp vụ
Ví dụ
GIS, MISs, Word, Exel, Photoshop, AutoCAD…
E-something (eMail, eLearning, eCommerce, eGovernment )
Phần mềm công cụ hay tiện ích (Tools and Utilities)
Tạo công cụ để phát triển phần mềm hay sử dụng khai thác phần cứng
Phục vụ cho đông đảo người sử dụng (để khai thác máy tính) và nhà phát triển (để phát triển phần mềm)
Ví dụ
Utilities(NC, Disk Doctor, File Management, Ghost, Virtual Driver…)
Program Editors (Virsual NET Studio, Editplus, Jcreator, Dreamweaver…)
Model Editors/Debugers (Rational Rose, MEF, MDF, ArgolUML, Database Designer)
Implement Facilities (Code Converter, Java toolkits, …)
Trang 221.4 Phân loại phần mềm (4)
Theo kiểu ứng dụng
Winform
Chạy trên các máy đơn, mạng ngang hàng
Giao diện windows,
Một người sử dụng
Ví dụ
MS Offices, MS Visual Studio, Yahoo! Messenger…
Webform
Thực hiện theo mô hình khách - chủ (client-server),
Giao diện web
Nhiều người sử dụng đồng thời
Ví dụ
Trang 23 Có thể winform hoặc webform.
Ví dụ
Client-server: Websites,
Peer-to-peer: Chat,…
Trang 241.4 Phân loại phần mềm (6)
Theo giải thuật chương trình
Phần mềm trí tuệ nhân tạo
Sử dụng các giải thuật không tuần tự của TTNT (AI) (mạng nơron, logic
mờ, máy học…) để giải quyết những bài toán phức tạp không thể giải quyết được bằng thuật toán thông thường trong thời gian cho phép
Trang 25 Tự đầu tư hoàn toàn trong khi phát triển.
Phù hợp cho các doanh nghiệp lớn, lâu năm
Trang 261.5 Sự tiến hóa của phần mềm (1)
Phần mềm tiến hóa cùng tiến bộ của phần cứng
Về quy mô, sự phức tạp và tốc độ
Về chức năng và mức độ hoàn thiện
Công nghệ không ngừng phát triển, nhu cầu của người sử dụng
Trang 281.5 Sự tiến hóa của phần mềm (3)
Giai đoạn 2: 1960 giữa thập kỷ 70
Là sản phẩm: đa nhiệm, đa người sử dụng
Xử lý: số, ký tự, theo lô và thời gian thực
Xuất hiện lưu trữ dữ liệu
Ngôn ngữ có cấu trúc: PL1, Algol 60, Fortran,
Trang 29Công nghệ phần mềm 29
1.5 Sự tiến hóa của phần mềm (4)
Giai đoạn 3: đến năm 1990
Phần mềm cá nhân + mạng, hệ lớn, chia sẻ được
Xuất hiện phần mềm nhúng
Xử lý: số, ký tự, âm thanh hình ảnh; theo lô, thời gian thực, phân tán, song song.
Truy nhập dữ liệu phát triển, cả từ xa
Ngôn ngữ: bậc cao, hướng đối tượng, logic
Trang 301.5 Sự tiến hóa của phần mềm (5)
Giai đoạn 4: từ 1990 đến nay
Phần mềm lớn, tinh vi, tin cậy, hướng người dùng
Website, Hệ chuyên gia, trí tuệ nhân tạo, phần mềm nhúng,…
Internet phát triển
CSDL hướng đối tượng, kho dữ liệu
Ngôn ngữ: hướng đối tượng, logic, trực quan
Tiêu chí đánh giá
Tiện dụng
Tin cậy
Dễ bảo trì
Trang 32 Những rủi ro dẫn đến hủi hoặc đình trệ tăng nhanh cùng với việc tăng của kích thước các ứng dụng (Capers Jones):
65% các HT lớn (>1,000,000 LOC) bị hủitrước khi hoàn thành
50% các HT ướclượng sai kích thước > 1/2 million LOC
25 % các dự án > 100,000 LOC
Tỷ lệ thất bại của các dự án lớn là >20% (Capers Jones)
Sau khi khảo sát 8,000 dự án IT, Standish Group cho biết khoảng 30% bị hủi trước khi hoàn thành
Trang 33Công nghệ phần mềm 33
1.6 Thực trạng và thách thức PTPM
(2)
Thực trạng (2)
NATO Software Engineering Conference, Germany, 1968
Thống kê của chính phủ Mỹ về các dự án SW của Bộ quốc phòng, 1970.
Dự án phần mềm của US defence
0 0.5 1 1.5 2 2.5 3 3.5
Paid for but not received Delivered but not used or reworkedAbandoned
Used after change
Used as delivered
Trang 341.6 Thực trạng và thách thức PTPM
(3)
Thực trạng (3)
Thống kê của Standish Group (2006)
Có tới 50% trong số các dự án phần mềm thất bại
Chỉ có 16.2% dự án là hoàn thành đúng hạnvànằmtrong giớihạn ngân sách, đáp ứng tất cả tính năng và đặc tính như cam kết ban đầu
Có 52.7% dự án được hoàn thành và đi vào hoạt động nhưng không hoàn thành đúng hạn và bội chi, thêm nữa không đáp ứng đầy đủ tính năng và đặc tính như thiết kế ban đầu
Và có 31.1% dự án thất bại trước khi được hoàn thành
-> hơn 83.8% dự án thất bại hoặc không đáp ứngnhững yêu cầu ban đầu
2/3 dự án được hoàn thành vượt quá thời gian và kinh phí dự kiến (Capers Jones) [bad
estimates?]
2/3 dự án được hoàn thành là có độ tin cậy và chất lượng thấp trong một
Trang 35 Khủng hoảng là gì ? [Webster’s Dict.]
Điểm ngoặt trong tiến trình của bất kỳ cái gì; thời điểm, giai đoạn hoặc biến cố quyết định hay chủ chốt
Điểm ngoặt trong quá trình diễn biến bệnh khi trở nên rõ ràng bệnh nhân sẽ sống hay chết
Trang 361.6 Thực trạng và thách thức PTPM
(5)
Một số yếu tố ảnh hưởng đến khủng hoảng
PM càng lớn sẽ kéo theo phức tạp hóa và tăng chi phí phát triển
Đổi vai trò giá thành phần mềm và phần cứng
Công sức cho bảo trì càng tăng thì chi phí cho Backlog càng lớn
Nhân lực chưa đáp ứng được nhu cầu phần mềm
Những phiền hà của phần mềm gây ra những vấn đề
xã hội
…(?)
Trang 37Công nghệ phần mềm 37
1.6 Thực trạng và thách thức PTPM
(6)
Những khó khăn trong phát triển PM (1)
Không có phương pháp mô tả rõ ràng định nghĩa yêu cầu của người dùng, sau khi bàn giao sản phẩm dễ phát sinh những trục trặc
Với những PM quy mô lớn, tư liệu đặc tả đã cố định thời gian dài khó đáp ứng nhu cầu thay đổi của người dùng một cách kịp thời trong thời gian đó
Nếu không có phương pháp luận thiết kế nhất quán mà thiết kế theo cách riêng suy giảm chất lượng PM
Nếu không có chuẩn về làm tư liệu quy trình sản xuất PM, thì những đặc tả không rõ ràng sẽ làm giảm chất lượng PM
Nếu không kiểm thử tính đúng đắn của PM ở từng giai đoạn mà chỉ kiểm ở giai đoạn cuối và phát hiện ra lỗi, thì thường bàn giao sản phẩm không đúng hạn
Nếu coi trọng việc lập trình hơn khâu thiết kế thì thường dẫn đến làm giảm chất lượng PM
Trang 381.6 Thực trạng và thách thức PTPM
(7)
Những khó khăn trong phát triển PM (2)
Nếu coi thường việc tái sử dụng PM, thì năng suất lao động sẽ giảm
Phần lớn trong quy trình phát triển PM có nhiều thao tác do con người thực hiện vậy năng suất lao động thường bị giảm
Không chứng minh được tính đúng đắn của PM độ tin cậy của
Trang 39càng tăng,…
Trang 40 1.7 Tổng quan về công nghệ phần mềm
Khái niệm
Lịch sử phát triển
Trang 41Công nghệ phần mềm 41
Khái niệm
Bauer [1969]: SE là việc thiết lập và sử dụng các nguyên lý công nghệ đúng đắn để thu được phần mềm 1 cách kinh tế
vừa tin cậy vừa làm việc hiệu quả trên các máy thực.
Parnas [1987]: SE là việc xây dựng phần mềm nhiều phiên bản bởi nhiều người.
Sommerville [1995]: SE là một nguyên lý kỹ nghệ liên quan đến tất cả các mặt ( lý thuyết,phương pháp và công
cụ ) của sản phần mềm
IEEE [1993]:
1 việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được
2 nghiên cứu các phương pháp tiếp cận được dùng trong (1)
Pressman [1995]: SE là bộ môn tích hợp cả qui trình, các phương pháp, các công cụ để phát triển phần mềm máy tính
1.7 Tổng quan về công nghệ phần mềm
(1)
Trang 43 Khái niệm về tính môđun
Khái niệm thiết kế,lập trình top-down, chi tiết hóa từng bước(N With)
Trang 441.7 Tổng quan về công nghệ phần mềm
(4)
Lịch sử phát triển (2): Tăng trưởng (nửa đầu 80s)
thống
công nghệ CSDL (mô hình quan hệ)
phân tích, thiết kế hướng cấu trúc
công cụ trợ giúp phân tích thiết kế
bộ khởi tạo chương trình (biên dịch)
Các ngôn ngữ bậc cao (FoxPro, SQL )
mềm
Trang 45Công nghệ phần mềm 45
1.7 Tổng quan về công nghệ phần mềm
(5)
Lịch sử phát triển (3): Phát triển (từ giữa 80s)
Hoàn thiện công nghệ cấu trúc, ra đời công nghệ đối
tượng
Công nghệ hướng đối tượng bắt đầu phát triển:
Quy trình RUP
Ngôn ngữ mô hình hóa thống nhất(UML)
Các công cụ phần mềm đầy đủ (ROSE, JIBULDER, )
Sử dụng lại chiếm vị trí quan trọng trong phát triển
Phát triển các mô hình quản lý
Nhiều công cụ trợ giúp quản lý dự án hoàn thiện