COURSE 1: INTRODUCTION TO SOFTWARE ENGINEERING
Module 4: Software Architecture, Design, And Patterns
IBM AI DEVELOPER PROFESSIONAL CERTIFICATE
Complete Coursera Study Guide
Last updated:
INTRODUCTION – Software Architecture, Design, And Patterns
In this module, you will delve into the foundations of enterprise software development. Lesson 1 covers software architecture and emphasizes the importance of well-designed architecture. You will learn about the design process, including structural design and behavioral models, and how to create unified modeling language (UML) diagrams to effectively communicate a software’s structure and behavior to the entire team.
Additionally, you will explore object-oriented analysis and design (OOAD). Lesson 2 introduces you to a variety of architectural patterns through hands-on activities that support the architectural design process. Finally, you will learn about the software production environment and the essential components required for deployment.
Learning Objectives
- Describe what software architecture is and explain its importance.
- Compare and contrast structural design with behavioral models and discuss the usefulness of UML diagrams to communicate structure and behavior.
- Explain object-oriented analysis and design.
- Describe component-based and service-oriented architectures and the characteristics of distributed systems.
- Differentiate among 2-tier, 3-tier, peer-to-peer, event-driven, and microservices architectural patterns and provide examples of each pattern.
- Differentiate between production and pre-production environments.
- Describe components commonly required in a production environment.
- Recognize diagrams of architectural patterns based on their descriptions.
PRACTICE QUIZ: SOFTWARE ARCHITECTURE AND DESIGN
1. Which of the following best describes software architecture?
- The choice of technology stack drives the software architecture.
- It is intended for the developers only.
- It serves as a blueprint for the developers. (CORRECT)
- It captures implementation details.
Correct: The software architecture serves as a blueprint for the software system that programmers use to develop interacting components of the software.
2. Which of the following should be included in the software design document (SDD)?
- Object definitions
- Code
- Constraints and dependencies (CORRECT)
- Test cases
Correct: The SDD should contain assumptions, dependencies, constraints, requirements, objectives, and methodologies.
3. Components in a well-structured design should be ___________________.
- tightly coupled
- tightly constrained
- loosely cohesive
- loosely coupled (CORRECT)
Correct: Components in a well-structured design should be loosely coupled and tightly cohesive.
4. Which of the following is an advantage of using UML diagrams when designing software architecture?
- They help plan out structures and behaviors in advance of coding.
- They help facilitate communication among team members.
- They help developers navigate source code.
- All of the above (CORRECT)
Correct: Using UML diagrams helps developers to navigate source code, facilitate communication between team members, and help plan structures and behaviors in advance of coding.
5. What is the blueprint of an object called?
- An instance
- A class (CORRECT)
- A method
- A property
Correct: A class is a generic version of an object that describes what an object can do and the data it can contain.
PRACTICE QUIZ: SOFTWARE ARCHITECTURE PATTERNS AND DEPLOYMENT TOPOLOGIES
1. Which of the following is a characteristic of a distributed system?
- It contains multiple services that coordinate interactions using a communication protocol such as HTTP. (CORRECT)
- It is an individual unit of encapsulated functionality.
- It is an interface for a database.
- It focuses on the decomposition of a design into logical components.
Correct: This is a characteristic of distributed systems.
2. Which term is best described by the statement, “entails the ability to add behavior to a component without changing other components?”
- Reusable
- Extensibility (CORRECT)
- Independent
- Encapsulation
Correct: Extensibility entails the ability to add behavior to a component without changing other components.
3. True or false? A software application’s architecture can be designed as both peer-to-peer and event-driven.
- True (CORRECT)
- False
Correct: Peer-to-peer architecture is not mutually exclusive with an event-driven architecture.
4. Which of the following best describes a staging environment?
- It is for the QA team to test the application’s individual components.
- It is intended for the developers to use while they are actively coding the application.
- It replicates the production environment, but is not intended for general users. (CORRECT)
- It is intended for general users.
Correct: The staging environment replicates the production environment, but is not intended for general users.
5. What does the production environment take into account that pre-production environments do not?
- Load (CORRECT)
- Functional requirements
- Permissions
- Buggy code
Correct: Pre-production environments are intended for a small group of users so do not usually have to take load into consideration.
QUIZ: SOFTWARE ARCHITECTURE, DESIGN, AND DEPLOYMENT TOPOLOGIES
1.Which of the following best describes software architecture?
- The choice of technology stack drives the software architecture.
- It represents the earliest design decisions. (CORRECT)
- It describes how the application should be coded.
- It captures implementation details.
Correct: Software architecture choices represent the earliest design decisions in development.
2. Which of the following are artifacts that result from designing the software architecture?
- UML diagrams (CORRECT)
- Software requirements specification (SRS)
- Test cases
- Administrator user guide
Correct: UML diagrams are often produced when designing software architecture.
3. Components in a well-structured design should be ___________________.
- loosely constrained
- loosely cohesive
- tightly cohesive (CORRECT)
- tightly coupled
Correct: Components in a well-structured design should be tightly cohesive and loosely coupled.
4. Which of the following is an advantage of using UML diagrams when designing software architecture?
- They describe which parameters should be passed when instantiating an object.
- They explain which methods should be included when coding an object.
- They all use JavaScript.
- They serve to bring new team members up to speed quickly. (CORRECT)
Correct: UML diagrams offer a visual way to explain the design of software which helps to bring new team members up to speed quickly on a project.
5. Which of the following best describes encapsulation?
- A component’s design so it doesn’t have dependencies on other components.
- A component should be easily replaced with another component.
- Designing a component so it operates in different environments.
- Bundling data and methods to hide an internal state, so a component’s specific implementation is not exposed. (CORRECT)
Correct: This is a description of encapsulation.
6. Which of the following best describes a service?
- It is a type of object.
- A service defines, composes, and implements loosely coupled independent components so they work together to create an application.
- A unit of functionality that focuses on a solution to a business need, is deployed independently, and is reused by multiple systems. (CORRECT)
- A focus on the decomposition of a design into logical components.
Correct: Correct! This is a description of a service.
7. Which statement is true regarding a 2-tier architecture?
- The interface resides on client machines and makes requests to a server for data or services. (CORRECT)
- The two different tiers are the application tier and the data tier.
- A 2-tier architecture consists of a decentralized network of nodes that are both clients and servers.
- A 2-tier architecture consists of producers and consumers of events.
Correct: The interface resides on the client machines and makes requests to a server for data or services in a 2-tier architecture.
8. Which of the following architecture patterns are mutually exclusive?
- Microservices and event-driven
- Peer-to-peer and two-tier (CORRECT)
- Peer-to-peer and event-driven
- Three-tier and microservices
Correct: In a peer-to-peer architecture, each node is both client and server whereas a two-tier architectural pattern involves clients communicating with servers on separate machines.
9. Which of the following environments is intended for developers to use while they are actively coding the application?
- QA
- Production
- Staging
- Development (CORRECT)
Correct: The development environment is intended for developers to use while they are actively coding the application.
10. Which of the following is a security device that monitors traffic between an internal and an external network?
- Firewall (CORRECT)
- Router
- Load balancer
- Web server
Correct: Correct! A firewall is a security device that monitors traffic between an interior and an exterior network.
CONCLUSION – Software Architecture, Design, And Patterns
In conclusion, this module provides a comprehensive overview of enterprise software development foundations. By understanding the importance of well-designed software architecture and the design process, including structural design and behavioral models, you will be equipped to create unified modeling language (UML) diagrams that effectively communicate a software’s structure and behavior. Exploring object-oriented analysis and design (OOAD) will further enhance your design skills. Lesson 2’s hands-on activities with architectural patterns will deepen your practical understanding of the architectural design process.
Finally, gaining insights into the software production environment and its essential deployment components will prepare you for real-world software development and deployment challenges. This module aims to equip you with the knowledge and skills necessary for successful enterprise software development.
Quiztudy Top Courses
Popular in Coursera
- Google Advanced Data Analytics
- Google Cybersecurity Professional Certificate
- Meta Marketing Analytics Professional Certificate
- Google Digital Marketing & E-commerce Professional Certificate
- Google UX Design Professional Certificate
- Meta Social Media Marketing Professional Certificate
- Google Project Management Professional Certificate
- Meta Front-End Developer Professional Certificate
Liking our content? Then, don’t forget to ad us to your BOOKMARKS so you can find us easily!

