Skip to content

Introduction to SDA

Estimated time to read: 2 minutes

Overview

Look at your code, is it a good design, a better design... or was there a design at all?

  • How do you know if software is well designed?
  • Does a small change make a ripple effect?
  • Was it hard to maintain after release?

- If any of the above answer true, then it probably wasn't designed in a way that follows good practises.

Good design isn't just about code, it is also about being able to express your ideas with other developers, teams and clients.

A well thought out makes it easier to implement, reduces the need for major changes later in the project and saves you from headaches down the line.

Knowledge of SDA enables your software to become flexible, reusable and maintainable.


What is SDA?

Consider this scenario. You join a project that's been in development for a while. You look at the code and become instantly overwhelmed. You can't tell what the purpose of the pieces are, things are unorganised, and design documentation is non-existent. You don't even know where to begin. These are all signs that the project was not well-designed from the outset.

Or let's say that you are now working on a personal development project. When you began, you weren't quite sure what the functionalities would be, but you just started coding. It didn't matter that the code was unorganised because you were the only one working on it and you know how it works. You come up with a great new feature for your product, but in implementing it, you broke the program elsewhere. You should have designed it right.

Issues such as the above are common in the industry. SDA is extremely beneficial.

What SDA will cover

  • How to apply design principles, patterns and architectures to create reusable and flexible software applications and systems.
  • How to express and document the design and architecture of a software systems using visual notation.
  • The above will follow the ACM / IEEE Software Engineering Curriculum Guidelines

Across the following areas:

  • Object-Oriented Design (ODD)
  • OOD covers the basics of Java and Object-Oriented analysis and design. Looking at how to create flexible, useable and maintainable software by applying OOD principles. Expressing designs through visual notation, UML (Unified Modelling Language).

  • Design Patterns

  • Design issues in applications can be resolved through design patterns that are applied to the application. Looks into Object-Oriented Analysis and Design by covering patters used in interactive applications. This enables the understanding of complex applications.

  • Software Architecture

  • Looking at how Architecture can be used as a basis for organising the software systems found in the industry today. Exploring the structure of large scale software systems through UML diagrams. Looking at competing quality attributes.

  • Service-Oriented Architecture (SOA)

  • Based on the understanding of architectural styles, explore the architectures and approaches for web services and representational stale transfer or RET architecture.