Chương 8 - Xây dựng phần mềm. Chương này cung cấp cho người học những kiến thức cơ bản về: Khái niệm, lịch sử ngôn ngữ lập trình, các công cụ lập trình, quy trình lập trình, quy ước viết mã.
Chương 8: Xây dựng phần mềm • Khái niệm co ng c om NHẬP MÔN CÔNG NGHỆ PHẦN MỀM (INTRODUCTION TO SOFTWARE ENGINEERING) an Mục tiêu lập trình du o Khái niệm ng th • Để chuyển thiết kế hệ thống sang ngôn ngữ máy, thực tác vụ theo định thiết kế • Để giảm chi phí giai đoạn sau: Chi phí kiểm tra bảo trì giảm đáng kể với việc mã hóa hiệu • Làm cho chương trình dễ đọc hơn: Chương trình phải dễ đọc dễ hiểu Việc mã hóa cần đảm bảo mục tiêu làm tăng khả hiểu mã đọc mã trình tạo phần mềm dễ bảo trì Để tiến hành việc cài đặt thiết kế, cần phải sử dụng ngơn ngữ lập trình bậc cao cu u • Mã hóa q trình chuyển đổi thiết kế hệ thống sang ngơn ngữ máy • Giai đoạn viết mã liên quan đến việc chuyển đặc tả thiết kế thành mã nguồn • Việc biên soạn tài liệu kèm với mã nguồn cần thiết để dễ dàng xác minh phù hợp mã với đặc tả • Cơng việc mã hóa thực lập trình viên người độc lập với người thiết kế Mục tiêu khơng phải giảm nỗ lực chi phí giai đoạn mã hóa, mà để cắt giảm chi phí giai đoạn sau • Chi phí kiểm thử bảo trì giảm đáng kể với việc mã hóa hiệu CuuDuongThanCong.com https://fb.com/tailieudientucntt Translating from High-level Language to Binary Lịch sử ngơn ngữ lập trình • Các ngơn ngữ hệ thứ nhất: – Ngơn ngữ lập trình mã máy (machine code) – Ngơn ngữ lập trình assembly • Các ngơn ngữ thế thứ hai: – FOTRAN, COBOL, ALGOL, BASIC – Phát triển 1950-1970 c om • Các ngơn ngữ hệ thứ ba – Ngơn ngữ lập trình cấp cao vạn (cấu trúc) – Lập trình hướng đối tượng – Lập trình hướng suy diễn – logic Machine language progam ng High level language program Translation Program 10111000 101110001 00000000 01100100 00000001 11001000 01001001 01110101 11111011 • Các ngôn ngữ hệ thứ tư co Total = Current = 100 while current Total = Total + Current Current = Current - Loop an ng th Các đặc điểm ngơn ngữ lập trình du o Các loại ngơn ngữ lập trình cu u Procedural: Các chương trình nguyên khối chạy từ đầu đến cuối khơng có can thiệp người dùng đầu vào Basic, QBasic, QuickBasic COBOL FORTRAN C Object Oriented/Event Driven (OOED): Các chương trình sử dụng objects để đáp ứng kiện (events); sử dụng đoạn mã cho object JAVA Visual Basic Visual Basic for Applications (VBA) Visual C++ 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt Các công cụ lập trình Các cơng cụ lập trình • Mơi trường: DOS, WINDOWS, UNIX/LINUX • Editors, Compilers, Linkers, Debuggers • Cơng cụ lập trình C/C++: • TURBO C, PASCAL • MS C, Visual Basic, Visual C++, ASP • Cơng cụ lập trình Java • UNIX/LINUX: C/C++, gcc (Gnu C Compiler) • Cơng cụ lập trình C#, NET c om – Turbo C – Visual Studio – Eclipse – Eclipse – Netbean – Visual Studio.NET – MSDN Library • JAVA, CGI, perl • C#, NET ng • Cơng cụ lập trình web co – Visual Studio SQL Server an 10 u • Lập trình • Kiểm tra thuật tốn cài đặt • Thực chương trình máy tính cu • Xác định tốn – Đầu vào – Đầu • Các bước xử lý để tạo kết Các bước lập trình du o Quy trình lập trình ng th 10 Input Processing Output Num-1 Read numbers Total Num-2 Add numbers together Num-3 Print Total number – Compile – Correct syntax errors – Run program with test data – Correct logic errors • Viết tài liệu 11 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Phương pháp lập trình có cấu trúc Phương pháp lập trình có cấu trúc • Outline Solution • Chia tồn chương trình thành mơ-đun nhỏ để chương trình trở nên dễ hiểu Mục đích lập trình cấu trúc tuyến tính hóa luồng điều khiển thơng qua chương trình máy tính cho trình tự thực thi tn theo trình tự mà mã viết • Cấu trúc động chương trình giống với cấu trúc tĩnh chương trình Điều nâng cao khả đọc, khả kiểm tra khả sửa đổi chương trình Luồng kiểm sốt tuyến tính quản lý cách hạn chế tập hợp cấu trúc ứng dụng phép thành mục nhập nhất, định dạng lối • Chúng tơi sử dụng lập trình có cấu trúc cho phép người lập trình hiểu chương trình cách dễ dàng Nếu chương trình bao gồm hàng nghìn lệnh lỗi xảy phức tạp để tìm lỗi tồn chương trình, lập trình có cấu trúc, dễ dàng phát lỗi sau đến vị trí sửa Điều giúp tiết kiệm nhiều thời gian an co ng c om – Nhiệm vụ – Các bước xử lý – Các cấu trúc điều khiển (vịng lặp, rẽ nhánh, v.v.) – Các biến 14 Rule 1: Code Block du o Lập trình có cấu trúc ng th 13 14 • Nếu điều kiện đầu vào đúng, điều kiện sai lỗi phải nằm khối Điều không việc thực thi phép nhảy vào khối (do lỗi đâu chương trình, gỡ lỗi trường hợp khó nhiều) • Rule of Structured Programming: Một khối mã cấu trúc, thể hình Trong điều kiện biểu đồ luồng, hộp có điểm vào điểm cấu trúc Lập trình có cấu trúc phương pháp làm rõ ràng chương trình cu u • Cho phép người lập trình hiểu chương trình cách dễ dàng • Trong lập trình có cấu trúc, dễ dàng phát lỗi tìm đến vị trí để sửa • Điều giúp tiết kiệm nhiều thời gian 15 15 16 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Rule 2: Sequence Rule Three: Alternation • Một chuỗi khối điều kiện thoát khối khớp với điều kiện vào khối sau • Tồn chuỗi coi khối nhất, có điểm vào điểm • Rule of Structured Programming: Hai nhiều khối kết nối liền co ng c om • Rule of Structured Programming: Tùy chọn If-then-else, lựa chọn khối mã Cấu trúc rẽ nhánh sử dụng để đáp ứng điều kiện thoát an 17 18 du o • Rule of Structured Programming: Một cấu trúc có điểm vào cu • Rule of Structured Programming: Vịng lặp (trong khi) gồm điểm vào điểm Điểm vào có điều kiện phải thỏa mãn điểm có u cầu đáp ứng Khơng có bước nhảy vào biểu mẫu từ điểm bên mã Rule 5: Nested Structures u Rule 4: Iteration ng th 17 18 19 19 20 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt Object-Oriented Event-driven Programming (OOED) OOED Programming Process Quy trình sáu bước để viết chương trình máy tính OOED: Xác định vấn đề Tạo giao diện Phát triển logic cho đối tượng hành động Viết kiểm tra mã cho đối tượng hành động Kiểm tra dự án tổng thể Làm tài liệu Bất kể chương trình viết tốt nào, mục tiêu không đạt chương trình khơng giải vấn đề (sai) co ng c om OOED sử dụng đối tượng objects, modules độc lập kết hợp liệu mã chương trình để chuyển message cho OOED dễ làm việc trực quan phương pháp lập trình truyền thống Ví dụ: Visual Basic Người dùng kết hợp đối tượng cách tương đối dễ dàng để tạo hệ thống mở rộng hệ thống có Thuộc tính đối tượng thuộc tính liên kết với đối tượng Phương thức đối tượng hoạt động mà đối tượng thực Đối tượng phản hồi kiện an 21 22 • • u • • Trước tạo ứng dụng máy tính để giải vấn đề, trước tiên cần phải xác định rõ Cần xác định đầu vào đầu Phải xác định liệu đưa vào chương trình kết xuất từ cu • Ví dụ Giao diện tính tốn doanh thu du o Step One: Define Problem ng th 21 22 Phác thảo giao diện (giao tiếp) ứng dụng Xác định hành động đối tượng cần mã hóa 23 23 24 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt Calculate Revenue Interface - Input Step Two: Create Interface co ng c om • Ví dụ: tạo giao diện tính tốn doanh thu – button for action – inputBox for input (Selling Price) – inputBox for input (Units Sold) – MessageBox for output an 25 26 ng th 25 26 Calculate Revenue Interface Output du o Step Three: Develop Logic for Action Objects cu u • Xác định đối tượng hành động làm để phản ứng với kiện Đây logic cho đối tượng • Sử dụng Bảng Nhập / Xử lý / Đầu (IPO) Mã giả để phát triển logic • Bảng IPO hiển thị đầu vào, đầu trình xử lý để chuyển đầu vào thành đầu 27 27 28 28 CuuDuongThanCong.com https://fb.com/tailieudientucntt Pseudocode for Count High Values Button IPO Table for Calculate Revnue Button Input Processing Output Unit Price revenue = unitPrice X quantitySold Revenue Begin procedure Input Selling Price Input Quantity Sold Revenue = Selling Price x Quantity Sold Output Revenue Quantity Sold co ng c om End procedure an 29 30 th 29 30 ng VBA Code for Calculate Revenue Button du o Step Four: Write and Test Code of Action Objects Sub CalculateRevenue() Dim unitPrice As Currency Dim quantitySold As Integer • Chuyển đổi logic thể mã giả sang ngôn ngữ lập trình (sử dụng từ vựng cú pháp ngơn ngữ) • Kiểm tra sửa mã đối tượng viết, giai đoạn gọi gỡ lỗi Dim revenue As Currency u ' Get the user's inputs, then calculate revenue cu unitPrice = InputBox("Enter the unit selling price.", "Selling price") quantitySold = InputBox("Enter the number of units sold.", "Units sold") revenue = unitPrice * quantitySold ' Report the results MsgBox "The revenue from this product was " & Format(revenue, "$#,##0") _ & ".", vbInformation, "Revenue" End Sub 31 31 32 32 CuuDuongThanCong.com https://fb.com/tailieudientucntt Step Six: Document Project in Writing Step Five: Test Overall Project • Tài liệu bao gồm mơ tả hình ảnh văn phần mềm chứa mơ tả phần lập trình mơ tả hướng dẫn bên ngồi • Tài liệu cần thiết dù sớm hay muộn, chương trình cần bảo trì (sửa lỗi, thêm tính mới, xử lý vấn đề chưa nghĩ tới, v.v.) Điều KHÔNG thể thực khơng có tài liệu • Tài liệu bao gồm sách, hướng dẫn sử dụng mục tiêu phần mềm co ng c om • Kiểm tra tồn project cần đảm bảo câu lệnh phải hồn tồn xác khơng chương trình có lỗi • Cần đảm bảo chương trình kiểm tra mơi trường liệu thực thi thực tế mà chương trình sử dụng an 33 34 Hướng dẫn viết mã du o Quy ước viết mã ng th 33 34 cu u • Nguyên tắc viết mã cung cấp cho lập trình viên tập hợp phương pháp • làm cho chương trình đễ đọc bảo trì 35 35 36 36 CuuDuongThanCong.com https://fb.com/tailieudientucntt Hướng dẫn viết mã Hướng dẫn viết mã c om Line Length: It is considered a good practice to keep the length of source code lines at or below 80 characters Lines longer than this may not be visible properly on some terminals and tools Some printers will truncate lines longer than 80 columns Spacing: The appropriate use of spaces within a line of code can improve readability Example: Bad: cost=price+(price*sales_tax) fprintf(stdout ,"The total cost is %5.2f\n",cost); Better: cost = price + ( price * sales_tax ) fprintf (stdout,"The total cost is %5.2f\n",cost); co ng The code should be well-documented: As a rule of thumb, there must be at least one comment line on the average for every three-source line an 37 38 Phong cách lập trình du o Hướng dẫn viết mã ng th 37 38 • Các kỹ thuật sử dụng để viết mã nguồn cho chương trình Hầu hết phong cách lập trình thiết kế để giúp lập trình viên nhanh chóng đọc hiểu chương trình tránh mắc lỗi • Một phong cách viết mã tốt khắc phục nhiều khiếm khuyết ngơn ngữ lập trình • Mục tiêu phong cách lập trình tốt cung cấp mã đơn giản dễ hiểu • Phong cách lập trình sử dụng chương trình khác bắt nguồn từ tiêu chuẩn mã hóa quy ước mã cơng ty tổ chức máy tính khác, sở thích lập trình viên thực tế cu u The length of any function should not exceed 10 source lines: A very lengthy function is generally very difficult to understand as it possibly carries out many various functions For the same reason, lengthy functions are possible to have a disproportionately larger number of bugs Do not use goto statements: Use of goto statements makes a program unstructured and very tough to understand Inline Comments: Inline comments promote readability Error Messages: Error handling is an essential aspect of computer programming This does not only include adding the necessary logic to test for and handle errors but also involves making error messages meaningful 39 39 40 40 CuuDuongThanCong.com https://fb.com/tailieudientucntt Phong cách lập trình Phong cách lập trình co ng c om • Clarity and simplicity of Expression: The programs should be designed in such a manner so that the objectives of the program is clear • Naming: In a program, you are required to name the module, processes, and variable, and so on Care should be taken that the naming style should not be cryptic and non-representative • For Example: a = 3.14 * r * r area of circle = 3.14 * radius * radius; • Control Constructs: It is desirable that as much as a possible single entry and single exit constructs used • Information hiding: The information secure in the data structures should be hidden from the rest of the system where possible Information hiding can decrease the coupling between modules and make the system more maintainable an 41 42 • • • u • Nesting: Deep nesting of loops and conditions greatly harm the static and dynamic behavior of a program It also becomes difficult to understand the program logic, so it is desirable to avoid deep nesting User-defined types: Make heavy use of user-defined data types like enum, class, structure, and union These data types make your program code easy to write and easy to understand Module size: The module size should be uniform The size of the module should not be too big or too small If the module size is too large, it is not generally functionally cohesive If the module size is too small, it leads to unnecessary overheads Module Interface: A module with a complex interface should be carefully examined Side-effects: When a module is invoked, it sometimes has a side effect of modifying the program state Such side-effect should be avoided where as possible cu • du o Phong cách lập trình ng th 41 42 43 43 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... mục tiêu phần mềm co ng c om • Kiểm tra tồn project cần đảm bảo câu lệnh phải hồn tồn xác khơng chương trình có lỗi • Cần đảm bảo chương trình kiểm tra mơi trường liệu thực thi thực tế mà chương. .. chương trình máy tính cu • Xác định to? ?n – Đầu vào – Đầu • Các bước xử lý để tạo kết Các bước lập trình du o Quy trình lập trình ng th 10 Input Processing Output Num-1 Read numbers Total Num-2... tư co Total = Current = 100 while current Total = Total + Current Current = Current - Loop an ng th Các đặc điểm ngôn ngữ lập trình du o Các loại ngơn ngữ lập trình cu u Procedural: Các chương