Software development processes in software develop…

Claude JOASIL March 25, 2016

Software development processes in software development companies

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:

  1. Requirements analysis
    This is where t
    he software company uses its software engineering skills to tell whether the requirements gathered from the client are incomplete, contradictory or not.

  2. Specifications

    In the Specification phase, the software to be developed is precisely described.

  3. 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.

  4. 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. 

  5. 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"

  6. 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.

  7. 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.

  8. 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.

They want their application done tomorrow because they have their customers waiting. But which one is better; cause their customers to be frustrated with an application that doesn't work or advise them to sit with their customers and explain them that if they want it done properly more time is needed? 

Remember you as the company are creating a name or you have a name to preserve. If you don't want your current client to be your last one, there is an extra effort that needs to be done. The good thing is you don't have to reinvent the wheel, the Software engineering process steps exist already. The only thing you need to do now is to make sure you kind of own your Client and thus they trust you enough to know that the extra time you're taking is so everyone can be happy at the end of the process. This way you will not have too many ugly patches that you will have to implement which will make your Software harder and harder to maintain in the long run.
Now which process model have you been using at your company and how successful have you been applying it so far?