Tải bản đầy đủ (.pdf) (139 trang)

bài giảng phát triển vận hành và bảo trì phần mềm - chương 2 phát triển phần mềm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (980.55 KB, 139 trang )

CHƯƠNG 2

PHÁT TRIỂN PHẦN MỀM
Mục đich: Chương này tập trung vào các
hoạt động và các nguyên tắc để phát
triển phần mềm theo hướng cấu trúc và
hướng đối tượng


NỘI DUNG
2.1 Các hoạt động phát triển p/mềm
2.1.1 Thiết kế phần mềm
2.1.2 Sinh mã – hiện thực, triển khai
2.1.3 Kiểm thử phần mềm

2.2 Nghệ thuật gỡ rối
2.2.1 Brute-force (ép buộc)
2.2.2 Loại trừ nguyên nhân
2.2.3 Theo vết


2.1 Các hoạt động phát triển p/mềm
• Các giai đoạn p/triển gồm:
2.1.1
2.1.2
2.1.3

Thiết kế phần mềm (software
design);
Sinh mã (code generation);
Kiểm thử phần mềm (software


testing)


2.1.1 Thiết kế phần mềm
• Là cơng việc đầu tiên của giai đoạn ↑
• Nhằm tạo ra các biểu diễn và dữ kiện
của hệ thống p/mềm cần x/dựng từ kết
quả phân tích u cầu để có thể dễ
dàng thực hiện sau đó
• Là lĩnh vực tương đối mới mẻ và đang
phát triển với nhiều phương pháp khác
nhau


2.1.1 Thiết kế phần mềm
2.1.1.1
2.1.2.2
2.1.2.3
2.1.2.3
2.1.2.4

Cơ sở của thiết kế p/mềm
Phân chia module hiệu quả
Các hoạt động thiết kế
Phương pháp thiết kế cổ điển
Phương pháp thiết kế hướng
đối tượng


2.1.1.1 Cơ sở của thiết kế p/mềm









a) Trừu tượng hóa
b) Tinh chế
c) Phân chia moddule
d) Kiến trúc phần mềm
e) Cấu trúc dữ liệu
f) Thủ tục
g) Che dấu thông tin


a) Trừu tượng hóa
• Q trình thiết kế trải qua nhiều mức độ
trừu tượng hóa khác nhau:
– Mức cao nhất: Vần đề cần thiết kế được mô
tả một cách tổng quát sử dụng thuật ngữ
hướng vấn đề
– Mức thấp hơn: Hướng đến thủ tục xử lý chi
tiết; kết hợp các thuật ngữ hướng đến hiện
thực
– Mức thấp nhất: Vấn đề được mơ tả theo cách
có thể thực hiện trực tiếp



a) Trừu tượng hóa
• Phân loại giữa trừu tượng hóa thủ tục và
dữ liệu
* Trừu tượng hóa thủ tục: Là chuỗi các lệnh liên
tiếp thực hiện một chức năng nào đó.
Ví dụ:
- Mở cửa bao gồm: đi đến cửa, cầm lấy tay
nắm, xoay tay nám, kéo cánh cửa ra
- Thêm một phần tử vào danh sách có thứ tự:
Xác định vị trí, chèn phần tử mới


a) Trừu tượng hóa
• * Trừu tượng hóa dữ liệu: Là tổ hợp dữ
liệu mô tả một đối tượng dữ liệu
• Ví dụ: một đối tượng thực thể là sự trừu
tượng hóa của các tính chất và hành vi


b) Tinh chế
• Tinh chế là q trình làm rõ vấn đề. Tinh
chế và trừu tượng hóa là 2 khái niệm bù
trừ nhau thể hiện: Càng tinh chế thì càng
hạ thấp mức độ trừu tượng hóa


c) Phân chia moddule
• p/mềm được thực hiện bằng cách phân chia
thành nhiều module, sau đó sẽ được tích hợp lại
• Phân chia module làm cho việc quản lý phần

mềm khoa học hơn. Thật vậy:
– Giả sử C(x) là độ phức tạp của X, E(X) là công sức
để thực hiện X. Rõ ràng nếu C(p1)>C(p2) thì
E(p1)>E(p2). Nếu phân chia p = p1+p2 ta thấy (một
cách trực quan) C(p1+p2) >C (p1)+C(p2) 
E(p1+p2)>E(p1) +E(p2)


c) Phân chia moddule
• Số lượng module phụ thuộc vào độ phức
tạp của hệ thống phần mềm cần xây
dựng. Quá ít hay quá nhiều module đều
không tốt
Công sức bỏ ra
Vùng tối ưu

Cơng sức tích hợp

Cơng sức từng module

Số lượng module


d) Kiến trúc phần mềm
• Kiến trúc phần mềm mơ tả các thành phần kiến
tạo nên hệ thống phần mềm và sự giao tiếp
giữa các thành phần đó.
=> Kiến trúc p/m = tập hợp các module/thành phần
và quan hệ giữa chúng
– Các thành phần/module có thể là:

• Các module mã nguồn: hàm/nhóm hàm/lớp
• Các file thực thi (*.dll. *.exe; *.class)
• Các thành phần của kiến trúc hệ thống: ActiveX control,
bean, ...
• Các trang html: *.asp, *.jsp

– Quan hệ: Sử dụng/gọi/kế thừa, ….


d) Kiến trúc phần mềm
Phần mềm nhìn từ cấu trúc phân cấp
• Cấu trúc phần mềm là cấu trúc phân cấp
(hierarchical structure): mức trên là hệ thống
(system), dưới là các hệ thống con
(subsystems)
• Dưới hệ thống con là các chương trình
• Dưới chương trình là các Modules hoặc
Subroutines với các đối số (arguments)


d) Kiến trúc phần mềm
Phần mềm nhìn từ cấu trúc phân cấp
System

Subsystem

Master files

Subsystem


Job unit


Program

Tem porary

Program

Jobstep unit

files


Module

Arguments

Module

Arguments

Subroutine
Common Module

Member unit


d) Kiến trúc phần mềm
Phần mềm nhìn từ cấu trúc và thủ tục

• Hai yếu tố cấu thành của phần mềm
– Phương diện cấu trúc
– Phương diện thủ tục
• Cấu trúc phần mềm: biểu thị kiến trúc các
chức năng mà phần mềm đó có và điều kiện
phân cấp các chức năng (thiết kế cấu trúc)
• Thiết kế chức năng: theo chiều đứng (càng sâu
càng phức tạp) và chiều ngang (càng rộng
càng nhiều chức năng, qui mô càng lớn)


d) Kiến trúc phần mềm
• Sơ đồ phân cấp module được dùng để mô
tả sự phân rã,quan hệ phụ thuộc giữa các
môđun và giao diện (interface) giữa chúng
Hệ số phân chia đẩu ra (fan - out)

Chiều sâu

Hệ số gộp đầu vào (fan - in)
Chiều rộng


d) Kiến trúc phần mềm
Sơ đồ phân cấp
– Không liên quan đến trình tự gọi các mơđun, nhưng ngầm
định là từ trái qua phải
– Mỗi môđun xuất hiện trong cấu trúc 1 lần, có thể được gọi
nhiều lần
– Quan hệ trên dưới: không cần nêu số lần gọi

– Tên môđun biểu thị chức năng (“làm gì”), đặt tên sao cho
các mơđun ở phía dưới tổng hợp lại sẽ biểu thị đủ chức
năng của mơđun tương ứng phía trên
– Biến số (arguments) biểu thị giao diện giữa các môđun,
biến số ở các mơđun gọi/bịgọi có thể khác nhau
– Mũi tên với đi trịn trắng biểu thị dữ liệu, đi trịn đen
(hồng) biểu thị flag
– Chiều của mũi tên là hướng truyền tham số


d) Kiến trúc phần mềm
Module A
1

Module B

Module C

Luồng dữ liệu
Luồng flag

Module D

Module E


d) Kiến trúc phần mềm
• Các loại kiến trúc:
Xét 3 mơ hình kiến trúc thường được sử
dụng:

– Chia sẻ dữ liệu: Mơ hình kho dữ liệu dùng
chung (repository)
– Chia sẻ dịch vụ: Mơ hình client/server
– Mơ hình phân lớp (layered model)


(1) Mơ hình kho dữ liệu dùng
chung
* Ngun tắc:
- Dữ liệu chia sẻ được tập trung trong một CSDL
- Các hệ thống con đều truy cập vào CSDL chung
* Khi một lượng lớn dữ liệu cần chia sẻ giữa các hệ
thống con => Mơ hình này thường được sd


Ưu điểm
- Đơn giản
- Hiệu quả khi chia sẻ một khối lượng lớn dữ liệu
- Đảm bảo sự độc lập của các hệ thống con

Hạn chế
- Các hệ thống con phải thống nhất trên mơ hình kho dữ
liệu dùng chung


(2) Mơ hình Client – Server
(cịn gọi là mơ hình phân tán)
• Nguyên tắc:
Dữ liệu và xử lý được phân tán trên nhiều thành
phần khác nhau

• Hệ thống gồm:
- Các server cung cấp các dịch vụ
- Các client yêu cầu các dịch vụ
- Phương thức trao đổi giữa Client và server: Trên
mạng hay trên một máy tính



Ưu điểm:
- Sử dụng hiệu quả mạng
- Dễ dàng thêm các server mới hoặc nâng
cấp server hiện tại
- Phân tán dữ liệu dễ dàng
Hạn chế
- Mỗi hệ thống con tự quản lý dữ liệu riêng
của nó => Có thể dẫn đến dư thừa
- Khơng có kiến trúc tập trung ghi nhận các
dịch vụ => Khó khăn để xác định dữ liệu hay
các dịch vụ


×