What is Software Development?
Software Development is the computer programming, documenting, testing and bug fixing involved in creating and maintaining applications and frameworks involved in creating and maintaining applications and frameworks involved in a software release life cycle and resulting in a software product.
What is a Software Development Process?
A software development process, also known as a software development lifecycle, is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. Here six basic steps / stages of software development
Requirement Gathering and Analysis
- System Analysis
- System Design
What is Software Development Life Cycle and Methodologies:
The software industry includes many different processes, for example, analysis, development, maintenance and publication of software. This industry also includes software services, such as training, documentation, and consulting. Our focus here about software development life cycle (SDLC). There are types of software development life cycle (SDLC):
- Waterfall Model
- V-shaped Model
- Evolutionary Prototyping Model
- Spiral Method (SDM)
- Iterative and Incremental Method
- Extreme programming (Agile development)
The waterfall Model is a linear, sequential flow. In which, progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation.
It is an extension of the waterfall model, Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape.
Evolutionary Prototyping Model:
It is an activity that can occur in software development. It used to visualize some component of the software to limit the gap of misunderstanding the customer requirements of the development team. This also will reduce the iterations may occur in waterfall approach and hard to be implemented due to inflexibility of the waterfall approach.
Spiral Method (SDM):
It is combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. This model of development combines the features of the prototyping model and the waterfall model.
Iterative and Incremental Method:
It is developed to overcome the weaknesses of the waterfall model. It starts with an initial planning and ends with deployment with the cyclic interactions in between.
Extreme programming (Agile development):
It is based on iterative and incremental development, where requirements and solutions evolve through collaboration between cross-functional teams.
What are the useful Tips and Tricks for software development?
Push the coding to the last:
Firstly, Step away from the keyboard, and start reading about the specs, which given to you, and think about it. At the end of the day, people who wrote the specs know little or nothing about the software, what they know is how to make more money with new functionality. If something is not clear to you, ask questions to other colleagues, to the business, clarify as much as possible and only when you feel confident, when you see the real picture of what they really want, then and only then you can switch the monitor on and start coding.
Paper and Pen:
I never found a tool more useful than paper and pen to design software. Before writing software I usually spend a bit of time trying to put the idea of the design down on paper. Knowing that you are missing something in a piece of paper, its far way better than knowing that you are missing something in the code! So doesn’t waste time using UML tools, unless what you are doing is big-fantastic-amazing-new architectural prototype.
Don’t leave for tomorrow what you can do today:
If you are fixing a bug or adding new functionality and you notice in the existing code, DUPLICATION OR BAD NAMES or a POSSIBLE BUG then FIX IT IMMEDIATELY. Don’t wait for the next sprint and don’t add a technical story in the technical backlog. The exception, it’s when the fix/refactoring is too complex and required long time, then it’s appropriate to create a story in the technical backlog.
Do Pair programming:
It is twice productive than working alone, the quality of the code is superior, the development speed is increased. The strength of this technique is the fact that is funny, being funny and so more stimulating means that you are more focused and you pay more attention to details. “You can learn a lot doing pair programming, so push for it as much as you can”.
Forget about comments, just write proper names:
Write in proper names when writing packages, classes, methods and variables. Write names that make sense, ask, a review before committing your code. Comments need to be maintained, otherwise they are misleading.
You have time:
There is no competition and you are not at the programming Olympics. Your job is to deliver good quality code. That’s it. This is your job! If you feel that a task takes longer that what you initially estimated, just make the team aware of the next stand up and that’s it. So, Keep calm and take your time, give your best shot and produce good quality code.
Rarely use checked Exceptions:
If you want to use is checked Exception used them ONLY if the client can reasonably recover from it at run time! Remember that checked exceptions will spread all over your design in case you need to extend the behavior.