Custom essay “Software Development Process”

A software development process describes an approach to building, deploying and maintaining software. There are several models of this process, which describe approaches to the elements of division in the process of software development. Huge amount of organizations, which develop the software, use the different methodologies of producing. The process of searching of the repetitive and expectable processes, which increase the productiveness and quality of the products, have been lasting during decades. Some people try to systematize and formalize insoluble tasks of the software developing. Another one begins to use management for its creating. Very quickly projects begin to be inappropriate according to the terms or budget without good management. There are a lot of good projects which were failed because of a bad budget. Actually, there are some fundamental software development activities that are common to most processes: requirements analysis, specification, architecture, design, implementation and testing, and deployment and maintenance.
The most important task in developing a software product is the elaboration and analysis of client’s demands. Analysis of the work fields very often becomes the first step of the new product design, whether it is the addition to already existed application, new application, subsystem, absolutely new system. Taking into account the fact that at the beginning of the project the developers cannot be the specialists in the field of new software, the first their task is to study this field of knowledge. The better the developers study the field in which they are working, the less work required. Another reason of this work is to avoid the muddle in terminology and understanding of what this program does. If analyst uses inappropriate terminology, the program can work incorrect.
Specification is the task of exact describing of the product, which will be created. Specifications are the most important for the external interfaces that must be stable. Architecture of a software system or software architecture is used for the certainty that software will be correspond to all requirements and have the opportunity to add new decisions for new requirements.
Design deals with describing conceptually a software solution that meets the requirements of the problem; implementation actually builds such solutions, and the process of testing is necessary to find out and correct different mistakes. Documenting is used for the purpose of supporting and improving the software. It is also can include the description of external or internal programming interface.
Deployment starts when the code is tested and approved for release. Software training and support are very important because a lot of developers do not realize that the product will be senseless if nobody uses it. The people very often avoid changes in software products, so it is very important to train new customers. Maintenance and improvement of the product, including the correction of mistakes can take more time that the developing process itself. It can be useful to correct the code, which does not fit the necessary design – it can make the process of searching and correcting mistakes easier and don’t allow users to find them.
Models
Waterfall processes
Historically the first adopted software development model was the waterfall development process or waterfall. The waterfall model shows a process, where developers are to follow these steps:
1. Requirements specification (AKA Verification or Analysis)
2. Design
3. Construction (AKA implementation or coding)
4. Integration
5. Testing and debugging (AKA validation)
6. Installation (AKA deployment)
7. Maintenance (Wikipedia, 2008)
Each new step starts only when the previous steps have already finished. This model is very popular and successful, but it has some disadvantages. For example, it is meant for the existence of definite requirements which were given beforehand and they remain invariable during the whole process of development; it also assumes that the whole code is designed from scratch, making no allowance for the reuse of existing software. Because the development is a linear process, the waterfall process doesn’t allow to the previous phase to repeat without repeating all steps.
Agile software development
Agile software development was created by organizations involved in iterative development. To that approach easier, more people-centric view points than traditional approaches were added. Easy processes use feedback, instead of planning as the main controlling mechanism. Feedback is realized with the help of regular tests, as well as the frequent releases of the developed product. Interestingly, that researches show the potential for appreciable improvements of the standard waterfall process.
Iterative processes
Iterative development prescribes the construction of initially small but ever larger portions of a software project to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster (Wikipedia, 2008). Iterative processes are often used by commercial developers because they can simply change the code, depending on changes of customer’s requirements before this change becomes the source of problems.
XP: Extreme Programming
Extreme programming is the most famous iterative process. In XP the process is divided into very small steps compared with the planned processes. This leads to the fact that the first steps can take over days or weeks instead of months or even years for each stage in the waterfalls model. Firstly automated tests are written to describe the development. Then comes coding, which ends at that moment when all tests are copmlete, and programmers can not create new tests. Design is made by the same people who write code. (only the last step – the connection of design and code is common to all easy processes). Incomplete but a functioning system is showed to a narrow range of users (usually it is the developers themselves). At this moment, they begin to write tests for the next most important part of the system.
After finishing the work on this step, the process moves to the next; Product is not released before all the stages of development will be completed. The problem of this system is that the process does not offer opportunities to correct mistakes in the early stages (for example, in claims). This approach is used for the high-risk projects, mainly in the big contracts for defense system.
To analyze whether the concepts of a product life-cycle align or do not align with Software Development Life Cycle and the Iterative Development Process, it is necessary to turn to theory. As usual, the sales volume of a new product increases, but then after appearing new competitive products, decreases. Time is very crucial in software development. If during the software development delay happens, the customer can be taken over by the competitor. Also if a ‘bug’ filled product is launched in a short period of time (quicker than the competitors)( Software Development Life Cycle, 2008). There should be compromise between the development time and the quality of the product.
Key Aspects of an SDLC.
There are three key aspects of Software Development Life Cycle: requirements definition, architecture and testing.
Service Requirements Definition. To accommodate all business requirements it is necessary to include security, compliance and IT operations. The task is to understand and include absolutely all requirements beforehand not only for making appropriate management decisions, but also because it is cheaper to accommodate and develop all claims immediately than to redo them once more.
Service Architecture. According to the service archtecture to optimize a service means there must be recognition that a system of inter-connected components are being assembled to deliver the services needed by the business. Service architects need to plan how all the various configuration items (CI) connect together.
Service Testing. There are recognized testing regimens such as integration, load and operational testing that can help test the overall service provided the test service adequately mirrors the production service. Differences in database sizes, network speeds, levels of integration, network security systems can make problems in the test environment vs. production. For some organizations, it’s financially impossible to have a test environment that mirrors production.( Understanding Software Development Lifecycle, 2008)
As we can see the some concepts of a product life-cycle intersect with Software Development Life Cycle. The software is very competitive product, which can become obsolete and needless very quickly.
Waterfall vs. Iterative Development
The unified process divides iterations into such phases: inception, elaboration, construction, and transition. Waterfall development completes each discipline in one step before moving on to the next discipline in the next step, while business value is achieved only once and only at the very end of the project.
References
Software development process. (2008). In Wikipedia, the Free Encyclopedia. Retrieved February 19, 2009, from http://en.wikipedia.org/wiki/Software_development_process
Software Development Life Cycle. (2008). Stilusinc. Retreived February 1, 2009, from http://www.stylusinc.com/Common/Concerns/SoftwareDevtPhilosophy.php
The Product Life Cycle. (2007). Business Knowledge Center. Retrieved January 10, 2009, from http://www.netmba.com/marketing/product/lifecycle/\
Understanding Software Development Lifecycle. (2008). In Webopedia. com. Retreived February 8, 2008, from http://www.webopedia.com/DidYouKnow/Computer_Science/2008/Software_Development_Life_Cycle_SDLC.asp
Turlington, Sh. (February 1, 2008). The iterative development process. Retreived February 3, 2009, from http://shannonturlington.com/2008/02/01/the-iterative-development-process/
Custom essay writing service Essay-911.com. Buy essays online!
Free Online Custom Essays: Custom essay “Software Development Process”