1
Luận văn báo cáo
Đề tài:
Tìm hiểu quy trình phát triển
phần mềm hướng đối tượng
Mở đầu
Phần mềm hiện nay có mặt ở mọi lĩnh vực, trong mọi hoạt động của cuộc sống như công
nghiệp, viện nghiên cứu, trường học, bệnh viện, tài chính ngân hàng, chính phủ Hầu hết các
2
thiết bị điện tử hiện nay và trong tương lai đều được cài đặt các phần mềm điều khiển. Việc
đặc tả các yêu cầu, phát triển, quản lí, bảo trì phần mềm tạo nên các nguyên tắc của công
nghệ phần mềm (software engineering).
Trong các loại phần mềm hiện nay thì phần mềm hướng đối tượng đang phát triển vô cùng
mạnh mẽ. Do nó đáp ứng được hầu hết các yêu cầu người dùng, và do sự phát triển mạnh mẽ
của các ngôn ngữ hướng đối tượng như C++, Java, C#
Ph ng pháp phát tri n ph n m m h ng đ i t ng tuy là m t ph ng pháp m i trongươ ể ầ ề ướ ố ượ ộ ươ ớ
nh ng năm g n đây nh ng đã ch ng t đ c u th khi l p trình các h th ng ph c t p,ữ ầ ư ứ ỏ ượ ư ế ậ ệ ố ứ ạ
đem l i nh ng thành qu to l n. Các nhà phát tri n ph n m m nh n th y r ng phát tri nạ ữ ả ớ ể ầ ề ậ ấ ằ ể
ph n m m h ng đ i t ng mang l i m t ph n m m th ng m i có ch t l ng cao v iầ ề ướ ố ượ ạ ộ ầ ề ươ ạ ấ ượ ớ
đ tin c y cao, d m r ng và d s d ng l i, ch y tr n tru, phù h p v i yêu c u c aộ ậ ễ ở ộ ễ ử ụ ạ ạ ơ ợ ớ ầ ủ
ng i dùng và đ c bi t là kh năng phát tri n cao.ườ ặ ệ ả ể
Trong bài báo cáo này chúng em sẽ trình bầy đến các vấn đề liên quan đến phát triển phần
mềm hướng đối tượng như: phần mềm hướng đối tượng là gì, quy trình phát triển một phần
mềm, các quy trình để phát triển một phần mềm hướng đối tượng, Trong báo cáo bày còn
nhiều thiếu sót mong được thầy cô và các bạn góp ý, đánh giá giúp chúng em hoàn thành đề
tài này.
Chúng em cũng xin được cảm ơn sự giúp đỡ tận tình của TS: LƯƠNG MẠNH BÁ trong quá
trình chúng em hoàn thành báo cáo này.
Nhóm sinh viên thực hiện
Hà nội ngày 7 tháng 10 năm 2012
3
18
4
Chương I: Giới thiệu chung về công nghệ phần mềm và
phần mềm hướng đối tượng
I.1: Phần mềm là gì?
- Là các lệnh ( chương trình máy tính ) khi được thực hiện thì cung cấp những chức
năng và kết quả mong muốn
- Các cấu trúc dữ 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 và cách sử dụng chương trình
Phần mềm bao gồm:
I.2: Công nghệ phần mềm là gì?
Công nghệ học phần mềm là lĩnh vực khoa học về các phương pháp luận, kĩ thuật
và công cụ tích hợp trong quy trình sản xuất và vận hành phần mềm nhằm tạo ra
phần mềm với chất lượng mong muốn.
Lịch sử phát triển của công nghệ phần mềm
1. Giai đoạn 1 (1950 – giữa 1960):
- Xử lý theo lô, xử lý tập trung, ít xử lý phân tán, ít sửa đổi phần mềm.
2. Giai đoạn 2 (từ giữa 1960 đến giữa 1970) :
- Hệ thống đa chương trình và đa nguời dùng.
- Bắt đầu cuộc “khủng hoảng” phần mềm.
3. Giai đoạn 3 (từ giữa 1970 đến giữa 1980)
- Sự phát triển và sử dụng rộng rãi máy tính cá nhân
- Sự phát triển của các công ty phần mềm
4. Giai đoạn 4 (từ giữa 1980 đến nay)
- Phần cứng ngày càng phát triển
- Hệ thống phần mềm ngày càng đa dạng, phong phú, xử lý ngày càng phức
tạp, công nghệ ngày càng phát triển…
I.3: Vòng đời của phần mềm
5
Vòng đời phần mềm là thời kỳ tính từ khi phần mềm được sinh ra cho đến khi
độc lập với bất cứ hoạt động khung nào diễn ra trong suốt quy trình.
II: Một số mô hình phát triển phần mềm
1. Mô hình tuyến tính
• Đây là mô hình lâu đời nhất và được ứng dụng rộng rãi nhất trong công nghệ
phần mềm nhưng mô hình này vẫn còn bộc lộ nhiều nhược điểm
2. Mô hình thuần thục khả năng
• Mô hình này do Soft Engineering Institute (SEI) phát triển bao gồm 5 mức:
Khởi đầu, lặp lại, xác định, quản trị, tối ưu.
3. Mô hình chế thử
• Là một tiến trình giúp người phát triển phần mềm có khả năng tạo ra một mô
hình cho phần mềm cần phải xây dựng. Nó gồm 3 dạng: Bản vẽ trên giấy hay
mô hình trên PC, bản mẫu làm việc và cài đặt một tập con các chức năng phần
mềm mong muốn, một chương chình đã có cần cải tiến.
7
4. Mô hình phát triển ứng dụng nhanh (RAD)
• Là quy trình phát triển phầm mềm gia tăng từng bước với chu chình phát triển
ngắn. Mô hình này xây dựng dựa trên hướng thành phần với khả năng tái sử
dụng cao.
5. Mô hình xoắn ốc
• Được phát triển bao gồm các tính năng tốt nhất của mô hình tuyến tính lẫn mô
hình chế thử trong khi vẫn bổ sung thêm các yếu tố mới – phân tích rủi ro.
6. Mô hình theo thành phần
• Gắn với những công nghệ hướng đối tượng thông qua việc tạo các lớp có chứa
dữ liệu và các giải thuật xử lí dữ liệu
7. Mô hình hình thức
• Còn được gọi là mô hình phòng sạch, tập hợp các công cụ đặc tả toán học
phần mềm máy tính từ khâu định nghĩa phát triển đến kiểm soát.
8. Các công nghệ thứ 4
Bao gồm một phạm vi rộng các công nghệ phần mềm có một điểm chung: mỗi
công việc đều cho phép người phát triển phần mềm xác định một số đặc trưng
nó cho ra một mô hình lớp và dữ liệu ở mức chi tiết.
5. Cài đặt
• Phần này chúng ta sẽ chính thức bắt tay vào “code” chương trình.
6. Kiểm chứng
• Phần này có nhiệm vụ kiểm tra chương trình có lỗi hay không, có đáp ứng
được nhu cầu người dùng hay không?,
7. Triển khai
• Bạn sẽ mang chương trình của mình đi triển khai.
9
Chương III: Quy trình phát triển phần mềm hướng đối
tượng
Để phát triển được một phần mềm hướng đối tượng ta cần qua các bước: Xác định yêu cầu
người sử dụng, mô hình hóa yêu cầu, phân tích, thiết kế dữ liệu, kiến trúc chương trình, kiểm
thử đánh giá.
III.1: Xác định yêu cầu
1. Yêu cầu người dùng là gì?
• Yêu cầu phần mềm là tất cả các yêu cầu về phần mềm do khách hàng, người
sử dụng phần mềm – nêu ra, bao gồm: các chứ năng của phần mềm, hiệu năng
của phần mềm, các yêu cầu về thiết kế và giao diện, các yêu cầu đặc biệt khác.
• Yêu cầu phần mềm được phân loại theo 4 thành phần của phần mềm:
- Các yêu cầu về phần mềm (Software).
- Các yêu cầu về phần cứng (Hardware).
- Các yêu cầu về dữ liệu (Data).
- Các yêu cầu về con người (People, Users).
2. Tại sao phải xác định yêu cầu ?
• Mục đích cơ bản của nắm bắt yêu cầu là hướng sự phát triển đến một hệ thống
đúng.
• Trả lời các câu hỏi sau: Cái người dùng yêu cầu mình làm là cái gì? Các yêu
cầu đó ra sao? Các yêu cầu đó như thế nào? Các nghiệp vụ của người đó ra
sao? Trong họ trình độ tin học hóa tới đâu?(về trình độ sử dụng máy tính và
• Thẩm định từng yêu cầu phần mềm theo các tính chất: phù hợp, đầy đủ
rõ ràng, không trùng lặp.
• Phân tích yêu cầu dựa trên nhu cầu và đòi hỏi của khách hàng
• Thẩm định từng yêu cầu của phần mềm.
• Thẩm định rủi ro có thể xảy ra với từng yêu cầu phần mềm.
• Đánh giá thô về giá thành và thời gian thực hiện của từng yêu cầu phần
mềm trong giá thành sản phẩm phần mềm và thời gian thực hiện phần
mềm.
• Giải quyết bất đồng với yêu cầu phần mềm với khách hàng trên cơ sở
thảo luận và thương lượng với yêu cầu đặt ra.
c) Đặc tả yêu cầu phần mềm
• Đây là công việc xây dựng các tài liệu trong đó có thể sử dụng các
công cụ như: mô hình hóa, mô hình toán học hình thức, tập hợp các
kịch bản sử dụng, các nguyên mẫu.
• Yêu cầu của đặc tả tốt
− Dễ hiểu với người dùng, ít rắc rối
− Có ít quy ước khi mô tả
− Theo phong cách từ trên xuống
− Dễ triển khai
5. Các kĩ thuật thu thập yêu cầu
• Phỏng vấn cá nhân/phỏng vấn nhóm?
− Phỏng vấn cá nhân
− Phỏng vấn nhóm
• Phỏng vấn tự do/phỏng vấn có định hướng?
− Phỏng vấn tự do
+ Người được hỏi có cảm giác thoải mái, cung cấp nhiều thông tin sâu sắc.
+ Nguy cơ: không có được những thông tin cần thiết, thông tin khó hệ
thống được.
− Phỏng vấn có định hướng
12
• Xác định cấu trúc tổng quát – đặc tả.
• Xác định cấu trúc toàn thê – bộ phận.
• Xác định chủ đề ( mô tả các thành phần hệ thống con).
• Xác định các thuộc tính.
• Xác định các dịch vụ.
3: Phương pháp Jacobson: Nhấn mạnh vào các trường hợp sử dụng – mô tả cách
người dùng tương tác với sản phẩm hay hệ thống. Phác thảo của quy trình phân tích
như sau:
• Xác định người sử dụng hệ thống và toàn bộ nhiệm vụ của họ.
• Xây dựng mô hình yêu cầu.
• Xây dựng mô hình phân tích.
4: Phương pháp Rambaugh: Các hoạt động phân tích tạo ra 3 mô hình: mô hình đối
tượng, mô hình động, mô hình chức năng. Phác thảo của quy trình phân tích:
• Phát triển một bản kê phạm vi vấn đề
• Xây dựng một mô hình hướng đối tượng
• Phát triển mô hình động
• Xây dựng một mô hình chức năng cho hệ thống
5: Phương pháp Wirfs – Brock: Không tạo sự khác biệt rõ ràng giữa phân tích và thiết
kế. Thay vào đó một quá trình bắt đầu khi xác định đặc tả khách hàng và kết thúc khi
thiết kế được đề xuất. Phác thảo của quy trình phân tích do Wirfs – Brock phát triển
như sau:
• Ước lượng đặc tả khách hàng.
• Sử dụng phân tích ngữ pháp để rút ra các lớp ứng viên từ đặc tả.
• Nhóm các lớp để xác định các lớp Cha.
• Định nghĩa trách nhiệm cho mỗi lớp.
• Phân công trách nhiệm cho mỗi lớp.
• Xác định cộng tác giữa các lớp dựa trên trách nhiệm.
• Xây dựng mô tả cây của lớp để chỉ ra mối quan hệ kế thừa.
• Xây dựng biểu đồ cộng tác cho hệ thống
14
• Thêm vào đó, lớp và đối tượng có thể được phân loại bằng tập các đặc
tính sau: Tính hiện thực, tính bao gồm, tính tuần tự, sự tồn tại, tính toàn
vẹn.
b) Responsibility
15
• Bao gồm thuộc tính và phương thức. Thuộc tính mô tả đặc tính của lớp,
thông tin mà lớp cần phải có để hoàn thành mục tiêu của phần mềm mà
khách hàng yêu cầu. Phương thức được rút ra từ việc thực hiện các phân
tích ngữ pháp dựa trên các xử lí của hệ thống.
• 5 nguyên tắc để phân phối responsibility cho các lớp
+ Sự thông minh của hệ thống được phân phối công bằng
+ Mỗi responsibility phải bắt đầu từ tổng quan
+ Thông tin và hành vi liên quan đến responsibility phải được đặt
trong cùng một lớp
+ Mỗi thông tin cụ thể phải nằm trong một lớp đơn, không phân bố
nhiều lớp
+ Chia sẻ các responsibility giữa các lớp liên quan khi thích hợp
c) Cộng tác (collaborator)
Là hoàn thành responsibility theo 2 cách:
+ Một lớp có thể sử dụng các phương pháp của lớp để thao tác trên các
thuộc tính của nó, do đó hoàn thành responsibility cụ thể
+ Một lớp có thể cộng tác với các lớp khác.
3. Xác định cấu trúc và cây
• Khi lớp và đối tượng được xác định sử dụng mô hình CRC, người phân
tích bắt đầu tập trung vào cấu trúc của mô hình lớp và cây tổng hợp.
• Cấu trúc toàn thể - bộ phận mô tả các đối tượng liên kết:
4. Xác định chủ đề và các lớp con
• Một mô hình phân tích hệ thống phức tạp thường có hàng trăm lớp và
hàng chục các cấu trúc. Do đó cần phải mô tả ngắn gọn cho các cấu trúc.
• Khi các lớp con cộng tác với nhau để hoàn thành một nhiệm vụ, yêu cầu
+ Xác định các sự kiện dẫn đến dãy tương tác và hiểu cách thức các sự
kiện liên quan đến các đối tượng.
+ Tạo ra event trace cho mỗi trường hợp sử dụng.
+ Xây dựng một biểu đồ chuyển trạng thái cho hệ thống.
+ Xem lại mô hình đối tượng – hành vi để kiểm tra tính chính xác nhất
quán.
5. UML
a) Định nghĩa.
+ UML là ngôn ngữ thống nhất trực quan giúp công việc được xử lý nhất
quán, giảm thiểu lỗi xảy ra.
+ UML xây dựng các mô hình chính xác, rõ ràng và đầy đủ.
+ Các mô hình UML có thể kết nối trực tiếp với rất nhiều ngôn ngữ lập
trình.
+ UML giúp tài liệu hóa về kiến trúc, yêu cầu, kiểm thử, lập kế hoạch dự
án, và quản lý việc bàn giao phần mềm.
17
b) Các biểu đồ UML
+ Biểu đồ use case (Use Case Diagram)
+ Biểu đồ hoạt động (Activity Diagram)
+ Biểu đồ tương tác (Interaction Diagrams)
▫ Biểu đồ trình tự (Sequence Diagram)
▫ Biểu đồ giao tiếp/cộng tác (Communication/Collaboration Diagram)
+ Biểu đồ trạng thái (Statechart Diagram)
+ Biểu đồ cấu trúc tĩnh (Static Structure Diagrams)
▫ Biểu đồ lớp (Class Diagram)
▫ Biểu đồ đối tượng (Object Diagram)
+ Biểu đồ thực thi (Implementation Diagrams)
▫ Biểu đồ thành phần (Component Diagram)
▫ Biểu đồ triển khai (Deployment Diagram)
c) Ví dụ biểu đồ use care ( Use Case Diagram )
• Tầng lớp và đối tượng: Chứa phân lớp cho phép hệ thống được tạo ra bằng cách
sử dụng tổng quát hóa và tính tăng dần đặc tả đích
• Tầng thông điệp: Chứa các chi tiết cho phép các đối tượng giao tiếp.
• Tầng trách nhiệm: Chứa các cấu trúc dữ liệu và các thuật toán thiết kế cho mọi
thuộc tính và phương thức của lớp.
19
Các hoạt động trong pha thiết kế
• Định nghĩa hình thức về các kiểu dữ liệu và các dịch vụ. Các dịch vụ có thể
chuyển thành chức năng trong pha thiết kế.
• Thiết kế giao diện người dùng.
• Thiết kế cơ sở dữ liệu.
1. Ưu điểm của thiết kế hướng đối tượng
• Dễ dàng bảo trì. Các đối tượng được hiểu như là các thực thể đứng một mình.
• Đối tượng là các thành phần tái sử dụng.
• Với một số HT, có thể ánh xạ ngay từ thực thể thực sang thực thể của hệ
thống.
2. Các phương pháp thiết kế
• Phương pháp Booch: Quy trình gồm các bước:
− Lập kế hoạch kiến trúc.
− Chiến lược thiết kế.
− Lập kế hoạch phát hành.
• Phương pháp Coad and Yourdon
• Phương pháp Jacobson: Quy trình phát triển so Jacobson đề nghị:
− Xem xét sự thích nghi để mô hình phân tích lí tưởng phù hợp với môi
trường thế giới thực.
− Tạo ra các khối như các đối tượng thiết kế cơ bản.
− Tạo ra một biểu đồ tương tác cho biết cách các kích thích được chuyển đổi
giữa các khối.
− Tổ chức các khối trong hệ thống con.
− Xem xét lại công việc thiết kế.
mỗi thông điệp.
− Một mô tả thực hiện của một đối tượng cung cấp các chi tiết bên trong
được yêu cầu để thực hiện nhưng không cần thiết cho viện dẫn. Người
thiết kế đối tượng phải cung cấp mô tả thực hiện và do đó phải tạo ra chi
tiết bên trong của đối tượng.
• Thiết kế thuật toán và cấu trúc dữ liệu
Một thuật toán được tạo ra để thực hiện một đặc tả cho mỗi phương thức.
Trong nhiều trường hợp, thuật toán chỉ là tính toán đơn giản hoặc dãy các thủ
tục được thực hiện như một module phần mềm tự chứa.
− Cấu trúc dữ liệu được thiết kế đồng thời với thuật toán. Do các phương
thức thao tác các thuộc tính của lớp, thiết kế cấu trúc dữ liệu phản ánh
tốt nhất thuộc tính sinh ra trong thiết kế thuật toán của các phương thức
tương ứng.
21
− Các kiểu phương thức chia làm 3 loại chính:
+ Phương thức thao tác dữ liệu.
+ Phương thức thực hiện tính toán.
+ Phương thức điều khiển đối tượng cho sự kiện điều khiển.
− Để tối ưu hóa thiết kế hướng đối tượng. Rambaugh đã đưa ra các gợi ý
sau:
+ Xem lại mô hình đối tượng – quan hệ để đảm bảo rằng các thiết kế
được thực hiện sử dụng tài nguyên hiệu quả và nới lỏng các ràng buộc
thực hiện thêm vào các dư thừa nếu thấy cần thiết.
+ Xem lại thuộc tính cấu trúc dữ liệu và các thuật toán tương ứng để tăng
cường hiệu quả xử lí.
+ Tạo ra thuộc tính mới để giữ thông tin thừa kế, do đó tránh được việc
tính toán lại.
• Thiết kế lớp đối tượng
+ Quá trình thiết kế lớp bao gồm các công đoạn sau: Xác định tên lớp đối
tượng, xác định các quan hệ, xác định các thuộc tính, xác định các
trò là nơi thực thi các tính toán của từng class tương ứng trước khi
thêm, hay làm gì đó với hệ thống dữ liệu.
- Các phương thức thuôc nhóm kiểm tra. Đây là nơi kiểm tra các ràng
buộc về dữ liệu cho class tương ứng của bạn.
• Một số quy ước để thiết kế một class.
+ Để thiết kế một class trước tiên bạn phải đưa ra tên của nó là gì.
+ Xác định các phương thức, thuộc tính cho class đó như đã nói ở trên
+ Nếu các thuộc tính có cấu trúc phức tạp hoặc có các thuộc tính liên hệ
với nhau và nó có ngữ nghĩa cụ thể (ngoài đời có nó) thì nên tách nó ra
thành một lớp độc lập với nhau.
+ Khi 2 hay nhiều lớp có các thuộc tính chung thì nên tách thành một lớp
cha của các lớp đó và các lớp đó được kế thừa từ lớp cha của nó.
+ Khi gặp các thuộc tính có khả năng phân loại trong một số trường hợp
thì ta tách các thuôc tính con của nó thành thuộc tính con tương ứng.
• Thiết kế một mô hình class.
+ B1: Thiết kế các class như các cách ở trên đã nêu.
+ B2: Xác định quan hệ giữa các class.
+ B3: Xác định các quan hệ và bảng số của nó.
Bảng số của 2 lớp là phần mô tả dữ liệu giữa 2 lớp đó. Có các quan hệ
giữa các bảng số như sau:
I- Một nhiều
1 A thì tương ứng với nhiều B
1B tương ứng với 1A
II- Một - Một 1A thì tương ứng với 1B
1B tưng ứng với 1A.
1A tương ứng với 1B
III - nhiều nhiều.
1 A tương ứng với nhiều B.
1B tương ứng với nhiều A
25