We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 24
Software Engineering
Lecture 2
Nahida Islam SDLC Models Lecturer, Department of Computer Science and Engineering Email: [email protected] SDLC
• SDLC is the acronym of Software Development Life Cycle.
• It is also called as Software Development Process. • SDLC is a framework defining tasks performed at each step in the software development process. What is SDLC?
SDLC is a process followed for a software project, within a
software organization. It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process. Planning and requirement analysis Each software development life cycle model starts with the analysis, in which the stakeholders of the process discuss the requirements for the final product. The goal of this stage is the detailed definition of the system requirements. Besides, it is needed to make sure that all the process participants have clearly understood the tasks and how every requirement is going to be implemented. Often, the discussion involves the QA specialists who can interfere the process with additions even during the development stage if it is necessary. Designing project architecture At the second phase of the software development life cycle, the developers are actually designing the architecture. All the different technical questions that may appear on this stage are discussed by all the stakeholders, including the customer. Also, here are defined the technologies used in the project, team load, limitations, time frames, and budget. The most appropriate project decisions are made according to the defined requirements. Development and programming • After the requirements approved, the process goes to the next stage actual development. Programmers start here with the source code writing while keeping in mind previously defined requirements. The system administrators adjust the software environment, front-end programmers develop the user interface of the program and the logics for its interaction with the server. The programming by itself assumes four stages • Algorithm development • Source code writing • Compilation • Testing and debugging Testing The testing phase includes the debugging process. All the code flaws missed during the development are detected here, documented, and passed back to the developers to fix. The testing process repeats until all the critical issues are removed and software workflow is stable. Deployment Once the software product is tested and freed from any defects or bugs, it should be ready for deployment. Deployment, the fifth of the six SDLC phases, is grooming the product up to be ready for customer use. The User Acceptance Tests should be checked and the software should be live in the production environment. Maintenance • Once when the client starts using the developed systems, then the real issues come up and requirements to be solved from time to time. • This procedure where the care is taken for the developed product is known as maintenance. Water Fall Model Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In this Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially. All these phases are cascaded to each other in which progress is seen as flowing steadily downwards (like a waterfall) through the phases. The next phase is started only after the defined set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model, phases do not overlap. Water Fall Model Advantage • Simple and easy to understand and use • Each phase has specific deliverables and a review process. • Phases are processed and completed one at a time. • Works well for smaller projects where requirements are very well understood. • Clearly defined stages. • Well understood milestones. • Easy to arrange tasks. • Process and results are well documented. Disadvantage • The software is ready only after the last stage is over • High risks and uncertainty • Not the best choice for complex and object-oriented projects • Inappropriate for the long-term projects • The progress of the stage is hard to measure while it is still in the development • Integration is done at the very end, which does not give the option of identifying the problem in advance Iterative 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.. Feature to be developed in the iteration is decided and implemented. Each iteration goes through the phases namely Requirement Analysis, Designing, Coding, and Testing. Detailed planning is not required in iterations. Iterative Incremental Model Advantage of Iterative Incremental • It is easily adaptable to the ever changing needs of the project as well as the client. • Generates working software quickly and early during the software life cycle. • This model is more flexible – less costly to change scope and requirements. • It is easier to test and debug during a smaller iteration. • In this model customer can respond to each built. • Lowers initial delivery cost. • Easier to manage risk because risky pieces are identified and handled during it’d iteration. Disadvantages of Iterative Model: • Needs good planning and design. • Needs a clear and complete definition of the whole system before it can be broken down and built incrementally. • Although cost of change is lesser but total cost of the complete system is not lower. • More management attention is required. • It is not suitable for smaller projects. When to use the Iterative Model
1.When requirements are defined clearly and easy to
understand. 2.When the software application is large. 3.When there is a requirement of changes in future. Prototype Model
Model is a software development model in which prototype is built,
tested, and reworked until an acceptable prototype is achieved. It also creates base to produce the final system or software. It works best in scenarios where the project's requirements are not known in detail. The prototype model requires that before carrying out the development of actual software, a working prototype of the system should be built. A prototype is a toy implementation of the system. A prototype usually turns out to be a very crude version of the actual system, possible exhibiting limited functional capabilities, low reliability, and inefficient performance as compared to actual software. Prototype Model Steps of Prototype Model
1.Requirement Gathering and Analyst
2.Quick Decision 3.Build a Prototype 4.Assessment or User Evaluation 5.Prototype Refinement 6.Engineer Product Advantage of Prototype Model
1.Reduce the risk of incorrect user requirement
2.Good where requirement are changing/uncommitted 3.Regular visible process aids management 4.Support early product marketing 5.Reduce Maintenance cost. 6.Errors can be detected much earlier as the system is made side by side. Disadvantage of Prototype Model
• Require extensive customer collaboration
• Costs customer money • Needs committed customer • Difficult to finish if customer withdraw • May be too customer specific, no broad market • Difficult to know how long the project will last. • Easy to fall back into the code and fix without proper requirement analysis, design, customer evaluation, and feedback. • Prototyping tools are expensive. • Special tools & techniques are required to build a prototype. • It is a time-consuming process. When to Use Prototype model • Prototype model should be used when the desired system needs to have a lot of interaction with the end users. • Typically, online systems, web interfaces have a very high amount of interaction with end users, are best suited for Prototype model. It might take a while for a system to be built that allows ease of use and needs minimal training for the end user. • Prototyping ensures that the end users constantly work with the system and provide a feedback which is incorporated in the prototype to result in a useable system. They are excellent for designing good human computer interface systems.