Software Development Life Cycle (SDLC) and Development Approaches PDF
Document Details
Uploaded by RighteousJackalope
Northern Virginia Community College
Tags
Summary
This document provides an overview of software development life cycle (SDLC) and different approaches like Agile and Waterfall. It also covers the phases and components involved in building and testing software, along with the importance of QA testing.
Full Transcript
1 Basic Software Architecture Concepts 2 Software Development Life Cycle (SDLC) 3 Waterfall and Agile Methodology Goals for This Lesson Today, we will explore basic software architecture concepts, understand the phases of the Software Development Life Cycle (SDLC), and compare the Waterfa...
1 Basic Software Architecture Concepts 2 Software Development Life Cycle (SDLC) 3 Waterfall and Agile Methodology Goals for This Lesson Today, we will explore basic software architecture concepts, understand the phases of the Software Development Life Cycle (SDLC), and compare the Waterfall and Agile methodologies. This lesson will provide a foundational understanding necessary for effective planning, execution, and management of software projects. 1 Software Software consists of programs designed to perform tasks like messaging (e.g., WhatsApp), browsing (e.g., Google Chrome), or sharing photos (e.g., Instagram). It can be proprietary, owned by companies, or open source and shared freely. Engineers develop software using programming languages like Python, Java, and C++. The software development lifecycle typically includes the following stages: planning, design, coding, testing, deployment, and maintenance. Software tells hardware what to do and how to perform. 2 Two Main Components Software consists of two main parts: the client side (front end) and the server side (back end). The Server-side (backend) A software system's client side (front end) consists of the server, database, and applications that power is what users actually see and the front end but are not visible interact with like browser or to the user. It handles business application interface, from logic, data storage, buttons and inputs to layouts and server-side functions. and navigation. 3 Two Main Components 4 QA Focus Quality Assurance Focus in Server-Side (Back-End) Testing Backend testing checks the parts of a software application that run on the server. It makes sure everything works smoothly, is secure, and can handle a lot of users. Quality Assurance Focus in Client-Side (Front-End) Testing Frontend testing checks the parts of a software application that users interact with directly. It makes sure the website or app looks good, works well, and is easy for people to use. 5 How modern software systems are designed In the past, apps were built as one big Modern software is built like a LEGO set, piece, inside one big block. If something where each piece has a specific job, needed to be changed or fixed, it could handling a specific function. (It is called affect the whole system, which was Microservices Architecture or Service- inefficient and made development Oriented Architecture) harder. For example, in an online store, there might be one microservice for user authentication, another for managing the shopping cart, and another for processing payments. ? ? ? 6 Bring It Together For testers, this is handy because each microservice can be tested separately. For example, you can test just the authentication process without dealing with other parts of the app. This makes testing simpler, faster, and more efficient. 7 How software is made and how the software development process happens? 8 What Is SDLC? The Software Development Life Cycle (SDLC) is a process that produces software with the highest quality and lowest cost in the shortest time possible. SDLC provides a well-structured flow of phases that help an organization quickly produce high-quality software that is well-tested and ready for production use. SDLC works by lowering the cost of software development while simultaneously improving quality and shortening production time. 9 Phases of SDLC (Software Development Life Cycle) 1 Planning 2 Design 3 Development 4 Testing 5 Deployment 6 Maintenance 10 Planning Planning is the first stage of SDLC, during which The Planning phase is important because it sets the project team outlines a project's objectives, the foundation for the rest of the project. scope, and deliverables. This phase is critical in ensuring the project is well-defined and aligned with business goals and requirements. Business analysts Product team Product managers Managers estimate Project managers define project goals members gather requirements costs develop a project and objectives identify project plan scope 11 Design In the Design phase, the project team This phase involves creating a blueprint transforms the requirements and project goals for the software, including a detailed into a detailed design. specification of how the system should work, how it should look, and how it should interact with users and other systems. Software engineers Designers create Database (DB) Security engineers Quality assurance design the system mock-ups of user team members determine (QA) leads architecture interfaces create a design the security create test plans of the database requirements if necessary 12 Development After completing the requirements and design activities, the next phase in the Software Development Life Cycle is the implementation or development of the software, which involves the actual coding process. Develoment team Developers create Developers report Server engineers DB engineers writes code unit tests and fix bugs integrate new code implement changes to databases 13 Testing During testing, the quality assurance (QA) team The new version then needs to be rechecked. tests the software against the requirements. The cycle repeats until all requirements have Once a bug is found, testers inform the been tested and defects have been fixed. developers, who will fix the issue and create a new version of the software. QA performs QA creates and QA reports bugs Developers QA provides testing on a executes test and verifies bug fix bugs sign-offs software cases fixes 14 Deployment Once the product is tested and ready Sometimes, product deployment happens to be deployed, it is formally released in stages, as per the organization's business in the appropriate market. strategy. The product may first be released in a limited segment and tested in a real business environment. Project managers Release engineers Release engineers QA performs Users perform collect all sign-offs prepare software deploy software sanity checks once beta-testing once builds to end users build is deployed build is deployed 15 Maintenance The maintenance phase is the final stage This phase includes various activities of the SDLC, starting after the software such as software upgrades, bug fixes, is developed, tested, and implementedts and improvements. main goal is to keep the software operational and up-to-date with the changing user requirements. Product managers Developers Developers fix new QA identifies bugs QA verifies monitor user monitor software bugs and update that were not the bug fixes feedback errors software caught during testing 16 Practice At which stage of the SDLC does a QA specialist typically begin their work? 17 Design Stage 18 SDLC Approaches 19 Approaches and Methodologies Companies that develop software applications follow different Software Development Life Cycle (SDLC) approaches to manage and streamline the process. Two common methodologies are the Waterfall and Agile approaches. The Waterfall approach is a linear and sequential model where each phase must be completed before the next one begins, making it straightforward but inflexible. In contrast, the Agile approach is iterative and adaptive, focusing on continuous feedback and rapid adjustments throughout the development process, allowing for more flexibility and responsiveness to change. 20 Waterfall Approach The Waterfall model is a relatively linear Progress flows in largely one direction sequential design approach for specific ("downwards" like a waterfall) through areas of engineering design. the phases of conception, initiation, In software development, it is among analysis, design, construction, testing, the less iterative and flexible deployment and maintenance. approaches. 1 Requirements 2 Design 3 Implementation 4 Testing 5 Deployment 6 Maintenance 21 The Downside of Waterfall A new phase only starts when The Waterfall model does not support the previous phase is completed, and there the delivery of the system in pieces. is no returning to the previous phase. The Waterfall model assumes that all the The Waterfall approach does not allow customer requirements can be completely phase overlap. However, overlapping and correctly defined at the beginning phases can sometimes increase efficiency of the project. In actuality, customers' and reduce costs. requirements continue to change with time. After the requirements specification Users have minimal interaction with phase, it is very difficult to accommodate the project and cannot provide feedback any change requests. during development. 22 Agile Approach Agile software development is an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams and their customer(s) and user(s). It advocates adaptive planning, evolutionary development, early delivery, and improvement, while encouraging rapid Requirements and flexible response to change. 23 The Downside of Agile Agile requires constant collaboration Effectively implementing Agile requires and frequent reassessments, which a team with a high level of self-organization, can be resource-intensive in terms discipline, and experience in Agile practices. of time. Agile focuses on working software over Due to its iterative nature and flexibility, comprehensive documentation, sometimes Agile can sometimes make predicting resulting in insufficient documentation. project timelines and budgets difficult. Without strict controls, projects can gradually grow larger than originally planned, affecting deadlines and budgets. 24 Waterfall vs Agile Waterfall Software Development cycle workflow Planning phase Design phase Development phase QA phase time Clients may find it challenging Waterfall is based entirely on following to conceptualize their functional a set of steps that keep teams always requirements during planning. moving forward. They might change their minds once Traditional applications of this they see the end product, which methodology leave little room for is difficult to address if the application unexpected changes or revisions. needs substantial re-engineering. 25 Waterfall vs Agile Agile Software Development workflow Feature A Feature B Feature C Feature D Planning Planning Planning Planning Design Design Design Design Development Development Development Development QA QA QA QA QA time In Agile, the software project is broken down into smaller features that the development team can quickly develop, which is essential to maintaining an Agile release cadence. This iterative approach allows for quick 26 software development and release while gathering user feedback and adjusting requirements accordingly. Divide the following characteristics into two groups: Waterfall and Agile Assumes all requirements are defined at the start Progress flows in one direction Supports the delivery of the system in pieces Encourages rapid and flexible response to change Users have little interaction during development The project is broken down into smaller features for quick development. 27 Waterfall Agile Assumes all requirements Supports the delivery are defined at the start of the system in pieces Progress flows in one direction Encourages rapid and flexible response to change Users have little interaction during development. The project is broken down into smaller features for quick development. 28 Agile Scrum Framework If Agile is a philosophy, Scrum is a specific methodology used to manage a project. The project team, led by the project manager, consists of a product owner, a Scrum master, and other cross-functional team members. According to Scrum principles, the optimal size of a team should be between six to ten members. Teams have daily Scrum meetings, usually 15 minutes at most, to provide status updates. The Scrum methodology is characterized by short phases, or "sprints," when project work occurs. During sprint planning, the project team identifies a small part of the scope to be completed during the upcoming sprint, usually two to four weeks. At the end of the sprint, this work should be ready to be delivered to the client. Finally, the sprint ends with a sprint review and retrospective—or rather, lessons learned. This cycle is repeated throughout the project lifecycle until the full scope has been delivered. 29 How Scrum Works 1 2 3 4 5 Testing Retrospective Product Sprint planning Working and product and planning Backlog and creating on a sprint demonstration the next sprint Creation sprint backlog Sprint Planning Product Backlog (Features) Sprint Backlog (Stories) Customer Ready Product Increment 30 Agile Release Planning Release planning Sprint 1 Sprint 2 Sprint 3 Planned Planned Release Release 1.3 1.4 Product Backlog Agile release planning includes incremental releases of a product. It differs from traditional software planning, which focuses on major releases. In Agile release planning, the team prepares for planned releases, which break down into several different sprints or iterations. A sprint ends with a new product increment, but that may not mean a product release to the general public. Each 31 sprint should end with a new product version, which stakeholders can then review. Senior management usually decides the sprint's duration, such as a one-week sprint with a two-week release cycle. What are 'sprints' in Agile Scrum? How do they contribute to the development process? 32 In Agile release planning, what is a 'release'? The end of a sprin The start of a sprin The incremental release of a produc The final version of a product 33 The incremental release of a product 34 Common Interview Questions What are the different phases of the SDLC, and what activities are performed in each phase What are the key differences between the Waterfall and Agile SDLC models Can you explain the role of QA testers in sprint planning and retrospectives in Agile projects? 35 Questions? Please, share your feedback in the Learning space 37 Glossary of the lesson Software - programs performing specific tasks like messaging or browsing Client Side (Front End) - the part of software that users interact with directly, including everything seen in a web browser or app interface Server Side (Back End) - the part of software that consists of server, database, and server- side applications that power but remain invisible to the user. It manages business logic and data storage Microservices Architecture - divides an application into small, loosely connected services each handling specific functions Service-Oriented Architecture (SOA) - uses independent, reusable services that can be combined to meet business needs. 35 Glossary of the lesson Software Development Life Cycle (SDLC) - A process aiming to produce high-quality software efficiently through structured phases Waterfall Approach - a sequential development model requiring completion of one phase before starting the next Agile Approach - an iterative model focusing on continuous feedback and rapid adjustments throughout the development process Agile Scrum Framework - a methodology within Agile that uses short cycles or sprints for project management involving daily meetings and sprint reviews. 35 Careerist Manual QA 2024 Take your career to the next level!