—Efficiency: Sử dụng hiệu quả tài nguyên của hệ thống cho công việc —Usability: giao diện và phương thức phải phù hợp với người dùng đồng thời đáp ứng đúng yêu cầu của người dùng Phần mề
Trang 1Chương 1 Tổng quan về công nghệ phần mềm
Nội dung
I Các khái niệm
II Quy trình xây dựng phần mềm
III Nghề nghiệp kỹ sư phần mềm
I Các khái niệm
1 Khoa học, kỹ thuật, công nghệ
2 Phần mềm
a Phần mềm tốt
b Phần mềm đủ hay thiếu và nguyên
nhân
c Tiến hóa của phần mềm
d Các loại phần mềm
3 Công nghệ phần mềm (SE)
Các khái niệm
— Khoa học (science)
— Kỹ thuật (technology)
— Công nghệ (engineering)
— Phần mềm (software)
— Công nghệ phần mềm (software engineering)
Trang 2Phần mềm
—Software = Computer Program +
associated documentation
—Loại sản phẩm phần mềm
bán rộng rãi trên thị trường
triển theo yêu cầu đặc thù của từng khách
hàng
Đặc tính của sản phẩm phần mềm tốt
—Maintainability: phần mềm có thể thay đổi thuận tiện theo yêu cầu của người dùng
—Dependability: tính ổn định, bảo mật và an toàn của phần mềm Không gây tổn hại về vật chất hay kinh tế cho hệ thống
—Efficiency: Sử dụng hiệu quả tài nguyên của
hệ thống cho công việc
—Usability: giao diện và phương thức phải phù hợp với người dùng đồng thời đáp ứng đúng yêu cầu của người dùng
Phần mềm-đủ hay thiếu
tính programable đầu tiên
—Được quan tâm và phát triền từ rất sớm
—Có rất nhiều phần mềm đã được viết
—Thực tế việc sản xuất phần mềm không đáp ứng
kịp yêu cầu của người sử dụng:
— Không đủ về số lượng
Nguyên nhân khách quan
—Số lượng phần mềm phải được hiểu là số đầu/loại phần mềm được sử dụng cho từng mục tiêu ứng dụng
— Nhu cầu sử dụng phần mềm là rất lớn
— Nhiều ngành nghề cần dùng phần mềm máy tính
—Mỗi ngành nghề cần nhiều loại phần mềm khác nhau
Trang 3Nguyên nhân khách quan
—Chất lượng phần mềm cũng chưa đáp ứng tốt
hoàn toàn người sử dụng:
— Tính customize rất cao của sản phẩm phần mềm.
— Trình độ sử dụng khác nhau và điều kiện hạ tầng
ứng dụng khác nhau
—Nhu cầu phần mềm thường rất cấp bách
— Tầm nhìn và chiến lược chưa đầu đủ của người sử
dụng
— Không có kế hoạch lâu dài
— Phải thay đổi theo từng đối tượng người dùng
Nguyên nhân chủ quan
—Tính chuyên nghiệp trong sản xuất phần mềm chưa cao: Các dữ liệu quan sát được (1979)
—Theo kiểm toán Mỹ
— 50% vượt ngân sách
— 60% trễ
— 40% không đúng yêu cầu trong đó 22% phải thiết kế lại toàn bộ và 29% thất bại hoàn toàn
—Theo thống kê của Tom de Marco (1979)
— 25% hệ phần mềm lớn thất bại
Nguyên nhân chủ quan
—Theo thống kê của Copets Jones (1991)
—Trung bình các hệ thông tin quản lý trể 1 năm
—Vượt ngân sách 100%
Nguyên nhân chủ quan
—Lý do của những hệ quả trên
—Phát triển phần mềm giống như một nghệ thuật, chưa được xem như một ngành khoa học
—Quy trình phát triển phần mềm chưa được thống nhất
—Phải viết lại phần mềm mỗi khi có sự thay đổi
về ngôn ngữ, phần cứng hoặc hệ điều hành
—Chưa đạt được 1 chuẩn cho việc đo lường hiệu suất và sản phẩm
Trang 4Nguyên nhân chủ quan
—Độ phức tạp của phần mềm quá cao đối với 1
“kiến trúc sư”
—Kỹ thuật đặc tả để lại sự nhập nhằng trong các
yêu cầu phần mềm
—Làm việc nhóm không đúng kỷ luật gây ra các lỗi
→Cần phải có một/nhiều chuẩn quy trình trong
sản xuất phần mềm để nâng cao tính chuyên
nghiệp của nền sản xuất đặc biệt nầy: Cần công
nghệ cho công nghiệp phần mềm
Tiến hóa của phần mềm
—Phần mềm vốn dĩ là phức tạp
—Yêu cầu sử dụng phần mềm không ngừng thay đổi
—Sự tiến bộ nhanh của hạ tầng – phần cứng
→Sự tiến hóa phần mềm là tất yếu
—Xu hướng chung:
— Phần mềm ngày càng phức tạp
— Chi phí phần mềm ngày càng cao
— Phần mềm trở thành ngành công nghiệp khổng lồ
— Năng suất lập trình thấp, giá thành cao
Tiến hóa của phần mềm
—Giai đoạn thứ nhất: (1955 - khoảng 1965-1970)
—Tính toán và quản lý rời rạc
—Đặc tả bằng ngôn ngữ thường
—Xử lý theo lô
—Môi trường lập trình có tính cá nhân
—Sản xuất đơn chiếc
Tiến hóa của phần mềm
—Giai đoạn 2: (từ khoảng 1970 - 1985)
— Hệ thống thời gian thực
— Mạng cục bộ nối các CSDL
—Đặc tả chú trọng đến input/output và luồng chuyển
dữ liệu
—Thiết kế chú trọng đến cấu hình hệ thống
—Giải thuật và dữ liệu có cấu trúc
Trang 5Tiến hóa của phần mềm
—Giai đoạn 3: (Khoảng 1985 - 2000)
— PC phát triển mạnh
—Mạng diện rộng, Internet
—Đặc tả hướng đối tượng, các CASE phát triển
— Thiết kế chú trọng đến tính mô-đun, hướng đối
tượng, giao thức (protocol) và giao diện
(interface)
—Ngôn ngữ: Ngôn ngữ bậc cao, hướng đối tượng
—Phát triển HT: có phương pháp, công cụ tự động
Tiến hóa của phần mềm Yêu cầu Tính toán quản lý nhỏ
Thời gian thực,
đa nhiệm, nối mạng cục bộ, CSDL
PC, nối mạng diện rộng, Internet
Đặc tả Ngôn ngữ
thường
Đầu vào + đầu ra; dòng chuyển dữ liệu
Hướng đối tượng, vòng đời PM, CASE
Thiết kế Giải thuật Cấu hình hệ thống, cấu
trúc GT và DL
Tinh môđun, đối tượng, giao thức, giao diện
Cài đặt Ct đơn giản;
xữ lý Batch
HĐH, hệ thống CSDL thường trực
Dùng lại PM đóng gói, ngôn ngữ hướng đối tượng
55 60 65 70 75 80 85 90 95 2000
Các loại phần mềm
—Phần mềm hệ thống
—Các chương trình viết để phục vụ cho chương
trình khác
—Xử lý thông tin phức tạp nhưng xác định (như
hệ điều hành, trình biên dịch…)
—Đặc trưng bởi tương tác chủ yếu với phần
cứng máy tính
—Phục vụ nhiều người dùng
—Cấu trúc dữ liệu phức tạp, nhiều giao diện
ngoài
—Phần mềm ứng dụng
Các ứng dụng
các chương trình thực hiện tự động hóa một
số các nhiệm vụ nghiệp vụ
một số đặc điểm riêng Các đặc điểm chung thường là:
—Đặc tính (Characteristics)
—Tính hồi tiếp (Responsiveness)
—Kiểu của (loại) ứng dụng (Type)
Trang 6Đặc tính của ứng dụng
— Dữ liệu
Đầu vào Đầu ra Lưu trữ và tìm kiếm
— Xử lý
— Ràng buộc
Thứ tự trước, thứ tự sau, thời gian, cấu trúc,
điểu khiển, suy diễn
— Giao diện
Người sử dụng, thủ công, tự động
Ràng buộc về thời gian
Thời gian xử lý Thời gian phân chia cho một quá trình xử lý Thời gian yêu cầu với các quy trình xử lý bên ngoài
Thời gian xử lý đồng bộ Thời gian trả lời cho quá trình xử lý với giao diện bên ngoài
Ràng buộc về suy diễn
—Ràng buộc về suy diễn có thể xẩy ra với các
ứng dụng
—Ràng buộc về suy diễn liên quan đến tri thức
hệ thống và giới hạn trên loại tri thức nầy
—Ràng buộc về suy diễn liên quan đến công cụ
ngôn ngữ nào đã xây dựng nên hệ thống
Khả năng hồi đáp
Là thời gian sử dụng và đáp ứng yêu cầu từ người dùng của ứng dụng Chia làm 3 loại:
—Xử lý theo lô (batch oriented)
—Xử lý trực tuyến (on-line)
—Xử lý thời gian thực (realtime)
Trang 7So sánh 3 mô hình xử lý
Mục so sánh Theo lô Trực tuyến Thời gian thực
Tổng số dữ liệu Lớn Nhỏ-lớn Trung bình
Giám sát dữ liệu Không Có Có
Tỷ lệ cập nhật dữ
liệu lưu trữ
Hỏi Theo lô Trực tuyến Trực tuyến
Báo cáo Dài, hình thức Ngắn, không hình
thức
Ngắn, không hình thức
Dự phòng/khôi
phục
Lưu file ra dĩa Sử dụng 1 trong
các cách sau: lưu file ra dĩa, ghi nhật ký giao dịch, tạo bảng ghi trạng thái trước và sau, tạo file ảnh
Sử dụng 1 trong các cách sau: lưu file ra dĩa, ghi nhật ký giao dịch, tạo bảng ghi trạng thái trước và sau, tạo file ảnh
So sánh 3 mô hình xử lý
Mục so sánh Theo lô Trực tuyến Thời gian thực
Chi phí xây dựng Thấp Trung bình Cao Chi phí hoạt động Thấp Trung bình khá Cao Tận dụng Tài nguyên máy Thời gian Thời gian
Độ phức tạp xây dựng Đơn giản Vừa Phức tạp Tốc độ xử lý các giao dịch Nhanh Chậm Trung bình Tốc độ xử lý 1 giao dịch Chậm Trung bình Nhanh
Sử dụng hệ thống quản lý CSDL và giao tiếp dữ liệu
Có thể hay không Có khả năng Có Đồng bộ hoạt động Chậm Trung bình nhanh
Kiểu của ứng dụng
—Ứng dụng hướng giao dịch(Transaction
Processing Systems-TPS)
—Hệ thông tin quản lý(Management
Information System-MIS)
—Hệ hỗ trợ ra quyết định(Decision Supports
System-DSS)
—Hệ thông tin thi hành (Executive Information
system-EIS)
—Hệ hỗ trợ quyết định theo nhóm (Group DSS)
—Hệ chuyên gia(Expert System –ES)
—Các hệ thống nhúng (Embedded systems)
Hệ TPS
Trang 8Cấu trúc TPS trực tuyến Cấu trúc TPS theo lô
Trang 9Hệ DSS Cấu trúc DSS
Trang 10Hệ ES Công nghệ phần mềm – định nghĩa
—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
Công nghệ phần mềm – định nghĩa
—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 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)
—Pressman[1995]: SE là bộ môn tích hợp cả
Công nghệ phần mềm – định nghĩa
— Là một quá trình kỹ nghệ gồm ba mặt:
—Nhằm tạo ra phần mềm hiệu quả,với các giới hạn cho trước
Trang 11Khái niệm
Thủ tục
và cách thức thực hiện
phẩm bàn giao
Khái niệm
Phương pháp
phương pháp riêng
—Phương pháp phân tích
—Phương pháp thiết kế
—Phương pháp lập trình
—Phương pháp kiểm thử
Khái niệm
Công cụ
—Cung cấp sự trợ giúp tự động / bán tự động cho
từng phương pháp
–CASE-các công cụ phần mềm được chuẩn hóa để trợ
giúp các công đoạn khác nhau trong quá trình
phát triển
—Compiler, debugger
—Hỗ trợ phân tích, thiết kế (Rwin,Modeler,
Oracle Designer, Rational Rose, )
Cụ thể
—Efficiency: Phần mềm được sản xuất trong thời gian và điều kiện vừa phải Phần mềm vận hành đúng mức độ yêu cầu về công việc và thời gian
—Reliablity: Phần mềm vận hành ổn định và tương tác được với các hệ thống ứng dụng
—Usability: Phần mềm có thể dùng được bởi người sử dụng và với môi trường mà người sử dụng đang có Chú ý tới giao diện, điều kiện hệ thống,…
Trang 12Cụ thể
—Modifiability: Phần mềm có thể được thay đổi
dể dàng, nhanh chóng khi yêu cầu của người sử
dụng thay đổi
—Portability: Phần mềm có thể chuyển đổi dễ
dàng sang các hệ thống khác mà không cần phải
điều chỉnh lớn Chỉ cần recompile nều cần thiết
là tốt nhất
—Testability: Phần mềm có thể được kiểm tra dễ
dàng Tốt nhất là được modul hóa
Cụ thể
—Reusability: Phần mềm hay một phần có thể được tái sử dụng cho các ứng dụng khác Các modul có thiết kế tốt, độc lập và giao tiến đơn giản, cả về tình tương thích công nghệ phát triển
—Maintainability: thiết kế của phần mềm có thể được hiểu dễ dàng cũng như chuyển giao thuận tiện cho người khác trong quá trình điều chỉnh, nâng cấp hay thay đổi theo yêu cầu
Cụ thể
—Interoperability: Phần mềm vận hành ổn định và
đúng như mong đợi Trên hệ thống nhiều người
dùng (multi users) phần mềm vẫn hoạt động
được với các vận hành khác của hệ thống
—Correctness: Phần mềm phải tính toán đúng và
tạo ra kết quả đúng và đúng với mục tiêu ứng
dụng của người dùng
Lịch sử phát triển
—Đề xướng, hình thành (70s) Các phương pháp lập trình và cấu trúc dữ liệu
—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)
—Lập trình có cấu trúc (Dijkstra)
—Phương pháp luận về qui trình thiết kế;phương
Trang 13Lịch sử phát triển
—Tăng trưởng (nửa đầu 80s)
—Xuất hiện các phương pháp phát triển hệ 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ác bộ công cụ phát triển
— 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 )
Lịch sử phát triển
— 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
— Nhiều mô hình hướng cấu trúc được chuẩn hóa
— CASE hoàn thiện, đạt mức tự động hóa cao
— 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, JBULDER, )
— Sử dụng lại chiếm vị trí quan trọng trong phát triển
Lịch sử phát triển
—Chuẩn quản lý được công nhận (CMM,
SO9000-03)
—Nhiều mô hình tổ chức làm phần mềm được
đề xuất
—Nhiều công cụ trợ giúp quản lý dự án hoàn
thiện
II Quy trình phát triển phần mềm
1 Cách giải quyết vấn đề
2 Một số mô hình
3 Các công đoạn chính
4 Các tiêu chuẩn
Trang 14Quy trình phát triển phần mềm
Quy trình phát triển phần mềm (còn gọi tắt
là quy trình phần mềm) là một tập hợp các
hành động phải được thực hiện trong quá
trình xây dựng một hệ thống phần mềm
Cách giải quyết vấn đề
—Từ lập trình đi lên
—Các tri thức liên quan đến lập trình
—Tri thức về cách hoạt động của công cụ
xử lý thông tin (tư duy giải thuật)
—Tri thức về cách triển khai, giải quyết vấn đề bằng máy tính (tư duy hệ thống)
Cách giải quyết vấn đề
—Các giai đoạn của lập trình
1. Nhận yêu cầu tính toán
2. Tìm hiểu bài toán đặt ra
3. Phát triển giải thuật giải quyết bài toán
4. Chuyển thuật toán thành chương trình máy
tính
5. Chạy chương trình để kiểm tra và sửa chữa
Cách giải quyết vấn đề
—Vấn đề, giải pháp và giải quyết vấn đề
toán
Giải pháp
Trang 15Cách giải quyết vấn đề
—Để giải quyết vấn đề, giữa khách hàng và
người cung cấp phải có các văn bản pháp lý
ràng buộc, dưới dạng các dự án và hợp đồng
—Dự án là nổ lực giải quyết vấn đề
—Phương pháp xác định ra cách tiến hành các
nổ lực giải quyết vấn đề
—Tiến trìnhlà việc thực hiện của phương
pháp
Cách giải quyết vấn đề
Góc nhìn chung về giải quyết vấn đề
Cách giải quyết vấn đề
Góc nhìn chi tiết về giải quyết vấn đề
Các nhân tố
Trang 16Một số mô hình phát triển phần mềm
—Mô hình thác nước
—Mô hình xây dựng tiến triển
—Công nghệ phần mềm dựa thành phần
—Mô hình phát triển lặp lại, tăng thêm
—Mô hình xoắn ốc
Mô hình thác nước
Trang 17Mô hình phát triển lặp lại, tăng thêm Mô hình xoắn ốc
Các công đoạn chính tổng quát
—Giai đoạn đặc tả: xác định các tính năng và điều kiện
hoạt động của hệ thống (thu thập yêu cầu và phân
tích)
—Giai đoạn phát triển: Thiết kế phần mềm (software
design), viết code (code generation)
—Giai đoạn đánh giá: kiểm tra phần mềm (software
testing), kiểm tra tính hợp lý của phần mềm.
—Giai đoạn bảo trì, cải tiến: Sửa lỗi (correction), thay
đổi môi trường thực thi (adaptation), tăng cường
(enhancement)
Đặc tả
Trang 18Phát triển
— Thiết kế
— Viết code
Đánh giá phần mềm
— Kiểm tra
— Xem xét lại
— Kiểm thử hệ thống
— The capability Maturity Model (CMM) của Software Engineering Institue (SEI) - Đại học Carnegie Mellon: Chú trọng đến tính hệ thống
và khả năng quản trị của các công ty phần mềm hơn là một quy trình (process) cụ thể
— The process Improvement Paradigm (PIP) của Software Engineering Laboratory (SEL) –
Trang 19Các tiêu chuẩn trong CNPM
—Các chuẩn khác của Department of Defense
MIL – STD 2167A ; STD 1574A ;
MIL-STD 882C
—The electronic Industries Association (EIA)
chuẩn SEB-6-A
—The European ESPRIT project
—International Standards Organisation - ISO
9001
—United Kingdom MOD 0055
Chuẩn CMM
Initial (Level 1)
Repeatable (Level 2)
Defined (Level 3)
Managed (Level 4)
Optimized (Level 5)
•Largely Ad-hoc
•Phụ thuộc vào cá nhân
•Bắt đầu có khả năng quản lý
•Quản lý dựa vào kinh nghiệm tương tự
•Xác lập các tiêu chuẩn quản lý
•Các vấn đề documentation đã xác lập
•Có khả năng dự đoán (Predictability)
•Các quy trình quản lý và tiêu chuẩn
được chi tiết hóa
•Continuous Improvement
•Các hệ thống quality control và qualify đã
được sử dụng hiệu quả
III Nghề nghiệp kỹ sư phần mềm
1 Mục tiêu và những kỹ năng
2 Loại hình công việc
Mục tiêu & những kỹ năng
Mục tiêu:
— Sản xuất ra các sản phẩm phần mềm có chất lượng cao
và phù hợp với quy trình phát triển chuẩn mực
Những kỹ năng cần có:
— Đinh danh, đánh giá, cài đặt, lựa chọn một phương pháp luận thích hợp và các công cụ CASE
— Biết lựa chọn ngôn ngữ, phần cứng, phần mềm
— Quản lý, lập sơ đồ và kiểm soát việc phát triển tiến trình
— Biết cách kiểm tra chương trình sẽ áp dụng
— Lựa chọn và sử dụng kỹ thuật bảo trì phần mềm
— Đánh giá và quyết định khi nào loại bỏ hay nâng cấp