Software Engineering for human #2
Rejoice! I have come with a sequel.
Previously, dear reader, I explained to you what Software Engineering was in its very basic form. Today, I shall introduce you to the fascinating concept of processes.
- The Software Process
Software engineering primarily focuses on quality, and for us to produce software that isn’t a steaming pile of hot mess, we have to streamline our work and make sure it’s as thorough, as detailed, and as coordinated as possible, this is where the software process framework comes in.
But… what’s a process?
In the diagram above – an Entry-Task-Validation-Exit model – (horrendous name, I know) we have something called an Entry Criteria, which is basically just an input that is caused by a previous output from a different process. Tasks are the action components of said process. Validation (also known as quality gate) is the checkpoint which verifies whether the tasks have succeeded in producing an output that fulfils our requirements. Exit Criteria is all the conditions that must be satisfied before the process could terminate.
What the hell is a framework, you might be asking? To put it plainly, it’s a standard way to build and deploy applications.
Now, the software process framework is the foundation of a complete software process
It generically consists of the following processes that are carried out at specific times:
- Communication:
This is the part where we gather requirements for our product via communicating with customers and shareholders.
- Planning:
Pretty self-explanatory, but mainly this is where technical tasks, schedules, and risks are discussed.
- Modelling:
During this part, a model of the product is created as a representation of how it could be.
- Construction:
In this activity, the product’s code is generated and tested.
- Deployment
a complete or non-complete product or software is represented to the customers to be evaluated, and according to whatever the feedback maybe, the product is modified.
But what about the activities that are carried out throughout the project’s entire lifetime??? There’s this group of other activities called “Umbrella activities” which are a series of complex-looking but actually quite easy procedures that the software development team follows to maintain the overall quality of the product.
• Software Models
Like any living creature on this earth, software actually goes through a life cycle of some sorts (No, it doesn’t go through puberty). The Software Development Life-Cycle (SDLC) is a spiritual model used in project management, which defines each stage the product goes through and there’s a whole bunch of ‘em out there.
The framework basically just provides a list of generic activities common to most models of the software process.
Some examples:
- Waterfall Model
This method is the most basic one and funnily enough, each one that follows it is based on it. In this model, the life cycle is divided into a set of phases and each phase is started right after the previous one is finished. Sequentially.
Diagram stolen from Wikipedia
- Rapid Application Development Model
Waterfall model but… rapid.
Guess where I stole this one from
- Incremental Model
It’s once again, the waterfall model, but… a series of it. Basically, each cycle act as the maintenance
phase for the previous software release.
Not stolen from Wikipedia
- Agile Model
This one. This one is quite important and its what we use in 90% of our products at Tech Hive.
The definition of the word “agile” is, swift or versatile. This approach is iterative in which it breaks tasks into smaller bits and usually, the project scope and requirements are accommodated for as we go.
Each iteration in the agile model is considered a short time “frame” that lasts from one to four weeks. Since, the tasks are broken down, risk is minimized, and project delivery time is reduced, and each iteration involves a team working through a full software development life cycle.
Pretty sleek-looking diagram too
Lo, and behold this model’s got phases too:
- Requirements gathering
- Requirements design
- Construction/iteration
- Testing/Quality assurance
- Deployment
- Feedback
The agile model is actually not just used in Software development, since it started in 2001 via the agile manifesto (feel free to visit this slightly cult-ish website for more info: https://agilemanifesto.org/) it’s been adopted by project managers in so many fields. Believe it or not, some dude even made a TED talk on how to use the agile methodology for YOUR family (google it if you don’t believe me).
By now, you must’ve caught on to the idea that “hey, maybe this agile thing is quite neat” and well, it is. It’s so neat that I might base the entirety of the next blog on it, or may I?
It’s the uncertainty of life that keeps us on our toes everyday and this is why you should stay tuned for the next one, bud.