Em xin được cảm ơn các GS, TS, các nhà khoa học đã giảng dạy, dìu dắt, giúp đỡ em trong quá trình học tập, thực hành, làm bài tập, đọc và nhận xét luận văn của em, giúp em hiểu thấu đáo
Trang 1Đại học Quốc gia Trường Đại học Công nghệ
ĐÀO THỊ KIÊN
TÁI KỸ NGHỆ TRONG PHÁT TRIỂN PHẦN MỀM HƯỚNG ĐỐI TƯỢNG
LUẬN VĂN THẠC SỸ
HÀ NỘI -7/2008
Trang 2LỜI CẢM ƠN
Trước tiên em xin được bày tỏ sự trân trọng và lòng biết ơn đối với thày giáo PGS.TS Nguyễn Văn Vỵ, giảng viên Bộ môn Công nghệ phần mềm – Khoa Công nghệ thông tin – Trường Đại học Công nghệ - ĐHQGHN Trong suốt thời gian học và làm luận văn tốt nghiệp, thầy đã dành rất nhiều thời gian quí báu để tận tình chỉ bảo, hướng dẫn, định hướng cho em trong việc nghiên cứu, thực hiện luận văn
Em xin được cảm ơn các GS, TS, các nhà khoa học đã giảng dạy, dìu dắt, giúp
đỡ em trong quá trình học tập, thực hành, làm bài tập, đọc và nhận xét luận văn của
em, giúp em hiểu thấu đáo hơn lĩnh vực mà em nghiên cứu, những hạn chế mà em cần khắc phục trong việc học tập, nghiên cứu và thực hiện bản luận văn này, giúp em có hướng học tập, nghiên cứu hiệu quả và thiết thực hơn
Tôi cũng xin chân thành cảm ơn Ban giám hiệu Nhà trường, Khoa Tự nhiên, các Phòng ban của Nhà trường, Trường Cao Đẳng Cộng Đồng – Hải Phòng đã hết sức tạo điều kiện cho tôi trong quá trình học và làm luận văn này
Xin cảm ơn các bạn bè, đồng nghiệp và nhất là các thành viên trong gia đình đã tạo mọi điều kiện tốt nhất, động viên, cổ vũ tôi trong suốt quá trình học và làm luận văn tốt nghiệp
Hà Nội, tháng 7 năm 2008
Đào Thị Kiên
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan những kết quả đạt được trong luận văn này là do tôi nghiên cứu, tổng hợp và thực hiện, không sao chép lại bất kỳ điều gì của người khác Toàn bộ những điều được trình bày trong khóa luận hoặc là của cá nhân, hoặc được tham khảo
và tổng hợp từ các nguồn tài liệu khác nhau Tất cả tài liệu tham khảo, tổng hợp đều được trích dẫn với nguồn gốc rõ ràng
Tôi xin chịu hoàn toàn trách nhiệm về lời cam đoan của mình Nếu có điều gì sai, tôi xin chịu mọi hình thức kỷ luật theo qui định
Hà Nội, tháng 7 năm 2008
Đào Thị Kiên
Trang 4TÓM TẮT
Bản luận văn đã hệ thống hóa vấn đề tái kỹ nghệ phần mềm và vận dụng nó trong việc phát triển phần mềm Luận văn cũng nghiên cứu quy trình phát triển phần mềm RUP cho phát triển phần mềm hướng đối tượng và các công cụ trợ giúp cho quá trình tái kỹ nghệ phần mềm và vận dụng chúng vào một ứng dụng thực tế
Việc áp dụng quy trình tái kỹ nghệ giúp ta giải quyết nhu cầu tiến hóa hệ thống
để tiếp tục sử dụng lại, để thực hiện công việc bảo trì phần mềm tốt hơn, mang lại hiệu quả nhanh hơn thông qua những công cụ trực quan Những công cụ này trợ giúp việc phân tích mã nguồn, tái cấu trúc, kỹ nghệ ngược, phân tích thiết kế hệ thống và sử dụng lại qua luân chuyển thành phần Bộ công cụ Rational Software Architecture của IBM cũng được sử dụng cho quá trình tái kỹ nghệ bao gồm: soạn các loại mô hình, soạn mã lệnh gắn trực tiếp với mô hình lớp, cho phép thiết lập bộ dịch để dịch tại chỗ
Vì hệ thống ứng dụng là hệ nhúng, nên các công cụ và kỹ thuật nhúng cũng được giới thiệu và sử dụng
Luận văn cũng tập trung vào việc áp dụng quy trình tái kỹ nghệ phần mềm và các công cụ trợ giúp cho hệ thống cảnh báo thiên tai Đây là một hệ mạng xử lý phân tán không dây Các nút mạng là những bộ cảm ứng thu nhận các yếu tố môi trường truyền
về nút cơ sở Bài toán đặt ra là cần phải nâng cấp hệ thống phần mềm của hệ này để giảm tiêu hao năng lượng và tăng tuổi thọ của nó Phương pháp lựa chọn là phương pháp tái kỹ nghệ Hệ thống được tái kỹ nghệ đã được đánh giá và so sánh kết quả với
hệ thống ban đầu và cho kết quả tốt, đặc biệt về mức tiết kiệm năng lượng
Trang 5MỤC LỤC
LỜI CẢM ƠN
LỜI CAM ĐOAN
TÓM TẮT
MỤC LỤC
BẢNG CÁC CHỮ VIẾT TẮT
DANH MỤC CÁC HÌNH VẼ
DANH MỤC CÁC BẢNG
MỞ ĐẦU 1
Chương 1 TÁI KỸ NGHỆ PHẦN MỀM 3
1.1 Tổng quan về tái kỹ nghệ 3
1.1.1 Bảo trì 3
1.1.2 Tái kỹ nghệ 4
1.2 Dịch mã nguồn Error! Bookmark not defined
1.3 Kỹ nghệ ngược Error! Bookmark not defined
1.4 Phát triển cấu trúc chương trình Error! Bookmark not defined
1.5 Môdul hóa chương trình Error! Bookmark not defined
1.6 Tái kỹ nghệ dữ liệu Error! Bookmark not defined
1.7 Kết luận Error! Bookmark not defined
Chương 2 CÁC CÔNG CỤ TRỢ GIÚP TÁI KỸ NGHỆError! Bookmark not defined
2.1 Giới thiệu công cụ Rational Software ArchitectureError! Bookmark not defined
2.2 Công cụ lập trình nhúng Error! Bookmark not defined
2.3 Dịch xuôi, dịch ngược trên Rational Software ArchitectureError! Bookmark not defined 2.4 Thiết kế hệ thống bằng Rational Software ArchitectureError! Bookmark not defined
2.5 Phát triển ứng dụng C/C++ trên Rational Software ArchitectureError! Bookmark not defined Chương 3 HỆ THỐNG CẢNH BÁO THIÊN TAI Error! Bookmark not defined
Trang 63.1 Cấu trúc hệ thống cảnh báo thiên tai Error! Bookmark not defined
3.2 Chức năng và hoạt động của hệ thống Error! Bookmark not defined
3.2.1 Mô tả hoạt động của hệ thống cảnh bảo thiên tai Error! Bookmark not
defined
3.2.2 Hệ thống xử lý thông tin truyền về Error! Bookmark not defined
3.3 Những vấn đề đặt ra cần tiến hóa hệ thống Error! Bookmark not defined
3.4 Lựa chọn giải pháp tái kỹ nghệ Error! Bookmark not defined
Chương 4 TÁI KỸ NGHỆ TRONG HỆ THỐNG CẢNH BÁO THIÊN TAIError! Bookmark not defined 4.1 Tiến trình tái kỹ nghệ hệ thống cảnh báo Error! Bookmark not defined
4.1.1 Sơ đồ tiến trình Error! Bookmark not defined
4.1.2 Các bước thực hiện Error! Bookmark not defined
4.1.2.1 Từ mã nguồn của hệ thống chuyển sang mô hình trực quan Error!
Bookmark not defined
4.1.2.2 Từ mô hình trực quan cấu trúc lại chương trìnhError! Bookmark not
defined
4.1.2.3 Modul hóa chương trình Error! Bookmark not defined
4.1.2.4 Tái kỹ nghệ dữ liệu Error! Bookmark not defined
4.1.2.5 Tiến trình dịch chương trình Error! Bookmark not defined
4.2 Quy trình nạp phần mền cho từng nút mạng và vận hành hệ thốngError! Bookmark not defined
4.3 Kết quả đạt được và một số đánh giá Error! Bookmark not defined
4.3.1 Cấp nguồn cho cả nút gốc và các nút mạng Error! Bookmark not defined
4.3.2 Đánh giá kết quả qua các phép đo Error! Bookmark not defined
4.3.3 Nhận xét Error! Bookmark not defined
KẾT LUẬN Error! Bookmark not defined
DANH MỤC CÁC CÔNG TRÌNH CỦA TÁC GIẢ Error! Bookmark not defined
TÀI LIỆU THAM KHẢO 4
Trang 7BẢNG CÁC CHỮ VIẾT TẮT
1 UML Unified Modelling Language
2 OOA Object Oriented Analysis
3 OOD Object Oriented Design
4 OOP Object Oriented Programming
5 RUP Rational Unified Process
6 WSN Wireless Sensor Network
7 VĐK Vi điều khiển
8 SA/SD Structured Analysis/Structured Design
9 LCD Liquid Crystal Display
10 OO Object Oriented
11 RSA Rational Software Architecture
12 HDF Hardware Definition Files
13 HAL Hardware Abstraction Library
14 CUL Chipcon Utility Library
Trang 8DANH MỤC CÁC HÌNH VẼ
Hình 1-1 Tiến trình kỹ nghệ phần mềm xuôi và tái kỹ nghệ phần mềm Error! Bookmark not defined.
Hình 1-2 Tiến trình tái kỹ nghệ phần mềm Error! Bookmark not defined Hình 1-3 Các cách tiếp cận tái kỹ nghệ Error! Bookmark not defined Hình 1-4 Tiến trình dịch chương trình Error! Bookmark not defined Hình 1-5 Tiến trình kỹ nghệ ngược Error! Bookmark not defined Hình 1-6 Chương trình điều khiển với ống dẫn điện logic Error! Bookmark not defined.
Hình 1-7 Chương trình điều khiển cấu trúc Error! Bookmark not defined Hình 1-8 Đơn giản hóa điều kiện Error! Bookmark not defined Hình 1-9 Kiến trúc lại chương trình tự động Error! Bookmark not defined Hình 1-10 Tiếp cận tới việc tái kỹ nghệ dữ liệu Error! Bookmark not defined Hình 1-11 Di chuyển dữ liệu Error! Bookmark not defined Hình 1-12 Tiến trình tái kỹ nghệ dữ liệu Error! Bookmark not defined Hình 2-1 Biểu đồ Ca sử dụng – Use Case Error! Bookmark not defined Hình 2-2 Biểu đồ Lớp-Class Error! Bookmark not defined Hình 2-3 Biểu đồ tuần tự - Sequence Error! Bookmark not defined Hình 2-4 Biểu đồ truyền thông – Communication Error! Bookmark not defined Hình 2-5 Biểu đồ máy trạng thái – State Machine Error! Bookmark not defined Hình 2-6 Biểu đồ hoạt động - Activity Error! Bookmark not defined Hình 2-7 Biểu đồ thành phần - Component Error! Bookmark not defined Hình 2-8 Biểu đồ cấu trúc tổng hợp – Composite Structure Error! Bookmark not defined.
Hình 2-9 Biểu đồ triển khai - Deployment Error! Bookmark not defined Hình 2-10 Hỗ trợ trong việc soạn mô hình Error! Bookmark not defined Hình 2-11 Cửa sổ khung nhìn điều khiển Error! Bookmark not defined Hình 2-12 Chuyển đổi mô hình Error! Bookmark not defined Hình 2-13- Khung nhìn khai thác các tài nguyên Error! Bookmark not defined Hình 2-14 Tìm kiếm và sinh mô hình Error! Bookmark not defined Hình 2-15 Tạo báo cáo các yêu cầu thực hiện Error! Bookmark not defined Hình 2-16 Phân tích mô hình và xem lại mã Error! Bookmark not defined Hình 2-17 Tìm mẫu phù hợp Error! Bookmark not defined Hình 2-18 Công cụ phát triển Enterprise Java Bean Error! Bookmark not defined Hình 2-19 Công cụ phát triển và quản trị cơ sở dữ liệu Error! Bookmark not defined Hình 2-20 Công cụ phát triển XML Error! Bookmark not defined Hình 2-21 Thiết lập cấu hình môi trường C và C++ Error! Bookmark not defined Hình 2-22 Trực quan hóa các quan hệ của cở sở dữ liệu Error! Bookmark not defined.
Hình 2-23 Mô hình phân cấp chức năng Error! Bookmark not defined Hình 2-24 Mô hình phần mềm nhúng CC1010 Error! Bookmark not defined Hình 2-25 Dịch xuôi và dịch ngược trong UML Error! Bookmark not defined.
Trang 9Hình 2-26 Một bước lặp của quá trình tái thiết kế với xuất phát là mã nguồn Error! Bookmark not defined.
Hình 2-27 Một bước lặp của quá trình tái thiết kế xuất phát là mô hình thiết kế Error! Bookmark not defined.
Hình 2-28 Tạo dự án trên C/C++ Error! Bookmark not defined Hình 2-29 Dịch chương trình Error! Bookmark not defined Hình 2-30 Cấu hình lại chương trình Error! Bookmark not defined Hình 2-31 Gỡ rối chương trình Error! Bookmark not defined Hình 2-32 Sử dụng bộ soạn thảo UML để trực quan hóa ứng dụng Error! Bookmark not defined.
Hình 2-33 Sử dụng bộ soạn thảo UML để soạn ứng dụng trên C/C++ Error! Bookmark not defined.
Hình 2-34 Thêm lớp mới vào ứng dụng Error! Bookmark not defined Hình 2-35 Mô hình UML tự động cập nhật Error! Bookmark not defined Hình 2-36 Hồ sơ dẫn hướng cho C++ điều khiển quá trình sinh mã Error! Bookmark not defined.
Hình 2-37 Sinh mã vào dự án Error! Bookmark not defined Hình 3-1 Hệ thống cảnh báo cháy rừng Error! Bookmark not defined Hình 3-2 Cấu trúc mạng cảm nhận không dây Error! Bookmark not defined Hình 3-3 Hệ thống cảnh báo cháy rừng Error! Bookmark not defined Hình 3-4 Biểu đồ ca sử dụng của nút mạng cảm nhận không dây Error! Bookmark not defined.
Hình 3-5 Biểu đồ ca sử dụng với hệ thống xử lý thông tin Error! Bookmark not defined.
Hình 3-6 Biểu đồ hoạt động của nút mạng WSN Error! Bookmark not defined Hình 3-7 Biểu đồ tuần tự của hệ thống Error! Bookmark not defined.
Hình 3-8 Mô hình hệ thống phần mền được mô tả phần mền nhúng trên Rational
Error! Bookmark not defined Hình 4-1 Quy trình tái kỹ nghệ hệ thống cảnh báo thiên tai Error! Bookmark not defined.
Hình 4-2 Từ mã nguồn hệ thống chuyển sang mô hình trực quan Error! Bookmark not defined.
Hình 4-3 Các thành phần của chương trình được chuyển về mô hình Error! Bookmark not defined.
Hình 4-4 Cửa sổ màn hình soạn thảo mã nguồn Error! Bookmark not defined Hình 4-5 Sơ đồ tiến trình cấu trúc chương trình Error! Bookmark not defined Hình 4-6 Tiến trình kiến trúc lại chương trình Error! Bookmark not defined Hình 4-7 Thuật toán làm việc thu nhận nút mạng cảm nhận Error! Bookmark not defined.
Hình 4-8 Định nghĩa thông tin thiết lập Error! Bookmark not defined Hình 4-9 Giải thuật nước chảy chỗ trũng ACD Sinh Error! Bookmark not defined Hình 4-10 Lược đồ giải thuật giá tối thiểu Error! Bookmark not defined Hình 4-11 Ví dụ lược đồ giải thuật giá tối thiểu Error! Bookmark not defined Hình 4-12 Lớp setting bổ sung Error! Bookmark not defined.
Trang 10Hình 4-13 Thuật toán tại nút cơ sở Error! Bookmark not defined Hình 4-14 Mô hình thay đổi bổ sung Error! Bookmark not defined Hình 4-15 Sơ đồ modul hóa cấu trúc chương trình Error! Bookmark not defined Hình 4-16 Biểu đồ các lớp thành phần trong chương trình Error! Bookmark not defined.
Hình 4-17 Sơ đồ cấu trúc dữ liệu địa chỉ bộ nhớ và thanh ghi Error! Bookmark not defined.
Hình 4-18 Đoạn mã thực hiện việc truyền dữ liệu Error! Bookmark not defined Hình 4-19 Tiến trình dịch chương trình Error! Bookmark not defined Hình 4-20 Bo mạch tool để nạp phần mềm cho nút mạng Error! Bookmark not defined.
Hình 4-21 Cách kết nối vào máy tính Error! Bookmark not defined Hình 4-22 Chương trình nạp phần mềm cho nút mạng Error! Bookmark not defined Hình 4-23 Kết quả kiểm tra nút số 1 khi nut gốc chưa hoạt động Error! Bookmark not defined.
Hình 4-24 Truyền đơn bước khi nút gốc hoạt động Error! Bookmark not defined Hình 4-25 Truyền đa bước mức nhiệt độ an toàn Error! Bookmark not defined Hình 4-26 Nhiệt độ vượt quá mức ngưỡng Error! Bookmark not defined.
Trang 11DANH MỤC CÁC BẢNG
Bảng 4-1 Các thành phần cơ bản của UML chuyển sang mã nguồn Error! Bookmark not defined.
Bảng 4-2 Các stereotypes Error! Bookmark not defined Bảng 4-3 Kết quả sau khi vận hành thử nghiệm Error! Bookmark not defined Bảng 4-4 Bảng kết quả thử nghiệm khi thay đổi không có tiết kiệm năng lượng Error! Bookmark not defined.
Trang 12Đào Thị Kiên, K12T2 1 Luận văn thạc sỹ
Mở đầu
MỞ ĐẦU
Chúng ta đang bước vào kỷ nguyên của công nghệ thông tin Máy tính với hàng loạt hệ thống các phần mềm đang ngày càng trở nên thân thiện, cần thiết và không thể thiếu trong mọi lĩnh vực hoạt động của con người
Phần mềm ngày càng được hoàn thiện, nâng cao chất lượng và phát triển với kích thước rất lớn Nhưng bên cạnh đó, sự bùng nổ thông tin làm cho một loạt các hoạt động luôn bị thay đổi Đó là sự thay đổi của môi trường, thay đổi của công nghệ, thay đổi của nghiệp vụ,…Để khắc phục những sự thay đổi đó người ta thường đưa hệ thống vào bảo trì Công việc bảo trì phần mềm được xem xét như là một pha tốn kém nhất trong các pha trong vòng đời của một phần mềm Người ta ước tính chi phí cho nó xấp
xỉ 70% tổng công sức chi phí trong sự phát triển phần mềm[1] Nhưng nếu xây dựng lại hệ thống mới thì chưa phải là giải pháp hay, vì khi đó ta phải bỏ đi cả những phần rất hữu dụng trong phần mềm Hơn thế nữa, chi phí cho việc làm ra phần mềm mới là rất tốn kém
Làm thế nào để hàng loạt những hệ thống phần mềm lớn, cũ, đang hoạt động thích nghi được với những thay đổi với mức chi phí thay đổi chấp nhận được Tái kỹ nghệ phần mềm chính là một sự trả lời cho câu hỏi đó
Tái kỹ nghệ phần mềm là hoạt động tiến hóa hệ thống phần mềm để nó có thể tiếp tục được sử dụng cho hiệu quả, giúp ta dễ dàng và đỡ tốn kém hơn trong việc bảo trì sau này Những phần mềm đã sử dụng trong một thời gian dài có thể có nhiều nhược điểm như: xây dựng trên ngôn ngữ cũ mà hiện nay không còn dùng nữa, tài liệu viết cho phần mềm này cũng đã bị hỏng và thiếu do việc cất giữ và cập nhật chưa tốt, các tính năng hoạt động bị hạn chế do hoạt động nghiệp vụ đã có những thay đổi, … Giải pháp tốt nhất giúp ta tiếp tục sử dụng phần mềm này là tái kỹ nghệ Tái kỹ nghệ là giải pháp tốt nhất và cũng có thể nói là giải pháp duy nhất để đạt được mục đích với chi phí rẻ Hơn thế nữa, nó đảm bảo an toàn cho hoạt động nghiệp vụ của hệ thống đang làm việc
Về mặt khoa học, tái kỹ nghệ đưa ra một giải pháp tiến hóa hệ thống phần mềm bằng những công cụ và phương tiện mới với quy trình khép kín khá hoàn thiện và tiện dụng Về mặt thực tiễn, nó là một hướng giải quyết tốt, vừa đáp ứng nhu cầu tái thiết kế hệ thống cũ, vừa đem lại hiệu quả lớn và thiết thực về mặt kinh tế