2. Software Development Life Cycle and System Development MethodologiesIntroduction: In the lesson 01, we discussed why we need Software Systems and what themain characteristics Software System should have. In this lesson we will discuss about thehow we can develop software systems and methodologies we can adhere when wedeveloping software systems. Lesson Outcomes: After completing this lesson you should be able to • Explain the software development life‐cycle. • Using suitable examples, explain the waterfall method. • Identify and describe the main limitations in water fall method. • Explain the role iterative waterfall method and how it differs from waterfall method. • Define the object oriented analysis and design methodology.2.1 Software Development Life Cycle (SDLC)Systems Development Life Cycle (SDLC) is a software development process, although it isalso a process that independent of software or other information technologyconsiderations, i.e. SDLC is independent of the technology we are using, such as Java, C,.Net, C#, client‐server application , web application etc. It is used by a systems analyst todevelop Software System, including requirements gathering, requirements validation,requirement analysis, system design, implementation, and maintenance.An SDLC should result in a high quality system that meets customer expectations, withintime and cost estimates, and is cheap to maintain and cost‐effective to enhance. SDLC is asystematic approach to problem solving and is composed of several phases. The generalphases in SDLC are: a) Planning b) Analysis c) Design
d) Development e) Testing f) Deployment g) MaintenanceLet’s analyze each of these phases one by one, in terms of activities carried out in eachphase:2.1.1 PlanningBefore starting the system development process, we need to establish proper plan by • Defining the system to be developed – System should be clearly understand and chosen based on the critical functionalities should be provided by the system. For example, in Inventory Control System, critical functions Material Request Notes, Receipt Notes, Stock Balance Notes, etc. and non‐ critical functions are functions update customer types, item types, customer information, etc. • The project scope – Based on the high of level of system requirements, project scope should be clearly estimated. Based on the project scope we can also estimate the project duration, such as its one year, two years, etc. It is not good practice to promise to give a project in six months where it is not possible to give in six months. • Developing the project plan – Project development plan should contain all the details of the tasks to be implemented, who will complete them and when they will complete it. • Managing and monitoring the project plan – This allows the organization to stay on track, creating project milestones and feature creeps which allow you to add to the initial plan 2.1.2 Analyze The users and the Analyst work together to collect comprehend and logically formalize requirements by • Gathering customer requirements
System analyst collaborates with users to get the requirements clearly. System analyst may conduct interviews from selected employees from the organization representing each knowledge level managerial structure.• Analyzing the requirements Identified requirements are prioritized and put in a requirements definition document. The following diagram (figure 1) shows the main inputs to analyze phase and the main output of the analyze phase Figure 1:‐ Inputs and Outputs of the Analyze Phase.2.1.3 DesignThis is the phase where we started to design our system, based on the customerrequirements:• Designing the technical architecture System architecture should be design based on the identified requirements, and the hardware, software should be chosen that will be best suited to the customer requirements.• Designing the systems model Here we should design all the modules of the system including GUI screen and databases designing.• Write the test Cases Test cases should be written to check the functionalities of the system according to the system requirements.
Following diagram (figure 2) shows the main inputs and outputs of the designphase: Figure 2:‐ Inputs and Outputs of the Design Phase2.1.4 DevelopmentIn the development phase, the designed system will now be implemented by• Building the technical architecture If technical materials are needed such as Oracle, VB, Eclipse, etc, those will be purchased if necessary and then will be configured to start the implementation.• Building the database and programs Systems will be developed or implemented by the system developers.2.1.5 TestingThe implemented system will be tested by the quality assurance team according tothe test cases written in the analyze phase.2.1.6 DeploymentOnce the quality assurance team ensures the system is error free, then system willbe deployed at the client side. At this stage, if necessary only, training will beprovided to end‐users to make them familiarize to new system.
2.1.7 Maintenance Once the system is deployed, in order to keep the system up to date with the customer requirements, changes will also be implemented when it is necessary.Activity 2.1Consider, you are asked to computerized current manual system of a Library. What are the mainactivities, you will carry out under each of the phases in SDLC? • Planning o Identify the critical functionalities in Library System, such as lending and returning processes, prepare Project Plan, including the critical tasks, developers attached to each task with timelines and define the scope of the project • Analyze o Identify critical functionalities and document all the identified functionalities, such as member registration, calculate calculating taxes and other expenses, etc. • Design o Design the main functionalities, modules of the system such as, Lending Process, Return Process, Book Maintenance Process, etc. • Development ‐ developed identified modules and functionalities. • Testing ‐ Testing the system using test cases • Deploy – Deploy the system in client side, and provide training to the library staff. • Maintenance – Keep monitoring the system process, and do changes when it is necessary. Question: Why software development life cycle is important for the development of software? SDLC can be taken as a framework that guides us through the development of Software Systems. Since software can be very difficult and complex, we need the SDLC as a framework to guide the development to make it more systematic and efficient. We will be able to tell how long it will take to complete the project, to test and deploy. Not only that, we will have an easier time debugging and finding flaws in the software program or make enhancement to it.
2.2 Software Development Life Cycle Models Nowadays, Software Systems are so big and complex that teams of architects, analysts, programmers, testers and users must work together to create the millions of lines of code. To manage this number of SDLC models have been created, waterfall, iterative waterfall, spiral, incremental, etc are some of those.2.3 Waterfall Model The waterfall model is a sequential software development model in which development is seen as flowing steadily downwards (like a waterfall) through the phases of requirements analysis, design, implementation, testing, integration, and maintenance. (Source: http://en.wikipedia.org/) In waterfall model, each phase produce the output required for the next phase in mutually exclusive (non‐overlapping). The structure of the waterfall model can be viewed as follows, see figure 3. Requirement Analysis Design Implementation Testing Integration Maintenance Figure 3:‐ Waterfall Model To follow the waterfall model, we should proceeds from one phase to the next in purely sequential manner. For example, we need to complete requirement analysis phase to move to the design phase. (In requirement analysis phase, we will identify the all the customer requirements, and also will be able to prioritize the requirements based on their criticality).
In the design phase we will design our system accordance to the customer requirements. When the design is fully completed, an implementation of that design is made by developers. Towards the later stages of this implementation phase, disparate software components produced by different teams are integrated. After the implementation and integration phases are complete, the software product is tested and debugged; any faults introduced in earlier phases are removed here. Then the software product is installed, and later maintained to introduce new functionality and remove bugs. As you see, the waterfall model maintains that one should move to a phase only when its’ preceding phase is completed and perfected. Phases of development in the waterfall model are discrete, and there is no jumping back and forth or overlap between them. Therefore since there no jumping back and forth options in Waterfall methods, following limitations are in the waterfall method: Mutual exclusivity of phases results in poor use of human resources, since developers must wait for designers, etc. Unidirectional motion between phases is inadequate since it does not allow changes to be made to documents/code created in earlier phases. To overcome these limitations, Iterative waterfall method was introduced.2.4 Iterative Waterfall Model Iterative waterfall model is a revised model of the waterfall model, where phases can be revisited several times to correct mistakes or problems identified in subsequent phases. The following diagram (Figure 4) shows the structure of the Iterative waterfall method Requirement Figure 4:‐ Iterative waterfall Model Design Implementation Testing Integration Maintenance
Activity 2.2 Identify activities that can not be overcome using waterfall method but Iterative waterfall method • If requirements are not being captured well, then this error will reflect the entire process of waterfall method, even error is identified at the design phase or any other phases. But if we use Iterative waterfall method, when the error is identified, we can jump back to the relevant phase and correct the error and continue. • Even we identified coding error in testing phase, we can not jump back and correct the error in waterfall model but in iterative waterfall model.Note: As you see, system development life cycle (SDLC) models divide the life of aninformation system into two stages, i.e. system development (Requirement Analysis, Design,Implementation, Testing and Integration phases) and system operation and support(Maintenance phase).Following figure, (figure 5) illustrates the two life cycle stages of SDLC models Conversion Life Cycle Stage Life Cycle Stage System development Lifetime of a System operation and System support Using system development methodology Using information Technology Obsolescence Figure 5:‐ A System Life Cycle (When system cycle from development to operation and support, a construction must take place. At some points, obsolescence occurs when system cycle from operation and support to system development) Question: What is a systems development methodology?
A systems development methodology is a very formal and precise system development process that defines a set of activities, methods, best practices, deliverables, and automated tools for system developers and project managers to use to develop software systems. (Source: Whitten, J.L and et.al, Systems Analysis and Design Methods, (5th Edition), McGraw‐Hill, pp 78‐79) As such, we use system development methodologies to cover activities in system development stages. Object oriented Analysis and Design methodology is an example for such as system development methodology.2.5 Object Oriented Analysis and Design methodology (OOAD methodology) Object Oriented Analysis and Design methodology completely based on object oriented modeling. In object oriented modeling system is analyzed in terms of objects and their relationships. During the system analysis phase, object modeling will be done as a technique for defining business requirements for a new system. The approach of using object modeling during system analysis phase is called object oriented analysis. In the design phase, object oriented techniques will be used to design a new system. The approach of using object oriented techniques for designing a system is referred to as object oriented designing. In the implementation phase, object oriented programming will be used to implement designed system and the implemented system will be tested by using test cases. In this course, we are mainly focus on object oriented analysis and designing. Activity 2.3 How SDLC differs from Systems Development Methodologies? SDLC represent the entire life cycle of the system software, Systems Development Methodologies cover the system development stage (analysis, design, implementation, testing, integration) of the SDLC.
Summery: In this lesson we define what Software Development Life Cycle (SDLC) is, we analyzed the main phasesin SDLC with their activities. Then we discuss about the SDLC models, such as waterfall, and iterativewaterfall model. We evaluate how iterative waterfall model can be used to overcome the issues inwaterfall model.We divided the SDLC model into main two stages, system development, system operation and support.We identify the role of system development methodologies in SDLC. Object Oriented Systems Analysisand Design methodology is an example of such a system development methodology, where systems willbe analyzed and designed in terms of Objects and their relationships.In the next lesson, we will discuss about Object Oriented Concepts.