Introduction to Software Engineering_Need_SDLC_types of SDLC

DeepakUlape2 22 views 54 slides Oct 09, 2024
Slide 1
Slide 1 of 54
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54

About This Presentation

- Need for SE
- Mc Call’s Quality Factors
-SSAD and OOAD
- SDLC
- Waterfall Model
- Incremental Model
- Spiral Model
- Prototyping Model


Slide Content

Introduction to SE Prof. Deeepak V Ulape. (Asst. Professor) Module 1

Defination of Software Enginering: Software Engineering  is the process of designing, developing, testing, and maintaining software. It is a systematic and disciplined approach to software development that aims to create high-quality, reliable, and maintainable software.

Need for SE: Handling Big Projects:  A corporation must use a software engineering methodology in order to handle large projects without any issues. To manage the cost:  Software engineering programmers plan everything and reduce all those things that are not required. To decrease time:  It will save a lot of time if you are developing software using a software engineering technique. Reliable software:  It is the company’s responsibility to deliver software products on schedule and to address any defects that may exist. Effectiveness:  Effectiveness results from things being created in accordance with the standards. Reduces complexity:  Large challenges are broken down into smaller ones and solved one at a time in software engineering. Individual solutions are found for each of these issues. Productivity:  Because it contains testing systems at every level, proper care is done to maintain software productivity.

Mc Call’s Quality Factors: McCall’s Software Quality Model  was introduced in 1977. This model is incorporated with many attributes, termed software factors, which influence software.  Factors of Product Quality Below are the  factors of Product Quality , that are discussed in detail. Product Operation Product Revision Product Transition

Product Operation Product Operation includes five software quality factors, which are related to the requirements that directly affect the operation of the software such as operational performance, convenience, ease of usage, and correctness. These factors help in providing a better user experience. Correctness:  The extent to which software meets its requirements specification. Efficiency:  The number of hardware resources and code the software, needs to perform a function. Integrity:  The extent to which the software can control an unauthorized person from accessing the data or software. Reliability:  The extent to which software performs its intended functions without failure. Usability:  The extent of effort required to learn, operate, and understand the functions of the software.

Product Revision Product Revision includes three software quality factors, which are required for testing and maintenance of the software. They provide ease of maintenance, flexibility, and testing efforts to support the software to be functional according to the needs and requirements of the user in the future. Maintainability:  The effort required to detect and correct an error during maintenance. Flexibility:  The effort needed to improve an operational software program. Testability:  The effort required to verify software to ensure that it meets the specified requirements.

Product Transition Product Transition includes three software quality factors, that allow the software to adapt to the change of environments in the new platform or technology from the previous. Portability:  The effort required to transfer a program from one platform to another. Re-usability:  The extent to which the program’s code can be reused in other applications. Interoperability:  The effort required to integrate two systems.

Software Enginering Process and Practice: Software processes in software engineering refer to the methods and techniques used to develop and maintain software. Some examples of software processes include: Waterfall : a linear, sequential approach to software development, with distinct phases such as requirements gathering, design, implementation, testing, and maintenance. Agile : a flexible, iterative approach to software development, with an emphasis on rapid prototyping and continuous delivery. Scrum : a popular Agile methodology that emphasizes teamwork, iterative development, and a flexible, adaptive approach to planning and management. DevOps : a set of practices that aims to improve collaboration and communication between development and operations teams, with an emphasis on automating the software delivery process.

Key Process Activities There four basic key process activities are: Software Specifications :  In this process, detailed description of a software system to be developed with its functional and non-functional requirements.   Software Development :  In this process, designing, programming, documenting, testing, and bug fixing is done.  Software Validation:   In this process, evaluation software product is done to ensure that the software meets the business requirements as well as the end users needs.  Software Evolution:   It is a process of developing software initially, then timely updating it for various reasons. 

Introduction to SSAD and OOAD: Structured Systems Analysis and Design (SSAD) Structured Systems Analysis and Design (SSAD) is a methodology used in software engineering that focuses on breaking down a system into smaller, manageable components through a structured, sequential approach. It emphasizes a clear, step-by-step process for analyzing and designing systems. Object-Oriented Analysis and Design (OOAD) Object-Oriented Analysis and Design (OOAD) is a methodology that uses object-oriented principles to model and design systems. It focuses on representing and managing real-world entities through objects, which combine data and behavior.

Introduction to SSAD SSAD: SSAD is a traditional approach that emphasizes a structured, step-by-step method for system development. It is particularly focused on breaking down a system into smaller, manageable components and then designing each component systematically.

Key Characteristics Process-Oriented : SSAD is very process-focused, using a series of clearly defined stages such as analysis, design, implementation, and testing. Functional Decomposition : It breaks down the system based on the functions or processes that the system needs to perform. Top-Down Approach : The methodology follows a top-down approach where the high-level system is broken down into more detailed components. Data Flow Diagrams (DFDs) : SSAD uses DFDs to represent the flow of data within the system. Structured Design : It often employs tools like flowcharts and structured charts to represent the system's design. Focus on Processes : The emphasis is on understanding and designing the processes and data flows rather than the objects or entities involved.

Advantages Clear Structure : Provides a clear, step-by-step approach that can be easier to manage for complex systems. Well-Defined Documentation : Emphasizes thorough documentation and process clarity. Predictable : The structured approach can make project management and resource allocation more predictable. Disadvantages Less Flexibility : It can be rigid and less adaptable to changes once the process is underway. Complexity in Large Systems : May become cumbersome for very large or complex systems due to its focus on process decomposition.

Object-Oriented Analysis and Design (OOAD) Overview OOAD, on the other hand, is a more modern approach that is based on the concept of "objects" rather than processes. It is rooted in object-oriented programming, which uses objects and classes to represent real-world entities and their interactions.

Key Characteristics Object-Centric : Focuses on modeling the system using objects, which are instances of classes that encapsulate both data and behavior. UML (Unified Modeling Language) : OOAD often uses UML diagrams like class diagrams, sequence diagrams, and use case diagrams to represent system components and interactions. Encapsulation, Inheritance, and Polymorphism : Emphasizes object-oriented principles such as encapsulation (bundling data and methods), inheritance (creating new classes based on existing ones), and polymorphism (ability to process objects differently based on their data type). Iterative Approach : Supports iterative development, where the system is developed in incremental stages and can adapt to changes more easily. Real-World Modeling : More naturally aligns with real-world entities and their relationships, making it often easier to understand and design systems that closely reflect real-world scenarios.

Advantages Modularity : Encourages the creation of modular systems where components are more reusable and maintainable. Flexibility and Adaptability : Can be more easily adapted to changes during the development process. Better Alignment with Real-World Problems : Often provides a more intuitive way to model complex systems based on real-world entities. Disadvantages Complexity in Learning Curve : May have a steeper learning curve for those unfamiliar with object-oriented principles. Potential for Overhead : The use of objects and inheritance can introduce some complexity and overhead in terms of performance and design.

System Development Life Cycle (SDLC): provides a well-structured framework that gives an idea, of how to build a system. It consists of steps as follows – Plan, Analyze, Design, Develop, Implement and Maintain. In this article, we will see all the stages of system development.

Stages (Phases) of System Development Life Cycle The System Development Life Cycle encompasses a series of interconnected stages that ensure a systematic approach to system development. The stages include Planning, Analysis, Design, Development, Implementation, and Maintenance. Each stage contributes to the successful completion of the system, with System Design serving as a crucial component.

Stage 1: Plan The Planning stage lays the groundwork for the entire SDLC. It involves identifying the system’s goals, defining project scope, setting objectives, establishing timelines, and determining available resources. Planning ensures that the development process aligns with organizational needs and sets a clear direction for subsequent stages. Stage 2: Analyze During the Analysis stage, the focus is on gathering and understanding the requirements of the system. This includes conducting interviews, studying existing processes, and identifying stakeholders’ needs. The gathered information serves as a basis for designing a system that meets users’ expectations and addresses organizational challenges. Stage 3: Design System Design is a critical stage in the SDLC, where the requirements gathered during the Analysis phase are translated into a detailed technical plan. It involves designing the system’s architecture, database structure, and user interface, and defining system components. The Design stage lays the foundation for the subsequent development and implementation phases.

Stage 4: Develop The Development stage involves the actual coding and programming of the system. Based on the design specifications, developers write code, create database structures, and implement necessary functionalities. Rigorous testing and quality assurance are performed to ensure the system’s accuracy, performance, and adherence to the design requirements. Stage 5: Implement This   stage involves deploying the developed system into the production environment. This includes activities such as system installation, data migration, training end-users, and configuring necessary infrastructure. Implementation requires careful planning and coordination to minimize disruptions and ensure a smooth transition from the old system to the new one. Stage 6: Maintain Maintenance is an ongoing stage that involves monitoring, managing, and enhancing the system’s performance and functionality. It includes activities such as bug fixes, updates, security patches, and addressing user feedback. Regular maintenance ensures the system remains reliable, secure, and adaptable to changing business needs.

Waterfall Model: It is characterized by a structured, sequential approach to  project management  and  software development . The waterfall model is useful in situations where the project requirements are well-defined and the project goals are clear. It is often used for large-scale projects with long timelines, where there is little room for error and the project stakeholders need to have a high level of confidence in the outcome.

1. Feasibility Study: The main goal of this phase is to determine whether it would be financially and technically feasible to develop the software.  The feasibility study involves understanding the problem and then determining the various possible strategies to solve the problem. 2.  Requirements Analysis  and Specification: The requirement analysis and specification phase aims to understand the exact requirements of the customer and document them properly . This phase consists of two different activities.  Requirement gathering and analysis:  Firstly all the requirements regarding the software are gathered from the customer and then the gathered requirements are analyzed . The goal of the analysis part is to remove incompleteness and inconsistencies Requirement specification:  These analyzed requirements are documented in a software requirement specification (SRS) document . SRS document serves as a contract between the development team and customers. Any future dispute between the customers and the developers can be settled by examining the SRS document.

3. Design: The goal of this phase is to convert the requirements acquired in the SRS into a format that can be coded in a programming language. It includes high-level and detailed design as well as the overall software architecture. A  Software Design Document  is used to document all of this effort (SDD). 4. Coding and Unit Testing: In the coding phase software design is translated into source code using any suitable programming language. Thus each designed module is coded. The unit testing phase aims to check whether each module is working properly or not. 

5. Integration and System testing: Integration of different modules is undertaken soon after they have been coded and unit tested. Integration of various modules is carried out incrementally over several steps. During each integration step, previously planned modules are added to the partially integrated system and the resultant system is tested. Finally, after all the modules have been successfully integrated and tested, the full working system is obtained and system testing is carried out on this.  System testing consists of three different kinds of testing activities as described below. Alpha testing:  Alpha testing is the system testing performed by the development team . Beta testing:  Beta testing is the system testing performed by a friendly set of customers . Acceptance testing:  After the software has been delivered, the customer performs acceptance testing to determine whether to accept the delivered software or reject it.

6. Maintenance: Maintenance is the most important phase of a software life cycle. The effort spent on maintenance is 60% of the total effort spent to develop a full software. There are three types of maintenance. Corrective Maintenance:  This type of maintenance is carried out to correct errors that were not discovered during the product development phase. Perfective Maintenance:  This type of maintenance is carried out to enhance the functionalities of the system based on the customer’s request. Adaptive Maintenance:  Adaptive maintenance is usually required for porting the software to work in a new environment such as working on a new computer platform or with a new operating system.

Advantages of the SDLC Waterfall Model The classical waterfall model is an idealistic model for software development. It is very simple, so it can be considered the basis for other software development life cycle models. Below are some of the major advantages of this SDLC model. Easy to Understand:  The Classical Waterfall Model is very simple and easy to understand. Individual Processing:  Phases in the Classical Waterfall model are processed one at a time. Properly Defined:  In the classical waterfall model, each stage in the model is clearly defined.

Disadvantages: No Feedback Path:  In the classical waterfall model evolution of software from one phase to another phase is like a waterfall. It assumes that no error is ever committed by developers during any phase. Therefore, it does not incorporate any mechanism for error correction.  Difficult to accommodate Change Requests:  This model assumes that all the customer requirements can be completely and correctly defined at the beginning of the project, but the customer’s requirements keep on changing with time. It is difficult to accommodate any change requests after the requirements specification phase is complete.  No Overlapping of Phases:  This model recommends that a new phase can start only after the completion of the previous phase. But in real projects, this can’t be maintained. To increase efficiency and reduce cost, phases may overlap.  Limited Flexibility:  The Waterfall Model is a rigid and linear approach to software development, which means that it is not well-suited for projects with changing or uncertain requirements. Once a phase has been completed, it is difficult to make changes or go back to a previous phase.

Incremental Process Model Incremental Model is a process of software development where requirements divided into multiple standalone modules of the software development cycle. In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved.

The various phases of incremental model are as follows: 1. Requirement analysis:  In the first phase of the incremental model, the product analysis expertise identifies the requirements. And the system functional requirements are understood by the requirement analysis team. To develop the software under the incremental model, this phase performs a crucial role. 2. Design & Development:  In this phase of the Incremental model of SDLC, the design of the system functionality and the development method are finished with success. When software develops new practicality, the incremental model uses style and development phase.

3. Testing:  In the incremental model, the testing phase checks the performance of each existing function as well as additional functionality. In the testing phase, the various methods are used to test the behavior of each task. 4. Implementation:  Implementation phase enables the coding phase of the development system. It involves the final coding that design in the designing and development phase and tests the functionality in the testing phase. After completion of this phase, the number of the product working is enhanced and upgraded up to the final system product

When we use the Incremental Model? When the requirements are superior. A project has a lengthy development schedule. When Software team are not very well skilled or trained. When the customer demands a quick release of the product. You can develop prioritized requirements first.

Advantage of Incremental Model Errors are easy to be recognized. Easier to test and debug More flexible. Simple to manage risk because it handled during its iteration. The Client gets important functionality early.

Disadvantage of Incremental Model Need for good planning Total Cost is high. Well defined module interfaces are needed.

Spiral Model The Spiral Model is a combination of the waterfall model and the iterative model. It provides support for  Risk Handling . The Spiral Model was first proposed by  Barry Boehm .  The Spiral Model is a  Software Development Life Cycle (SDLC)  model that provides a systematic and iterative approach to software development. In its diagrammatic representation, looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can vary from project to project. Each loop of the spiral is called a  phase  of the software development process.

Requirement Analysis The spiral model process starts with collecting business needs. In this, the following spirals will include the documentation of system requirements, unit requirements, and the subsystem needs. In this stage, we can easily understand the system requirements because the business analyst and the client have constant communication. And once the cycle is completed, the application will be deployed in the market. Design The second stage of the spiral model is designed, where we will plan the logical design, architectural design, flow charts, decision tree, and so on.

Coding After the compilation of the design stage, we will move to our next step, which is the coding stage. In this, we will develop the product based on the client's requirement and getting the client's feedback as well. This stage refers to the construction of the real application in every cycle. And those spirals had an excellent clarity of the requirements, and the design details of an application are known as the build with having version numbers. After that, these builds are transferred to the client for their responses. Testing and Risk Analysis Once the development is completed successfully, we will test the build at the end of the first cycle and also analyze the risk of the software on the different aspects such as managing risks, detecting, and observing the technical feasibility. And after that, the client will test the application and give feedback.

Advantage Disadvantage Flexible changes are allowed in spiral model. It is not suitable for the small and low-risk product because it could be costly for a smaller project. The development can be distributed into smaller parts. It is a traditional model, and thus developers only did the testing job as well. The customer can use the application at an early stage also. There is no requirement of review process and no parallel deliverables allowed in the spiral model. More clarity for Developers and Test engineers In the spiral model, management is a bit difficult; that's why it is a complex process.

Prototyping Model Prototyping is defined as the process of developing a working replication of a product or system that has to be engineered. It offers a small-scale facsimile of the end product and is used for obtaining customer feedback. This model is used when the customers do not know the exact project requirements beforehand. In this model, a prototype of the end product is first developed, tested, and refined as per customer feedback repeatedly till a final acceptable prototype is achieved which forms the basis for developing the final product. 

In this process model, the system is partially implemented before or during the analysis phase thereby allowing the customers to see the product early in the life cycle. The process starts by interviewing the customers and developing the incomplete high-level paper model. This document is used to build the initial prototype supporting only the basic functionality as desired by the customer. 

Steps of Prototyping Model Step 1: Requirement Gathering and Analysis:  This is the initial step in designing a prototype model. In this phase, users are asked about what they expect or what they want from the system. Step 2: Quick Design:  This is the second step in the Prototyping Model. This model covers the basic design of the requirement through which a quick overview can be easily described. Step 3: Build a Prototype:  This step helps in building an actual prototype from the knowledge gained from prototype design.

Step 4: Initial User Evaluation:  This step describes the preliminary testing where the investigation of the performance model occurs, as the customer will tell the strengths and weaknesses of the design, which was sent to the developer. Step 5: Refining Prototype:  If any feedback is given by the user, then improving the client’s response to feedback and suggestions, the final system is approved. Step 6: Implement Product and Maintain:  This is the final step in the phase of the Prototyping Model where the final system is tested and distributed to production, here the program is run regularly to prevent failures.

Advantages of Prototyping Model The customers get to see the partial product early in the life cycle. This ensures a greater level of customer satisfaction and comfort. New requirements can be easily accommodated as there is scope for refinement. Missing functionalities can be easily figured out. Errors can be detected much earlier thereby saving a lot of effort and cost, besides enhancing the quality of the software. The developed prototype can be reused by the developer for more complicated projects in the future. 

Disadvantages of the Prototyping Model Costly concerning time as well as money. There may be too much variation in requirements each time the prototype is evaluated by the customer. Poor Documentation due to continuously changing customer requirements. It is very difficult for developers to accommodate all the changes demanded by the customer. There is uncertainty in determining the number of iterations that would be required before the prototype is finally accepted by the customer.

Rational Unified Process (RUP) Rational Unified Process (RUP)  is a software development process for object-oriented models . It is also known as the Unified Process Model. It is created by Rational Corporation and is designed and documented using UML (Unified Modeling Language). This process is included in the IBM Rational Method Composer (RMC) product.

Phases of RUP There is a total of five phases of the life cycle of RUP: Inception Elaboration Construction Transition Production

Inception –Communication and planning are the main ones. Identifies the scope of the project using a use-case model allowing managers to estimate costs and time required. Customers’ requirements are identified and then it becomes easy to make a plan for the project. The project plan, Project goal, risks, use-case model, and Project description, are made. Elaboration –Planning and modeling are the main ones. A detailed evaluation and development plan is carried out and diminishes the risks. Revise or redefine the use-case model (approx. 80%), business case, and risks. Again, checked against milestone criteria and if it couldn’t pass these criteria then again project can be canceled or redesigned.

Construction – The project is developed and completed. System or source code is created and then testing is done. Coding takes place. Transition – The final project is released to the public. Transit the project from development into production. Update project documentation. Beta testing is conducted. Defects are removed from the project based on feedback from the public Production – The final phase of the model . The project is maintained and updated accordingly.

Advantages of Rational Unified Process (RUP) RUP provides good documentation, it completes the process in itself. RUP provides risk-management support . RUP reuses the components , and hence total time duration is less. Good online support is available in the form of tutorials and training. Disadvantages of Rational Unified Process (RUP) Team of expert professional is required, as the process is complex. Complex and not properly organized process. More dependency on risk management. Hard to integrate again and again.