Anyone who attended the software engineering class learned at some point about the Software Engineering Process. Eight steps which if well applied would ensure a smooth implementation of any software development.
Below are - with a brief explanation for each - the activities that Software Engineering process is composed of:In the Specification phase, the software to be developed is precisely described.
Software Architecture
This is the abstract representation of the Software. It’s crucial that the Architecture makes sure that the requirements gathered and filtered in phase 1 are met.
Implementation
This is the most obvious phase of Software Engineering. The architecture is now reduced to code. Most software companies jump right to this phase after requirement gathering. That's bad.
Testing
This makes sure the Software that's going to be delivered to the client not only does what it was meant to do but also is "bug free"
Documentation
Everything about the software makes sense and is easy to understand for the developer who developed it. Because of that, some developers don't see the need for documentation. But leave it for six months and then get back to it, you'll be surprised how much of it is like new to you. Two aspects of the documentation should be considered:
- A user manual for the client as a reference to help them easily find what they need.
- Actual code documentation (comments) for the developer himself and anyone eventually taking over the software in the future.
Training and Support
This is where you get the end users in a conference room and show them how the software works and how to use it.
Maintenance
Bug fixing, enhancements and new features implementation. If a Software Company gets to that point, they most likely did a good job in the previous steps and since this phase almost never really ends this Software Company may have this client's business for a while.
Without effective Project Management, it’s almost impossible for any software project to meet delivery schedule and consequently be delivered on foreseen budget. The problem with most Software Companies is they go back and forth to phase 1 and phase 4 without really taking the time to get phase 1 properly figured out.
The client will want you to create an App that plays two different musics at the same time. Do you as the software company say yes we will make it happen to later realize that the end user is not going to be happy with that or do you take the time to educate the client about the importance of user friendliness and good user experience and subsequently convince them that’s not a good idea?
There are many process models or methodologies like Waterfall, Iterative, agile built on the foundation of the iterative process, XP (Extreme programming) developed to make it easier for Software Companies to apply the 8 mentioned development phases. Unfortunately, even if theses models are proven to help improve productivity and quality, almost every Software Company has a hard time answering the following question:
“What is the process model used here”
Some will tell you they use a kind of agile development process, some will try to explain what they do and leave it up to you to guess, and as funny as it may sound, some will not even know what you’re talking about. The same client that is not patient enough to let you take your time so you can deliver a good piece of Software is the same one that is going to write the worst review about your Software Company and prevent other clients from trusting you with their business. One thing Software Companies need to be mindful of is the fact that most of the time the client doesn't really know what they want or may be they know what they want but don't know how to go about it. It's Worth mentioning that we're not saying that with the intention to belittle the Client, but to help Software Companies know that the Client needs their help and guidance.