High and Low Level Design
CS-160: Software Engineering
Instructor: Rob Bruce
Fall 2016

SLIDE 1: High level design: The big picture

What are the hardware requirements for the project to be implemented? Major categories:

  • "Security"
  • "Hardware"
  • "User Interface"
  • "Internal Interface"
  • "External Interface"
  • "Architecture"

Source: Rod Stephens' Beginning software Engineering, p. 89

SLIDE 2: High level design: Security

Lots of areas to consider in security:

  • "Operating system security"
  • "Application security"
  • "Data security"
  • "Network security"
  • "Physical security"

Source: Rod Stephens' Beginning software Engineering, p. 89

SLIDE 3: High level design: Hardware

What type of hardware do you need?

  • Mobile device?
  • Android tablet or iPad?
  • Notebook or laptop?
  • File server?
  • Dedicated database server?
  • Dedicated web server?
  • Digital camera?
  • Printer?
  • Raspberry PI?

Source: Rod Stephens' Beginning software Engineering, p. 90

SLIDE 4: High level design: User Interface

Building a graphical user interface (GUI)?

  • Sketch a user-interface mock-up digitally or on paper with a pencil
  • How will users interact with your system?
  • Color schemes used throughout user interface?
  • Is user interface intuitive and easy to use?

Source: Rod Stephens' Beginning software Engineering, pp. 91-92

SLIDE 5: High level design: Internal Interface

  • (Internal Interface) != (User Interface)
  • How will various sections of the big project (i.e. code implementations) interact internally?
  • Application Programmer Interface (API) developed and used?
  • How will multiple teams (if a big project) interact to achieve the big picture development goals?
  • How will members communicate across teams?
  • How can development be implemented efficiently?

Source: Rod Stephens' Beginning software Engineering, pp. 92-93

SLIDE 6: High level design: External Interface

Will your system need external resources?

  • A web server?
  • A database server?
  • Cloud computing?
  • SaaS (Software as a Service)?

Source: Rod Stephens' Beginning software Engineering, p. 93

SLIDE 7: High level design: Architecture

What is your application framework architecture?

  • "Monolithic architecture"
  • "Client/Server architecture"
  • "Component-based software engineering (CBSE)"
  • "Service-oriented architecture (SOA)"
  • "Database-centric architecture"
  • "Event-driven architecture (EDA)"
  • "Rule-based architecture"
  • "Distributed architecture"
  • "Mix and match"

Source: Rod Stephens' Beginning software Engineering, pp. 94-100

SLIDE 8: High level design: Reports

  • Will your software project create reports?
  • Example #1: Web-page analytics (who clicked what web pages).
  • Example #2: Usage reports
  • Example #3: Purchasing behaviors

Source: Rod Stephens' Beginning software Engineering, p. 101

SLIDE 9: High vs. Low level design

  • High level focus: design
  • Broad overview
  • Low level focus: implementation
  • Designing efficient and meaningful classes
  • Designing relational databases with data normalization (preferably 3rd normal form or 3NF).
  • This is where the programming happens!

Source: Rod Stephens' Beginning software Engineering, p. 119