Conscious strategies for developing quality software. Think like an expert architect and create quality software using design patterns and principles.
Suggested by: Coursera (What is Coursera?)
No prior knowledge required
No unnecessary risks
In the Software Design and Architecture specialization course series, you will learn how to apply design principles, patterns, and architecture to create reusable and flexible software applications and systems. You will learn how to express and document the design and architecture of a software system using visual notation.
Practical examples and opportunities to apply your knowledge will help you develop job search skills and relevant training in the software industry.
The final project includes a Java-based Android application, which you will design and develop over the four courses of the specialization. The application will evolve from a single-user application that stores data locally, to a multi-user application that stores data remotely. In each course, you will receive a Java code base as a starting point and will need to document and implement new content using the knowledge you have acquired in the course.
You can find tutorials to help you understand the initial code base and learn the fundamentals of development for Android.
This course takes Java beginners to the next level by covering object-oriented analysis and design. You’ll discover how to create modular, flexible, and reusable software by applying object-oriented design principles and guidelines. You’ll also communicate these designs using a visual notation called Unified Modeling Language (UML).
In the final project, you will be challenged to apply your knowledge of object-oriented design by developing and validating the Java code base for an Android application with appropriate UML documentation.
This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a review of established design patterns, you will gain a foundational knowledge for more complex software applications. Finally, you will identify problematic software designs by referring to the Code Smells Guide.
In the final project, you will be challenged to redesign an existing Java-based Android application to implement a combination of design patterns. You will also audit a given Javascript code base for code smells.
The way in which software components—subprocedures, classes, functions, etc.—are arranged, and the interactions between them, is called architecture. In this course, you will learn how to represent these architectures, both in UML and in other visual tools. We will introduce the most common architectures, their features, and their dilemmas. We will talk about how to evaluate architecture, what makes a good architecture, and how architecture can be improved. We will also talk about how architecture affects the software development process.
In the final project, you will document a Java-based Android application with UML diagrams and evaluate the application’s architecture using the Architecture Dilemma Analysis Method (ATAM).
Building on an understanding of architectural styles, you will review architecture for web applications, then explore the fundamentals of service-oriented architecture (SOA) in two approaches: Web Services (WS*) and Representational State Transfer Architecture (REST). In the final project, you will connect a Java-based Android application with Elasticsearch, a web service with a REST application programming interface (API).



