1. Systems and Software Development 1.1 The Systems Life Cycle
1.1.6 Design: Approaches
Top-down or bottom-up? Modular decomposition is a top-down approach: consider the whole problem and break it into parts. Bottom-up approaches are not common: take many small modules and build them into a larger product (see what evolves...).
Advantages of modularity Debugging the program is easier – errors can usually be isolated to a particular module. Time saving – each module is worked on by a team, who can move to another module if they finish early or that team is struggling.
Advantages of modularity Easier to understand – managers can get an overview without having to know the details. More flexible – modules may be dropped if not working or old ones picked “off the shelf”. Specialisation – programmers become experts on certain modules.
How modular? Eventually modules could equate to classes or even methods. Eventually designers write pseudocode (informal provisional code) for each module.
Prototyping A prototype is a simplified version of a proposed solution for presentation to the end- user during the analysis or design phase. Not fully functional but allows for user feedback. Not necessarily using the same software e.g. could be a presentation.
Advantages of prototyping Helps end-user be more specific about what they actually need. Different versions of the prototype allow the designer and end-user to express a preference. Allows problems to be caught and changed earlier (i.e. cheaper and safer).
Solution efficiency Designs are chosen and prototypes tested not just for whether they work but also for efficiency: speed, reliability, memory use, processor use.
Efficiency: memory If records have fixed-length fields, it is possible to calculate how much space the data file needs. In Java, bytes use 1 byte (!), chars use 2, ints use 4, doubles use 8.
Efficiency: memory If the whole file is loaded into IAS, how much memory will be required? Can the whole project be stored on a memory stick? How long would it take to download? What are the ideal length for String variables (too short - truncates values, too long - overflows memory)?
Efficiency: processor Is this less important with today’s processors? Sorting is very processor-intensive. Look for efficient algorithm designs e.g. quicksort (HL) over bubble sort, if using bubble sort, use a flag to indicate no more passes are needed when the data are sorted.