The software development life cycle, or development process, is a structure imposed on the development of a software product. It typically covers all aspects of the development, starting from the identification (capture) of the customer’s (or end user’s) requirements, through the implementation of the code, to product deployment and maintenance of the system in the field. There are several models developed to describe and control the process. Students of software engineering and computer science courses can expect to cover the different models of the development process in considerable depth in their degree courses.
It has been a goal of businesses and software managers for many decades to bring the process of writing software under adequate control. Projects may often exceed the planned timescale by months or even years, and can be several times over the originally planned budget. Serious problems may not be found until a late stage in testing, or even worse, until after the product is delivered to the customer or deployed in the field.
As software is used in large systems in the financial industry, poor software quality may lead to significant loss of revenue. For safety critical software systems which are deployed in many industries (aviation, chemical industry, nuclear industry) the consequences of failure may be quite disastrous, leading to large scale loss of life or environmental damage.
The waterfall model of software development life cycle
The waterfall model is one of the earliest attempts to describe the software development life cycle. The project is split up into phases: requirements capture, design, implementation, testing, maintenance etc. In the strict case each phase must be finished before development proceeds to the next phase. Formal design reviews may be held, these can sometimes be referred to as “gates”, and the project must pass through these gates before starting the next phase. Revisiting or reworking earlier stages is strongly discouraged.
Schemes of development
Proponents of more flexible schemes often strongly criticize the inflexibility of the waterfall model. Schemes such as iterative and incremental development, and agile development (which includes extreme programming, XP), allow working models of the final system to be built much earlier. This helps identify flaws in understanding what the customer really wanted, which is not always clear or obvious.
Generally a much more rigorous approach is required from developers in safety critical industries such as avionics. Organizations such as the US Department of Defense, and the UK Ministry of Defence, will expect development teams to demonstrate compliance with a formalized software development life cycle.
Graduate courses in software engineering and computer science will almost always cover the different software development life cycle models, such as the waterfall model, and the agile programming model.
What Exactly Is A Software Development Life Cycle?
If you are dealing with something such as this topic then chances are you are already educated when it comes to computers or you have taught yourself the stuff you need to know. For the rest of us out there who have little or no knowledge and do not understand the technological terms attached to so many processes or tasks a computer does you will not understand what is meant by software development life cycle. It is relatively technical and only used by those actually in the field of information technology.
What is it?
This cycle is essentially a process. This process is used by a systems analyst to actually develop an information system. It goes without saying that computer systems are remarkably complex.
Sometimes computer systems run by several different software vendors. In order to make this work efficiently there have been various life cycle models which have been created to make sure that the system merges together properly and works as it should.
The life cycle for information systems has been around for many, many years, the first model can be seen as early as the first computers came about. But, as with all things it has adapted and grown. This is to enable computers to be more powerful and efficient than ever.
If you were to use an older computer now you would see huge flaws in the systems used, so the evolution of the life cycle was to combat these problems. To target any deficiencies there may have been with the older system to give rise to this new, even more complex system.
As the name suggests, this cannot be merely a model, there must actually be a cycle which is followed. Which there is, there is a ten step cycle which is used when developing software or systems.
What are the steps?
The steps are; initiation – where an idea is created, system concept development, planning, requirement analysis, design, development, integration and testing, implementation, operations and maintenance and disposition.
Once each of these components of the life cycle has been completed, a high quality software or system will have been developed, when you look at it simply like this it doesn’t seem so difficult. But the amount of work which goes into each step is remarkable.
For the novice information systems will never fully be understood, but this software development life cycle shows that when it is broken down into pieces the task becomes more manageable, and for those of us with no information technology knowledge we can still follow, understand and appreciate just what goes into creating software.
Formalized Software Development Life Cycle Model Vital For Safety-Critical Systems
The consequences of failure for some software systems may be very severe. Examples include systems used in railway signaling, flight control and air traffic control systems, and control systems in nuclear and chemical industries. Typically the company developing the system will be required to demonstrate compliance with a formalized software development process, or software development life cycle model.
Organisations and software development life cycle model
Organizations such as the US Department of Defense, commercial aircraft manufactures including Boeing and Airbus, and many other organizations, have a requirement to procure large and complex systems, which in recent times nearly always contain a large element of computer software. The consequences of failure in the development can be severe in more ways than one.
Firstly, large and complex software projects have a long history of cost and timescale overruns, and in some cases do not meet the original requirements after they have been delivered. Those who are paying for those systems have a clear motivation to ensure that their software contractors are operating an professionally managed development process.
Secondly, many of these systems are safety critical, for example failure in a railway signaling system or an airliner’s control systems could cost hundreds of lives. Failure in a nuclear power plant risks many more lives, and could also cause severe environmental damage. Reliability of software operation, adequate testing of the software, including all possible corner cases, and accurate implementation of the original requirements are all part of the process required to ensure safety.
Generally the contracting company (the software developer) will be required to demonstrate compliance with an appropriate software development process. For example DO178B specifies that formal analysis techniques must be used in the most critical avionics systems.
Formal methods are mathematical techniques, which can be applied to both software and hardware. In software they would usually be applied during the requirements capture, specification and design phases. Examples include Petri nets and automated theorem proving.
An example application is that in a civil airliner’s flight control system, formal methods are used to prove the system for detecting faults in the flight control computers. There are several flight control computers (so that if one fails the plane will continue to fly), and it is necessary to check that the good computers can detect and isolate a faulty computer, while the reverse can never happen (a faulty computer shutting down a good one).
Formal mathematical techniques are used during the software development life cycle to provide a mathematical proof that the algorithms used are correct under all circumstances.
The Software Development Life Cycle In A Nutshell
Sometimes, in life, it seems very easy to gain access into something that is supposed to be difficult in just a matter of seconds. Nowadays, there are millions of transactions done online daily with just one click of a mouse. With the advancement of technology and the software development life cycle there are so many things you can do without much waiting.
People in todays society are always in a hurry, so technology has had to figure out a way to keep up with us. Professionals that understand how software development works have teamed up to create the technology we all know and love. Just look around yourself and you will see numerous smart phones, laptops, and other devices that help to make your day go by easier.
Basic steps of software creation
The development of software is a process that must be implemented in order to create various types of software. The process, as a whole, is called a life cycle. Like all processes, there are basic steps that must be followed in order to develop any kind of software.
The basic steps are as follows:
1. Analysis requires the developer to determine what kind of technology the software is. Is it a technology that already exists, but is being upgraded or improved or is it a brand-new form of technology?
2. Designing is the step that involves the formation and layout of the software. It has to be carefully examined and it has to meet the requirements of the audience. This step may take some thought, but if executed properly, the software can become a big success for the market.
3. Implementation allows the actual software engineers to begin their job of coding. This is very important because, without the proper coding, the software has no chance to work properly.
4. Testing is started as soon as the coding is complete. This is where the developers and engineers are able to determine if the software is ready to be release or if there are bugs that need to be fixed. This can be a grueling process, but it is necessary if they want to provide consumers with quality work.
5. Deployment occurs once all bugs have been found and fixed and the software runs smoothly. The software will be released and consumers around the world will be able to have access to it.
6. Maintenance will require the developers to occasionally check up of the software. Issues and bugs may show up even after it has been released. In order to ensure that it remains functional they will be required to fix any problems it may encounter along the way.
The software development life cycle may be tedious, but it is the only way to ensure that programs is appropriately tested before released to the public. This software cycle is what helps people make it through their day, whether it is a program for work or a new game. This is necessary to prevent individuals from going crazy.
Understanding The Basics Of The Software Development Life Cycle
There are times in life where it is very simple to get access to something that would have been impossible ten years ago. This usually happens in the matter of just a few seconds. There are millions, if not billions, of people that use the internet and computers daily. Technology has advanced society to a point where waiting is hardly an issue, and this is due to the creation of the software development life cycle.
Individuals today are so used to the rushed style living that they do not have time to spare. Technology has found a way to cater to those needs. People that have the knowledge of software development have come together and are now changing the technology we all love so much for the better. If you take a look around, you are sure to see gizmos and gadgets everywhere. These help to make people more efficient and maintain sanity.
FAQ of a process called the life cycle
Analysis is the part of the process that involves the developers and creators to determine if the software they are making is new or if it already exists.
Designing is the second step. It includes the developers creating a layout for the design of the software. It has to be functional and meet the needs of the consumers.
Implementation requires the coding of the software to begin. This can be the time for the software engineers to unleash their talent, although it may be tedious work.
Deployment is a very exciting step. This is where consumers are finally able to get their hands on the finished product. Lots of time and effort goes into developing software, so this is where all the hard work pays off. (6)Maintenance is the last step, but it is ongoing. Someone has to keep an eye out on the software to ensure that everything runs smoothly. Should any bugs or errors occur, they have to be fixed.
The software development life cycle may take a while to complete, but it is well worth it. This software development is crucial for individuals to advance. It is a way for people to become more efficient and allows them to explore their imagination.