The document discusses various software development life cycle models including waterfall, iterative, spiral, and incremental models. It describes the key phases and activities in each model. The waterfall model involves sequential phases from requirements to maintenance. The iterative model repeats phases in cycles. The spiral model also iterates through phases but with a risk analysis in each cycle. The incremental model breaks requirements into standalone modules that are developed iteratively.
The document discusses various software development life cycle models including waterfall, iterative, spiral, and incremental models. It describes the key phases and activities in each model. The waterfall model involves sequential phases from requirements to maintenance. The iterative model repeats phases in cycles. The spiral model also iterates through phases but with a risk analysis in each cycle. The incremental model breaks requirements into standalone modules that are developed iteratively.
The document discusses various software development life cycle models including waterfall, iterative, spiral, and incremental models. It describes the key phases and activities in each model. The waterfall model involves sequential phases from requirements to maintenance. The iterative model repeats phases in cycles. The spiral model also iterates through phases but with a risk analysis in each cycle. The incremental model breaks requirements into standalone modules that are developed iteratively.
The document discusses various software development life cycle models including waterfall, iterative, spiral, and incremental models. It describes the key phases and activities in each model. The waterfall model involves sequential phases from requirements to maintenance. The iterative model repeats phases in cycles. The spiral model also iterates through phases but with a risk analysis in each cycle. The incremental model breaks requirements into standalone modules that are developed iteratively.
Download as PPTX, PDF, TXT or read online from Scribd
Download as pptx, pdf, or txt
You are on page 1of 42
UNIT II
PROJECT LIFE CYCLE AND EFFORT
ESTIMATION Software Development Life Cycle • Software Development Life Cycle, is a well-defined, structured sequence of stages in software engineering to develop the intended software product. SDLC Activities • SDLC provides a series of steps to be followed to design and develop a software product efficiently. SDLC framework Communication
• This is the first step where the user initiates the
request for a desired software product. • the contacts the service provider and tries to negotiate the terms. and submits his request to the service providing organization in writing. Requirement Gathering
• This step onwards the software development team works to
carry on the project. • The team holds discussions with various stakeholders from problem domain and tries to bring out as much information as possible on their requirements. • The requirements are contemplated and segregated into – user requirements, system requirements and functional requirements. • The requirements are collected using a number of practices as given – studying the existing or obsolete system and software, – conducting interviews of users and developers, – referring to the database or – collecting answers from the questionnaires. Feasibility Study
• After requirement gathering, the team comes up with a
rough plan of software process. • At this step the team analyzes if a software can be made to fulfill all requirements of the user and if there is any possibility of software being no more useful. • It is found out, if the project is financially, practically and technologically feasible for the organization to take up. • There are many algorithms available, which help the developers to conclude the feasibility of a software project. System Analysis
• At this step the developers decide a roadmap of their plan and
try to bring up the best software model suitable for the project. • System analysis includes Understanding of software product limitations, learning system related problems or changes to be done in existing systems beforehand, identifying and addressing the impact of project on organization and personnel etc. • The project team analyzes the scope of the project and plans the schedule and resources accordingly. Software Design
• Next step is to bring down whole knowledge of
requirements and analysis on the desk and design the software product. • The inputs from users and information gathered in requirement gathering phase are the inputs of this step. • The output of this step comes in the form of two designs; logical design and physical design. Engineers produce meta-data and data dictionaries, logical diagrams, data- flow diagrams and in some cases pseudo codes. Coding
• This step is also known as programming phase.
• The implementation of software design starts in terms of writing program code in the suitable programming language and developing error-free executable programs efficiently. Testing
• An estimate says that 50% of whole software development
process should be tested. • Errors may run the software from critical level to its own removal. • Software testing is done while coding by the developers and thorough testing is conducted by testing experts at various levels of code such as module testing, program testing, product testing, in-house testing and testing the product at user’s end. • Early discovery of errors and their remedy is the key to reliable software. Integration
• Software may need to be integrated with the libraries,
databases and other programs. • This stage of SDLC is involved in the integration of software with outer world entities. Implementation
• This means installing the software on user machines. At
times, software needs post-installation configurations at user end. • Software is tested for portability and adaptability and integration related issues are solved during implementation. Operation and Maintenance
• This phase confirms the software operation in terms of more
efficiency and less errors. • If required, the users are trained on, or aided with the documentation on how to operate the software and how to keep the software operational. • The software is maintained timely by updating the code according to the changes taking place in user end environment or technology. • This phase may face challenges from hidden bugs and real-world unidentified problems. Disposition
• As time elapses, the software may decline on the
performance front. It may go completely obsolete or may need intense upgradation. • Hence a pressing need to eliminate a major portion of the system arises. • This phase includes archiving data and required software components, closing down the system, planning disposition activity and terminating system at appropriate end-of system time. Software Development Paradigm • The software development paradigm helps developer to select a strategy to develop the software. • A software development paradigm has its own set of tools, methods and procedures, which are expressed clearly and defines software development life cycle. Waterfall Model
• Waterfall model is the simplest model of
software development paradigm. • It says the all the phases of SDLC will function one after another in linear manner. That is, when the first phase is finished then only the second phase will start and so on. • This model assumes that everything is carried out and taken place perfectly as planned in the previous stage and there is no need to think about the past issues that may arise in the next phase. • This model does not work smoothly if there are some issues left at the previous step. • The sequential nature of model does not allow us go back and undo or redo our actions. • This model is best suited when developers already have designed and developed similar software in the past and are aware of all its domains. Iterative Model
• This model leads the software development
process in iterations. • It projects the process of development in cyclic manner repeating every step after every cycle of SDLC process. Spiral Model • The spiral model has four phases. A software project repeatedly passes through these phases in iterations called Spirals. – Identification – Design – Construct or Build – Evaluation and Risk Analysis Identification • This phase starts with gathering the business requirements in the baseline spiral. • In the subsequent spirals as the product matures, identification of system requirements, subsystem requirements and unit requirements are all done in this phase. • This phase also includes understanding the system requirements by continuous communication between the customer and the system analyst. • At the end of the spiral, the product is deployed in the identified market. Design
• The Design phase starts with the conceptual
design in the baseline spiral and involves architectural design, logical design of modules, physical product design and the final design in the subsequent spirals. Construct or Build
• The Construct phase refers to production of the actual
software product at every spiral. • In the baseline spiral, when the product is just thought of and the design is being developed a POC (Proof of Concept) is developed in this phase to get customer feedback. • Then in the subsequent spirals with higher clarity on requirements and design details a working model of the software called build is produced with a version number. These builds are sent to the customer for feedback. Evaluation and Risk Analysis
• Risk Analysis includes identifying, estimating and
monitoring the technical feasibility and management risks, such as schedule slippage and cost overrun. After testing the build, at the end of first iteration, the customer evaluates the software and provides feedback. Incremental Model • Incremental Model is a process of software development where requirements are broken down into multiple standalone modules of software development cycle. • Incremental development is done in steps from analysis design, implementation, testing/verification, maintenance. • Each iteration passes through the requirements, design, coding and testing phases. • And each subsequent release of the system adds function to the previous release until all designed functionality has been implemented. • The system is put into production when the first increment is delivered. • The first increment is often a core product where the basic requirements are addressed, and supplementary features are added in the next increments. • Once the core product is analyzed by the client, there is plan development for the next increment. Characteristics of an Incremental module
• System development is broken down into many
mini development projects. • Partial systems are successively built to produce a final total system. • Highest priority requirement is tackled first • Once the requirement is developed, requirement for that increment are frozen Incremental Phases Activities performed in incremental phases Requirement Analysis Requirement and specification of the software are collected
Design Some high-end function are designed during this
stage
Code Coding of software is done during this stage
Test Once the system is deployed, it goes through the
testing phase RAD (Rapid Application Development) model • Rapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. • A prototype is a working model that is functionally equivalent to a component of the product. • In the RAD model, the functional modules are developed in parallel as prototypes and are integrated to make the complete product for faster product delivery. RAD Model Design • RAD model distributes the analysis, design, build and test phases into a series of short, iterative development cycles. – Business Modeling – Data Modeling – Process Modeling – Application Generation – Testing and Turnover RAD MODEL Business Modeling • The business model for the product under development is designed in terms of flow of information and the distribution of information between various business channels. Data Modeling • The information gathered in the Business Modeling phase is reviewed and analyzed to form sets of data objects vital for the business. Process Modeling • The data object sets defined in the Data Modeling phase are converted to establish the business information flow needed to achieve specific business objectives as per the business model. Application Generation • The actual system is built and coding is done by using automation tools to convert process and data models into actual prototypes. Testing and Turnover • The overall testing time is reduced in the RAD model as the prototypes are independently tested during every iteration. RAD Model Vs Traditional SDLC
• The traditional SDLC follows a rigid process models
• The customer may need some changes after he gets to see the software. However, the change process is quite rigid and it may not be feasible to incorporate major changes in the product in the traditional SDLC. • The RAD model focuses on iterative and incremental delivery of working models to the customer. RAD Model - Application
• RAD model can be applied successfully to the projects in which
clear modularization is possible. • If the project cannot be broken into modules, RAD may fail. • RAD should be used only when a system can be modularized to be delivered in an incremental manner. • It should be used if there is a high availability of designers for modeling. • It should be used only if the budget permits use of automated code generating tools. • RAD SDLC model should be chosen only if domain experts are available with relevant business knowledge. • Should be used where the requirements change during the project and working prototypes are to be presented to customer in small iterations of 2-3 months. advantages • Changing requirements can be accommodated. • Progress can be measured. • Iteration time can be short with use of powerful RAD tools. • Productivity with fewer people in a short time. • Reduced development time. • Increases reusability of components. • Quick initial reviews occur. • Encourages customer feedback. • Integration from very beginning solves a lot of integration issues. d disadvantages
• Dependency on technically strong team members for identifying business
requirements. • Only system that can be modularized can be built using RAD. • Requires highly skilled developers/designers. • High dependency on modeling skills. • Inapplicable to cheaper projects as cost of modeling and automated code generation is very high. • Management complexity is more. • Suitable for systems that are component based and scalable. • Requires user involvement throughout the life cycle. • Suitable for project requiring shorter development times.