2.3.2 Biểu đồ cấu trúc• Biểu đồ triển khai deployment diagram Biểu diễn cấu trúc phần cứng và các thành phần phần mềm của hệ thống... 2.3.2 Biểu đồ cấu trúc• Biểu đồ thành phần compone
Trang 1Ph ân tích và thiết kế hướng
đối tượng
Analysis and Design)
Giảng viên: Phạm Ngọc Nam
Trang 2 Làm theo nhóm tối đa 5 sinh viên
Nội dung: phân tích và thiết kế hệ thống sử dụng Rational
Trang 3Nội dung
1 Giới thiệu chung về phân tích và thiết kế hệ thống
2 Giới thiệu về phân tích và thiết kế hướng đối
tượng với UML
3 Lập kế hoạch
4 Phân tích hệ thống
5 Thiết kế hệ thống
6 Triển khai hệ thống
Trang 4Tài liệu tham khảo
• Systems Analysis and Design with UML Version
2.0-An object oriented approach; Alan Dennis,
Barbara Haley Wixom, David Tegarden.
• www.uml.org
• www.rational.com
• www.Google.com
Trang 5tích và thiết kế hệ thống
1.1 Giới thiệu
1.2 Quy trình phát triển hệ thống
1.3 Các phương pháp phát triển hệ thống
Trang 61.1 Giới thiệu
Trang 7 Hệ thống sẽ làm việc như thế nào?
Tri ển khai hệ thống
Trang 8Lập kế hoạch
• Xác định giá trị kinh doanh của hệ thống
• Phân tích tính khả thi
• Xây dựng kế hoạch công việc
• Xác định nguồn nhân lực cho dự án
• Điều khiển và quản lý dự án
Trang 9Phân tích
• Phân tích hệ thống
• Thu thập các nguồn thông tin
• Mô hình hoá quá trình
• Mô hình hóa dữ liệu
Trang 10Thiết kế
• Xác định chiến lược thiết kế
• Thiết kế cấu trúc
• Thiết kế giao diện
• Thiết kế cơ sở dữ liệu
• Thiết kế chương trình
Trang 11Triển khai
• Xây dựng hệ thống
• Cài đặt hệ thống
Trang 12Các pha và kết quả của từng pha
PlanningAnalysisDesignImplementation
Project PlanSystem Proposal
System SpecificationNew System and Maintenance Plan
Trang 13 Phương pháp thác nước (waterfall method)
Phương pháp phát triển song song (Parallel
development)
• Ph ương pháp phát triển nhanh ứng dụng ( RAD)
Phương pháp phát triển theo các pha
Phương pháp xây dựng nguyên mẫu (prototyping)
Th ông thường (regular)
Lo ại bỏ ( throwaway )
• Ph ương pháp phát triển rất nhanh ( Agile
development)
Trang 141.3.1 Thiết kế cấu trúc
• Dự án sẽ tiến triển từ bước này sang bước tiếp
theo một cách có hệ thống
• Thông thường, một bước phải được hoàn thành
trước khi bắt đầu bước tiếp theo
Trang 15Phương pháp thác nước
Trang 16Phương pháp thác nước
• Ưu điểm:
Trước khi lập trình thì các yêu cầu về hệ thống được
xác định rất chi tiết và đầy đủ => giảm thiểu được sự
thay đổi về yêu cầu trong quá trình phát triển hệ thống
• Nhược điểm:
Thời gian từ khi đề xuất dự án đến khi có sản phẩm cuối cùng thường rất dài (vài tháng -> vài năm)
Trang 17Phương pháp phát triển song song
Trang 19Phương pháp phát triển theo pha
Trang 20Phương pháp xây dựng nguyên mẫu thông
thường
Trang 21Phương pháp xây dựng nguyên mẫu loại bỏ
Trang 221.3.3 Lựa chọn phương pháp phù hợp
• Tiêu chí:
Độ rõ ràng, đầy đủ của các yêu cầu của người sử dụng
Khả năng, mức độ thành thạo về công nghệ
Độ phức tạp của hệ thống
Độ tin cậy của hệ thống
Quỹ thời gian
Trang 231.3.3 Lựa chọn phương pháp phù hợp
Trang 24thiết kế hướng đối tượng với UML
Trang 262.1 Giới thiệu
• Lịch sử phát triển của UML
Trang 27UML 1.1 (OMG Standard)
UML 1.3 (extensibility) UML 1.4 (action semantics)
UML 1.4.1
1996
1997 1998 2001 2002 2003
UML 2.0
Trang 282.1 Giới thiệu
• Thiết kế cấu trúc và thiết kế hướng đối tượng
Trang 292.1 Giới thiệu
• Thiết kế cấu trúc và thiết kế hướng đối tượng
Trang 30hướng đối tượng
Trang 312.2.1 Lớp và đối tượng
• Lớp (Class) – Template to define specific
instances or objects
• Đối tượng (Object) – Instantiation of a class
• Thuộc tính (Attributes) – Describes the object
• Chức năng (Behaviors) – specify what object can
do
Trang 322.2.1 Lớp và đối tượng
Trang 342.2.2 Phương thức và message
• Phương thức (Methods) implement an object’s behavior
Analogous to a function or procedure
• Messages are sent to trigger methods
Procedure call from one object to the next
Trang 352.2.2 Phương thức và message
Trang 362.2.3 Tóm lược và ẩn thông tin
• Encapsulation
combination of data and process into an entity
• Information Hiding
Only the information required to use a software module
is published to the user
Trang 372.2.4 Thừa kế
• Superclasses or general classes are at the top of a
hierarchy of classes
• Subclasses or specific classes are at the bottom
• Subclasses inherit attributes and methods from
classes higher in the hierarchy
Trang 382.2.4 Thừa kế
Trang 392.2.4 Thừa kế
Trang 402.2.5 Đa hình thái và liên kết động
• Polymorphism
A message can be interpreted differently by different classes of objects
• Dynamic Binding
Sometimes called late binding
Delays typing or choosing a method for an object until run-time
• Static Binding
Type of object determined at compile time
Trang 412.2.5 Đa hình thái và liên kết động
Trang 424 #define SHAPE_H
5
6 class Shape {
7 public:
8 virtual double area() const { return 0.0; }
9 virtual double volume() const { return 0.0; }
10
11 // pure virtual functions overridden in derived classes
12 virtual void printShapeName() const = 0;
13 virtual void print() const = 0;
30 Point( int = 0, int = 0 ); // default constructor
31 void setPoint( int, int );
32 int getX() const { return x; }
33 int getY() const { return y; }
Trang 4466 void setRadius( double );
67 double getRadius() const;
68 virtual double area() const;
69 virtual void printShapeName() const { cout << "Circle: "; }
70 virtual void print() const;
Trang 4584 Circle::Circle( double r, int a, int b )
85 : Point( a, b ) // call base-class constructor
92 double Circle::area() const
93 { return 3.14159 * radius * radius; }
Trang 46114 virtual double area() const;
115 virtual double volume() const;
116 virtual void printShapeName() const { cout << "Cylinder: "; }
117 virtual void print() const;
Trang 47131 Cylinder::Cylinder( double h, double r, int x, int y )
132 : Circle( r, x, y ) // call base-class constructor
147 double Cylinder::volume() const
148 { return Circle::area() * height; }
Trang 48173 void virtualViaPointer( const Shape * );
174 void virtualViaReference( const Shape & );
181 Point point( 7, 11 ); // create a Point
182 Circle circle( 3.5, 22, 8 ); // create a Circle
183 Cylinder cylinder( 10, 3.3, 10, 10 ); // create a Cylinder
184
185 point.printShapeName(); // static binding
Trang 492 Function calls
189 circle.printShapeName(); // static binding
190 circle.print(); // static binding
191 cout << '\n';
192
193 cylinder.printShapeName(); // static binding
194 cylinder.print(); // static binding
208 // Loop through arrayOfShapes and call virtualViaPointer
209 // to print the shape name, attributes, area, and volume
210 // of each object using dynamic binding.
211 cout << "Virtual function calls made off "
217 // Loop through arrayOfShapes and call virtualViaReference
218 // to print the shape name, attributes, area, and volume
219 // of each object using dynamic binding.
Trang 50229 // Make virtual function calls off a base-class pointer
230 // using dynamic binding.
231 void virtualViaPointer( const Shape *baseClassPtr )
239 // Make virtual function calls off a base-class reference
240 // using dynamic binding.
241 void virtualViaReference( const Shape &baseClassRef )
Trang 522.3.1 Giới thiệu về UML
"The Unified Modeling Language (UML) is a graphical language for visualizing, specifying, constructing, and documenting the artifacts of a software-intensive
system.”
• UML chỉ đơn thuần là ngôn ngữ đồ hoạ để mô hình hoá chứ không phải là phương pháp để phát triển hệ thống
Grady Booch, Ivar Jacobsen, Jim Rumbaugh
Rational Software
Trang 532.3.1 Giới thiệu về UML
• UML 2.0 cung cấp 14 biểu đồ để mô hình hoá cấu
trúc và chức năng của hệ thống, chia làm 2 nhóm:
Biểu đồ mô hình cấu trúc
Biểu đồ mô hình chức năng
Trang 542.3.2 Biểu đồ cấu trúc
• 6 loại biểu đồ cấu trúc:
Biểu đồ lớp (Class)
Biểu đồ đối tượng (Object)
Biểu đồ gói (package)
Biểu đồ triển khai (Deployment)
Biểu đồ thành phần (Component)
Biểu đồ cấu trúc phức hợp (Composite structure
diagrams)
Trang 552.3.2 Biểu đồ cấu trúc
• Biểu đồ lớp (class diagram)
Biểu diễn mối quan hệ giữa các lớp
Trang 562.3.2 Biểu đồ cấu trúc
• Biểu đồ đối tượng (object diagram)
Biểu diễn mối quan hệ giữa các đối tượng
Trang 572.3.2 Biểu đồ cấu trúc
• Biểu đồ gói (package diagram)
Biểu đồ gói gộp các thành phần khác nhau của UML (ví dụ: lớp) để tạo thành thành phần lớn hơn
Trang 582.3.2 Biểu đồ cấu trúc
• Biểu đồ triển khai (deployment diagram)
Biểu diễn cấu trúc phần cứng và các thành phần phần mềm của hệ thống
Trang 592.3.2 Biểu đồ cấu trúc
• Biểu đồ thành phần (component diagram)
Biểu diễn quan hệ giữa các thành phần của hệ thống
Trang 602.3.2 Biểu đồ cấu trúc
• Biểu đồ cấu trúc phức hợp (composite structure diagram)
Minh hoạ chi tiết cấu trúc bên trong của một lớp
Trang 612.3.3 Biểu đồ chức năng
• 8 loại biểu đồ chức năng
Biểu đồ hoạt động (activity diagram)
Biểu đồ tương tác (interaction diagrams)
Biểu đồ chuỗi tuần tự (sequence diagram)
Biểu đồ cộng tác (communication/collaboration diagram)
Biểu đồ khát quát tương tác (interaction overview diagram)
Biểu đồ thời gian (timing diagram)
Biểu đồ máy trạng thái (state machines)
Máy trạng thái chức năng (behavior state machines)
Máy trạng thái giao thức (protocol state machines)
Biểu đồ ca sử dụng (use case diagram)
Trang 622.3.3 Biểu đồ chức năng
• Biểu đồ hoạt động (activity
diagram)
Được dùng để mô tả luồng
công việc của hệ thống hoặc
luồng hoạt động trong một
ca sử dụng hoặc mô tả thiết
kế chi tiết của một phương
thức (method)
Trang 632.3.3 Biểu đồ chức năng
• Biểu đồ chuỗi tuần tự (sequence diagram)
Mô tả các hoạt động của các đối tượng trong một ca sử dụng dựa vào thứ tự xuất hiện theo thời gian
Trang 642.3.3 Biểu đồ chức năng
• Biểu đồ cộng tác (collaboration diagram)
Là cách biểu diễn khác của biểu đồ chuỗi tuần tự nhưng tập trung vào mối quan hệ và giao tiếp giữa các đối tượng
Trang 652.3.3 Biểu đồ chức năng
• Biểu đồ khát quát tương tác (interaction overview diagram)
Được dùng để mô tả tương tác giữa các đối tượng trong các ca sử dụng phức tạp
Ít được sử dụng
• Biểu đồ thời gian (timing diagram)
Được dùng để mô tả tương tác giữa các đối tượng theo thời gian Chủ yếu được dùng để mô tả sự thay đối trạng thái của đối tượng khi có tác động của một sự kiện theo thời gian.
Được dùng để phát triển các hệ thống thời gian thực và hệ thống nhúng
Trang 672.3.3 Biểu đồ chức năng
• Biểu đồ máy trạng thái giao thức (protocol state machines)
Được dùng để mô tả giao thức giữa các lớp
Ví dụ: open database -> Query or update
• Biểu đồ ca sử dụng (use case diagram)
Được dùng để mô tả tương tác giữa một hệ thống với người sử dụng hoặc với các hệ thống khác có tương tác với nó.
Là công cụ để mô tả các yêu cầu của hệ thống
Là một trong những công cụ quan trọng nhất trong phân tích và thiết kế hướng đối tượng
Trang 682.3.3 Biểu đồ chức năng
Trang 692.3.3 Biểu đồ chức năng
Trang 702.3.3 Biểu đồ chức năng
Trang 722.3.4 Các cơ chế mở rộng
• Nhãn:giá trị (tagged values)
Là một cặp chuỗi ký tự: nhãn (tag) và giá trị (value) được dùng để
bổ sung thông tin cho một phần tử nào đó (lớp, đối tượng, quan hệ
…)
Nhãn và giá trị được đặt trong ngoặc { }
Trang 732.3.4 Các cơ chế mở rộng
• Khuôn mẫu (stereotype)
Cho phép mở rộng UML bằng cách sử dụng các phần tử mô hình hoá đã có sẵn trong UML
Khuôn mẫu có thể sử dụng ràng buộc và tagged values
Khuôn mẫu được đặt trong dấu << >>
Trang 742.3.5 Tóm tắt
Trang 75tượng với UML 2.0
2.4.1 Đặc điểm cơ bản của OOAD
2.4.2 Ưu điểm của OOAD
2.4.3 The Unified Process
2.4.4 The MOOSAD
Trang 762.4.1 Đặc điểm cơ bản của OOAD
• Use-case driven
• Architecture Centric
• Cấu trúc phần mềm quyết định việc mô tả, xây dựng và
viết tài liệu hệ thống
• 3 dạng cấu trúc của một hệ thống:
• Chức năng (functional view): chức năng bên ngoài của hệ thống
từ góc nhìn của người sử dụng : biểu đồ ca sử dụng, biểu đồ hoạt động
• Cấu trúc tĩnh (static view): lớp, thuộc tính, phương thức, quan hệ
• Cấu trúc động (dynamic view): chức năng bên trong của hệ thống: biểu đồ máy trạng thái chức năng
• Iterative and Incremental
Trang 772.4.2 Ưu điểm của OOAD
• Việc chia nhỏ một hệ thống lớn thành các module
sẽ giúp cho việc giải quyết vấn đề dễ dàng hơn, dễ chia sẻ giữa các thành viên của dự án và dễ dàng trao đổi với người dùng về các yêu cầu của hệ
Trang 782.4.2 Ưu điểm của OOAD
Trang 792.4.3 The Unified process
• Unified process là một phương pháp phát triển hệ
thống trong đó quy định khi nào thì sử dụng các
kỹ thuật UML và sử dụng chúng như thế nào trong quá trình phân tích và thiết kế hệ thống.
Tác giả: Booch, Jacobsen, Rumbaugh
Là phương pháp hướng đối tượng
Không phải là một quy trình phát triển phần mềm hoàn thiện
Không xét đến các vấn đề về phân bổ nhân lực, ngân quỹ, quản
lý hợp đồng
Không quy định về các hoạt động bảo trì hay hỗ trợ khách hàng
Không xét đến các vấn đề tương tác giữa các dự án
Trang 802.4.3 The Unified process
Trang 812.4.3 The Unified process
• Pha khởi tạo (Inception): giống như pha lập kế
hoạch
Mô hình hoá giá trị kinh doanh của hệ thống (business modeling) *
Xác định yêu cầu (requirements)*
Phân tích (analysis)*
Thiết kế (design)
Thực hiện (implementation)
Kiểm tra (test)
Môi trường phát triển (environment)*
Phạm vi của dự án
Các yêu cầu và ràng buộc quan trọng
Kế hoạch dự án bước đầu
Miêu tả tính khả thi và rủi ro của dự án
Lựa chọn môi trường cần thiết để phát triển hệ thống
Trang 822.4.3 The Unified process
• Pha phát triển (elaboration): hoàn thiện mô hình
kinh doanh, đánh giá lại rủi ro và hoàn thiện kế
hoạch dự án
Các bước liên quan:
Thu thập yêu cầu (requirements)
Phân tích (analysis)*
Thiết kế (design)*
Thực hiện (implementation)
Kiểm tra (test)
Triển khai (deployment)
Quản lý cấu hình và thay đổi (configuration and change management)
Kết quả:
Bi ểu đồ cấu trúc và chức năng UML
Phi ên bản hoạt động đầu tiên của hệ thống
Trang 832.4.3 The Unified process
• Pha xây dựng (construction): tập trung chủ yếu
vào lập trình
Các bước liên quan:
Thu thập yêu cầu (requirements)
Phân tích (analysis)
Thiết kế (design)
Thực hiện (implementation)*
Kiểm tra (test)
Triển khai (deployment)
Quản lý cấu hình và thay đổi (configuration and change management)*
Kết quả:
Phiên bản beta của hệ thống
Trang 842.4.3 The Unified process
• Pha chuyển tiếp (transition): tập trung chủ yếu vào
kiểm tra và triển khai
Các bước liên quan:
Thu thập yêu cầu (requirements)
Phân tích (analysis)
Thiết kế (design)
Thực hiện (implementation)
Kiểm tra (test)*
Triển khai (deployment)*
Quản lý cấu hình và thay đổi (configuration and change management)*
Trang 852.4.3 The Unified process
• Các bước kỹ thuật (Engineering workflows)
1 Mô hình hoá giá trị kinh doanh (business modeling)
Diễn ra chủ yếu trong pha khởi tạo
Phát hiện vấn đề và xác định các dự án tiềm năng
Xác định giá trị kinh doanh mà dự án đem lại
Thu thập dữ liệu và mô hình hoá ca sử dụng có thể được sử dụng
2 Xác định yêu cầu (requirements)
Xác định yêu cầu về chức năng và cả không chức năng
Yêu cầu được thu thập từ người sử dụng, người quản lý người
Trang 862.4.3 The Unified process
4 Thiết kế
Chuyển từ mô hình phân tích sang mô hình thiết kế
Thiết kế giao diện, cơ sở dữ liệu, cấu trúc vật lý của hệ thống, thiết kế chi tiết các lớp
5 Thực hiện (implementation)
Lập trình: viết các lớp, chương trình và sử dụng các lớp trong thư viện
Tích hợp các module
6 Kiểm tra (Test)
Kiểm tra tích hợp hệ thống, chức năng, kiểm tra khả năng chấp nhận của người sử dụng …
Việc kiểm tra đuợc tiến hành trong suốt quá trình phát triển của hệ thống
7 Triển khai (deployment)
Đóng gói phần mềm, phân phối, cài đặt và beta testing