UNIT 1 Introduction to Software Engineering Introduction Software

  • Slides: 42
Download presentation
UNIT – 1 Introduction to Software Engineering

UNIT – 1 Introduction to Software Engineering

Introduction Ø Software Engineering: The term is made of two words, software and engineering.

Introduction Ø Software Engineering: The term is made of two words, software and engineering. Software Ø It is more than just a program code. Ø A program is an executable code, which serves some purpose. Ø Software is considered to be collection of executable programming code, associated libraries and documentations. Ø Software, when made for a specific requirement is called software product. Engineering Ø It is all about developing products, using well-defined, scientific principles and methods.

Definition of SE Ø Software engineering is an engineering branch associated with development of

Definition of SE Ø Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product. Ø The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is the application of engineering to software. Ø Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and work efficiently on real machines.

Software Evolution Ø The process of developing a software product using software engineering principles

Software Evolution Ø The process of developing a software product using software engineering principles and methods is referred to as software evolution. Ø This includes the initial development of software and its maintenance and updates, till desired software product is developed, which satisfies the expected requirements.

Software Evolution Law Lehman has given three different categories laws for software evolution. Ø

Software Evolution Law Lehman has given three different categories laws for software evolution. Ø S-type (static-type) - This is a software, which works strictly according to defined specifications and solutions. The solution and the method to achieve it, both are immediately understood before coding. The s-type software is least subjected to changes hence this is the simplest of all. For example, calculator program for mathematical computation. Ø P-type (practical-type) - This is a software with a collection of procedures. This is defined by exactly what procedures can do. In this software, the specifications can be described but the solution is not obvious instantly. For example, gaming software. Ø E-type (embedded-type) - This software works closely as the requirement of real-world environment. This software has a high degree of evolution as there are various changes in laws, taxes etc. in the real world situations. For example, Online trading software.

Software Paradigms Ø Software paradigms refer to the methods and steps, which are taken

Software Paradigms Ø Software paradigms refer to the methods and steps, which are taken while designing the software. Ø Programming paradigm is a subset of Software design paradigm which is further a subset of Software development paradigm.

Software Paradigms (Cont. . . ) Software Development Paradigm This Paradigm is known as

Software Paradigms (Cont. . . ) Software Development Paradigm This Paradigm is known as software engineering paradigms where all the engineering concepts pertaining to the development of software applied. It includes various researches and requirement gathering which helps the software product to build. It consists of – § Requirement gathering § Software design § Programming Software Design Paradigm This paradigm is a part of Software Development. This includes – § Design § Maintenance § Programming Paradigm This paradigm is related closely to programming aspect of software development. This includes – § Coding § Testing § Integration

Need of Software Engineering The need of software engineering arises because of higher rate

Need of Software Engineering The need of software engineering arises because of higher rate of change in user requirements and environment on which the software is working. Ø Large software Ø Scalability Ø Cost Ø Dynamic Nature Ø Quality Management

Characteristics of good software A software product can be judged by what it offers

Characteristics of good software A software product can be judged by what it offers and how well it can be used. This software must satisfy on the following grounds: Operational This tells us how well software works in operations. It can be measured on: § Budget § § § § Usability Efficiency Correctness Functionality Dependability Security Safety Transitional This aspect is important when the software is moved from one platform to another: § Portability § Interoperability § Reusability § Adaptability Maintenance This aspect briefs about how well a software has the capabilities to maintain itself in the ever-changing environment: § Modularity § Maintainability § Flexibility § Scalability

Software Development Life Cycle Ø Software Development Life Cycle, SDLC for short, is a

Software Development Life Cycle Ø Software Development Life Cycle, SDLC for short, 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 includes the following steps:

Software Development Life Cycle Communication Ø This is the first step where the user

Software Development Life Cycle Communication Ø This is the first step where the user initiates the request for a desired software product. Ø He contacts the service provider and tries to negotiate the terms. Ø He submits his request to the service providing organization in writing.

Software Development Life Cycle Requirement Gathering Ø This step onwards the software development team

Software Development Life Cycle 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.

Software Development Life Cycle Feasibility Study Ø After requirement gathering, the team comes up

Software Development Life Cycle 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.

Software Development Life Cycle System Analysis Ø At this step the developers decide a

Software Development Life Cycle 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 Development Life Cycle Software Design Ø Next step is to bring down whole

Software Development Life Cycle 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.

Software Development Life Cycle Coding Ø This step is also known as programming phase.

Software Development Life Cycle 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.

Software Development Life Cycle Testing Ø An estimate says that 50% of whole software

Software Development Life Cycle Testing Ø An estimate says that 50% of whole software development process should be tested. Ø Errors may ruin 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.

Software Development Life Cycle Integration Ø Software may need to be integrated with the

Software Development Life Cycle Integration Ø Software may need to be integrated with the libraries, databases and other program(s). Ø 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.

Software Development Life Cycle Operation and Maintenance Ø This phase confirms the software operation

Software Development Life Cycle 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.

Software Development Life Cycle Disposition Ø As time elapses, the software may decline on

Software Development Life Cycle 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.

SDLC Models Ø There are various software development life cycle models defined and designed

SDLC Models Ø There are various software development life cycle models defined and designed which are followed during the software development process. Ø Each model follows a Series of steps unique to its type to ensure success in the process of software development. Ø Some important and popular SDLC models are; Ø Waterfall Model Ø Iterative / Incremental Model Ø Spiral Model Ø V-Model Ø Big Bang Model Ø Agile Model, RAD Model and Prototyping Models.

SDLC Models Ø There are various software development life cycle models defined and designed

SDLC Models Ø There are various software development life cycle models defined and designed which are followed during the software development process. Ø Each model follows a Series of steps unique to its type to ensure success in the process of software development. Ø Some important and popular SDLC models are; Ø Waterfall Model Ø Iterative Model Ø Spiral Model Ø V-Model Ø Big Bang Model Ø Agile Model, RAD Model and Prototyping Models.

SDLC Waterfall Models Ø The Waterfall Model was the First Process Model to be

SDLC Waterfall Models Ø The Waterfall Model was the First Process Model to be used widely in Software Engineering. Ø It is also referred to as a linear-sequential life cycle model. Ø It is very simple to understand use. Ø In a waterfall model, each phase must be completed before the next phase can begin therefore the phases do not overlap. Ø "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.

SDLC Waterfall Models Ø All these phases are cascaded to each other in which

SDLC Waterfall Models Ø 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".

SDLC Waterfall Models Application Ø Every software developed is different and requires a suitable

SDLC Waterfall Models Application Ø Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Ø Some situations where the use of Waterfall model is most appropriate are − Ø Requirements are very well documented, clear and fixed. Ø Product definition is stable. Ø There are no ambiguous requirements. Ø Sufficient resources with required expertise are available to support the product. Ø The project is short.

SDLC Waterfall Models Advantages Ø Simple and easy to understand use. Ø Easy to

SDLC Waterfall Models Advantages Ø Simple and easy to understand use. Ø Easy to manage due to the rigidity of the model. 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.

SDLC Waterfall Models Disadvantages Ø No working software is produced until late during the

SDLC Waterfall Models Disadvantages Ø No working software is produced until late during the life cycle. Ø High amounts of risk and uncertainty. Ø Not a good model for complex and object-oriented projects. Ø Poor model for long and ongoing projects. Ø Not suitable for the projects where requirements are at a moderate to high risk of changing. Ø It is difficult to measure progress within stages. Ø Cannot accommodate changing requirements.

SDLC Incremental Models Ø In the this model, process starts with a simplementation of

SDLC Incremental Models Ø In the this model, process starts with a simplementation of a small set of the software requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed. Ø An incremental life cycle model does not attempt to start with a full specification of requirements. Ø A working version of software is produced during the first module, so you have working software on during the software life cycle. Ø Development begins by specifying and implementing just part of the software, which is then reviewed to identify further requirements. This process is then repeated, producing a new version of the software at the end of each iteration of the model.

SDLC Incremental Models Ø In this model, each module passes through the requirements, design,

SDLC Incremental Models Ø In this model, each module passes through the requirements, design, implementation and testing phases. Ø Each subsequent release of the module adds function to the previous release. Ø The process continues till the complete system is achieved.

SDLC Incremental Model Application Ø This model can be used when the requirements of

SDLC Incremental Model Application Ø This model can be used when the requirements of the complete system are clearly defined and understood. Ø Major requirements must be defined; however, some details can evolve with time. Ø There is a need to get a product to the market early. Ø A new technology is being used Ø Resources with needed skill set are not available Ø There are some high risk features and goals.

SDLC Incremental Model Advantages Ø Generates working software quickly and early during the software

SDLC Incremental Model Advantages Ø 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.

SDLC Incremental Model Disadvantages Ø Needs good planning and design. Ø Needs a clear

SDLC Incremental Model Disadvantages Ø Needs good planning and design. Ø Needs a clear and complete definition of the whole system before it can be broken down and built incrementally. Ø Total cost is higher than waterfall.

SDLC Spiral Model Ø The spiral model is similar to the incremental model, with

SDLC Spiral Model Ø The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. Ø The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. Ø A software project repeatedly passes through these phases in iterations (called Spirals in this model). Ø The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Ø Each subsequent spirals builds on the baseline spiral.

SDLC Spiral Model Planning Phase: Requirements are gathered during the planning phase. Risk Analysis:

SDLC Spiral Model Planning Phase: Requirements are gathered during the planning phase. Risk Analysis: In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A prototype is produced at the end of the risk analysis phase. If any risk is found during the risk analysis then alternate solutions are suggested and implemented. Engineering Phase: In this phase software is developed, along with testing at the end of the phase. Hence in this phase the development and testing is done. Evaluation phase: This phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral.

SDLC Spiral Model Application Ø When costs and risk evaluation is important Ø For

SDLC Spiral Model Application Ø When costs and risk evaluation is important Ø For medium to high-risk projects Ø Long-term project Ø Users are unsure of their needs Ø Requirements are complex Ø Significant changes are expected (research and exploration)

SDLC Spiral Model Advantages Ø High amount of risk analysis hence, avoidance of Risk

SDLC Spiral Model Advantages Ø High amount of risk analysis hence, avoidance of Risk is enhanced. Ø Good for large and mission-critical projects. Ø Strong approval and documentation control. Ø Additional Functionality can be added at a later date. Ø Software is produced early in the software life cycle.

SDLC Spiral Model Disadvantages Ø Can be a costly model to use. Ø Risk

SDLC Spiral Model Disadvantages Ø Can be a costly model to use. Ø Risk analysis requires highly specific expertise. Ø Project’s success is highly dependent on the risk analysis phase. Ø Doesn’t work well for smaller projects.

SDLC Prototype Model Ø Prototype is a working model of software with some limited

SDLC Prototype Model Ø Prototype is a working model of software with some limited functionality. Ø The prototype does not always hold the exact logic used in the actual software application. Ø Prototyping is used to allow the users evaluate developer proposals and try them out before implementation. Ø It also helps understand the requirements which are user specific and may not have been considered by the developer during product design. Ø Prototyping is an attractive idea for complicated and large systems for which there is no manual process or existing system to help determining the requirements.

SDLC Prototype Model Ø Prototype model should be used when the desired system needs

SDLC 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. Ø 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.

SDLC Prototype Model Advantage Ø Users are actively involved in the development Ø Working

SDLC Prototype Model Advantage Ø Users are actively involved in the development Ø Working model of the system is provided, the users get a better understanding of the system being developed. Ø Errors can be detected much earlier. Ø Quicker user feedback is available leading to better solutions. Ø Missing functionality can be identified easily Ø Confusing or difficult functions can be identified

SDLC Prototype Model Disadvantage Ø Leads to implementing and then repairing way of building

SDLC Prototype Model Disadvantage Ø Leads to implementing and then repairing way of building systems. Ø Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans. Ø Incomplete application may cause application not to be used as the full system was designed.

Thank You

Thank You