| Methodology |
|
At Kynetia we define the development project to be used in initial stages of projects, at the same time as establishing the partnership framework with the client. Key to this process is the choice of the software product life cycle and quality assurance. Process iteration. The need to accept change Change is inevitable in all software projects above a certain size. This makes it necessary to employ iterative development processes, seeking to avoid the gaps that appear in evolutionary developments, which hinder project management and may have detrimental effects on architecture quality. The sources of change lie both in the business process needs supported by the software under development and in technological advances, making it necessary to adjust both design and the implementation of solutions. The first process models to apply iteration to processes were the incremental delivery model, spiral developments for more advanced models, such as the Agile methodologies centering on rapid product development, and the Rational Unified Process (RUP), which was created to ensure the successful completion of major projects and allows some room for adaptation in line with the needs of each project. Development processes employed by Kynetia
Choice of the software life cycleLife cycle refers to each of the activities concerned in the project development process and the way in which they are carried out over time. There are numerous models, but none of them is the panacea for all projects. Rather, each of the various models has its own advantages and disadvantages depending on the type of project in question. For this reason, Kynetia employs a methodology that ensures the life cycle of each project provides the best fit with the software project developed.
Four main activity groups may be defined on the basis of the activities involved in any development process according to the literature:
The characteristics of some projects will make it unnecessary to provide all of the life cycle activities as a serve. For example, Maintenance might be provided only during the operation of an existing system, or the project may end at with Construction and testing. Similarly, it might be necessary only to provide the architectural design of the solution. The most appropriate life cycle is determined based on development characteristics (client needs, size, interaction with other teams, technology, scope of activities, etc.), varying the manner in which activities are performed. To explain this more clearly, let us look at some of the basic principles of life cycles in software processes. Basic process principlesascade development
The main drawbacks are the rigidity of the process and the associated risks. If a requirement changes, or if they are not well defined, the inflexibility of cascade development may cause the failure of the project. Also, the user only sees results at the end of the development cycle, and the longer this is the more likely it is that the outcome will stray from the client’s expectations. Evolutionary development The idea is not to waste too much effort on specification, quickly producing prototypes that can be repeatedly refined through successive versions of the software, adapting the product to the project needs and interweaving new specifications with validation before each iteration. This model works very well for small systems (up to 500,000 of code). It is more effective than the cascade process because any ill-defined requirements can be resolved in the course of development. The main problem is that it may be difficult to gain an overview of the whole process due to the speed with which it goes ahead, and because of the tendency to relax the production of documentation, which hinders project management. Finally, the working method tends to degrade the initial architecture with the result that refactoring becomes necessary if the project grows beyond a certain size and complexity. Components-based development
Systems of this kind often entail the modification of requirements to ensure the fit with off-the-shelf components. The elements of the system for which no components can be found are developed and integrated with the rest to obtain the final application. |
The evolutionary development model stands in contrast to cascade development. The starting point in this case is that the development idea is unlikely to reflect the final solution. This is largely true in the case of long developments, because businesses are in permanent change and because the details and opportunities for improvements do not become apparent until an application is produced.