Report

Software Process and Procedural Design • Course Outcome 6. says “Using a software process model, design and implement a significant software application in C.” • Waterfall process model (see Wikipedia) • Procedural design – aka • Hierarchical Reduction • Top-Down Design • Stepwise Refinement Design Example – part 1 • Design and implement a student database • Create student database • Add student data • Delete student data • Search for student records • Print student record(s) • Generate “statistics” Design Example – part 2 • Design and implement a “student database” • Generate “statistics” – e.g. list all first-year students with gpa > 3.14 • Parse inquiry • Find data • Perform Set operation(s) • Print inquiry result Design Example – part 3 • Design and implement a “student database” • Generate “statistics” – e.g. list all first-year students with gpa > 3.14 • Parse inquiry • Read command • Extract set operation from string • Extract set operands from string • Put inquiry in canonical (standard) form • Return canonical form of inquiry Software Process Example for the Term • Develop a program to build a minimal Deterministic Finite State Automata for a given input. • We’ll use a procedural (“stepwise refinement”, “top-down design” or “hierarchical reduction”) design in our waterfall process. Abstract Data Type (ADT) • Course outcome 3. says “Describe the concept of an abstract data type (ADT)” • ADT “describes” a new type of data • Includes only two things – a name, and a list of operations • E.G. --- Matrix ADT might include operations • Create a matrix • Add two matrices giving a new matrix to represent the sum • Multiply two matrices giving a new matrix to represent the product • Invert a matrix • Find the determinant of a matrix • Print a matrix • Notice that NO implementation details included in ADT Set ADT • Name – Set • Operations • Create a set • Print a set • Add element to a set • Remove element from a set • Compute intersection of two sets • Compute union of two sets Your Turn • Provide an ADT for an “array”