3 PDL Overview n PDL (Program Design Language) is for designing at a slightly higher level that the code itself. n Use English-like (or Thai-like) statements that precisely describe specific operations n Write PDL at the level of intent n Write PDL at a low enough level that generating code from it will be nearly automatic
6 PDL Benefits n PDL makes reviews easier n PDL supports the idea of iterative refinement: architecture->interface & PDL->source code n PDL makes changes easier n PDL minimizes commenting effort –PDL will be turned into comments for source code n PDL is easier to maintain that other forms of design documentation
7 Design the Routine Example: ReadErrorMessage() Spec: RecordErrorMessage() takes an error code as an input argument and outputs an error message corresponding to the code. It’s responsible for handling invalid codes. If the program is operating interactively, RecordErrorMessage() prints the message to the user. If it’s operating in batch mode, RecordErrorMessage() logs the message to a message file. After outputting the message, RecordErrorMessage() returns a status variable indicating whether it succeeded or failed.
8 Design the Routine n Check the prerequisites –check if the job of the routine is well defined and fits into the architecture n Define the problem that the routine will solve –State the problem in enough detail –State the Input, Output, Internal data, Error handling n Name the routine –Use precise, unambiguous name (like ReadErrorMessage() ) –Avoid names with the words ‘Handle’, ‘Process’ or other vague words
9 Design the Routine n Decide how to test the routine –Think about testing cases, the method to use, etc. n Think about efficiency –In general, refining overall design helps a lot more. n Research the algorithms and data structures –Don’t “reinvent the wheel” n Write the PDL –Begin with the purpose of the routine, followed by the algorithm
10 Design the Routine n Think about the data –If data manipulation is the main purpose, think about it before the logic. n Check the PDL –Make sure you really understand PDL. Otherwise, how can you understand the code written from it? n Iterate –Try as many ideas as you can in PDL before start coding. –Refine until each PDL statement can be translated into one or a few lines of code
11 Turning PDL into Code n Write the routine declaration n Added the header comment n Turn the PDL into comments n Fill in the code below each comment.
12 Turning PDL into Code n Check the code informally n Clean up the leftovers n Repeat steps as needed –In some cases, you may need to move back to design. n Formally review the code –Until you are sure that you understand why the code works! –The main difference between hobbyists and professional programmers grows out of moving from superstition into understanding.