Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Bài thuyết trình Công Nghệ Phần Mềm

No description
by

Moon Temple

on 3 November 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Bài thuyết trình Công Nghệ Phần Mềm

7.2.1 Coincidental Cohesion
7.2.2 Logical Cohesion
7.2.3 Temporal Cohesion
7.2.4 Procedural Cohesion
7.2.5 Communicational Cohesion
7.2.6 Functional Cohesion
7.2.7 Informational Cohesion THE END Thành viên nhóm thuyết trình thứ 16:
Trần Đăng Trình
Tống Thương Thủy
Hà Tiến Huy COHESION Bài thuyết trình Công Nghệ Phần Mềm Cùng tìm hiểu về Cohesion Glenford Myers (12/12/1946) Tại sao ta lại cần tới Cohesion? - Nếu không có Cohesion thì sao mà gắn kết các hoạt động trong Module lại được. Module là cái gì mà phải gắn kết? - Nếu một sản phẩm lớn gom tất cả code (mã nguồn) của nó vào cùng một chỗ, thì công đoạn bảo trì sẽ là một cơn ác mộng.
- Vì thế ta phải chia sản phẩm đó thành các mảnh code nhỏ, nó sẽ giúp ta dễ quản lý hơn. Và đó được gọi là các module. Thằng này tuần trước có đi học không nhỉ? Sinh viên Sinh viên Giáo sư Giáo sư 7.2.1 Coincidental Cohesion (Sự gắn kết ngẫu nhiên) - Một module có Coincidental Cohesion nếu nó thực hiện những hoạt động không có liên quan gì tới nhau.

Vd: Những hoạt động của một module có Concidental Cohesion:
- in trang kế tiếp.
- đảo chuỗi ký tự.
- Lấy phần tử thứ 5 cộng thêm 7.
- ... Tại sao module này lại có hiệu quả quá thấp? - Module có Coincidental Cohesion vướng phải 2 nhược điểm: Tại sao một module như thế lại tồn tại ? - Có nhiều nguyên nhân, nhưng phổ biến nhất là do những quy tắc cứng nhắc đại loại như: "Mỗi module phải có từ 35 - 50 hoạt động thực thi." Vd: Một công ty phần mềm khẳng định rằng trong các sản phẩm của họ, mỗi module sẽ có kích thước vừa phải. Chính vì như thế:
+ Những module quá nhỏ sẽ phải gom lại thành một module lớn hơn.
+ Những module đã được thiết kế hoàn chỉnh nhưng vì quá lớn nên lại phải tách ra thành các module nhỏ hơn. Ức chế thần công --> Kết quả là sinh ra các Module có Coincidental Cohesion. Trụi lông thần chưởng + Một là, làm giảm khả năng bảo trì của sản phẩm. Module 1 Module 2 Module n ... Phải lôi từng hoạt động của module ra bảo trì sao!!! + Hai là, những module này không thể tái sử dụng. Liệu có cách loại bỏ Concidental Cohesion? Quá dễ!!! - Module có Concidental Cohesion rất dễ dàng bị phá vỡ bởi vì các hoạt động trong nó chẳng liên quan gì đến nhau. Mày xoay cục này ra được mỗi mặt 1 màu tao cho mày cái xe điều khiển từ xa Anh hai Em trai 6 tuổi Anh hai Ví dụ Vd: Một đoạn code nhập thông tin:
...
NhanSu *NS; int chon;
for(int i = 0; i < n; i++)
{ cout<<"Nhap du lieu: giaovien bam 1, sinhvien bam 2, nguoigiupviec bam 3";
cin>>chon;
Switch (chon)
{ case 1: {giaovien p;
NS[i] = &p;
NS[i] -> nhap();}
case 2: {sinhvien p;
NS[i] = &p;
NS[i] -> nhap();}
case 3: {nguoigiupviec p;
NS[i] = &p;
NS[i] -> nhap();}
}
} Vấn đề 2 - Mã nguồn dùng cho một hoặc nhiều hoạt động có thể bị xáo trộn, dẫn tới những vấn đề cần phải bảo trì. 7.2.2 Logical Cohesion
(Sự gắn kết luận lý) - Một module có Logical Cohesion khi thực hiện những hoạt động có liên quan với nhau trên về lý thuyết, khi phần mềm chạy, một trong số những hoạt động đó được chọn ra bởi module gọi. Vd: Một phương thức có tên NewOperation, được gọi như sau:
functionCode = 7;
newOperation (functionCode, dummy1, dummy2, dummy3)
//dummy1, dummy2, dummy3 là các biến giả.
//không chạy nếu functionCode bằng 7. - Ta thấy NewOperation được gọi với 4 tham số, nhưng chỉ có functionCode được chú trọng, khi functionCode = 7 thì 3 biến kia trở nên dư thừa. --> Làm giảm khả năng đọc.
- Vì đây là gắn kết luận lý nên khi functionCode = 7, cả 4 biến trở nên rời rạc nhau hơn --> Khả năng lĩnh hội thấp. 7.2.3 Temporal Cohesion
(Sự gắn kết thời gian) - Một module có Temporal Cohesion khi nó thực hiện một chuỗi các hành động có liên quan với nhau về thời gian. Vd: Một module có Temporal Cohension là một đối tượng thực hiện các chức năng sau:
+ Mở tập tin cũ.
+ Tạo tập tin mới.
+ In tập tin.
+ Khởi tạo bảng khu vực kinh doanh.
+ Đọc bản ghi nhận giao dịch đầu tiên.
+ ... - Những hoạt động của đối tượng này ít có liên quan đến nhau nhưng lại có quan hệ mạnh mẽ đối với các hoạt động ở đối tượng khác. Đối tượng 1 Đối tượng 2 - Mở tập tin cũ.
- Tạo tập tin mới.
- In tập tin.
- Khởi tạo bảng khu vực kinh doanh.
- Đọc bản ghi nhận giao dịch đầu tiên.
- ... - Xóa tập tin.
- Lưu tập tin mới.
- Cập nhật bảng khu vực kinh doanh.
- In bảng khu vực kinh doanh
- Đổi tên bản ghi nhận giao dịch đầu tiên.
- ... - Vì thế, nếu như bảng khu vực kinh doanh bị thay đổi thì ít nhất sẽ có 2 đối tượng như thế cũng sẽ phải thay đổi. ==> Điều này không chỉ làm tăng khả năng xuất hiện lỗi hồi quy, mà còn khiến cho một vài đối tượng bị bỏ qua nếu số lượng đối tượng bị ảnh hưởng là quá nhiều. F.A !!! Ít nhất 2 cô sẽ theo bạn !!! Cách dễ nhất để giải quyết!!! - Tốt hơn hết là đặt toàn bộ những hoạt động có liên quan tới bảng khu vực kinh doanh vào cùng một đối tượng. --> Dẫn đến một kết nối khác sẽ được tìm hiểu ở phần 7.2.7 - Ngoài ra, một module có Temporal Cohesion gần như không thể tái sử dụng ở sản phẩm khác. Đối tượng 3 - Khởi tạo bảng khu vực kinh doanh.
- Cập nhật bảng khu vực kinh doanh.
- In bảng khu vực kinh doanh.
- ... Vấn đề 1 - Gắn kết mà đã là luận lý sẽ khiến cho người dùng khó có thể biết được nó gắn kết với nhau như thế nào, nếu chỉ nhìn vào giao diện thì người dùng chưa thể đoán được nó thực hiện chức năng gì. --> Giao diện khó hiểu. Vd: Một đối tượng thực hiện đủ các lệnh nhập xuất 1. Mã nguồn tất cả nhập xuất
2. Mã nguồn chỉ nhập
3. Mã nguồn chỉ xuất
4. Mã nguồn nhập xuất đĩa, băng
5. Mã nguồn nhập xuất đĩa
6. Mã nguồn nhập xuất băng.
7. Mã nguồn nhập đĩa
8. Mã nguồn xuất đĩa
9. Mã nguồn nhập băng
10. Mã nguồn xuất băng
...
39. Mã nguồn nhập bàn phím + Nếu một đơn vị băng mới được cài vào, thì những phần 1, 2, 3, 4, 6, 9, 10 sẽ phải thay đổi. + Những thay đổi này có thể ảnh hưởng tới các dạng nhập xuất khác. ==> Sự xáo trộn này là đặc trưng riêng của Module có Logical Cohesion - Ngoài ra, module này rất khó tái sử dụng. Mời các bạn đón xem phần tiếp theo ở nhóm 17 Bạn là một nữ sinh bị "yêu râu xanh" đuổi sát nút!!! Hãy dũng cảm đứng lại vén váy lên vì có chạy cũng không kịp!!! Khi tên "yêu râu xanh" tụt quần xuống thì đó là cơ hội!!! Vì theo logic học thì:
"kẻ túm váy" chạy nhanh hơn "đứa tụt quần"
Full transcript