Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 71 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
71
Dung lượng
2,98 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN XUÂN TÙNG NGHIÊN CỨU VÀ ỨNG DỤNG VDM++ CHO MÔ HÌNH HÓA VÀ KIỂM THỬ HỆ THỐNG IMP TẠI NTTDATA VIETNAM LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2015 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN XUÂN TÙNG NGHIÊN CỨU VÀ ỨNG DỤNG VDM++ CHO MÔ HÌNH HÓA VÀ KIỂM THỬ HỆ THỐNG IMP TẠI NTTDATA VIETNAM Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã Số: 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN VĂN TĂNG Hà Nội – 2015 LỜI CẢM ƠN Tôi xin gửi lời cảm ơn chân thành tới T.S Nguyễn Văn Tăng – người tận tình bảo, góp ý giúp đỡ hoàn thành luận văn Tôi xin chân thành cảm ơn thầy cô giáo Khoa Công Nghệ Thông Tin, Trường Đại Học Công Nghệ, Đại Học Quốc Gia Hà Nội truyền đạt lại cho kiến thức vô bổ ích suốt trình tham gia học tập nghiên cứu trường Tôi xin chân thành cảm ơn gia đình, bạn bè, đồng nghiệp động viên giúp đỡ gặp khó khăn tạo điều kiện thuận lợi để hoàn thành nhiệm vụ học tập nghiên cứu suốt thời gian qua LỜI CAM ĐOAN Tôi xin cam đoan kết luận văn nghiên cứu, tổng hợp thực Toàn nội dung luận văn kết cá nhân tổng hợp từ nguồn tài liệu khác Tất nguồn tài liệu có nguồn gốc rõ ràng trích dẫn đầy đủ Tôi xin hoàn toàn chịu trách nhiệm với lời cam đoan Nếu có sai trái, xin chịu hình thức kỷ luật theo quy định Hà Nội, 15 tháng 10 năm 2015 Học viên Nguyễn Xuân Tùng MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC .3 DANH MỤC CÁC KÝ HIỆU, TỪ VIẾT TẮT MỞ ĐẦU CHƯƠNG – GIỚI THIỆU CHUNG 10 1.1 Giới thiệu VDM 10 1.1.1 Khái niệm 10 1.1.2 Các loại VDM 11 1.1.3 VDM ++ 11 1.1.3.1 Cấu trúc class 11 1.1.3.3 Hàm khởi tạo (Constuctors) .13 1.1.3.4 Biến thể (Instance Variables) 13 1.1.3.6 Hàm Phương thức 20 1.1.3.7 Tính đồng thời (Concurrency) 23 1.2 Công cụ hỗ trợ VDM++ 23 1.2.1 Giới thiệu 23 1.2.2 Modelio 24 1.2.3 Overture 27 CHƯƠNG – TỔNG QUAN VỀ DỰ ÁN 40 2.1 Giới thiệu dự án 40 2.1.1 Hiện trạng nghiệp vụ 40 2.1.2 Mục đích xây dựng hệ thống IMP 40 2.2 Hệ thống IMP 41 2.2.1 Nền tảng hệ thống 41 2.2.2 Luồng nghiệp vụ hệ thống .43 2.3 Quy trình phát triển dự án 45 2.3.1 Quy trình phát triển .45 2.3.2 Đánh giá vấn đề dự án .46 2.3.3 Giải pháp tổng thể 47 CHƯƠNG – ÁP DỤNG QUY TRÌNH MỚI VÀO DỰ ÁN IMP 52 3.1 Mô hình hóa thực thể liệu 52 3.1.1 Mô hình hóa kiểu liệu SQL 52 3.1.2 Mô hình hóa cấu trúc bảng .53 3.1.3 Mô hình hóa bảng liệu 55 3.1.4 Mô hình hóa sở liệu 56 3.2 Mô hình hóa đặc tả hệ thống 56 3.2.1 Đặc tả kiến trúc 56 3.2.2 Đặc tả nghiệp vụ 57 3.3 Kiểm thử mô hình hóa 61 3.4 Kết thực nghiệm 63 3.5 Kinh nghiệm thực tiễn 66 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 68 TÀI LIỆU THAM KHẢO 69 DANH MỤC CÁC KÝ HIỆU, TỪ VIẾT TẮT STT Từ viết tắt VDM Tiếng Anh Tiếng Việt Vienna Development Method Phương thức phát triển Vienna VDM-SL VDM Specification Language Ngôn ngữ đặc tả VDM VDM++ VDM Object-Oriented Đặc tả hướng đối tượng VDM SA System Analysis Phân tích hệ thống ERD Entity-Relation Diagram Lực đồ quan hệ thực thể IDE Integrated Development Environment Môi trường phát triển tích hợp RD Requirement Definition Đặc tả yêu cầu DD Detail Design Thiết kế chi tiết Class 10 SQL Structured Query Language Ngôn ngữ truy vấn mang tính cấu trúc 11 UML Unified Modeling Language Ngôn ngữ mô hình hóa thống 12 MVC Model View Controller Một mẫu kiến trúc phần mềm kỹ thuật kỹ sư phần mềm 13 IMP Industrial Maintenance Program Chương trình bảo dưỡng khu công nghiệp 14 IDE Integrated Development Environment Môi trường phát triển tích hợp 15 CT Combinatorial Testing Kiểm tra tổ hợp 16 PT Processing Test Kiểm thử nghiệp vụ 17 IT Intergration Test Kiểm thử tích hợp 18 ST System Test Kiểm thử hệ thống Lớp DANH MỤC HÌNH VẼ Hình 1 Cấu trúc class VDM++ .12 Hình Cú pháp khai báo lớp thừa kế .13 Hình Cú pháp khai báo biến thể 13 Hình Cú pháp khai báo tính bất biến .14 Hình Ví dụ khai báo buộc biến thể biểu thức INV .14 Hình Ví dụ cài đặt hàm truy cập biến cục 15 Hình Khai báo kiểu Union .17 Hình Cấu trúc khai báo kiểu product .17 Hình Khởi tạo kiểu product 17 Hình 10 Cấu trúc khai báo kiểu liệu ghi .18 Hình 11 Khởi tạo kiểu liệu ghi .18 Hình 12 Cấu trúc lớp VDM++ 21 Hình 13 Cấu trúc khai báo hàm tường minh 21 Hình 14 Cấu trúc khai báo hàm không tường minh 21 Hình 15 Cấu trúc khai báo phương thức tường minh .22 Hình 16 Cấu trúc khai báo phương thức không tường minh 22 Hình 17 Cấu trúc khai báo phương thức mức trừu tượng .22 Hình 18 Cấu trúc khai báo phương thức dạng uỷ thác .23 Hình 19 Cú pháp khai báo đồng đối tượng chia sẻ .23 Hình 20 Xuất biểu đồ UML sang định dạng UML Modelio 24 Hình 21 Lựa chọn xuất file Modelio .25 Hình 22 Kết xuất file UML 25 Hình 23 Menu chuyển đổi từ UML sang VDM .26 Hình 24 Danh sách class sau import 26 Hình 25 Tạo dự án VDM++ Overture .29 Hình 26 Chọn loại dự án VDM 30 Hình 27 Nhập tên dự án VDM++ .31 Hình 28 Chọn dự án cần tham chiếu 31 Hình 29 Danh sách thư viện Overture hỗ trợ 32 Hình 30 Hộp thoại cấu hình thực thi gỡ lỗi 33 Hình 31 Hộp thoại cấu hình thực thi gỡ lỗi 33 Hình 32 Giao diện gỡ lỗi 34 Hình 33 Khung nhìn gỡ lỗi .35 Hình 34 Khung nhìn biến thể 36 Hình 35 Khung nhìn kiểm thử tổ hợp .36 Hình 36 Lựa chọn sinh mã Java .37 Hình 37 Menu xuất VDM++ sang UML 38 Hình 38 Kết xuất file uml 38 Hình 39 Import file uml vào Modelio .39 Hình Luồng nghiệp vụ 40 Hình 2 Tổng quan yêu cầu chức hệ thống .41 Hình Chuyển đổi từ mô hình hệ thống độc lập sang mô hình tích hợp intrarmart 42 Hình Các thành phần intramart 42 Hình Kiến trúc MVC struts .43 Hình Luồng nghiệp vụ hệ thống 43 Hình Luồng nghiệp vụ phê duyệt kế hoạch năm 44 Hình Màn hình tạo kế hoạch tháng/chi tiết 44 Hình Mô hình chữ V gồm bước 45 Hình 10 Chi tiết công việc cần thực công đoạn 45 Hình 11 Nguyên nhân vấn đề tốn nhiều thời gian phát triển lại 46 Hình 12 Mô hình chữ V thêm giai đoạn mô hình hóa VDM++ 47 Hình 13 Chi tiết công việc bao gồm việc mô hình hóa VDM++ 48 Hình 14 Phạm vi công việc nhóm vai trò dự án .50 Hình Mô hình hóa kiểu liệu SQL server 53 Hình Mô hình hóa cấu trúc liệu bảng Imp_Schedule_Annual 54 Hình 3 Mô hình hóa cấu trúc liệu bảng Imp_Schedule_Annual_Pln_Detail 55 Hình Mô hình hóa bảng Imp_Schedule_Annual Imp_Schedule_Annual_Pln_Detail .55 Hình Mô hình hóa sở liệu Imp 56 Hình Lược đồ lớp trừu tượng Modelio 57 Hình Lược đồ luồng nghiệp vụ xử lý tạo kế hoạch 58 Hình Mô hình hóa lớp trừu tượng ScheduleAnnualModel 59 Hình Mô hình hóa lớp cài đặt ScheduleAnnualModelImpl 60 Hình 10 Mô hình hóa lớp xử lý yêu cầu B0102ServiceController 61 Hình 11 Cài đặt unit test thiết kế lớp ScheduleAnnualModelImpl 62 Hình 12 Màn hình kiểm thử kết kiểm thử lớp ScheduleAnnualModelImpl 63 Hình 13 Timeline dự án trước sau áp dụng quy trình 64 Hình 14 Lỗi có độ ưu tiên cao phát thực Modelling Test 65 Hình 15 Lỗi có độ ưu tiên trung bình phát thực Modelling Test .65 Hình 16 Lỗi có độ ưu tiên thấp phát thực Modelling Test 66 DANH MỤC BẢNG Bảng 1 Kiểu liệu VDM .15 Bảng Danh sách phép toán kiểu liệu .16 Bảng Các phép toán kiểu Union .17 Bảng Các phép toán kiểu product 18 Bảng Các phép toán kiểu ghi 18 Bảng Các phương thức kiểu liệu tập hợp 19 Bảng Các phương thức kiểu liệu map 19 Bảng Các phương thức kiểu liệu map 20 Bảng Danh sách cộng đồng người dùng Overture 27 Bảng Định nghĩa mục đích hành động 48 Bảng 2 Định nghĩa vai trò trách nhiệm 50 Bảng Kiểu liệu SQL kiểu liệu VDM tương ứng 52 Bảng Tổng hợp lỗi tài liệu thiết kế 64 Bảng 3 Phạm vi quy mô dự án 64 55 class ScheduleAnnualPlnDetail_Entity types instance variables public annualRequestNo:CommonType`String; not null public year:CommonType`String; not null public itemCode:CommonType`String; not null public inspectStatus:CommonType`String; public month01:CommonType`String; public month02:CommonType`String; public month03:CommonType`String; public month04:CommonType`String; public month05:CommonType`String; public month06:CommonType`String; public month07:CommonType`String; public month08:CommonType`String; public month09:CommonType`String; public month10:CommonType`String; public month11:CommonType`String; public month12:CommonType`String; Check constraints inv annualRequestNo "" and year "" and itemCode ""; operations Check primary key public checkPrimaryKey : CommonType`String*CommonType`String *set of ScheduleAnnualPlnDetail_Entity ==> bool checkPrimaryKey (aRN, itemN, sLs) == ( return not exists row in set sLs & aRN = row.annualRequestNo and itemN = row.itemCode ); end ScheduleAnnualPlnDetail_Entity Hình 3 Mô hình hóa cấu trúc liệu bảng Imp_Schedule_Annual_Pln_Detail Bảng ScheduleAnnualPlnDetail định nghĩa để lưu trữ thông tin chi tiết kế hoạch năm Mỗi hạng mục lập kế hoạch kiểm tra theo tháng Bảng có khóa cặp ANNUAL_REQUEST_NO ITEM_NO 3.1.3 Mô hình hóa bảng liệu Một bảng liệu quan hệ lưu trữ liệu tập hợp hàng không theo thứ tự, hàng kiểu liệu giống [3,8] Một bảng liệu mô hình hóa VDM++ tập hợp class instance variables SCHEDULE_ANNUAL_TBL public ScheduleAnnual_Table: set of ScheduleAnnual_Entity; SCHEDULE_ANNUAL_PLN_DETAIL_TBL public ScheduleAnnualPlnDetail_Table: set of ScheduleAnnualPlnDetail_Entity; Hình Mô hình hóa bảng Imp_Schedule_Annual Imp_Schedule_Annual_Pln_Detail 56 3.1.4 Mô hình hóa sở liệu Một sở liệu quan hệ đặc tả class, việc tập hợp tất khai báo bảng quan hệ class Bên cạnh đó, đặc tả khóa chính, khóa ngoại buộc liệu thực việc đặt biểu thức kiểm tra Inv (Invariants) class impdb types instance variables SCHEDULE_ANNUAL_TBL public ScheduleAnnual_Table: set of ScheduleAnnual_Entity; SCHEDULE_ANNUAL_PLN_DETAIL_TBL public ScheduleAnnualPlnDetail_Table: set of ScheduleAnnualPlnDetail_Entity; SCHEDULE_ANNUAL_ACT_DETAIL_TBL public ScheduleAnnualActDetail_Table: set of ScheduleAnnualActDetail_Entity; SCHEDULE_MONTHLY_TBL public ScheduleMonthly_Table: set of ScheduleMonthly_Entity; SCHEDULE_MONTHLY_DETAIL_TBL public ScheduleMonthlyDetail_Table: set of ScheduleMonthlyDetail_Entity; INSPECTION_CHECKLIST_TBL public InspectionChecklist_Table: set of InspectionChecklist_Entity; INSPECTION_APPROVAL_TBL public InspectionApproval_Table: set of InspectionApproval_Entity; INSPECTION_APPROVAL_DETAIL_TBL public InspectionApprovalDetail_Table: set of InspectionApprovalDetail_Entity; INSPECTION_DEFECT_TBL public DefectDetail_Table: set of DefectDetail_Entity; MST_ITEM_TBL public MstItem_Table: set of MstItem_Entity; MST_LOCATION_TBL public MstLocation_Table: set of MstLocation_Entity; WORKING_CALENDAR_TBL public WorkingCalendar_Table: set of WorkingCalendar_Entity; end impdb Hình Mô hình hóa sở liệu Imp 3.2 Mô hình hóa đặc tả hệ thống 3.2.1 Đặc tả kiến trúc Lược đồ quan hệ lớp thiết kế công cụ Modelio Sau thiết kế xong, lớp mức trừu tượng mối liên hệ chúng bước đặc tả lớp VDM++ Dựa vào kiến trúc Framework định nghĩa lớp liên quan Các lớp tầng controller model phải thừa kế từ lớp tảng (basic…) Các lớp basic định nghĩa cài đặt thuộc tính phương thức dùng chung Lược đồ lớp thể sau: 57 Hình Lược đồ lớp trừu tượng Modelio 3.2.2 Đặc tả nghiệp vụ Dựa vào tài liệu đặc tả hình, buộc liệu yêu cầu nghiệp vụ (Business rule) bước thực thiết kế luồng xử lý nghiệp vụ cho kiện (Event) Tài liệu thiết kế lược đồ activity sau: 58 Information Type: Group Restricted Company: NTT DATA Corporation Information Owner: Research and Development Headquarters System name Processing Design Online Design Document Processing (flow) Business ID/Business name B02 Monthly Schedule IMP system Function ID/Function name F_B02_02 Monthly Schedule Create Front End 処理ID/処理名 S_B02_02 Create Back End 作成者 作成日 TungNX 更新者 更新日 TungNX 13/11/2014 DB $annualRequestNo $year $maintenanceType Get request Click “Confirm” $monthStage $arItemCode[] $arLocationLevel1[] MsgID M.ERR.F_COMMON.028 [Monthly Schedule] [Screen] S_B02_02 Input Check $arResourceAmount[] $arDuration[] Return [$scheduleObj != Null] $arPlnStartDate[] $arPlnStartEnd[] [$scheduleObj == Null] $arActStartDate[] Pass value: $arActEndDate[] Pass value $year $monthStage $maintenanceType = Constants.CORRECTIVE_MAINTENACE_TYPE $status = Constants.DB_TRUE_FLAG SQL 8.0: Get list related location level (distinct) Get value: $arLocationLevel1[] Get value Begin arLocationLevel1[] Pass value: Pass value $year=current year $locationLevel1=arItemLocation[i].[LOCATION_NO] SQL 9.0: Get list location level Get value: Get value $arLocationLevel2[] Add ~MsgID M.ERR.F_COMMON.xxx ({0} must have location level 2) [$arLocationLevel2.length = 0] Add warning [$arLocationLevel2.length > 0] End arLocationLevel1[] [Screen] S_B02_02 Return error message Error? Pass value: $monthlyRequestNo Warning message $annualRequestNo [Y] [N] $year = Current year $monthStage $monthlyRequestNo = generate ID $maintenanceType = Constants.CORRECTIVE_MAINTENACE_TYPE $itemCode = $arItemCode[$i] Begin $arLocationLevel1[] $locationLevel1 = $arLocationLevel1[$i] $resourceAmount = $arResourceAmount[$i] $duration = $arDuration[$i] Pass value $plnStartDate = $arPlnStartDate[$i] $plnStartEnd = $arPlnStartEnd[$i] SQL 3.0: Insert monthly schedule detail $percentComplete = $arPercentComplete[$i] $inspectStatus = Constants.INS_PLANNING_STATUS End $arLocationLevel1[] [Screen] A99_06 Return ~MsgID M.INF.F_COMMON.003 {Monthly Schedule} $updatedBy = current user loged in $functionId [Return 10] $clientIp Return Hình Lược đồ luồng nghiệp vụ xử lý tạo kế hoạch Khi người dùng click vào nút “Xác nhận” yêu cầu chuyển tới lớp xử lý event tương ứng Dữ liệu người dùng kiểm tra đảm bảo buộc sở liệu (khóa chính, bắt buộc phải nhập, độ dài, …) Hệ thống cho phép tạo kế hoạch hạng mục cài đặt mức kiểm tra mức hai, vậy, luồng nghiệp vụ kiểm tra tồn vị trí cấp Nếu liệu đắn theo yêu cầu nghiệp vụ lưu vào sở liệu hiển thị thông báo tạo kế hoạch thành công, kết thúc luồng nghiệp vụ Để đảm bảo tính đắn tài liệu phân tích, cần tránh sai sót tài liệu thiết kế VDM++ sử dụng để đặc tả tài liệu thiết kế Việc thực mô hình hóa VDM++ tương tự việc cài đặt ngôn ngữ bậc cao Java Tuy nhiên, kiểu liệu mức trừu tượng không tập trung nhiều vào xử lý sở liệu Mô hình hóa tầng model (các lớp xử lý liệu) 59 class ScheduleAnnualModel operations public getLastAnnualRequest : () ==> ScheduleAnnual_Entity getLastAnnualRequest() == is subclass responsibility; public getItemsByStatus : CommonType`String ==> set of ScheduleAnnual_Entity getItemsByStatus(sStatus) == is subclass responsibility; public getItemsByYear : CommonType`String ==> set of ScheduleAnnual_Entity getItemsByYear(sYear) == is subclass responsibility; end ScheduleAnnualModel Hình Mô hình hóa lớp trừu tượng ScheduleAnnualModel 60 class ScheduleAnnualModelImpl is subclass of ScheduleAnnualModel instance variables impDB: impdb; operations public ScheduleAnnualModelImpl: impdb ==> ScheduleAnnualModelImpl ScheduleAnnualModelImpl(db) == setDB(db); public setDB: impdb ==> () setDB (db) == ( impDB:= db ); Check primary key public checkPrimaryKey : ScheduleAnnual_Entity ==> bool checkPrimaryKey (obj) == ( return not checkExisting(obj) ); Check existing public checkExisting : ScheduleAnnual_Entity ==> bool checkExisting (obj) == ( return exists row in set impDB.ScheduleAnnual_Table & obj.annualRequestNo = row.annualRequestNo ); public getAllScheduleAnnuals : () ==> set of ScheduleAnnual_Entity getAllScheduleAnnuals() == ( return impDB.ScheduleAnnual_Table ); public findByKey : CommonType`String ==> ScheduleAnnual_Entity findByKey(sKey) == ( return (iota sAnnual in set impDB.ScheduleAnnual_Table & sAnnual.annualRequestNo = sKey) ); public insert : ScheduleAnnual_Entity ==> CommonType`String insert(obj) == ( impDB.ScheduleAnnual_Table := impDB.ScheduleAnnual_Table union {obj}; return obj.annualRequestNo ) pre not exists row in set impDB.ScheduleAnnual_Table & obj.annualRequestNo = row.annualRequestNo; public update : ScheduleAnnual_Entity ==> CommonType`String update(obj) == ( dcl sAnnualTemp : ScheduleAnnual_Entity; sAnnualTemp := findByKey (obj.annualRequestNo); impDB.ScheduleAnnual_Table := (impDB.ScheduleAnnual_Table \ {sAnnualTemp}) union {obj}; return obj.annualRequestNo ) pre exists row in set impDB.ScheduleAnnual_Table & obj.annualRequestNo = row.annualRequestNo; public getLastAnnualRequest : () ==> ScheduleAnnual_Entity Hình Mô getLastAnnualRequest() == ( hình hóa lớp cài đặt ScheduleAnnualModelImpl dcl lastRow:ScheduleAnnual_Entity; all tmp in set ( quan đến bảng sở Lớpfornày cài đặtimpDB.ScheduleAnnual_Table toàn xử lý liên lastRow := tmp; Imp_Schedule_Annual Gồm thao tác thêm mới, sửa, xóa số kiểm ); buộc (khóa chính, tính nhất, trường bắt buộc,…) return lastRow; ) pre card impDB.ScheduleAnnual_Table >= 1; public getItemsByStatus : CommonType`String ==> set of ScheduleAnnual_Entity getItemsByStatus(sStatus) ==( liệu tra ràng 61 Mô hình hóa tầng controller (xử lý yêu cầu người dùng) class B0102ServiceController instance variables db: impdb := new impdb(); modelSA: ScheduleAnnualModelImpl := new ScheduleAnnualModelImpl(db); operations public B0102ServiceController: () ==> B0102ServiceController B0102ServiceController() == ( db := new impdb(); modelSA := new ScheduleAnnualModelImpl(db); ); public checkConstraints : () ==> bool checkConstraints() == is not yet specified; public confirm : () ==> bool confirm() == is not yet specified; public generate : () ==> bool generate() == is not yet specified; public getEvent : () ==> bool getEvent() == is not yet specified; public getForm : () ==> bool getForm() == is not yet specified; end B0102ServiceController Hình 10 Mô hình hóa lớp xử lý yêu cầu B0102ServiceController 3.3 Kiểm thử mô hình hóa Để tự động hóa trình kiểm thử, VDM-10 cho phép viết trường hợp muốn kiểm thử sau từ khóa “trace” Các trường hợp test thực theo thứ tự khai báo [1,159] 62 class B0102Test instance variables db: impdb := new impdb(); modelSA: ScheduleAnnualModelImpl := new ScheduleAnnualModelImpl(db); objSA: ScheduleAnnual_Entity:= new ScheduleAnnual_Entity(); objSAForUpdate: ScheduleAnnual_Entity:= new ScheduleAnnual_Entity(); objSA1: ScheduleAnnual_Entity:= new ScheduleAnnual_Entity(); objSA2: ScheduleAnnual_Entity:= new ScheduleAnnual_Entity(); operations public B0102Test: () ==> B0102Test B0102Test() == ( objSA:= new ScheduleAnnual_Entity("AS20150712-001","ST001","2015","01","201500000001" ,"Nothing","05",mk_token("2015-07-12"),mk_token("2015-07-12"),"Tungnx", mk_token("2015-0712") , "HienAb","B0102-Schedule Annual","192.168.1.12"); objSAForUpdate:= new ScheduleAnnual_Entity("AS20150712001","ST002","2015","02","201500000001" ,"Nothing","05",mk_token("2015-07-12"),mk_token("2015-07-12"),"Tungnx",mk_token("2015-07-12") ,"HienAb","B0102-Schedule Annual","192.168.1.13"); objSA1:= new ScheduleAnnual_Entity("AS20150712-101","ST002","2015","02","201500000001" ,"Nothing","05",mk_token("2015-07-12"),mk_token("2015-07-12"),"Tungnx",mk_token("2015-07-12") ,"HienAb","B0102-Schedule Annual","192.168.1.13"); objSA2:= new ScheduleAnnual_Entity("AS20150712-102","ST002","2015","02","201500000001" ,"Nothing","05",mk_token("2015-07-12"),mk_token("2015-07-12"),"Tungnx",mk_token("2015-07-12") traces case0001: modelSA.insert(objSA); modelSA.findByKey(objSA.annualRequestNo); modelSA.checkExisting(objSAForUpdate); modelSA.update(objSAForUpdate); modelSA.findByKey(objSA.annualRequestNo); case0002: modelSA.insert(objSA1); modelSA.insert(objSA2); modelSA.getLastAnnualRequest(); modelSA.getItemsByYear("2014"); modelSA.getAllScheduleAnnuals(); modelSA.delete("AS20150712-101"); modelSA.getAllScheduleAnnuals(); modelSA.getLastAnnualRequest(); case0003: modelSA.insert(objSA1); modelSA.insert(objSA10); modelSA.insert(objSA11); end B0102Test Hình 11 Cài đặt unit test thiết kế lớp ScheduleAnnualModelImpl 63 Hình 12 Màn hình kiểm thử kết kiểm thử lớp ScheduleAnnualModelImpl 3.4 Kết thực nghiệm Áp dụng quy trình với kết hợp mô hình hóa VMD++ giai đoạn thiết kế chi tiết (Detail Design), giúp đảm bảo chất lượng tài liệu thiết kế Những lợi ích đạt sau áp dụng mô hình sau: Phát vấn đề thiết kế, xử lý hệ thống, chí giải pháp đề xuất với khách hàng Phát thuật toán thực thi không hiệu xử lý đồng nghiệp vụ phê duyệt Phát lỗi nghiêm trọng xảy thiết kế, đưa giải pháp xử lý sớm Đảm bảo đồng thiết kế hàm, biến dùng chung, ngôn ngữ Loại bỏ thiết kế không thống tên trường liệu, kiểu liệu, độ dài liệu tài liệu ERD Giảm thời gian, công sức làm lại giai đoạn sau: viết mã, kiểm thử tích hợp, kiểm thử hệ thống Tuy nhiên, áp dụng quy trình có số điểm lưu ý sau: Bổ sung công việc đào tạo vào kế hoạch dự án ước tính thời gian đảm bảo SA hiểu áp dụng VDM++ trước vào mô hình hệ thống Trao đổi để SA hiểu rõ lợi ích sử dụng VDM++ vào quy trình phát triển, tránh việc làm việc cho có Kéo dài thời gian ước tính cho giai đoạn thiết kế bình thường 64 Kết đạt lớn việc áp dụng quy trình trách nhiệm SA tăng lên, tương tác SA tăng lên làm cho chất lượng tài liệu thiết kế tăng lên, giúp tiết kiệm nhiều chi phí, công sức phải làm lại giai đoạn lập trình Phát vấn đề toán giai đoạn thiết kế, đưa giải pháp xử lý tổng thể Hình 13 Timeline dự án trước sau áp dụng quy trình Bảng Tổng hợp lỗi tài liệu thiết kế Loại lỗi Lỗi thiết kế sở liệu Lỗi đặc tả kiểm tra liệu người dùng Lỗi thiết kế online proccessing Sai yêu cầu khách hàng Số lỗi phát Chi tiết 30 Những lỗi liên quan đến việc thiết kế sở liệu ERD, khai báo tên trường liệu, khóa ngoại, kiểu liệu, độ dài 90 Những lỗi thiết kế liên quan đến việc kiểm tra liệu người dùng, buộc liệu chức 110 Những lỗi liên quan đến thiết kế luồng xử lý liệu online processing (Activity diagram) 10 Những lỗi liên quan đến thay đổi yêu cầu đưa giải pháp sai giai đoạn lấy yêu cầu người dùng (Requirement Definition) 65 Lỗi kiến trúc 10 Những lỗi thiết kế không theo framework, cài đặt giai đoạn lập trình Hình 144 Lỗi có độ ưu tiên cao phát thực Modelling Test Hình 155 Lỗi có độ ưu tiên trung bình phát thực Modelling Test 66 Hình 166 Lỗi có độ ưu tiên thấp phát thực Modelling Test 3.5 Kinh nghiệm thực tiễn Việc áp dụng VDM++ vào việc đảm bảo chất lượng tài liệu thiết kế giai đoạn đầu dự án có tính khả thi với dự án có quy mô đề cập bảng 3.3 Đối với dự án NTT DATA Việt Nam việc áp dụng đề xuất hoàn khả thi yếu tố sau: Giai đoạn đầu thực người phân tích thiết kế hệ thống Những người vị trí có kinh nghiệm lập trình kinh nghiệp phân tích nghiệp vụ nên việc tiếp cận VMD++ nhanh tốn thời gian Chất lượng phần mềm hài lòng khách hàng ưu tiên hàng đầu dự án Vậy nên đảm bảo chất lượng tài liệu thiết kế, đáp ứng yêu cầu khách hàng công ty ưu tiên khuyến khích thực VDM++ phương pháp phát triển Vienna hướng đối tượng, sử dụng công cụ overture tảng eclipse ngôn ngữ Java phù hợp với ngôn ngữ tool phát triển phần mềm công ty sử dụng, dễ phối hợp trình phát triển dự án giai phân tích giai đoạn viết mã chương trình Bảng 3 Phạm vi quy mô dự án Điều kiện Loại Thời gian Trung bình (> tháng) Tổng thời gian fulltime > 20 man/month Số lượng nhân > người Những ý xây dựng kế hoạch dự án: Bổ sung công việc đào tạo vào kế hoạch dự án ước tính thời gian đảm bảo SA hiểu áp dụng VDM++ trước vào mô hình hệ thống Trao đổi để SA hiểu rõ lợi ích sử dụng VDM++ vào quy trình phát triển, tránh việc làm việc cho có 67 Kéo dài thời gian ước tính cho giai đoạn thiết kế bình thường Không nên áp dụng với dự án có thời gian phát triển ngắn 20 man/monh Không nên áp dụng với dự án quen thuộc (đã hiểu rõ yêu cầu nghiệp vụ) 68 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Luận văn tập trung nghiên cứu tính hỗ trợ VDM nói chung VDM++ nói riêng việc mô hình hóa hướng đối tượng đảm bảo tính đắn tài liệu thiết kế, ra, đánh giá phạm vi tính ứng dụng VDM++ vào quy trình dự án thực tế NTT DATA Việt Nam Sau tìm hiểu VDM++ công cụ hỗ trợ phát triển, với việc phân tích quy trình phát triển phần mềm công ty, đưa quy trình phát triển dự án có áp dụng VDM++ vào việc mô hình hóa thiết kế Tiếp đó, tiến hành thực nghiệm với dự án IMP VDM++ giúp nâng cao tính xác, độ tin tưởng vào tài liệu thiết kế chi tiết Việc thực cài đặt kiểm thử bước thiết kế giúp sớm tìm lỗi thiết kế lỗi phân tích nghiệp vụ người dùng Trong dự án IMP, việc tìm 250 lỗi thiết kế giúp tiết kiệm thời gian viết mã kiểm thử lại thiết kế sai, đảm bảo dự án kết thúc tiến độ (sớm dự kiến gần 15 ngày) phạm vi ngân sách dự kiến Trong thời gian tới, tiến hành phân tích chi tiết quy trình phát triển dự án xem xét tính hiệu dự án khác công ty Đối với dự án lớn đòi hỏi tính đắn tài liệu thiết kế mức cao, xem xét bắt buộc sử dụng VDM++ vào danh sách tài liệu kiểm soát chất lượng dự án, tìm hiểu áp dụng phương thức Test-Driven Development giai đoạn thiết kế cách sử dụng mô hình hóa kiểm thử VDM++ 69 TÀI LIỆU THAM KHẢO Tiếng Anh Peter Gorm Larsen, Kenneth Lausdahl, Nick Battle, John Fitzgerald, Sune Wolff (2011), VDM-10 Language Manual Daisuke Souma, Goro Hatayama, HitoshiOhsaki, Nguyen Van Tang (2012), Modeling and Validating the Train Fare Calculation and Adjustment System Using VDM++ Bernhard K Aichernig, Rudolf Schlatte, Database Development of a Work-Flow Planning and Tracking System Using VDM-SL Bernhard K Aichernig, Johann H¨orl, Requirements Validation of a Voice Communication System used in Air Traffic Control John Fitzgerald, Sune Wolff (2011), Proceeding of the 9th Overture Workshop Overture-Community: Overture: Formal modelling in VDM Website: http://www.overturetool.org/ Augusto Ribeiro, Peter Gorm Larsen, John Fitzgerald, Kenneth Lausdahl, Kenneth Pierce, Sune Wolff, Nick Battle (2010), Tutorial for Overture/VDM++ Augusto Ribeiro, Peter Gorm Larsen, John Fitzgerald Nick Battle, Kenneth Lausdahl, Kenneth Pierce, Sune Wolff (2010), Tutorial for Overture/VDM-RT Augusto Ribeiro, Kenneth Lausdahl, and Peter Gorm Larsen, Run-Time Validation of Timing Constraints for VDM-RT Models 10 Wikipedia: Vienna Development Method Địa chỉ: https://en.wikipedia.org/wiki/Vienna_Development_Method 11 Ken Pierce, Counterpoint: Towards a Proof-Support Tool for VDM 12 John Fitzgerald, Peter Gorm Larsen, Paul Mukherjee, Nico Plat, Marcel Verhoef (2004), Validated Designs for Objectoriented Systems 13 Peter Gorm Larsen, Kenneth Lausdahl, Peter Tran-Jørgensen, Joey Coleman, Sune Wolff and Lu´ ıs Diogo Couto (2015), Overture VDM-10 Tool Support: User Guide (Version 2.1.6) 14 Website framework intramart áp dụng dự án Địa chỉ: http://www.intra-mart.hk/?page=what&id=25 15 Research and Development Headquarters, NTT DATA Corporation (2014), Overview of TERASOLUNA SS Development Methodology [...]... về yêu cầu hệ thống IMP, quy trình phát triển dự án hiện tại, đánh giá những vấn đề của dự án và đưa ra những cải tiến trong quy trình với việc sử dụng VDM++ trong quá trình thiết kế chi tiết - Chương 3: Áp dụng quy trình mới với sự kết hợp sử dụng Overture và Modelio vào việc thiết kế, mô hình hóa hệ thống IMP và đưa ra đánh giá kết quả, tổng hợp những nghiên cứu đạt được sau luận văn và đưa ra hướng... hợp giữa VDM++ và UML (biểu đồ lớp và biểu đồ tuần tự) giúp cho việc sử dụng phần mềm vào hỗ trợ phân tích mô hình hóa Một trong những giới hạn của UML là chỉ cho phép xem xét được cấu trúc của các class Bằng việc sử dụng Overture và Modelio, người phân tích thiết kế có thể thực hiện mô hình UML trong 24 Modelio, sau đó chuyển sang VDM++ bằng cách import mô hình UML từ Modelio vào Overture và export... Method) là một trong những phương pháp mô hình hóa hướng đối tượng lâu đời nhất cho việc phát triển phần mềm Nó bao gồm một nhóm các ngôn ngữ trên nền tảng toán học và các công cụ hỗ trợ việc mô tả và phân tích mô hình hệ thống tại bước thiết kế Việc xây dựng và phân tích mô hình giúp cho việc nhận biết những đặc tả của hệ thống còn thiếu sót hoặc chưa rõ ràng, và đảm bảo một mức độ tin tưởng trong... operations và state Phù hợp phân tích hướng đối tượng - VDM-RT: Đặc tả VDM-RT là VDM++ với hệ thống có môi trường rằng buộc, áp dụng vào hệ thống nhúng thời gian thực và hệ thống phân tán Điểm khác biệt chính giữa VDM-SL và VDM++ là cách thức mà cấu trúc được xử lý VDM-SL có một phần mở rộng mô- đun thông thường, trong khi đó VDM++ có một cơ chế cấu trúc hướng đối tượng truyền thống với các class và sự thừa... IBM vào năm 1970, là một trong những phương pháp hình thức được thành lập lâu nhất VDM có 3 loại: VDM-SL (VDM Specification Language) một chuẩn ISO; VDM++ một mở rộng hướng đối tượng của VDM-SL; và mới đây thêm VDM-RT, một mở rộng của VDM++ để mô hình hóa những hệ thống nhúng phân tán thời gian thực VDM-RT là một ngôn ngữ mô hình hóa với những tập con có thể thực thi được sử dụng để miêu tả những hệ thống. .. thiết kế Luận văn sẽ nghiên cứu về phương pháp đặc tả hình thức sử dụng VDM++, giúp phát hiện các vấn đề tiềm ẩn, các lỗi thời gian thực và phát hiện các lỗi thiết kế sớm khi áp dụng vào dự án cụ thể IMP Luận văn được cấu trúc như sau: - Chương 1: Giới thiệu tổng quan về VDM và VDM++, cộng đồng phát triển VDM Cung cấp thông tin về các công cụ hỗ trợ phát triển mô hình hóa bằng VDM++, với những tính... Trong VDM, mô hình bao gồm việc mô tả dữ liệu trên các phương thức và chức năng của hệ thống mà nó được thực thi Dữ liệu bao gồm việc nhập/xuất từ bên ngoài và dữ liệu trạng thái bên trong Chức năng bao gồm các hoạt động có thể được gọi tại giao diện hệ thống cũng như các chức năng phụ, hỗ trợ việc thực hiện các hoạt động Trong chuẩn ISO, có một thông tin bổ sung về framework cho việc mô hình hóa – VDM-SL... năng kiểm tra Dynamic type checks Pre condition checks: Kiểm tra tiền điều kiện cho tất cả các hàm và phương thức trong quá trình phiên dịch mô hình VDM Post condition checks: Kiểm tra hậu điều kiện cho tất cả các hàm và phương thức trong quá trình phiên dịch mô hình VDM Measure checks: Kiểm tra các hàm đệ quy Gỡ lỗi (Debuging) Giao diện gỡ lỗi (Debug) bao bồm toàn bộ các khung nhìn cần thiết cho. .. diagrams, import/export biểu đồ UML, được sử dụng kết hợp với Overture để mô hình hóa một hệ thống phần mềm Modelio được cung cấp bởi công ty Softeam, có 2 phiên bản: thương mại và mã nguồn mở Cũng tương tự như Overture, Modelio được phát triển trên nền tảng Eclipse Tải về tại địa chỉ https://www.modelio.org/ Bắt đầu việc mô hình hóa bằng việc tạo biểu đồ lớp UML trong Modelio Sau đó, để chuyển đổi sang VDM++, ... trong thư mục uml_import Hình 1 24 Danh sách các class sau khi import 27 1.2.3 Overture Đây là một IDE miễn phí hỗ trợ việc phát triển và phân tích mô hình hóa bằng VDM++, được phát triển bởi cộng đồng tình nguyện viên từ các nhà khoa học nghiên cứu và sinh viên từ Đan Mạch, Anh, Hà Lan và Nhật Bản Công cụ phát triển trên nền tảng Eclipse Dự án phát triển Overture được quản lý trên GitHub, tại địa chỉ https://github.com/overturetool/overture ... TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN XUÂN TÙNG NGHIÊN CỨU VÀ ỨNG DỤNG VDM++ CHO MÔ HÌNH HÓA VÀ KIỂM THỬ HỆ THỐNG IMP TẠI NTTDATA VIETNAM Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã Số:... Quy trình áp dụng thêm bước mô hình hóa VDM++ cải tiến sau: Hình 12 Mô hình chữ V thêm giai đoạn mô hình hóa VDM++ 48 Hình 13 Chi tiết công việc bao gồm việc mô hình hóa VDM++ Trong hình trên,... Hình 12 Mô hình chữ V thêm giai đoạn mô hình hóa VDM++ 47 Hình 13 Chi tiết công việc bao gồm việc mô hình hóa VDM++ 48 Hình 14 Phạm vi công việc nhóm vai trò dự án .50 Hình Mô hình hóa