Vũ Thị Hương GIang Nguyễn Văn Phúc Lê Văn Hiếu Lê Nhâm Hưng BÀI TẬP-KIỂM THỬ CHƯƠNG TRÌNH MÔ PHỎNG THANG MÁY... - Mô phỏng khá tốt hoạt động thang máy đôi.2.1.Các kĩ thuật làm việc v
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘIVIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÀI TẬP NHÓM MÔN HỌC
IT3104 –MÔN KỸ THUÂT LẬP TRÌNH
HÀ NỘI 2012
Giảng viên hướng dẫn : TS Vũ Thị Hương GIang
Nguyễn Văn Phúc
Lê Văn Hiếu
Lê Nhâm Hưng
BÀI TẬP-KIỂM THỬ CHƯƠNG TRÌNH MÔ
PHỎNG THANG MÁY
Trang 2Mục lục
IT3104 –MÔN KỸ THUÂT LẬP TRÌNH 1
Giảng viên hướng dẫn : TS Vũ Thị Hương GIang 1
Mục lục 2
3 Kiểm thử chương trình 7
3.1Danh sách các chức năng cần có 7
3.2Kiểm thử cho chức năng 1 7
3.3Kiểm thử cho chức năng 2 8
3.4Kiểm thử cho chức năng 3 8
4.Tinh chỉnh mã nguồn 9
4.1.Danh sách các chức năng cần tinh chỉnh 9
4.2.Tinh chỉnh cho chức năng chọn thang 9
Trang 3Báo cáo kiểm thử chương trình
Của nhóm PE08:
Trần Kim Lân 20091568
(Hệ thống thông tin và truyền thông)
Cho nhóm PE12 :
(Cơ khí hàng không)
Trang 4lượng tối đa
1.2 Thiết kế giải thuật.
o Nếu vị trí khách ở tầng trên 2 thang:
o Nếu vị trí khách ở tầng dưới 2 thang:
o Nếu vị trí khách ở tầng giữa 2 thang:
=>Chuẩn
o Kiểu 1 là trên đường thang máy di chuyển, dừng lại đón khách
o Kiểu 2 là trên đường thang máy di chuyển, không dừng lại đón khách, đến tầng cuối cùng, quay lại đón khách (nếu thang được gọi kiểu 2, sau khi đến tầng cuối cùng trong 1 lượt đi, kiểu gọi sẽ đổi thành Kiểu 1)
=>Chuẩn
1.3 Thiết kế giao diện.
Trang 5- Mô phỏng khá tốt hoạt động thang máy đôi.
2.1.Các kĩ thuật làm việc với biến.
2.2 Các kĩ thuât xây dựng hàm, thủ tục.
Có những chương trình con quá dài khiến người đọc khó có thể quan sát
và nắm bắt được các chức năng: tính toán, đánh giá hay biến đổi biểu thức
Trang 6Cần đưa vào các tham số cho hàm để không phải xét quá nhiều trường hợptương tự nhau.
2.3.Các kĩ thuật viết mã nguồn hiệu quả.
- Các cặp dấu đóng mở ngoặc ở nhiều chỗ ko được going đúng, các hang trong câu lệnh sau dấu đóng mở ngoặc cũng vậy
2.4.Các kỹ thuật bẫy lỗi và lập trình phòng ngừa.
Kỹ thuật bẫy lỗi:
Lập trình phòng ngừa:
2.5 Kỹ thuật viết tài liệu chương trình.
- Khá tốt, đầy đủ chức năng của phần mềm
- Nên trình bày khoa học hơn để người đọc dễ quan sát hơn
Trang 73 Kiểm thử chương trình
3.1Danh sách các chức năng cần có
_Gọi thang máy từ bên trong thang máy 1,2
_Gọi thang máy từ bên ngoài
_Thang máy di chuyển
_Đóng mở cửa
_Hiển thị các kết quả di chuyển của thang máy
3.2Kiểm thử cho chức năng 1
* Gọi thang máy từ bên trong thang máy 1,2
_Liệt kê các chiến lược và kỹ thuật áp dụng:
+Kỹ thuật làm việc với biến:đặt tên biến(có tính chất gợi nhớ),kiểu dữliệu của biến phù hợp
+Kỹ thuật viết mã nguồn hiệu quả:sử dung các nguyên tắc chung(giónghang hợp lý,khoảng cách đủ để đọc )
+Kỹ thuật xây dựng hàm ,thủ tục(Dặt tên hàm ngắn gọn ,có tính gợinhớ…)
+ Phong cách lâp trình:Viết chú thích rõ ràng
Trang 83.3Kiểm thử cho chức năng 2
*Gọi thang máy từ bên ngoài
_Liệt kê các chiến lược và kỹ thuật áp dụng:
+Kỹ thuật làm việc với biến:đặt tên biến(có tính chất gợi nhớ),kiểu dữliệu của biến phù hợp
+Kỹ thuật viết mã nguồn hiệu quả:sử dung các nguyên tắc chung(giónghang hợp lý,khoảng cách đủ để đọc )
+Kỹ thuật xây dựng hàm ,thủ tục(Dặt tên hàm ngắn gọn ,có tính gợinhớ…)
+ Phong cách lâp trình:Viết chú thích rõ ràng
Chức năng: Gọi thang máy từ bên ngoài
Bảng 2: Kết quả kiểm thử
tion
Kếtquả
hướng đi lên
2,5.Hướng đi lên
_thang máy di chuyểnđến tầng 2 sau đó dichuyển đến tang 5
Ko xử lýdược
Fail
3.4Kiểm thử cho chức năng 3
* Hiển thị các kết quả di chuyển khách
_Liệt kê các chiến lược và kỹ thuật áp dụng:
+Kỹ thuật làm việc với biến:đặt tên biến(có tính chất gợi nhớ),kiểu dữliệu của biến phù hợp
+Kỹ thuật viết mã nguồn hiệu quả:sử dung các nguyên tắc chung(giónghang hợp lý,khoảng cách đủ để đọc,sử dụng câu lệnh if ,for,,.)
Trang 9+Kỹ thuật xây dựng hàm ,thủ tục(Dặt tên hàm ngắn gọn ,có tính gợinhớ…)
+ Phong cách lâp trình:Viết chú thích rõ ràng
Chức năng: Hiển thị các kết quả di chuyển khách
5
Di qua tầng các tầng2.3.4
Xử lýđược
b Đoạn code sau khi tinh chỉnh
Trang 10void ChonThang()
{ int KC1,KC2,KCC1,KCC2;
KC1=abs(TM1.vitri-khach.vitri);
KC2=abs(TM2.vitri-khach.vitri);
KCC1=abs(TM1.tangcuoi-khach.vitri); KCC2=abs(TM2.tangcuoi-khach.vitri); //neu khach o tren 2 thang may
if((khach.vitri>TM1.vitri))
{
if(khach.vitri>TM2.vitri) {
if((TM1.trangthai*TM2.trangthai)==1) {
if((khach.trangthai==1)) { if(khach.vitri!=6) {
………
}
}
else ………
};
if((TM1.trangthai*TM2.trangthai)==-1) {
if((khach.trangthai==1)) {
if(khach.vitri!=6) {
………
}
}
else …………
};
if((TM1.trangthai==0)) {
if(TM2.trangthai!=0) {
Trang 11if(khach.trangthai==1)
{
if(khach.vitri!=6) {
…………
}
}
else …………
}
};
if(TM2.trangthai==0) {
if(TM1.trangthai!=0) {
if(khach.trangthai==1) {
if(khach.vitri!=6) {
……….
}
}
else ……….
}
};
};
}; if(khach.vitri<TM1.vitri) {
if(khach.vitri<TM2.vitri) {
if((TM1.trangthai*TM2.trangthai)==1) {
if(khach.trangthai==-1) {
if(khach.vitri!=1)
Trang 12{
………
}
}
else ………
};
if((TM1.trangthai*TM2.trangthai)==-1) {
if(khach.trangthai==-1) {
if(khach.vitri!=1) {
………
}
}
else ………
};
if(TM1.trangthai==0) if(TM2.trangthai!=0) {
if(khach.trangthai==-1) {
if(khach.vitri!=1) {
………
}
}
else ………
};
if(TM2.trangthai==0)
if(TM1.trangthai!=0)
Trang 13{
if(khach.trangthai==-1) {
if(khach.vitri!=1) {
………
}
}
else …………
};
}
}; if(khach.vitri<TM1.vitri) {
if(khach.vitri>TM2.vitri) {
if((TM1.trangthai*TM2.trangthai)==-1) {
if (TM1.trangthai==-1) {
…………
}
else ……….
};
if((TM1.trangthai*TM2.trangthai)==1) {
if (TM1.trangthai==-1) {
…………
else {
………
};
};
Trang 14if(TM1.trangthai==0)
if(TM2.trangthai!=0)
{
if(khach.trangthai==1) {
………
}
else …………
};
if(TM2.trangthai==0) if(TM1.trangthai!=0) {
if(khach.trangthai==-1) {
………
}
else ………
};
} ;
}; if((khach.vitri<TM2.vitri)) {
if(khach.vitri>TM1.vitri) if((TM2.trangthai*TM1.trangthai)==-1) {
if (TM2.trangthai==-1) {
…………
}
else ………
};
if((TM1.trangthai*TM2.trangthai)==1) {
if (TM2.trangthai==-1) {
………
Trang 16TM1.duocchon=1;
if(TM2.vitri==khach.vitri)
if(TM1.trangthai==0)
if (TM2.trangthai!=0) TM1.duocchon=1; if(TM2.vitri==khach.vitri)
-Tinh chỉnh các biểu thức logic
-Tinh chỉnh việc biến đổi dữ liệu
b Đoạn code sau khi tinh chỉnh
void GoiThangDen()
{
if(TM1.duocchon==1)
if(TM1.vitri!=khach.vitri)
Trang 17- Tinh chỉnh các biểu thức logic
b Đoạn code sau khi tinh chỉnh
void ChuyenKhach()
{
if(((TM1.trangthai*khach.trangthai)==1)||(TM1.trangthai==0)) if(TM1.vitri==khach.vitri)
if(TM2.duocchon!=0)
{
………
};
Trang 18α Các kĩ thuật sử dụng
- Tinh chỉnh các biểu thưc logic
void ThaoTacCuaKhach()
{
………
while (…………)
{
if(……….)
{
if(khachgoi==4) {
if(TM1.soluongkhach<=5) {
………
}
}
else {
………
};
};
};
} 4.6. Tinh chỉnh cho chức năng di chuyển a.Các kĩ thuật sử dụng -Tinh chỉnh các biểu thức logic -Tinh chỉnh việc biến đổi dữ liệu b.Đoạn code sau khi tinh chỉnh void DiChuyen() { int a,b; …………
if(T[a].thang1==1)
Trang 204.7Kết quả sau khi tinh chỉnh
Sau khi tinh chỉnh mã nguồn, số lượng dòng code của chương trìnhnhiều hơn Đồng thời, việc quan sát và công việc soát lỗi cũng trở nên khó khănhơn nếu có lỗi xảy ra Nhưng tốc độ thực hiện của chương trình được cải thiện.Tốc độ được cải thiện không nhiều do chương trình không quá lớn nên nằmtrong khả năng thực hiện tốt của trình dịch
Trang 215.Đánh giá báo cáo
quy định
Chương trình chạy ổn định nhưngkhông bắt hết các trường hợp,mỗi lần dinhập chỉ nhập dược 1 giá trị cho mộtthang một
khoa học
Cách trình bày khá tốt Nhưng cáchàm con viết quá dài Do không sử dụngcác tham số của hàm nên trong chươngtrình con phải xét tất cả các trường hợpriêng lẻ
việc hợp lý
Việc phân chia công việc của nhómPE12 là khá hợp lí, công việc khá rõ ràngcho từng thành viên
khá chi tiết, đầy đủ các nội dung theo yêucầu
Đánh giá của nhóm là chương trình viết khá tốt Nhóm đánh giá tầm 7điểm