We may earn an affiliate commission when you visit our partners.
Kenny Wong

The way that software components — subroutines, classes, functions, etc. — are arranged, and the interactions between them, is called architecture. In this course you will study the ways these architectures are represented, both in UML and other visual tools. We will introduce the most common architectures, their qualities, and tradeoffs. We will talk about how architectures are evaluated, what makes a good architecture, and an architecture can be improved. We'll also talk about how the architecture touches on the process of software development.

Read more

The way that software components — subroutines, classes, functions, etc. — are arranged, and the interactions between them, is called architecture. In this course you will study the ways these architectures are represented, both in UML and other visual tools. We will introduce the most common architectures, their qualities, and tradeoffs. We will talk about how architectures are evaluated, what makes a good architecture, and an architecture can be improved. We'll also talk about how the architecture touches on the process of software development.

In the Capstone Project you will document a Java-based Android application with UML diagrams and analyze evaluate the application’s architecture using the Architecture Tradeoff Analysis Method (ATAM).

After completing this course, you will be able to:

• Compare and contrast the components, connections, protocols, topologies, constraints, tradeoffs, and variations of different types of architectural styles used in the design of applications and systems (e.g., main program and subroutine, object-oriented, interpreters, pipes and filters, database centric, event-based).

• Describe the properties of layered and n-tier architectures.

• Create UML ipackage, component, and deployment diagrams to express the architectural structure of a system.

• Explain the behaviour of a system using UML activity diagrams.

• Document a multi-application system with a layered architecture.

Enroll now

What's inside

Syllabus

UML Architecture Diagrams
In this module you will learn about software architecture. You will learn why architecture is important, what perspectives need to be considered, and how to communicate architecture using UML.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Examines software architectures that are standard in industry
Develops skills for creating UML architectural diagrams
Explores architectures in practice and how they relate to organization structure
Teaches learners how to evaluate architectures using the Architecture Tradeoff Analysis Method (ATAM)
This course explicitly requires learners to come in with extensive background knowledge first

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Foundational software architecture concepts

According to learners, this course provides a strong theoretical foundation in software architecture, covering UML diagrams, architectural styles, and evaluation methods like ATAM. Many found the concepts clear and well-explained, making complex topics accessible. The Capstone Project is highlighted as a valuable opportunity to apply learning, though some note it can be challenging and parts of the material, particularly the Android Capstone context, feel somewhat outdated to a few. While praised for theory, some reviewers desired more hands-on coding examples. Overall, it's seen as a solid introduction for those seeking a deep understanding of architectural principles.
Practical application but can be challenging.
"The Capstone Project is the most valuable part, allowing application of ATAM to a real system."
"The Capstone was quite challenging, especially implementing the ATAM evaluation method."
"Working on the Android Capstone helped solidify the concepts, though it assumed some prior mobile dev knowledge."
Teaches documenting architecture with UML.
"Learning to use UML diagrams for architecture was very helpful for my work, a skill I use constantly now."
"The sections on documenting systems are practical and applicable, especially the UML parts."
"I now feel more confident creating package and component diagrams for my projects."
Provides essential architecture concepts.
"The course provides a very solid theoretical foundation in software architecture. I learned a lot about different styles."
"I feel I have a much better grasp on fundamental concepts after completing this course."
"It covers the essential architectural styles and principles quite well, offering a great base."
Parts of the course need updates.
"Some of the content, especially in the Capstone on Android, feels a bit outdated regarding current practices."
"The examples used sometimes feel like they are from an older era of software development."
"The videos could benefit from a refresh to reflect modern tooling and techniques."
More theory-focused, less coding.
"I wished there were more hands-on coding examples rather than just theoretical discussions throughout."
"It's very theory-heavy. Could definitely use more labs or practical exercises to balance it out."
"The course is great for theory but don't expect to write much code during the modules."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Software Architecture with these activities:
Analyze Sample Architectures
Develop your analytical skills by examining and evaluating existing software architectures.
Browse courses on Software Architecture
Show steps
  • Gather sample architectures from open-source projects or online repositories.
  • Study the architectures, identifying their components, connections, and design decisions.
  • Evaluate the architectures based on metrics such as modularity, maintainability, and performance.
  • Compare and contrast different architectures to understand their strengths and weaknesses.
Join a Study Group to Discuss Architecture Concepts
Enhance your understanding of architecture concepts by engaging in discussions with peers.
Browse courses on Software Architecture
Show steps
  • Find or create a study group with other students enrolled in the course.
  • Meet regularly to discuss the course material, share perspectives, and clarify concepts.
  • Work together on practice problems or exercises related to software architecture.
Read 'Design Patterns: Elements of Reusable Object-Oriented Software'
Familiarize yourself with fundamental design patterns to enhance your understanding of software architecture principles.
Show steps
  • Acquire a copy of the book.
  • Read the introduction and overview chapters to grasp the concepts of design patterns.
  • Study individual design patterns, their intent, structure, and applicability.
  • Identify and analyze patterns in real-world software applications.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Follow Tutorials on Architectural Styles
Gain a practical understanding of different architectural styles and their advantages and drawbacks.
Browse courses on Architectural Styles
Show steps
  • Search for tutorials on specific architectural styles (e.g., layered, microservices, event-driven).
  • Follow the tutorials to learn about the concepts, patterns, and best practices of each style.
  • Apply the knowledge to analyze and design software architectures.
Attend a Workshop on Architecture Evaluation Techniques
Gain hands-on experience in evaluating software architectures by participating in a dedicated workshop.
Browse courses on Software Architecture
Show steps
  • Identify and register for a workshop on architecture evaluation techniques.
  • Attend the workshop and actively participate in the exercises and discussions.
  • Apply the learned techniques to evaluate real-world software architectures.
Create a UML Architecture Diagram for a Personal Project
Enhance your understanding of UML diagrams and architecture by applying them to a practical scenario.
Show steps
  • Choose a personal software project or idea.
  • Identify the key components, connections, and relationships in your project.
  • Create a UML architecture diagram (e.g., class diagram, component diagram, deployment diagram) to represent the project's architecture.
  • Analyze and refine the diagram to ensure it accurately reflects the project's structure and functionality.
Design an Architecture for a Mobile Application
Apply your knowledge of software architecture to a real-world scenario by designing an architecture for a mobile application.
Browse courses on Software Architecture
Show steps
  • Define the requirements and scope of the mobile application.
  • Identify the key components and their functionalities.
  • Choose an appropriate architectural style and justify the choice.
  • Create a detailed architecture diagram, specifying the components, interactions, and data flow.
  • Evaluate the architecture based on relevant quality attributes (e.g., performance, security, scalability).

Career center

Learners who complete Software Architecture will develop knowledge and skills that may be useful to these careers:
Software Architect
A Software Architect is responsible for designing, developing, and maintaining the software architecture of an organization. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system. Additionally, the course will help you understand how to evaluate the quality of a software architecture.
Technical Architect
A Technical Architect is responsible for designing, developing, and maintaining the technical architecture of an organization. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system. Additionally, the course will help you understand how to evaluate the quality of a software architecture.
Architecture Manager
An Architecture Manager is an IT professional who plans, designs, implements, and maintains the software architecture of an organization. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system.
Enterprise Architect
An Enterprise Architect is responsible for designing, developing, and maintaining the enterprise architecture of an organization. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system. Additionally, the course will help you understand how to evaluate the quality of a software architecture.
Systems Architect
A Systems Architect is responsible for designing, developing, and maintaining the systems architecture of an organization. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system. Additionally, the course will help you understand how to evaluate the quality of a software architecture.
Systems Analyst
A Systems Analyst is responsible for analyzing, designing, and implementing systems. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system. Additionally, the course will help you understand how to evaluate the quality of a software architecture.
Data Architect
A Data Architect is responsible for designing, developing, and maintaining the data architecture of an organization. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system. Additionally, the course will help you understand how to evaluate the quality of a software architecture.
Software Engineer
A Software Engineer is responsible for designing, developing, and maintaining software applications. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system. Additionally, the course will help you understand how to evaluate the quality of a software architecture.
IT Consultant
An IT Consultant is responsible for providing consulting services to organizations on how to use IT to achieve their business goals. The course will help you understand the different types of software architecture, including layered and n-tier architectures. You will also learn how to create UML diagrams to express the architectural structure of a system. Additionally, the course will help you understand how to evaluate the quality of a software architecture.
Product Manager
A Product Manager is responsible for managing the development and launch of new products. The course may help you understand the different types of software architecture, including layered and n-tier architectures. Additionally, the course may help you understand how to evaluate the quality of a software architecture.
Business Analyst
A Business Analyst is responsible for analyzing business needs and developing solutions to meet those needs. The course may help you understand the different types of software architecture, including layered and n-tier architectures. Additionally, the course may help you understand how to evaluate the quality of a software architecture.
IT Project Manager
An IT Project Manager is responsible for managing IT projects. The course may help you understand the different types of software architecture, including layered and n-tier architectures. Additionally, the course may help you understand how to evaluate the quality of a software architecture.
Technical Writer
A Technical Writer is responsible for writing technical documentation. The course may help you understand the different types of software architecture, including layered and n-tier architectures. Additionally, the course may help you understand how to evaluate the quality of a software architecture.
Quality Assurance Analyst
A Quality Assurance Analyst is responsible for testing software to ensure that it meets quality standards. The course may help you understand the different types of software architecture, including layered and n-tier architectures. Additionally, the course may help you understand how to evaluate the quality of a software architecture.
Software Tester
A Software Tester is responsible for testing software to ensure that it meets quality standards. The course may help you understand the different types of software architecture, including layered and n-tier architectures. Additionally, the course may help you understand how to evaluate the quality of a software architecture.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Software Architecture.
An in-depth exploration of the architectural patterns, practices, and principles that can help software architects create systems that are more efficient, reliable, and maintainable.
A comprehensive guide to designing and building data-centric applications, covering topics such as data modeling, storage, processing, and integration.
A practical guide to software architecture, providing insights into the decisions and trade-offs involved in designing and implementing complex systems.
A comprehensive introduction to software architecture, covering topics such as architectural patterns, styles, and best practices.
A guide to domain-driven design, a software development approach that emphasizes the importance of understanding the business domain in order to create effective software solutions.
A collection of proven SOA design patterns that can be used to improve the performance, scalability, and reliability of SOA-based systems.
A collection of proven microservices patterns that can be used to solve common problems in microservice development.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser