Nepal Software Development 


| PES Nepal Software Development |
|
|
|
| Written by Binod Nepal | |
| Wednesday, 21 November 2007 | |
A common sense approachOur philosophyOver the last fifty years software development has evolved from a means of solving discrete mathematical and engineering problems into a true engineering discipline in its own right. As in any branch of engineering the process by which systems are designed and created is often the most important factor in the success or failure of a project. There now exist many different philosophies and associated processes for the creation of high quality software systems. PES is not dogmatic in its approach to selecting the most appropriate process for a particular development project. By using the most suitable process or elements of a number of processes systems can be designed and built in the most efficient manner possible while effectively managing risk and maintaining quality. A generic software development frameworkAlmost all software development processes are made up of the same key stages. The reason for this is that in almost all software development projects of any size omission of one of these key stages introduces unacceptable risk factors. key stages of the generic software development process are as follow:
The stages described above are by no means discrete, there is as one would expect a great deal of feedback between different stages in the process. Managing that feedback is the most complex part of the software development process and is unsurprisingly an issue that still elicits a great deal of intellectual confrontation. In the next section we look at an overview of the most commonly used approaches. Other differences between methodologies tend to be less fundamental and generally relate to implementational specifics or notation. Some commonly used methodologiesThe Classic "Waterfall" ModelThis model does not allow for feedback from later stages back into previous stages; e.g. in the event that a serious human interface issue is discovered during implementation, work would be halted and the system requirements revisited, leading to a respecification of the software and a new implementation. PrototypingThis model adds the flexibility to trial elements of the system before a full implementation is started. In real world situations it is often difficult to determine all system requirements prior to testing a working (or partially working) system. This poses a problem in the classic model as at this point it is likely that a large investment has already been made. The prototyping model allows key parts of the system to be modeled or implemented quickly to gain user feedback early in the development cycle. These prototype implementations are then discarded, having cost relatively little to develop. The Spiral (or Repetitive Waterfalls) ModelThe spiral model combines the two approaches and allows for multiple generations of prototype system resulting in a finished system. At each generation an analysis of the previous prototype leads to a new list of requirements and a new design. A risk analysis is performed for each new design and a decision is made as to whether the new implementation should proceed. This approach can be expensive and time consuming and is unnecessary in all but the most complex of system developments. Evolutionary PrototypingIn the evolutionary prototyping model the solution is prototyped iteratively until it meets all requirements and is delivered. The major drawback of this methodology is that the evolutionary development of the system can result in high maintenance costs over the solution lifetime. This can be mitigated by including phases of aggressive refactoring, although this is only cost effective in higher level languages with good development tool support. Staged DeliveryThe staged delivery model calls for delivery of the system to the customer after each cycle of development. Once the system has been tested the results are fed back into the cycle and this process is repeated until the solution is delivered and accepted. Agile Software DevelopmentThe agile software development model calls for a much tighter collaboration between customer and developer and can be extremely effective, reducing development times and resulting in more effective solutions. The methodology is similar to staged delivery, but using very short cycles similar to those in evolutionary prototyping. There are a number of variations on this model, including extreme Programming. The right tools for the jobSelecting the right model to use in a particular situation involves evaluating a number of parameters such as:
With eight years of experience using the latest tools and methodologies PES is well equipped to assess the most appropriate way to manage the development lifecycle and to put that management into practice. PES will deliver you a system that performs not only in terms of speed and integrity but also integrates well into your existing environment and is maintainable in the long term. |
|
| Last Updated ( Wednesday, 21 November 2007 ) |
| < Prev | Next > |
|---|