To build larger software, certain processes and techniques are used. In this class, we will be going over some of the most popular models on building software.
About This Class
We will go over both popular traditional models such as the spiral and UPF, as well as the newer idea of scrum/agile, which many software development teams are switching to.
All of this should give a good understanding of what types of development processes are being used in today’s world.
If you have not taken my Software Engineering 101 course yet, I would highly recommend that, as some of the details in this course assume a basic set of knowledge.
Introduction
Welcome to the software engineering course!
Software Lifecycle
We learn about the importance of models and planning in the software engineering world.
We learn about the software development lifecycle, and how it's important for the entirety of software engineering.
We go over an example of the software development lifecycle to better cement our understanding of it. This is crucial for software engineering as a whole.
Let's test our understanding of the software development lifecycle.
Requirements and Specifications
Let's define what requirements are, and how they relate to software engineering.
We go over the difference between requirements and specifications in respect to Software Engineering.
We go over the difference between functional and non-functional requirements in respect to software engineering.
Notes on the various parts of requirements in software engineering.
Let's now go over how we can represent this WRSPM model visually in software engineering.
Let's now go over the variables in this model, and how they can be used to further describe the problem.
Let's take a look at a real world example, starting with the W, or world.
Let's now move on to the R or requirements of the WRSPM model.
Finally let's tie the world and the requirements together to make some specifications.
Notes on the WRSPM Model and how it applies to software engineering.
Design: Architecture
A quick look at where we are at in this software engineering course.
We go over how architecure works and how it applies to software engineering.
We dig deeper into software architecture and go over an example.
Let's go over an example with breaking apart architecture.
We go over the pipe-and-filter pattern in software engineering.
We go over the client-server relationship in software engineering.
We go over the master-slave pattern in software engineering.
We go over the layered pattern in software engineering.
Let's recap architecutre in software engineering.
We go over the software architecture process as a whole in software engineering.
Design: Modularity
Let's go over the software design process in software engineering.
Let's go over the stages of design in software engineering.
Let's discuss modularity in software engineering.
Let's go over information hiding and data encapsulation in software engineering.
Let's go over coupling and how it applies to software engineering.
Let's go over the worst form of coupling in software engineering, tight coupling.
Implementation and Deployment
Let's go over the basics of implementation and how it applies to software engineering.
Let's go in-depth with the principal of buy vs build in computer science.
Let's go over what we have learned about implementation in software engineering.
Let's cover deployment and how we should plan for it.
Let's talk about deployment planing in computer science.
Let's talk about deployment rollback in software engineering.
Some notes on deployment of programming code and how it applies to software engineering.
Testing
An overview of testing and how it applies to software engineering.
What bugs are in software engineering.
The difference between verification and validation in software engineering.
Notes on testing up to this point.
What unit testing is in software testing.
What integration testing is in software development and software engineering.
The idea of incremental testing within software engineering.
The principle of back to back testing in software engineering.
Who should test our program in software engineering.
The idea of automatic vs manual testing in software engineering.
The difference between black box and white box testing in software engineering.
The current issues with testing in software engineering.
Notes on the different types of testing in software engineering.
Software Development Models
The software development process in software engineering.
The waterfall model in software engineering.
The v-model of building software.
The sashimi model of building software.
The iterative model of software development.
The incremental model of software development.
The unified process framework in software development.
The spiral model of development in software development.
Agile
What Agile is in software engineering.
The key tenants of agile in software engineering.
The idea of scrum in software engineering.
The idea of the kanban system in software engineering.
The idea of lean startup in software engineering.
Scrum Deep Dive
Let's start with an overview of the scrum framework and it's different parts.
Let's talk about the SCRUM values and also the pillars of agile that go into SCRUM.
Let's discuss the product owner and their important role in SCRUM.
Let's discuss the Scrum Master and their importance with SCRUM.
Let's discuss the development team and their role in the SCRUM framework.