THE SOFTWARE DEVELOPMENT LIFE CYCLE *The following was adapted from Glencoe s Introduction to Computer Science Using Java Developing software is a very involved process, and it often requires numerous programmers working in teams to create a product. A successful product is the result of a well-defined development process. How do you know if a product was successful? Was the product shipped on time? How difficult is it to maintain the product? Does the product do what it was intended to do? Is the client happy with the finished product? Was the project successful financially? Many software companies have established their own development processes. Most of them follow the same basic steps (search Google Images for other takes on the Software Development Life Cycle). We will use the steps: Analysis (What does the customer want? What are the user specifications?) Design (How will the program work? i.e. Flowcharts, UML diagrams, etc.) Implementation (Write the code) Testing and Documentation (Does it work the way it was supposed to? Add support files/instructions) Maintenance (Fix problems, add features as required) Image from: https://airbrake.io/blog/wpcontent/uploads/2013/07/development_life_cycle.gif As a new programmer, you are working with such small programs that you may question the need to follow all of these steps to produce a solid product. However, it is important that you develop good programming habits early. As your programs grow in complexity, you will be glad that you did.
ANALYSIS During this phase, you and the client define the product. Good communication skills are mandatory. Typically, the analysis of a problem involves listening to the client s needs, asking questions to clarify exactly what is needed, and producing a written document that describes exactly what the program will do. Some of the questions you should ask include: What is the budget for this project? Who will use this product? What should the product do? Is there other software that does this already? What are some good/bad things about the existing product? What hardware or software will this product be run on? Does the product need to meet certain performance or security measures? Are there specific interface requirements (colours, look, tone, etc.)? What is the deadline or launch date for the product? What is your detailed list of deliverables (what must be provided to the client when the project is finished)? Even if the client is you and your program is very simple, you should complete this phase. Your analysis may only require a sentence or two. More complex programs demand more extensive analysis (imagine the analysis documentation for the next version of an operating system).
DESIGN Designing the product involves a detailed examination of what it will take to accomplish the goals set forth in the Analysis phase. Here, you plan the project details and design your solution. The steps to organize the project include: Detailed list of deliverables (what you provide to the client when the project is finished) Project organization (responsibilities of each team on the project, how they will communicate, people responsible for each team) Technical choices (programming language, third-party tools required, version tracking, coding standards, testing processes) Quality assurance (test procedures, problem reporting and resolution) Schedule (major milestones, estimate of time required for deliverables) A programmer must consider the steps that are required in order for the computer to perform its task. It is important to know the order in which the statements will run, from the point at which the computer begins reading statements to the last statement that is executed. Programmers use flowcharts to help determine the steps of a program. A flowchart is like a map of the program. The series of steps plotted in a flowchart is called an algorithm. An algorithm is a specific set of steps that will always lead to a specific solution. We will discuss this in more detail.
IMPLEMENTATION In the implementation phase, you finally get to write the code. During this phase, you make the design into a program. When writing the code, try to break things down to the smallest units possible. Writing small code units makes it easier to test and debug, and also improves your code reusability. Over time, you will develop a library of common objects, or units of code. There is no fun or fortune in reinventing the wheel every time you sit down to write a program. Use meaningful names for methods and variables. Deciphering variable names when you have to maintain the code (months later) is never a good thing. Also, be sure to comment your code. It will help you and other programmers who have to work with your code. Many times, trying to explain a difficult section of code in comment form will help you think of a better way of writing the actual code. TESTING AND DOCUMENTATION The testing phase is a critical one. There is nothing more embarrassing than demonstrating a finished product to your client, only to have it crash during the demonstration. Proper testing is actually a continual process. Depending on the size of the project, your team may conduct individual testing of the component it is responsible for, before other teams integrate it. Once the individual components are tested, they must be tested in combination with the other components. Generally, a detailed plan for testing is required to ensure correct functionality of the product. This phase of the development cycle is generally an iterative one. As bugs are discovered, the program is cycled back to the implementation phase, and then retested. This cycle continues until all or most of the bugs are discovered and fixed. After testing is complete, supporting documentation is created. This may include printed or online instructions, describing how to manage or use the application. Documentation can also include technical information for the programmers who will maintain the application.
MAINTENANCE If you have done your job properly in the testing phase, deployment and maintenance will be much easier. Unfortunately, the reality is that most of the time developing a program is spent maintaining it after it is finished. Virtually no program ever written is 100% bug free. When bugs are detected and reported, you must figure out what is causing the problem and how to fix it. Again, if you have done your programming well (remember when you were supposed to comment your code?), maintenance will be much easier. You may also elect (or be asked by your client) to improve the original version of a program. *Note: This document was adapted from UNDERSTANDING THE CONCEPTS 1. What are the phases of the Software Development Life Cycle? 2. Which phase do you think is the most important and why? 3. How do you know if a product was successful? 4. In which phase of the cycle would you set a schedule for creating the product? 5. What are some important things to consider during the analysis phase? 6. Why is it important to provide users with documentation?