Bài giảng Kỹ thuật phần mềm - Phần 1: Giới thiệu chung về Công nghệ phần mềm

20 21 0
Bài giảng Kỹ thuật phần mềm - Phần 1: Giới thiệu chung về Công nghệ phần mềm

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

– Các phương pháp kỹ thuật (Techniques): những trình tự cụ thể để chế tạo phần mềm và là cách tiếp cận khoa học mang tính định lượng.. Từ phương pháp luận phần mềm sang kỹ thuật phần m[r]

(1)

PHẦN I: GIỚI THIỆU CHUNG VỀ CÔNG NGHỆ PHẦN MỀM

I. Bản chất phần mềm

1 Định nghĩa chung phần mềm 2 Kiến trúc phần mềm

3 Các khái niệm

4 Đặc tính chung phần mềm 5 Thế phần mềm tốt ? 6 Các ứng dụng phần mềm

II Những vấn đề phát triển phần mềm III Quy trình phát triển phần mềm

1

1 Định nghĩa chung phần mềm • Phần mềm (Software - SW) khái niệm

đối nghĩa với phần cứng (Hardware - HW), tuy nhiên, khái niệm tương đối

• Từ xưa, SW thứ cho không bán kèm theo máy (HW)

(2)

Các đặc tính SW HW Hardware

• Vật “cứng”

• Kim loại

• Vật chất

• Hữu hình

• Sản xuất cơng nghiệp

bởi máy móc chính

• Định lượng chính

• Hỏng hóc, hao mịn

Software

• Vật “mềm”

• Kỹ thuật sử dụng

• Trừu tượng

• Vơ hình

• Sản xuất

người chính

• Định tính chính

• Khơng hao mịn

3

Định nghĩa 1 • Phần mềm là

– Các lệnh (chương trình máy tính) thực cung cấp chức kết mong muốn

– Các cấu trúc liệu làm cho chương trình thao tác thơng tin thích hợp

– Các tư liệu mơ tả thao tác cách sử dụng chương trình

(3)

Định nghĩa 2

• Trong hệ thống máy tính, trừ bỏ các thiết bị loại phụ kiện phần cịn lại chính là phần mềm (SW)

• Nghĩa hẹp: SW dịch vụ chương trình để tăng khả xử lý phần cứng máy tính (như hệ điều hành - OS)

• Nghĩa rộng: SW tất kỹ thuật ứng dụng để thực dịch vụ chức cho mục đích phần cứng

5

SW theo nghĩa rộng

• Khơng SW SW ứng dụng

• Phải gồm khả năng, kinh nghiệm thực tiễn kỹ kỹ sư (người chế phần mềm): Know-how of Software Engineer

(4)

Phần mềm ?

7 Nhóm các

Kỹ thuật,

Phương pháp luận Nhóm các chương trình Nhóm các tư liệu

Kinh nghiệm kỹ sư,

know-how

• Các khái niệm trình tự cụ thể hóa hệ thống

• Các phương pháp tiếp cận giải vấn đề

• Các trình tự thiết kế phát triển chuẩn hóa

• Các phương pháp đặc tả u cầu, thiết kế hệ thống, thiết kế chương trình, kiểm thử, tồn quy trình quản lý phát triển phần mềm

Phần mềm ?

8 Nhóm các

Kỹ thuật,

Phương pháp luận Nhóm các chương trình Nhóm các tư liệu

Kinh nghiệm kỹ sư,

know-how

• Là phần giao diện với phần cứng, tạo thành từ nhóm lệnh thị cho máy tính biết trình tự thao tác xử lý liệu

• Phần mềm bản: với chức cung cấp môi trường thao tác dễ dàng cho người sử dụng nhằm tăng hiệu xử lý phần cứng (ví dụ OS chương trình hệ thống)

(5)

Phần mềm ?

9 Nhóm các

Kỹ thuật,

Phương pháp luận

Nhóm các chương trình

Nhóm các tư liệu

Kinh nghiệm kỹ sư,

know-how

• Những tư liệu hữu ích, có giá trị cao cần thiết để phát triển, vận hành bảo trì phần mềm

• Để chế phần mềm với độ tin cậy cao cần tạo tư liệu chất lượng cao: đặc tả yêu cầu, mô tả thiết kế loại, điều kiện kiểm thử, thủ tục vận hành, hướng dẫn thao tác

Phần mềm ?

Nhóm các Kỹ thuật,

Phương pháp luận

Nhóm các chương trình

Nhóm các tư liệu

Kinh nghiệm kỹ sư,

know-how

• Phần mềm phụ thuộc nhiều vào ý tưởng (idea) kỹ (know-how) người/nhóm tác giả

• Khả hệ thống hóa trừu tượng • Khả lập trình • Kỹ cơng nghệ • Kinh nghiệm làm việc • Tầm bao quát

(6)

2 Kiến trúc phần mềm • Phân cấp System

Subsystem Subsystem

Program Program

Module Module Subroutine

Master files Temporary files Arguments Arguments Job unit Jobstep unit Member unit Common Module   Phần mềm

Nhìn từ phương diện cấu trúc

Cấu trúc phần mềm:

kiến trúc các chức năng mà phần mềm có

điều kiện phân cấp các chức năng

Thiết kế chức năng

Theo chiều đứng: càng sâu càng phức tạp

Theo chiều ngang: càng rộng càng nhiều chức năng, qui mô càng lớn System

Subsystem Subsystem

Program Program

Module Module Subroutine

Fuction A

Function B Function C

Fuction D

Function F

Function E

Function G Function H

(7)

Phần mềm

Nhìn từ phương diện thủ tục

• Quan hệ thứ tự thành phần cấu thành phần mềm • Thuật toán với

những phép lặp, rẽ nhánh, điều khiển luồng xử lý (quay lui hay bỏ qua)

• Cấu trúc lơgic biểu thị chức có phần mềm trình tự thực chúng

• Thiết kế cấu trúc trước sang chức

13 System

Subsystem Subsystem

Program Program

Module Module Subroutine

Master files

Temporary files

Arguments Arguments

Common Module

Từ phương pháp luận phần mềm sang kỹ thuật phần mềm

• Khi chế tác phần mềm cần nhiều phương pháp:

– Phương pháp luận (Methodology): chuẩn mực để chế tạo phần mềm với tiêu định tính

(8)

Từ phương pháp luận phần mềm sang kỹ thuật phần mềm

Môđun

Tinh chỉnh bước

Trừu tượng hóa Che giấu t.tin

Phân tích cấu trúc

Thiết kế cấu trúc

Lập trình cấu trúc

Dữ liệu trừu tượng

Hướng đối tượng

Khái niệm phần mềm

15

3.1 Tính mơđun (Modularity)

• Là khả phân chia phần mềm thành môđun ứng với chức năng, đồng thời cho phép quản lý tổng thể: khái niệm phân chia trộn (partion and merge)

• Hai phương pháp phân chia môđun theo chiều

– Theo chiều sâu

– Theo chiều rộng

• Quan hệ môđun ? qua đối số (arguments)

Tính độc lập kém dần Điều khiển phức tạp dần

SW Phân chia chiều rộng

P h â n ch ia ch iề u u

Cấu trúc rộng chiều ngang

(9)

3.2 Tinh chỉnh bước (Step refinement)

• Cách tiếp cận từ xuống (top-down approach)

Ngôn ngữ chương trình

Chi tiết hóa

dần bước Thế giới bên

Đặc tả yêu cầu

Trừu tượng hóa mức cao: Thế giới bên ngồi, trạng thái chưa rõ ràng

Trừu tượng hóa mức trung gian: Xác định yêu cầu đặc tả định nghĩa yêu cầu

Trừu tượng hóa mức thấp: Từng lệnh chương trình viết ngơn ngữ thủ tục

17

Ví dụ: Trình tự giải vấn đề từ mức thiết kế chương trình đến mức lập trình

• Bài tốn: từ nhóm N số khác tăng dần, hãy tìm số có giá trị K (nhập từ ngồi vào) và in vị trí nó

• Giải bước từ khái niệm đến chi tiết hóa từng câu lệnh ngơn ngữ lập trình đó

(10)

Cụ thể hóa thủ tục qua chức năng

19

Bài toán cho Nhập giá trị K

Nhận giá trị nhóm N số

Tìm kiếm giá trị(ppnhị phân)

In ravị trí(nếu có)

Cụ thể hóa bước tiếp theo

20

Tìm kiếm giá trị

(ppnhị phân) Xác lập phạm vi mảng số

Lặp lại xử lý tìm kiếm giá trị K phạm vi tìm kiếm

Tìm vị trí phân đơi mảng Sosánh K với giá trị Đặt lại phạm vi tìm kiếm Lặp lại tìm kiếm K

(11)

Mức mơ tả chương trình (bằng PDL)

BắtĐầu Đọc K

Nhận giá trị cho mảng chiều A(I), (I =1, 2, ,.N) MIN = 1

MAX = N

DO WHILE (Có giá trị K không, MIN > MAX) Lấy MID = (MIN + MAX) / 2

IF A(MID) > K THEN MAX = MID - 1 ELSE

IF A(MID) < K THEN MIN = MID + 1 ELSE

In giá trị MID ENDIF

ENDIF ENDDO

KếtThúc 21

Câu hỏi

Làm để định nghĩa cấu trúc hệ thống thiết kế dựa module? Đâu đặc tính cần có cấu trúc này?

System

M2

M1

(12)

3.3 Che giấu thơng tin

(Information hiding) [Parnas72]

• Các môđun nên đặc trưng quyết định thiết kế (design decision) cho mỗi môđun bí mật mơđun khác

• Rất hữu ích cho kiểm thử bảo trì phần mềm

23

3.3 Che giấu thông tin

(Information hiding) [Parnas72]

Cố định tất định thiết kế (design decision) có khả bị thay đổi

Gán định thiết kế vào module mới; lúc định thiết kế phần bí mật module (module secret) Thiết kế giao diện module (module

interface), giao diện khơng thay đổi phần bí mật module thay đổi

System

design

decision design decision

design decision

design decision design

decision

design decision

design

decision design decisionM1

Mn Mn-1

(13)

Giao diện

Module

Các tài nguyên cần xuất ra: kiểu liệu, biến, thuộc tính, hàm, kiện, ngoại lệ, v.v Người

dùng

3.3 Che giấu thông tin

(Information hiding) [Parnas72]

Secret

Cài đặt tài nguyên cần xuất interface Bicycle {

void changeCadence (int newValue); void changeGear(int newValue); void speedUp(int increment); void applyBrakes(int decrement); }

class Bike implements Bicycle { }

class Motor-Bike implements Bicycle { }

3.4 Trừu tượng hóa (Abstraction)

• Cho phép tập trung xem xét vấn đề mức tổng quát, gạt chi tiết mức thấp liên quan

• 3 mức trừu tượng

– Trừu tượng thủ tục: dãy thị với chức đặc thù giới hạn

– Trừu tượng liệu: tập hợp liệu mô tả đối tượng liệu

– Trừu tượng điều khiển: Cơ chế điều khiển chương trình khơng cần đặc tả chi tiết bên

(14)

• Là hàng hóa vơ hình, khơng nhìn thấy được

• Chất lượng phần mềm: khơng mịn mà có xu hướng tốt lên sau lần có lỗi (error/bug) phát sửa

• Phần mềm vốn chứa lỗi tiềm tàng, theo quy mơ lớn khả chứa lỗi cao

• Lỗi phần mềm dễ phát người ngoài

27

4 Đặc tính chung phần mềm • Chức phần mềm thường biến hóa, thay

đổi theo thời gian (theo nơi sử dụng)

• Hiệu ứng sóng thay đổi phần mềm

• Phần mềm vốn chứa ý tưởng sáng tạo tác giả/nhóm làm nó

• Cần khả “tư nhị phân” xây dựng, phát triển phần mềm

• Có thể chép đơn giản

(15)

5 Thế phần mềm tốt ?

29

Hiệu suất xử lý

Các tiêu Tính dễ hiểu

Thời gian (Phần cứng phát triển) Yếu

tố khái niệm phần mềm tốt

Đặc trưng gần

5.1 Các tiêu bản

• Phản ánh yêu cầu người dùng (tính hiệu - effectiveness)

• Chứa lỗi tiềm tàng

• Giá thành không vượt giá ước lượng ban đầu

• Dễ vận hành, sử dụng

(16)

5.2 Hiệu suất xử lý cao • Hiệu suất thời gian tốt (efficiency):

– Độ phức tạp tính tốn thấp (Time complexity)

– Thời gian quay vòng ngắn (Turn Around Time: TAT)

– Thời gian hồi đáp nhanh (Response time)

• Sử dụng tài nguyên hữu hiệu: CPU, RAM, HDD, Internet resources,

31

5.3 Dễ hiểu

• Kiến trúc cấu trúc thiết kế dễ hiểu

• Dễ kiểm tra, kiểm thử, kiểm chứng

• Dễ bảo trì

• Có tài liệu (mô tả yêu cầu, điều kiện kiểm thử, vận hành, bảo trì, FAQ, ) với chất lượng cao

Tính dễ hiểu: chỉ tiêu ngày quan trọng

(17)

Ví dụ cụ thể ???

• Phần mềm hệ thống (System SW)

• Phần mềm thời gian thực (Real-time SW)

• Phần mềm nghiệp vụ (Business SW)

• Phần mềm tính tốn KH&KT (Eng.&Scie SW)

• Phần mềm nhúng (Embedded SW)

• Phần mềm máy cá nhân (Personal

computer SW)

• Phần mềm Web (Web-based SW)

• Phần mềm trí tuệ nhân tạo (AI SW)

33

Bài tập nhà:

Phân biệt khái niệm sau

• Hệ thống, phần mềm, ứng dụng

• Lập trình, phát triển phần mềm

(18)

PHẦN I: GIỚI THIỆU CHUNG VỀ CÔNG NGHỆ PHẦN MỀM

I Bản chất phần mềm

II Những vấn đề phát triển phần mềm

1 Khủng hoảng phần mềm ?

2 Những khó khăn sản xuất phần mềm

III Quy trình phát triển phần mềm (CNPM)

35

1 Khủng hoảng phần mềm (Software crisis)

• Là day dứt kinh niên (kéo dài theo thời gian hoặc

thường tái diễn, liên tục không kết thúc) gặp phải và tạo bước ngoặt phát triển phần mềm máy tính, như:

– Phải làm với việc giảm chất lượng lỗi tiềm tàng có phần mềm ?

– Phải xử lý bảo dưỡng phần mềm có ?

– Phải giải thiếu kỹ thuật viên phần mềm?

– Phải chế tác phần mềm có yêu cầu phát triển theo qui cách xuất ?

– Phải xử lý cố phần mềm gây vấn đề xã hội ?

(19)

Một số yếu tố

• Phần mềm lớn kéo theo phức tạp hóa tăng chi phí phát triển

• Đổi vai trị giá thành SW vs HW

• Cơng sức cho bảo trì tăng chi phí cho Backlog lớn

• Nhân lực chưa đáp ứng nhu cầu phần mềm

• Những phiền hà phần mềm gây vấn đề xã hội

37

2 Những khó khăn sản xuất phần mềm

• Khơng có phương pháp mơ tả rõ ràng định nghĩa yêu cầu người dùng (khách hàng)

Sau bàn giao sản phẩm dễ phát sinh trục trặc

(troubles)

• Với phần mềm quy mô lớn, tư liệu đặc tả cố định thời gian dài

Khó đáp ứng nhu cầu thay đổi người dùng cách kịp

thời thời gian đó

• Phương pháp luận thiết kế khơng quán

Thiết kế theo cách riêng (của công ty, nhóm), dẫn đến

suy giảm chất lượng phần mềm (do phụ thuộc nhiều vào con người)

• Khơng có chuẩn việc tạo tư liệu quy trình sản xuất phần mềm

(20)

2 Những khó khăn sản xuất phần mềm

• Khơng kiểm thử tính đắn phần mềm giai đoạn mà kiểm giai đoạn cuối phát lỗi

thường bàn giao sản phẩm khơng hạn

• Coi trọng việc lập trình khâu thiết kế

giảm chất lượng phần mềm

• Coi thường việc tái sử dụng phần mềm (software reuse)

giảm suất lao động

• Phần lớn thao tác quy trình phát triển phần mềm người thực

giảm suất lao động

• Khơng chứng minh tính đắn phần mềm

giảm độ tin cậy phần mềm

39

Những vấn đề sản xuất phần mềm (tiếp)

• Chuẩn phần mềm tốt khơng thể đo cách định lượng

Không thể đánh giá hệ thống đắn hay không

• Đầu tư nhân lực lớn vào bảo trì

giảm hiệu suất lao động nhân viên

• Cơng việc bảo trì kéo dài

giảm chất lượng tư liệu ảnh hưởng xấu đến những

việc khác

• Quản lý dự án lỏng lẻo

quản lý lịch trình sản xuất phần mềm khơng rõ ràng

• Khơng có tiêu chuẩn để ước lượng nhân lực dự toán

làm kéo dài thời hạn vượt kinh phí dự án

Ngày đăng: 10/03/2021, 14:33

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan