We may earn an affiliate commission when you visit our partners.
Course image
Kenneth W T Leung

Software Development Life Cycle (SDLC) is the process of developing software through planning, requirement analysis, design, implementation, testing, and maintenance. This course focuses on the requirement analysis phase of SDLC, and you will learn how to use UML models to capture the system requirements and to facilitate communication between client/users and developers. UML is a general purpose visual modeling language for systems. It can be used to highlight different aspects of the system that are of interest to different stakeholders. Data requirements are captured in the domain model, which describes the important concepts of the application domain as classes, associations between them and constraints on them. Functional requirements are captured in the use-case model to describe the interactions between the system and its environment (users, other systems).

Read more

Software Development Life Cycle (SDLC) is the process of developing software through planning, requirement analysis, design, implementation, testing, and maintenance. This course focuses on the requirement analysis phase of SDLC, and you will learn how to use UML models to capture the system requirements and to facilitate communication between client/users and developers. UML is a general purpose visual modeling language for systems. It can be used to highlight different aspects of the system that are of interest to different stakeholders. Data requirements are captured in the domain model, which describes the important concepts of the application domain as classes, associations between them and constraints on them. Functional requirements are captured in the use-case model to describe the interactions between the system and its environment (users, other systems).

UML incorporates the current best practices in Object-Oriented modeling techniques. Basic object-oriented programming (OOP) concepts are required to attempt the course. It is recommended to take the courses in the order they are listed, as they progressively develop techniques and concepts about software engineering, but it is not a hard requirement.

Enroll now

What's inside

Syllabus

Introduction to Software Engineering
Welcome to the first module of this course! In this module, you will learn: (1) Developing large software systems is a complex process.(2) How to deal with the complexity of software development.(3) What is software engineering.
Read more
Modeling Software Systems Using UML
In this module, you will learn: (1) What is UML. (2) How to model a software system as a collection of collaborating objects. (3) The basic modeling components (Class, Association and Aggregation/Composition) of UML class diagrams.
Types of Relationships in Class Diagram
In this module, you will learn: (1) The basic modeling components (Association Class, Inheritance and Other Constraints) of UML Class Diagram.
System Requirements Capture and Domain Modeling
In this module, you will learn: (1) What is requirements capture and its role in the software development process. (2) How to capture data requirements in a domain model. (3) How to evaluate attributes, classes, and associations in a domain model.
Use Case Modeling
In this module, you will learn: (1) How to capture functional requirements in a use case model. (2) How to evaluate use cases in a use case model.
Use Case Specification
In this module, you will learn: (1) How to write use case specification to describe the behavior within a use case.
Non-Functional Requirements
In this module, you will learn: (1) How to capture non-functional requirements. (2) How to validate system requirements.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Introduces basic object-oriented programming (OOP) concepts required for successful participation
Recommended to be taken as part of a series of courses that progressively develop techniques and concepts about software engineering
Focuses on the requirement analysis phase of SDLC and the use of UML models
Covers current best practices in object-oriented modeling techniques
Provides modeling components (Class, Association and Aggregation/Composition) of UML diagrams
Provides modeling components (Association Class, Inheritance and Other Constraints) of UML Class Diagrams
Develops skills in capturing data requirements in a domain model
Develops skills in capturing functional requirements in a use-case model
Emphasizes requirements capture and its role in software development
Taught by Kenneth W T Leung, who are recognized for their work in software engineering

Save this course

Save Software Engineering: Modeling Software Systems using UML to your list so you can find it easily later:
Save

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 Engineering: Modeling Software Systems using UML with these activities:
Review concepts of object-oriented programming (OOP)
Ensure a strong foundation in OOP concepts, which are essential for understanding the course content and applying UML effectively.
Show steps
  • Review notes or textbooks on OOP principles, such as classes, objects, inheritance, and polymorphism.
  • Solve practice problems or exercises to reinforce your understanding.
  • Discuss OOP concepts with peers or a mentor to clarify any doubts.
Read and summarize 'Applying UML and Patterns' by Larman
Provide a solid foundation in UML and design patterns, which are essential concepts in software engineering and will be covered in this course.
Show steps
  • Read the book thoroughly, taking notes on key concepts and examples.
  • Summarize each chapter in your own words, highlighting the most important points.
  • Identify and explain the different types of UML diagrams and their uses.
  • Describe the principles of object-oriented design and how they are implemented using UML.
  • Discuss the benefits and limitations of using UML and design patterns in software development.
Solve UML exercises and practice problems
Reinforce understanding of UML concepts and develop problem-solving skills in the context of software engineering.
Show steps
  • Find online resources or textbooks with UML exercises and practice problems.
  • Solve the exercises and problems, focusing on understanding the underlying principles.
  • Check your solutions against provided answers or consult with peers or a mentor.
  • Identify areas of weakness and focus on additional practice in those areas.
  • Review the solved exercises and problems periodically to improve retention.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Develop a use case model for a software application
Demonstrate understanding of use case modeling and gain experience in capturing functional requirements for software applications.
Show steps
  • Identify a software application or system to develop a use case model for.
  • Interview stakeholders and gather requirements.
  • Create a use case diagram using a modeling tool or software.
  • Write use case specifications for each use case, describing the behavior and interactions.
  • Validate the use case model by reviewing it with stakeholders.
Create a UML class diagram for a real-world system
Provide practical experience in applying UML to model a real-world system, reinforcing the concepts learned in the course.
Show steps
  • Identify a real-world system to model, such as an e-commerce website or a social media platform.
  • Analyze the system's requirements and identify the key classes and their relationships.
  • Create a UML class diagram using a modeling tool or software.
  • Validate the class diagram by reviewing it with peers or a mentor.
  • Document the class diagram and its implications for the system's design.
Gather and compile resources on UML best practices
Develop a comprehensive understanding of UML best practices, enabling you to apply UML effectively and efficiently.
Show steps
  • Search for articles, books, or online resources that discuss UML best practices.
  • Extract key principles and guidelines from the resources.
  • Organize and compile the information in a document or presentation.
  • Share the compilation with peers or a mentor for feedback and discussion.
  • Review and update the compilation regularly to stay up-to-date on best practices.
Follow video tutorials on advanced UML modeling techniques
Expand knowledge of UML by exploring advanced modeling techniques, enhancing the ability to design and analyze complex systems.
Show steps
  • Identify online video tutorials or courses that cover advanced UML modeling techniques.
  • Watch the tutorials and take notes on key concepts and examples.
  • Apply the techniques to practical scenarios or projects.
  • Share your understanding and insights with peers or a mentor.
  • Reflect on the tutorials and identify areas for further exploration.

Career center

Learners who complete Software Engineering: Modeling Software Systems using UML will develop knowledge and skills that may be useful to these careers:
Requirements Engineer
Requirements Engineers collect and define stakeholder needs in order to create a software system that meets their requirements. This course may be useful for Requirements Engineers because it helps you learn how to capture data requirements in a domain model and how to capture functional requirements in a use case model. The course also helps you learn how to write use case specifications to describe the behavior within a use case.
Product Owner
Product Owners are responsible for defining and managing the product vision, roadmap, and backlog. This course may be useful for Product Owners because it helps build a foundation in understanding the software development lifecycle, modeling software systems with UML, and capturing system requirements. The course also helps you learn how to write use case specifications to describe the behavior within a use case.
Software Developer
Software Developers design, develop, and test software systems. This course may be useful for Software Developers because it helps build a foundation in understanding the software development lifecycle, modeling software systems with UML, and capturing system requirements. The course also helps you learn how to write use case specifications to describe the behavior within a use case.
Business Analyst
Business Analysts analyze business needs and develop solutions to improve business processes and systems. This course may be useful for Business Analysts because it helps you learn how to capture system requirements and how to model software systems with UML.
Systems Analyst
Systems Analysts design and develop software systems to meet the needs of an organization. This course may be useful for Systems Analysts because it helps you learn how to capture system requirements and how to model software systems with UML. The course also helps you learn how to write use case specifications to describe the behavior within a use case.
Software Architect
Software Architects design and develop the overall architecture of a software system. This course may be useful for Software Architects because it helps you learn how to model software systems with UML and how to capture system requirements. The course also helps you learn how to write use case specifications to describe the behavior within a use case.
Test Manager
Test Managers plan and execute software testing activities to ensure that software systems meet quality standards. This course may be useful for Test Managers because it helps build a foundation in understanding the software development lifecycle and modeling software systems with UML. The course also helps you learn how to write use case specifications to describe the behavior within a use case.
Project Manager
Project Managers plan, execute, and control software development projects. This course may be useful for Project Managers because it helps build a foundation in understanding the software development lifecycle. The course also helps you learn how to capture system requirements and how to model software systems with UML.
Quality Assurance Analyst
Quality Assurance Analysts ensure that software systems meet quality standards. This course may be useful for Quality Assurance Analysts because it helps build a foundation in understanding the software development lifecycle. The course also helps you learn how to capture system requirements and how to model software systems with UML.
User Experience Designer
User Experience Designers design and develop the user interface for software systems. This course may be useful for User Experience Designers because it helps build a foundation in understanding the software development lifecycle and modeling software systems with UML.
Technical Writer
Technical Writers create and maintain technical documentation for software systems. This course may be useful for Technical Writers because it helps build a foundation in understanding the software development lifecycle and modeling software systems with UML. The course also helps you learn how to write use case specifications to describe the behavior within a use case.
Database Administrator
Database Administrators manage and maintain databases that are used by software systems. This course may be useful for Database Administrators because it helps build a foundation in understanding the software development lifecycle.
Systems Administrator
Systems Administrators manage and maintain computer systems that are used to run software systems. This course may be useful for Systems Administrators because it helps build a foundation in understanding the software development lifecycle.
IT Manager
IT Managers plan and manage the IT infrastructure for an organization. This course may be useful for IT Managers because it helps build a foundation in understanding the software development lifecycle.
Network Administrator
Network Administrators manage and maintain networks that are used by software systems. This course may be useful for Network Administrators because it helps build a foundation in understanding the software development lifecycle.

Reading list

We've selected 11 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 Engineering: Modeling Software Systems using UML.
This classic textbook covers the entire software development lifecycle, from requirements analysis to deployment and maintenance. It valuable resource for both students and professionals.
Provides a comprehensive overview of object-oriented modeling and design using UML. It good choice for students and professionals who want to learn more about UML and how to use it to develop software systems.
Introduces the concept of domain-driven design, which software development approach that focuses on the business domain rather than the technical implementation. It valuable resource for software architects and developers who want to build complex software systems that are easy to understand and maintain.
Provides a fun and engaging introduction to object-oriented analysis and design. It good choice for students and professionals who want to learn more about these topics in a more lighthearted and accessible way.
Provides a set of best practices for writing clean and maintainable code. It valuable resource for software developers who want to improve their coding skills and write code that is easy to understand and maintain.
Introduces the concept of domain-specific languages, which are programming languages that are tailored to specific domains. It valuable resource for software architects and developers who want to build software systems that are easy to understand and maintain.
Provides an overview of data-intensive applications, which are software systems that process large amounts of data. It valuable resource for software architects and developers who want to build data-intensive applications that are scalable, reliable, and maintainable.
Provides a basic overview of distributed systems, which are software systems that are distributed across multiple computers. It good choice for students and professionals who want to learn more about distributed systems and how they work.
Provides a comprehensive overview of software testing, which is the process of testing software to ensure that it works correctly. It valuable resource for software testers and developers who want to learn more about software testing and how to apply it to their own projects.

Share

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

Similar courses

Here are nine courses similar to Software Engineering: Modeling Software Systems using UML.
Software Engineering: Software Design and Project...
Most relevant
Software Engineering: Implementation and Testing
Most relevant
302: Software Engineeri
Most relevant
UML Class Diagrams for Software Engineering
Most relevant
Software Architecture
Most relevant
Software Development From A to Z - Beginner's Complete...
Most relevant
Software Development Explained
Most relevant
UML and Object-Oriented Design Foundations
Most relevant
Pipe Material Specification
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