We may earn an affiliate commission when you visit our partners.
Course image
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

Two deals to help you save

We found two deals and offers that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

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
Architectural Styles
Software comes in all shapes and sizes. The architecture you choose will affect every part of your software, from its security and efficiency, to its modularity and maintainability. In this module we will examine the different architectures that you have to choose from to shape your software.
Architecture in Practice
The architecture is the most fundamental aspect of software. You will learn how development teams describe architectures, plan successful architectures based on quality attributes, and evaluate the resulting architecture. You will also learn how architecture relates to organization structure and even product planning!
Capstone Challenge
Now, in the final module of the course, you will evaluate the proposed architecture to extend the functionality of the example Android code base.

Good to know

Know what's good
, what to watch for
, 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

Save Software Architecture to your list so you can find it easily later:
Save

Reviews summary

Well-structured software architecture course

Learners say this well-structured course thoroughly covers software architecture concepts in a clear and organized manner. The informative content and engaging assignments provide a solid foundation in software architecture principles. Students highly recommend this course for those new to the field or looking to advance their architectural design skills.
Well-organized and thought-provoking
"Course content is awesome. Showed real life example."
"Foram dias de muito aprendizado e prática, que me fizeram pensar fora da caixa encontrar soluções, conforme as especificações que me eram solicitadas nas atividades. Cada nova etapa um novo desafio, noites que me deixavam sem sono. No fim, estou pronta para meu próximo desafio."
"The course is very good in its content: a lot of documentation, clear explainations and covers subjects that are often underrated."
Knowledgeable and clear in explanations
"it's a methodological course that takes you systematically to know SW architecture and how to evaluate it however you'll need to do further research based on some of the terms and definitions and study it out of the course to make the most of its materials."
"The contents are very well explained but they felt a little bit shallow though and the capstone project seems unsufficient to me to give solid foundations on the learned material, but it is definitely a good starting point to keep digging deeper on your own."
"The lessons are clean and to-the-point. Quizes help to evaluate your understanding of the concepts. Peer reviews help to get other people's perspectives of a same problem."
Practical and well-designed
"Excellent course, really good explanation and interesting evaluation methodology"
"This course provides important info in a brief manner about major architectures used in the current software industry. The course is easy to follow and the assignments also provide good exercise. Overall I recommend this course to beginners of Software Architecture."
"This course has been excellent and has greatly helped me in shaping my understanding of software architecture. The accompanying instructional material was truly useful and served as a valuable resource for me. "
Appropriate for beginners and experienced learners alike
"This course is very useful, but i think intructor need add more example in presentation.I support student easy make assigment.Thank you!"
"This course can provide more practical assignments for students to master the concepts covered in lectures."
"A great course that gives a good introduction about software architecture , architectural models , architecture evaluation and ATAM"
In-depth and informative
"At first I thought that I have the relevant experience already and most topics seemed familiar to me but, as the weeks progressed I learnt a lot of new techniques that I hadn't heard of/used before in my career, which I will add to my toolbox now."
"Great content. Tonnes of useful and actual information about software engineering and architecture!"
"This was a very insightful and interesting course which gave a deep and thorough knowledge of all aspects of Software architecture. Very well designed. Thanks"

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:
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.
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.
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.
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.
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.
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.
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.
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

Here are nine courses similar to Software Architecture.
UML Class Diagrams for Software Engineering
Most relevant
Service-Oriented Architecture
Software Engineering: Software Design and Project...
Picturing Architecture: UML (The Good Bits) and More
Design Microservices Architecture with Patterns &...
Microsoft Azure for .NET Developers - Cloud Patterns and...
Software Architecture for the Enterprise Architect
UML and Object-Oriented Design Foundations
Object-Oriented Design
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 - 2024 OpenCourser