Of the variety of programs being developed, two-thirds never reach the end user. Among those projects that did reach the implementation stage, more than half went beyond the original budget and implementation timeframe. Why is this happening? There are many possible reasons why a project failed. Among them are incorrect cost estimates, incorrectly set development goals, poor management, defeat in the competition, and many others.
Since then, many developers have worked on many different projects, and, of course, they also faced all the typical problems of bringing software to the end user. However, as a rule, they always managed to complete every such project that they undertook. One hundred percent of the developed software was implemented by the client with subsequent technical support and further development.
WHY ARE NEW PROGRAMS CONSTANTLY DEVELOPED FOR?
For many, this is a way of earning, creative self-manifestation, professional self-realization. Programming is a life’s work. But you should always remember that the main reason why developers create software products is the need for them on the part of end users. It is the user demand, the presence of the client’s tasks that need to be solved by technical means, that determines the approach and attitude to the craft.
This forces the developer to focus on the result and make decisions only if they are sure that these decisions will help to achieve the result – to create a tool for solving a specific user problem in such a way that it fully meets the needs and wishes of the user. That is, the software development methodology should be most dependent on the performance factor of the chosen approaches and tools, meaning the successful completion of the project by the result.
SOFTWARE PRODUCT PLANNING STAGE
What difficulties do developers face in the process of solving the task received from the client? Firstly, initially there is no task, at least in a form that is understandable enough for the developer. The developer has yet to analyze the wishes and requirements of the customer, and turn them into a technical task. Secondly, the developer does not have knowledge about the subject area to be automated, which means the need for its analysis and study.
That is, you need to understand that before starting development, it is necessary to analyze the client’s area of activity, understand his wishes, and formulate the goal of creating a software project, defining in large strokes the tasks that need to be solved to achieve this goal. This is called the project planning stage, and the main role at this stage is assigned to system analysts and project managers, whose main task, together with the client, is to form the terms of reference.
Do not forget about the natural limitations of the project – time and budget. They significantly affect the tasks that will be assigned to the development department, because the developer needs not only to write a program, but at the same time meet the deadlines and it is desirable not to go beyond the budget, which means that somewhere, perhaps, the project needs to be simplified a little in favor of more important functionality. As you can already understand, at the planning stage it is extremely important to prioritize the implementation of each functionality (use case) of the application declared in the terms of reference. This priority will be taken into account when determining the order of implementation of the functionality.
The executor of the specified design work prepares the design documentation exactly to the extent required for the designed functionality and the corresponding design solution. For example, defining the overall architecture of a system often requires information flow diagrams, data models, a use case diagram, a conceptual model, and so on. And for a single functionality, it may only require a freehand sketch of a GUI. In general, design documentation should answer the question “how does it work”, but without redundancy. At the start of designing, the models of business processes that are to be automated are of the greatest value. They give an understanding of the tasks that the developers face and determine the further vector of the project development.
SOFTWARE PRODUCT IMPLEMENTATION
Once the system concept, architectural strategies, subsystem interfaces, interaction schemes, and other fundamental features have been defined by the architect team, the design phase begins for the project, that is, the phase of active implementation of the application and its functionality. At this stage, several principles are valid to ensure the effectiveness of development work. For example, after creating the application framework and its system functionality, and moving to the implementation of user functionality, we strive to release builds of software versions as often as possible.
In the early stages, the assembly and transfer of software for testing or to the client is performed once every two weeks, at later stages, closer to the delivery of the project, the assembly is carried out daily as the functionality is implemented. This gives fast feedback. The client receives a version of the software product earlier, albeit a “raw” version, but he can immediately find some fundamental errors or shortcomings in the understanding of the task by the developer, and report them. And this allows you to quickly respond to comments and immediately make changes to the concept, design decisions, or implementation. Time is the most valuable resource, and reaction speed is the most important tool for achieving results.
The first testers of the installation and update utilities are usually the developers’ technical support and testing department. All builds of software product versions pass through them, and they, in fact, reproduce the same actions that the client will perform when the finished version of the product is implemented with him. This allows you to feel the quality of the finished product, and determine the tasks that have yet to be solved in order to improve this quality, saving the project from obvious errors and inconveniences. In case of testing failure, the version is returned for revision, and the developers, having solved the problems for correction, prepare the next build.
As you can see, in the process of developing a software product, there are many elements that are repeated over and over again until a satisfactory result is achieved. These are iterations of design work, and iterations of the implementation of the functionality. The frequent repetition of actions gives the necessary flexibility when creating a product focused on end users. Feedback from users after the release and deployment of versions allows you to quickly make the necessary changes to the project.