Critically analyze software engineering development processes from our four selected development philosophies (traditional, secure, agile, and lean)
Describe the trade-offs among the philosophies with respect to environmental, organizational, and product constraints
Discuss the workings of exemplary processes within each of the given philosophies
Perform activities within each of the four aforementioned philosophies and explain how they satisfy the principles of the given philosophy
This Specialization is designed for people who are new to software engineering. It’s also for those who have already developed software, but wish to gain a deeper understanding of the underlying context and theory of software development practices.
At the end of this Specialization, we expect learners to be able to:
1.) Build high-quality and secure software using SDLC methodologies such as agile, lean, and traditional/waterfall.
2.) Analyze a software development team’s SDLC methodology and make recommendations for improvements.
3.) Compare and contrast software development methodologies with respect to environmental, organizational, and product constraints.
Software Development Processes and Methodologies
Software is quickly becoming integral part of human life as we see more and more automation and technical advancements. Just like we expect car to work all the time and can't afford to break or reboot unexpectedly, software industry needs to continue to learn better way to build software if it were to become integral part of human life.In this course, you will get an overview of how software teams work? What processes they use? What are some of the industry standard methodologies? What are pros and cons of each? You will learn enough to have meaningful conversation around software development processes.
After completing this course, a learner will be able to
1) Apply core software engineering practices at conceptual level for a given problem.
2) Compare and contrast traditional, agile, and lean development methodologies at high level. These include Waterfall, Rational Unified Process, V model, Incremental, Spiral models and overview of agile mindset
3) Propose a methodology best suited for a given situation
Software industry is going crazy on agile methods. It is rapidly becoming the choice for software development where requirements are unpredictable or is expected to change over time. This course will help you gain knowledge on what is agile? Why agile is better suited for these situations? We will also cover some of the most common agile frameworks like scrum and XP in depth. Prerequisite: You need basic knowledge of software development process and software development methodologies.
After completing this course, you will be able to :
1) Demonstrate the ability to participate effectively in agile practices/process for software development.
2) Explain the purpose behind common agile practices.
3) Ability to apply agile principles and values to a given situation.
4) Ability to identify and address most common problems encountered in adopting Agile methods.
Project: You will also be given opportunity to apply what you learn in this course. You will be given fictional case studies, where after studying the case study, you will have to exercise some of the practices, techniques, etc that team members of an agile team members are expected to know.
Lean Software Development
While scrum and XP were transforming the software development industry, there were another set of ideas (derived from lean manufacturing and Six Sigma) that started to influence software development methods. These ideas around Lean Software Development forms the foundation of number of agile methods. In this course, we will explore lean concepts and cover some of the common Lean methods and techniques like Kanban, Value Stream Mapping, etc.
In this course, we will also learn techniques like Lean Startup and Design Thinking that can help team learn about user and market needs much faster and cheaper.
As part of this course, you will also apply the knowledge gained in this course to fictional case studies. These projects will help you gain experience to confidently apply these techniques in real world.
At the end of the course, you will be able to apply lean techniques / methods to software development. You will also be able to apply methods to learn about your users and market needs much faster and cheaper.
Engineering Practices for Building Quality SoftwareAgile embraces change which means that team should be able to effectively make changes to the system as team learns about users and market. To be good at effectively making changes to the system, teams need to have engineering rigor and excellence else embracing change becomes very painful and expensive. In this course, you will learn about engineering practices and processes that agile and traditional teams use to make sure the team is prepared for change. In additional, you will also learn about practices, techniques and processes that can help team build high quality software. You will also learn how to calculate a variety of quantitative metrics related to software quality.
At the end of this course, you will be able to comfortably and effectively participate in various techniques and processes for building secure and high quality software.
To cement the theoretical concept into solid learning, learners will be given multiple fictional case studies where learners will be asked to make decisions like what methodology will you choose, what practices/processes will you use and why? These projects will help learners apply the concepts into practice.
In agile course, learners will be asked to create a story map for a given situation, and make a case for agile methodology.
In lean course, learners will be asked to create a value stream map and use design thinking to a ficticious case study
All of the projects will be peer reviewed.