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 project planning and analysis/design phases of SDLC, and you will learn about different architectural patterns and design patterns to solve common problems in software design. It covers project planning, scheduling, and cost estimating, which are the principal tasks of software project managers.

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 project planning and analysis/design phases of SDLC, and you will learn about different architectural patterns and design patterns to solve common problems in software design. It covers project planning, scheduling, and cost estimating, which are the principal tasks of software project managers.

Basic object-oriented programming (OOP) concepts are required to understand different design patterns covered in this course. System design is driven by the UML models derived from requirement analysis. It is recommended to take the course "Software Engineering: Modeling Software Systems using UML" before attempting this course, but it is not a hard requirement.

Enroll now

What's inside

Syllabus

System Analysis and Design
Welcome to the first module of this course! In this module, you will learn: (1) The purpose and importance of system analysis and design. (2) The major activities that take place during system analysis and design. (3) How to realize design goals and deal with the implementation environment. (4) What are architectural patterns and design patterns and when to use them.
Read more
State Machine Diagram
In this module, you will learn: (1) How to use a state machine diagram to describe the behavior inside an object.
Design Patterns
In this module, you will learn: (1) A design pattern is a general reusable solution to a commonly occurring problem in software design. (2) Strategy Pattern. (3) Observer Pattern.
More Design Patterns
In this module, you will learn: (1) Mediator Pattern. (2) Proxy Pattern. (3) Bridge Pattern. (4) Singleton Pattern. (5) Factory Pattern. (6) When to use design patterns. (7) Anti Patterns.
Software Quality Assurance
In this module, you will learn: (1) The quality assurance process and the central process activities of quality assurance, quality planning and quality control. (2) The quality assurance process and the central process activities of quality assurance, quality planning and quality control. (3) The principles of software development process improvement and why process improvement is worthwhile.
Managing Software Development
In this module, you will learn: (1) The principal tasks of software project managers. (2) The need of project planning in all software projects. (3) Requirements for staffing and scheduling in software projects. (4) Techniques for estimating the size and cost of software development. (5) Project tracking and control.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops an understanding of commonly used design patterns
Explores the project planning, analysis, and design phases of the software development life cycle
Introduces the use of state machine diagrams to describe object behavior
Requires basic object-oriented programming concepts as a prerequisite
Recommends taking a prerequisite course on software engineering and UML modeling
Taught by Kenneth W T Leung, an instructor recognized for their work in software engineering

Save this course

Save Software Engineering: Software Design and Project Management 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: Software Design and Project Management with these activities:
Brush up on object-oriented programming fundamentals
Strengthens the foundation in OOP concepts, making it easier to grasp the design patterns covered in the course.
Show steps
  • Review basic OOP concepts such as classes, objects, inheritance, and polymorphism.
  • Practice implementing OOP principles in a simple coding exercise.
Solve design pattern problems
Provides hands-on practice in applying design patterns, reinforcing understanding and improving problem-solving skills.
Browse courses on Design Patterns
Show steps
  • Identify and analyze design patterns in real-world scenarios.
  • Implement design patterns in code to solve specific software design problems.
Participate in a design pattern study group
Provides opportunities for collaboration, knowledge sharing, and peer feedback, enhancing understanding of design patterns.
Browse courses on Design Patterns
Show steps
  • Join or form a study group with fellow students.
  • Regularly meet to discuss design patterns, solve problems, and exchange insights.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Follow online tutorials on advanced design patterns
Exposes students to additional resources and perspectives, broadening their understanding of design patterns and their applications.
Browse courses on Design Patterns
Show steps
  • Identify reputable online tutorials covering advanced design patterns.
  • Follow the tutorials, taking notes and practicing the concepts.
  • Apply the learned patterns to personal projects or assignments.
Compile a glossary of design patterns
Creates a valuable resource for future reference, improving retention and deepening understanding of design patterns.
Browse courses on Design Patterns
Show steps
  • Gather definitions and examples of different design patterns.
  • Organize the patterns into a structured and easy-to-navigate format.
Develop a presentation on a specific design pattern
Solidifies understanding by requiring students to explain and present a design pattern, promoting deep engagement with the material.
Browse courses on Design Patterns
Show steps
  • Choose a specific design pattern and research its details.
  • Create a presentation that clearly explains the pattern's purpose, structure, and benefits.
  • Present the design pattern to classmates or a wider audience.
Contribute to an open-source project related to software design
Provides practical experience in applying design patterns and contributing to real-world software projects, fostering collaboration and teamwork.
Browse courses on Software Design
Show steps
  • Identify an open-source project that is relevant to software design.
  • Contact the project maintainers and express interest in contributing.
  • Work on specific tasks related to software design and implementation.
Participate in a software design competition
Provides a challenging and engaging environment to test and showcase design skills, pushing students to apply their knowledge creatively.
Browse courses on Software Design
Show steps
  • Identify and register for a relevant software design competition.
  • Design and implement a software solution that meets the competition requirements.
  • Submit the solution and participate in the competition.

Career center

Learners who complete Software Engineering: Software Design and Project Management will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers focus on studying, researching, designing, building, testing, deploying, and maintaining software systems. They are in high demand and will continue to be needed as technology plays a bigger role in the future. Their duties can include planning future projects, designing software, fixing bugs, and carrying out quality assurance checks.
Computer Systems Analyst
Computer Systems Analysts plan, design, develop, implement, and maintain computer systems. This typically involves studying, researching, and evaluating the needs of the organization. They may design the entire system architecture or implement changes to an existing system. This course may be useful in the design phase of a project as it focuses on the project planning and analysis/design phases of SDLC.
Web Developer
Web Developers plan, design, create, build, and maintain websites. This includes the design, coding, implementation, and testing phases. They develop a wide range of websites, from simple informational sites to complex e-commerce platforms. They are also responsible for the maintenance and updates of websites, ensuring that they are running smoothly and securely.
Software Architect
Software Architects are responsible for designing and developing the architecture of software systems. They work closely with stakeholders to gather requirements, analyze the system, and design a solution that meets the needs of the organization. This course may be useful as it focuses on the project planning and analysis/design phases of SDLC.
Applications Developer
Applications Developers are responsible for designing, coding, testing, and deploying software applications. They work with a variety of programming languages and technologies to create applications that meet the needs of the organization. They also provide technical support and maintenance for existing applications.
IT Project Manager
IT Project Managers are responsible for planning, organizing, and managing IT projects. They work with stakeholders to gather requirements, develop a project plan, and track progress. They also ensure that the project is completed on time, within budget, and to the required quality standards. This course may be useful as it covers project planning, scheduling, and cost estimating.
DevOps Engineer
DevOps Engineers are responsible for bridging the gap between development and operations teams. They work to improve the efficiency and effectiveness of the software development process by automating tasks and streamlining workflows. This course may be useful as it covers software development process improvement and why process improvement is worthwhile.
Software Quality Assurance Tester
Software Quality Assurance Testers are responsible for testing software applications to identify and fix bugs. They work with a variety of testing techniques to ensure that software is reliable and meets the needs of the organization. This course may be useful as it covers the quality assurance process and the central process activities of quality assurance.
Data Scientist
Data Scientists are responsible for collecting, analyzing, and interpreting data to identify trends and patterns. They use a variety of statistical and machine learning techniques to extract insights from data and make predictions. This course may be useful as it covers the principles of software development process improvement.
Business Analyst
Business Analysts are responsible for analyzing business needs and developing solutions to improve business processes. They work with a variety of stakeholders to gather requirements, analyze data, and develop recommendations. This course may be useful as it covers project planning, scheduling, and cost estimating.
UX Designer
UX Designers are responsible for designing the user experience of software applications. They work with a variety of stakeholders to gather requirements, develop prototypes, and test the user experience. This course may be useful as it covers the principles of software development process improvement.
Technical Writer
Technical Writers are responsible for writing and editing technical documentation. They work with a variety of stakeholders to gather requirements, develop content, and ensure that the documentation is accurate and easy to understand. This course may be useful as it covers software development process improvement.
Quality Assurance Manager
Quality Assurance Managers are responsible for planning, organizing, and managing quality assurance activities. They work with a variety of stakeholders to develop and implement quality assurance policies and procedures. This course may be useful as it covers the quality assurance process and the central process activities of quality assurance.
Software Engineer in Test
Software Engineers in Test are responsible for testing software applications to identify and fix bugs. They work with a variety of testing techniques to ensure that software is reliable and meets the needs of the organization. This course may be useful as it covers the quality assurance process and the central process activities of quality assurance.
Product Manager
Product Managers are responsible for planning, developing, and launching software products. They work with a variety of stakeholders to gather requirements, develop product roadmaps, and track progress. This course may be useful as it covers project planning, scheduling, and cost estimating.

Reading list

We've selected 12 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: Software Design and Project Management.
Provides guidance on agile software development principles, patterns, and practices. Useful as additional reading.
Provides a comprehensive overview of object-oriented analysis and design. Serves as a good reference for object-oriented design principles.
Provides a comprehensive overview of software quality assurance. Serves as a good reference for software quality assurance practices.
Provides a comprehensive overview of project management for software engineers. Serves as a good reference for software project management practices.
Provides insights into the challenges of software engineering. Useful as additional reading for those interested in the history and philosophy of software engineering.
Provides a comprehensive overview of software engineering concepts and practices. Serves as a good reference for software engineering fundamentals.
Classic reference on design patterns. Useful for getting a deeper understanding of design patterns.
Provides guidance on writing clean and maintainable code. Useful as additional reading for those interested in software craftsmanship.

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: Software Design and Project Management.
Software Engineering: Implementation and Testing
Most relevant
Software Engineering: Modeling Software Systems using UML
Most relevant
302: Software Engineeri
Most relevant
Software Architecture
Most relevant
IBM COBOL Software Development Process
Most relevant
Software Development From A to Z - Beginner's Complete...
Most relevant
Modern Software Architecture: Domain Models, CQRS, and...
Most relevant
Java Design Patterns & SOLID Design Principles
Most relevant
UML Class Diagrams for Software Engineering
Most relevant
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