The software development life-cycle is the process of defining, mapping, and managing all phases, steps, functions, activities that go into building and releasing a piece of software. The concepts of SDLC transcend both older development models as well as modern agile approaches, which is the focus of this course. Focusing on the fundamentals of the SDLC, we can see they're pretty accessible. We want to state the project objective in very common accessible language. We want to analyze that problem, and based on that analysis, we want to develop a plan, and a plan for writing and developing the code. We want to document that code. As we go through this course, we're going to talk in greater detail about some of these areas, certainly writing code, and documenting code, and testing. These are all recurrent themes, and releasing the code. As this is a cycle, we repeat that. Because this is in the context of agile, which we'll learn about, it's ongoing, it's iterative, the phases of an SDLC. These are general phases that you see in projects to projects. Every project is not the same, so there will certainly be differences, and nuances, and certainly depending on the technologies that we're talking about specifics there. But the general phases of an SDLC, code and test the app, perform user testing, system testing, integration testing, volume testing. Testing is part and parcel to the SDLC. Hopefully, that's getting us to a point where we do a production handout, where we actually release the application. The solution that we're building, we release it into production, it becomes a usable entity. Here we mentioned ensuring documentation exists. Now, of course, you don't wait until the end. You do not wait until production handoff to ensure the documentation exists. Hopefully, and best practices dictate that you're documenting everything as you go along. As we're going to learn about self-documenting languages as COBOL aspires to be, or pseudocode, which is another means of documenting in accessible simple manners, our code, our applications, and then the maintenance phase. As I mentioned, the software development lifecycle transcends modern-day initiatives. But if we're talking about SDLC in terms of modern-day context, and we are, then we're talking about DevOps on mainframe in this scenario, COBOL, Z environments. These are mainframe environments. DevOps, and we'll learn more about DevOps, is a means of approaching our mainframe COBOL-based development initiatives in a modern way. Happily, IBM provides a enterprise wide toolchain of applications, and services, and support around DevOps on mainframe. One of the primary tenants or goals of any modern-day development I would be so bold to suggest is automation. Certainly, in Z environments across the SDLC, we're going to see and leverage all kinds of automation opportunities, which we'll learn and read more about as we go forward here. Security and resilience as well, cloud native capabilities. My mind immediately when I hear modern development, I think cloud, whether it's cloud native or whether it's building hybrid mainframe cloud solutions, whatever it is, cloud is in the discussion.