Bài giảng Nhập môn công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mề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)

pdf20 trang | Chuyên mục: Công Nghệ Phần Mềm | Chia sẻ: dkS00TYs | Lượt xem: 2180 | Lượt tải: 4download
Tóm tắt nội dung Bài giảng Nhập môn công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Cấu trúc ES Hệ ES
14/9/2009
10
Hệ 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ả
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
Công nghệ phần mềm – định nghĩa
— Là một quá trình kỹ nghệ gồm ba mặt:
—Thủ tục (procedures)
—Phương pháp (methods)
—Công cụ (tools)
—Nhằm tạo ra phần mềm hiệu quả,với các 
giới hạn cho trước
14/9/2009
11
Khái niệm
Thủ tục
—Xác định trình tự thực hiện các công việc
—Xác định các tài liệu, sản phẩm cần bàn giao
và cách thức thực hiện
—Định các mốc thời gian (millestones) và sản 
phẩm bàn giao
Khái niệm
Phương pháp
—Cách làm cụ thể để xây dựng phần mềm
—Mỗi công đoạn làm phần mềm có các 
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
—Computer Aided Software Engineering –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,…
14/9/2009
12
Cụ 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.
—Các yêu cầu khác: Đúng tiến độ. Sử dụng hợp lý 
nguồn nhân lực phát triển. Chi phí phát triển 
thấp nhất
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 
pháp phân chia mô đun
— Trừu tượng hóa dữ liệu (Liskov
14/9/2009
13
Lị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...)
—Bắt đầu quan tâm đến quản lý làm phần mềm
—Các độ đo phần mềm
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
—Phát triển các mô hình quản lý 
—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
14/9/2009
14
Quy 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
6. Thực hiện tính toán và chuyển giao kết quả
đến nơi yêu cầu
Cách giải quyết vấn đề
—Vấn đề, giải pháp và giải quyết vấn đề
—Yêu cầu của khách hàng: Vấn đề hay bài 
toán
—Sản phẩm, dịch vụ giải quyết các yêu cầu: 
Giải pháp.
—Công nghệ chỉ là công cụ, phương tiện, 
cần có con người áp dụng để đạt được 
mục đích
14/9/2009
15
Cá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ình là 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ố
14/9/2009
16
Mộ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
Mô hình Prototype Công nghệ phần mềm dựa thành phần
14/9/2009
17
Mô 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ả
14/9/2009
18
Phá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
Bảo trì, cải tiến
— Sửa lỗi
— Cải tiến
Các tiêu chuẩn trong CNPM
— 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) –
NASA’s Goddard Space Flight Center: Tương 
tự như CMM, chú trọng đến tính hệ thống và 
những hướng dẫn để tăng cường tính năng của các 
quá trình quản lý.
14/9/2009
19
Các tiêu chuẩn trong CNPM
—Các chuẩn khác của Department of Defense
MIL – STD 2167A ; MIL-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)
R
isk
C
om
petitiveness
•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
14/9/2009
20
Loại hình công việc
Phát triển ứng dụng
— Lập trình viên
— Kỹ sư phần mềm (phân tích/thiết kế)
— Kỹ sư tri thức (KE)
Hỗ trợ ứng dụng
— Chuyên gia ứng dụng
— Nhà quản trị dữ liệu
— Nhà quản trị CSDL (DBA)
— Kỹ sư trí tuệ nhân tạo
— Nhà tư vấn
Loại hình công việc
Chuyên gia kỹ thuật
— Phân tích thông tin
— Kỹ sư truyền thông
— Chuyên gia mạng
— Lập trình viên hệ thống
— Chuyên gia hỗ trợ phần mềm (SSP)
Chuyên viên
— Chuyên viên bảo mật
— Kiểm soát viên EDP
— Chuyên viên đào tạo và huấn luyện
Loại hình công việc
— Chuyên viên phát triển các chuẩn
— Người viết kỹ thuật
— Đảm bảo chất lượng (QA)
— Lập kế hoạch công nghệ
Những người khác
— Hỗ trợ sản phẩm
— Tiếp thị sản phẩm
— Chuyên viên người dùng cuối

File đính kèm:

  • pdfBài giảng Nhập môn công nghệ phần mềm - Chương 1 Tổng quan về công nghệ phần mềm.pdf