So I was looking through several researches the other day and I was truly astonished by several facts I saw. Data says that 80% of software projects fail. There are multiple reasons causing this like lack of required budget, inappropriate functionality of a solution, the project may just hit the market late but nevertheless 80%? That is huge!
The statistics go even further as 30% of software projects are so terrible from the start and their execution is so devastating that they get canceled even before actual completion. This got me thinking a decent FAQ that covers all vital aspects is essential for businesses and especially for those less tech savvy ones for the IT industry to evolve in a better, more efficient way.
What may you tell me about the development process in general?
What is the most crucial aspect here? Obviously the right choice of the development lifecycle. Every single activity will root from this very cycle. There are several available models for you to choose from the Waterfall Model that is currently becoming history to the current mainstream of Extreme Programming and Agile Software development. Actually the process choice is not even nearly as relevant as the manner it is executed in. There is a vast amount of best practices and methodologies available you should go through before actual development begins to feel yourself comfortable during important stages of strategic decisions.
Do I need to know something valuable about requirements before proceeding with their design?
There is a really interesting and historically accurate post about the true value of properly designed requirements. Surely it is mostly written in a manner fitting QA and Testing sessions however the general concept is quite applicable to development requirements as well. The requirements should be well measured and solid as they are the foundation of your software. Surely there will be adjustments to them throughout different stages of development like architecture or design, etc., however the foundation has to be in place from the very beginning. Any team that will be doing the development and testing of your project has to be 100% clear on what you are expecting from them as well as your solution.
Are there any various kinds of requirements?
Basically requirements may be divided in two separate kinds. They may be either functional or non-functional. Use cases seem to be one of the best ways to appropriately document functional requirements. Then there are the non-functional requirements that are describing your future solution’s system and performance characteristics. These requirements value most to architecture and design of the newborn app.
What should be done on the Architecture phase?
Frankly speaking too much to fit in just one blog post or even one book. It is always better to contact specialist and trust their decisions on this aspect of the development process. There were many times my team faced and had to deal with really ugly architecture customers have insisted on despite all warnings. Do you know what was happening when such projects were going live? Nothing good. However, before trusting somebody with your software architecture you must be 100% sure you are dealing with professionals of highest standard.
Architecture is followed by design, right? Any pitfalls there?
To set things straight I would have to state that great architecture does not equal great design. Market is overloaded with apps that are either under- or over-designed. You wish a great design? Make sure you keep things simple. More fancy things do not make your applications more appealing and are rather doing the opposite by making an impression that a child with lots of amazing stickers could not decide which one he wanted so all were used over one another. Object-Oriented analysis would be a great solution for multiple projects.
Do I really have to know anything about the code?
You will not require development and coding skills obviously however you should still be aware of several major concepts and especially about code construction. This would be the largest (more like the most visible) part of your project because code construction involves requirements as well as analysis, architecture, QA and design. So, basically you already have the required background you will simply have to put all the pieces together for the larger picture.
Do I need QA?
Of course you don’t. If you want your project to fail and all investments to burn in smoking fiery pits that is. Software testing is not optional. Or it should not be, at least. Simply remember the last app with a tiny glitch you have downloaded. Surely you gave it up shortly and went to a better and more efficient available competitor just because you can do so without breaking a sweat within moments. Do you want to be the owner of the buggy app or the successful competitor? Software testing to a project is like sleep to your body. Sure you may replace sleep with more productive activities or even save some money by not sleeping and doing more work (by the way expensive software testing is a myth. Properly designed testing sessions actually lower expanses, I will write about this in more detail some time later) but your body will eventually go mad and die. Now will that work out fine for you?
Are there any nice habits that will work for me as a businessman?
Definitely go for peer reviews as a habit. Reviewing other people’s work is crucial. Do you know what I personally have to say about this habit? It eliminates lots and more mistakes before they are even made. If you are going for fast development of quality software (if those words even may be combined in one sentence without penalties from higher beings) peer reviews will guide you to that direction.
What is decent configuration management about?
Well proper configuration management should consider you being aware of even the slightest changes of artefact states. With that knowledge artefacts that are making your system are wisely managed and distinct system versions are being released. Surely that is a little less than a full description of every involved process but, then again, I will be getting to this matter shortly with a separate post.
What do I do after tests find defects?
Defects & Quality management may be quite tricky. First of determine right quality and release requirements. This data will assist evaluating code maturity as things are getting developed and tested more during the project. Make sure your defect tracking systems are appropriately linked to source control system for better management.
Am I ready for deployment?
If you are already on the deployment phase, well you have probably done a hell of a job by now. However before proceeding to deployment go through the following checklist:
- Deployment requirements had to be conducted way earlier before development. Are all of them met?
- Let’s proceed to the application checklist:
- Implementation Plan (this should include all feedback from previous implementations).
- Implementation Risk Assessment (has to be conducted based on deployment dates and the Implementation Plan).
- SDS (make sure all documentation on System Design Specifications is completed and is accurate).
- Same for the System Description Document.
- Have you conducted load and scalability tests?
- Was performance tested as well? The best way of making sure if tests were supported with both staff and user testing.
- Source code requires to be reviewed with appropriate tools before going live and after.
- Were all the updates added to the Configuration Management Database?
- Review the test log to make sure all was completed.
- Complete Production management Handover to the tea, responsible for support.
- Make sure appropriate access accounts were created for the support team.
- Update the Password manager with appropriate changes and details.
- Compare TEST, DEV and LIVE environments.
- Make sure the application serves business and customer requirement in a way it is supposed to.
- Are there additional technologies involved or 3-d party solutions? If yes make sure all is handed over to the support team in an efficient manner.
- Double-check the Certificate master list/ Are all the relevant updates already in certificates? The Master list should be managed by App Management and has to include Test, DEV and LIVE certificates as well as other certificate records including expiry dates.
- The Infrastructure Checklist:
- Complete all Technical Architecture Documentation. It should be done in the most efficient and accurate manner and has to reflect UAT subjected environments.
- Operational documentation has to include: detailed descriptions of all operational tasks as well as ongoing maintenance. Highlight and eliminate all missing fragments if possible.
- Specify, test and implement all security requirements such as IP based restrictions, SSL encryption, firewall requirements and etc. in the LIVE environment.
- Ensure patching schedule is agreed on with everybody involved including all possible service owners.
- Make sure all updated and relevant server + insurance info is includes into latest Infrastructure Diagrams.
- Place Server Shutdown/Start-up scripts in position. Make sure everything is tested, documented and enabled.
- Were files like Port allocation updated?
- Go through backup and recovery documentation. Perform a test recovery in order to validate mechanisms and integrity of the recovery process.
- Make sure you are done with all logs. Old logs have to be either achieved or even deleted allowing the server with more space. A slight portion of logs is to be enabled in production. Debugging may fit DEV but not Production.
Anything else I should know?
Make sure your support and operations teams are in place and are updated with all required data and authority.
How do I manage the project?
This is the part where you should make relevant decisions as the project is yours. There are plenty of best practices available, however ‘best’ is but the most fitting word in the concept and does not allow an easy win. Go through multiple ideas and checklists and reviews to create the most fitting plan to the current project you are working on. By the way odds are this management plan will not work as well in a different project so do not repeat yourself in everything.
What should I know about Measuring Success?
There is this capability maturity Model or CMM this should easily guide you through the process.
In a conclusion I would like to notice that if you have any other questions you are always free to ask them from the comment section directly. Our team will appreciate the trust you are granting us with and we will essentially answer everything you will ask of us. Looking forward to our further collaboration, fellow readers!