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.

LS

Sep 11, 2018

Filled StarFilled StarFilled StarFilled StarFilled Star

Great course covering the basics about Agile and providing practical examples for use.

从本节课中

Agile Fundamentals

In this module, we will learn about agile mindset, the core behind many agile methods. How agile methods are different than traditional methods and when to use agile methods. We will learn about how to apply agile mindset and finally review different frameworks available to implement agile.

教学方

Praveen Mittal

Adjunct Professor

脚本

In this lesson, you're going to learn about what software development looks like. So what you will hear or see if you're part of a software development team. I'm also going to take you to a journey that software industry took over last several years. That means you're going to hear lot of new terms. So fasten your seat belt as you're about to get overwhelmed. Before we get into a software development process, let's take a look at a process that you might be familiar with like building a house. So if you were to build a house, you will probably reach out to a builder and tell about your needs. Like, "I need two bedrooms. I need a bigger great-room. I need room on the basement. And yada yada yada." And builders may give you some option and then you will have to do some analysis and come back with your choice. In the end of this phase, you will come up with exactly what you're looking for. Then builder is going to go back and going to create a floor plan. And then he's going to show you the floor plan and you might make some adjustment. Once that is done, builder is going to create a detailed map or a detailed plan about where the foundation is going to be, where the electricity is going to be, where the plugs are going to be, where the plumbing is going to be. And then, they're going to start building the home. And as they are building the home, they're going to call the inspection people to come and inspect the house. For example, let's say the foundation is done, they're going to get the foundation approved. When the plumbing is done, they're going to get the plumbing approved and so on. And once the house is ready, he's going to call you to say whether you like the house, is that what you expected. And then once you approve it, then you're going to start staying in that house or living in that house. And of course, there comes the maintenance of the house. Let's see how software development is similar or different than this. So when you're building a software, similar to building a house, you're looking at requirements or you're looking at what exactly you need to build. And during that time, you will do analysis of different options or you might do a prototype and show it to your customer and just say, "Is this what you're looking for?" But at the end of this phase, you have exactly what you're looking to build. Then comes the architects and the software developers. They're going to design the system, they're going to architect the system, and say what are the different components that they need to build and how they're going to work together. Once the design is done, they're going to start coding and start doing unit testing. So each of the sub teams are going to start building their components and test it. Once all the components are ready, they're going to bring all of these components together and do integration testing or card verification and they will do functional testing. And when the software is ready from the developer point of view, then they're going to invite the user and they will do a testing called UAT, User Acceptance Testing in which a user said, "Yup. This is what I was looking for." Or, "No. This is not what I was looking for." And then once everything is done, then the software goes into production which means the user is going to start using and they might ask for some changes or you may have to fix some defects and so on. So that's called the operation and maintenance. So as you can see, it's quite similar to building a house. The model that we just reviewed is got a waterfall method where you go from phase to phase to phase. Requirements, design, implementation. As industry started to use this method, they ran into several issues. For example, they found that it's very difficult to predict the requirements one year or two a year ahead as the market changes or sometimes it's just really difficult to predict what a user will like or not like. And since the cycle is a year or two year, it is possible that the developers or the architects misinterpreted the requirements. And so that misinterpretation will go undetected all the way to design, implementation, and the verification. And similarly, the integration issues between the different components go undetected for a year while the software is being developed. So as these issues were coming up, other variant of Waterfall started to evolve. Like V Model which focuses a lot on testing or Sashimi Model or RUP Model that focuses a lot on overlapping different phases. And then the Incremental Model where you do the requirements in one shot but then you do the design, testing, and deployment in increments. And then there's the Spiral Model which is a very risk driven approach. As all of these variants we're coming along, there was another thought process that were evolving in the software industry called Agile. Agile is not a model, it's a mindset. There were lot of top leaders in software industry that were building the software very successfully. And so they came together and said, "What is it that we are doing that is making us successful?" And they articulated what we call now the Agile Manifesto and Principles. And as this Manifesto and Principles were crafted, there were models like Scrum and Kanban and XP that helped implement this mindset, that promote this mindset. So you can see it's not just these three but many other models came into being. The basic idea behind all of this model was that instead of building this whole one year cycle, you build in short cycles. So you define little, you build, you test, and you learn, and then again, you just keep doing this. That way, you can adjust to the market quickly and then you are learning from your users quickly. And so the change became a norm because after every cycle, you may have a change. Software industry also has to learn how to respond to this change quickly and confidently. And the idea of continuous integration where a developer who is building the code, as soon as he commits the code or as soon as he finishes the code, it's integrated with all the other components of that software. And then all the tests that verifies whether the system is running are run. They are called the automated testing. So as soon as you come into code, all of test is tested to make sure nothing else is broken in the system. All of this deployment is automated, so as soon as the code is committed, it's deployed automatically so that there is no manual errors and as well as it reduces the effort to deploy a code. And not only just these three, many other practices evolved. The safety net of automated testing and this automation help developers respond quickly and confidently to