We may earn an affiliate commission when you visit our partners.
Course image
Spencer Rugaber, Eric Feron, and Jarrod Parkes

Software Architecture and Design teaches the principles and concepts involved in the analysis and design of large software systems. Learn online with Udacity.

Here's a deal for you

We found an offer 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

P1L1 Introduction
P1L2 Text Browser Exercise (Analysis)
P1L3 Design Concepts
P2L1 Review of UML
Read more
P2L2 Object Oriented Analysis Exercise
P2L3 UML Class Models
P2L4 Design Studies
P2L5 Library Exercise (UML)
P2L6 Formal Specification Exercise
P2L7 OCL
P2L8 Library Exercise (OCL)
P2L9 Behavior Modeling
P2L10 Clock Radio Exercise
P3L1 KWIC Exercise
P3L2 Overview of Architectural Styles
P3L3 Architectural Views
P3L4 Text Browser Exercise (Arch)
P3L5 Non-Functional Reqs & Arch Styles
P3L6 Connectors
P3L7 Acme
P3L8 Refinement
P3L9 Middleware
P3L10 Guest Interview: LayerBlox
P4L1 Components
P4L2 Coffee Maker Exercise
P4L3 Object Design
P4L4 Design Patterns
P4L5 Design Principles
P4L6 Design Reviews
Geeks in Black: The Code Review

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Reinforces understanding of design concepts, which is standard in software development
Emphasizes architectural styles, a key skill for software architects
Teaches Object-Oriented Analysis, which is valuable for understanding software design
Introduces design patterns, which offer solutions to common software design problems
Provides hands-on labs and interactive material, allowing learners to apply concepts practically

Save this course

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

Reviews summary

Software systems analysis & design

Software Architecture & Design is a course that students recommend for those who have some familiarity with Software Engineering Principles. Students note that lectures are short and concise, and the course very engaging.

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 & Design with these activities:
UML Refresher
Reviewing UML will provide a solid foundational understanding of this vital architectural language used extensively throughout the course.
Browse courses on UML
Show steps
  • Reread your lecture notes on UML
  • Review the slides from the UML unit
  • Take a practice quiz or exam on UML
UML Class Model Peer Review
By participating in a peer review of a UML class model, you will gain valuable feedback and improve your understanding of how to create effective class models.
Browse courses on UML
Show steps
  • Find a peer to work with
  • Exchange your UML class models
  • Provide feedback on your peer's model
  • Incorporate the feedback into your own model
Architectural Styles Practice
Working through practice problems will strengthen your ability to identify and apply the right architectural style for different scenarios.
Browse courses on Architectural Styles
Show steps
  • Find a set of architectural style practice problems
  • Solve the problems on your own
  • Check your answers against the solutions
Four other activities
Expand to see all activities and additional details
Show all seven activities
Object-Oriented Analysis and Design
This classic text provides a comprehensive overview of object-oriented analysis and design principles and techniques, reinforcing core concepts covered in the course.
Show steps
  • Read the book thoroughly
  • Take notes on key concepts and techniques
  • Complete the exercises at the end of each chapter
Architectural Styles Comparison Blog
By creating a blog comparing different architectural styles, you can reinforce your understanding of their strengths and weaknesses and how to choose the right style for a given project.
Browse courses on Architectural Styles
Show steps
  • Choose two or more architectural styles to compare
  • Research the styles and their applications
  • Highlight the key differences and similarities between the styles
  • Publish the blog post
Design Pattern Presentation
By creating a presentation on a design pattern, you will gain deep knowledge and understanding of its purpose, benefits, and real-world applications.
Browse courses on Design Patterns
Show steps
  • Choose a design pattern to focus on
  • Research the pattern and its applications
  • Create a presentation that explains the pattern, its benefits, and how it is used
  • Present your findings to your classmates or an instructor
Acme Code Contribution
Contributing to an open-source project like Acme will provide practical experience with software modeling techniques covered in the course.
Browse courses on Software Modeling
Show steps
  • Find an open issue or feature request in the Acme repository
  • Fork the Acme repository
  • Implement the fix or feature
  • Submit a pull request

Career center

Learners who complete Software Architecture & Design will develop knowledge and skills that may be useful to these careers:
Software Architect
Software Architects design and develop the overall architecture of software systems. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create systems that are scalable, reliable, and maintainable.
Information Security Analyst
Information Security Analysts protect computer systems from unauthorized access and attacks. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create systems that are secure and resistant to attack.
Systems Analyst
Systems Analysts work to design and implement computer systems. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create systems that are efficient, reliable, and secure.
Software Engineer
Software Engineers design, develop, and maintain software applications. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to use software architecture and design to create software systems that are efficient, reliable, and secure.
Database Administrator
Database Administrators manage and maintain databases. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create databases that are efficient, reliable, and secure.
User Experience Designer
User Experience Designers work to improve the user experience of websites and other digital products. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create user interfaces that are easy to use, understand, and navigate.
DevOps Engineer
DevOps Engineers work to bridge the gap between development and operations teams. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create systems that are easy to develop, deploy, and maintain.
Software Quality Assurance Analyst
Software Quality Assurance Analysts test and evaluate software to ensure that it meets quality standards. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create software systems that are free of defects.
Cloud Architect
Cloud Architects design and manage cloud computing infrastructure. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create cloud-based systems that are scalable, reliable, and secure.
Computer Network Architect
Computer Network Architects design and manage computer networks. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create networks that are scalable, reliable, and secure.
Business Analyst
Business Analysts work to understand the needs of businesses and to help them develop software solutions that meet those needs. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create software systems that are aligned with business objectives.
Data Analyst
Data Analysts analyze data to provide insights to help businesses make better decisions. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to use software architecture and design to create data-driven solutions. This will help you to identify and analyze data patterns, and to communicate your findings to stakeholders in a clear and concise way.
Information Architect
Information Architects design and manage the structure of websites and other digital products. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create information systems that are usable, accessible, and findable.
Technical Writer
Technical Writers create documentation for software products. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create documentation that is clear, concise, and accurate.
Product Manager
Product Managers are responsible for the development and launch of new products. This course can help you develop the skills needed to succeed in this role. In particular, the course will teach you how to apply software architecture and design principles to create products that meet the needs of users.

Reading list

We've selected 16 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 & Design.
Provides a comprehensive overview of software architecture, covering topics such as architectural styles, patterns, and best practices. It valuable resource for both beginners and experienced software architects.
Provides a set of guidelines for writing clean and maintainable code. It valuable resource for any software developer who wants to improve their coding skills.
Provides a comprehensive overview of computer architecture, from the hardware to the software. It valuable resource for anyone who wants to understand how computers work.
Provides a clear and concise introduction to operating systems. It great way to learn about the fundamentals of operating systems.
Provides a comprehensive overview of computer networks. It valuable resource for anyone who wants to understand how networks work.
Provides a comprehensive overview of compiler construction. It valuable resource for anyone who wants to understand how compilers work.
Provides a comprehensive overview of algorithms. It valuable resource for anyone who wants to learn about the design and analysis of algorithms.
Provides a comprehensive overview of data structures and algorithms in Java. It valuable resource for anyone who wants to learn about the design and analysis of data structures and algorithms.
Provides a comprehensive overview of machine learning. It valuable resource for anyone who wants to learn about the design and analysis of machine learning systems.
Provides a comprehensive overview of deep learning. It valuable resource for anyone who wants to learn about the design and analysis of deep learning systems.
Provides a comprehensive overview of natural language processing with Python. It valuable resource for anyone who wants to learn about the design and analysis of natural language processing systems.

Share

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

Similar courses

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