Designing Software Soutions

"The hardest single part of building a software system is deciding precisely what to build." —Fred Brooks

When writing a program you need to begin with a solid understanding of the problem you intend to solve. Then, move on to understanding the data you will be using in your solution. Your program will use data in variables, constants and literals. Your program will also contain data structures, files and data validation.

Overview: Developing software solutions

Requirements and design phase:

  • Define the problem to be solved.
  • Outline your solution on paper.
  • Develop the outline into an algorithm.
  • Test the algorithm for correctness.
  • Document your solution.

Implementation and verification phase:

  • Code the algorithm into a specific programming language.
  • Run the program on the computer.
  • Test your program, make corrections.
  • Repeat.

Maintenance phase:

  • Document and maintain the program.

Three different approaches to program design:

  • Procedural-driven
    • Example: C, Fortran, Basic
  • object-oriented / event-driven
    • Example: Java, C#
  • data-driven program design (called symbolic programming)
    • Example: LISP

Procedural programming

Object-oriented programming

Symbolic programming

Top-down development

Top-down development is an approach to software development. The designer formulates an overview of the problem. The designer then determines the necessary subsystems or components required to solve the problem. Each component is further refined in greater detail. At some point a solution emerges. Top-down development emphasizes planning.

Algorithm

An algorithm is a set of detailed, unambiguous and ordered instructions. An algorithm illustrates steps to convert given input into the desired output.

Pseudocode

Pseudocode is an English language-like way of representing the algorithm

Advantages of Pseudocode

Conventions for Pseudocode