0% found this document useful (0 votes)
4 views57 pages

Software Engineering Overview & SDLC Models

Uploaded by

Sourabh Raut
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views57 pages

Software Engineering Overview & SDLC Models

Uploaded by

Sourabh Raut
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Chapter-1

 Overview of Software Engineering

1.1. Overview of Software Engineering


1.2. SDLC models
1.3. Requirement Engineering
1.3.1. Types of Requirements: -Functional and Non
functional
1.3.2. Four Phases of Requirement Engineering
1.4. Software requirement Specification (SRS)
1.4.1. Structure and contents of SRS
1.4.2. IEEE SRS Format
Case studies : based on SRS
 Software is more than just a program code.
 A program is an executable code, which serves some
computational purpose.
 Software is considered to be a collection of executable
programming code, associated libraries and documentations.
 Engineering on the other hand, is all about developing
products, using well-defined, scientific principles and methods.
 IEEE defines software engineering as:
 The application of a systematic, disciplined, quantifiable
approach to the development, operation and maintenance of
software.
 Large software

 Scalability

 Cost

 Dynamic Nature

 Quality Management
 Operational
 Budget Usability Efficiency Correctness Functionality
Dependability Security Safety

 Transitional
 Portability Compatibility Reusability Adaptability

 Maintenance
 Modularity Maintainability Flexibility Scalability
Software engineering executes a set of activities mandatory
for a good s/w development.
 Requirement Analysis

 S/W scoping & determine its boundaries


 Planning , Scheduling, Executing
 Testing at all stages
 Documenting the software
 Implementation
 Change mgt. in pre and post implementation.
 “You’ve got to be very careful if you
don’t know where you’re going, because
you might not get there.”
----Yogi Berra
 Software Development Life Cycle is a well-defined,
structured sequence of stages in software
engineering to develop the intended software
product.

 SDLC provides a series of steps to be followed to


design and develop a software product efficiently.
 The important outcome of the preliminary investigation/
problem identification is the determination of whether the
system requested is feasible or not.

The purpose of feasibility study is not to solve the problem,


but to determine whether the problem is worth solving.

There are 3 basic aspects:

1. Technical
2. Economical
3. Operational
It determines whether it is possible to develop the
software with available equipments, s/w technology,
Resources.(H/W and S/W)

The technical feasibility study compares the level of


technology available in the software development firm
and the level of technology required for the
development of the product .

The level of technology Consists of the programming


language, the hardware resources, other s/w tools etc.
 It is checked whether there are sufficient benefits in
creating the system to make the costs acceptable?

 The economic feasibility study evaluate the cost of


the s/w development against the ultimate income or
benefits gets from the developed system.

 There must be scopes for profit after the successful


Completion of the project.
 After implementing the system, the training programs are
organized for the users. (manpower)

 Operational feasibility study tests the operational scope of


the software to be developed .

 The proposed software must have high operational


feasibility.

 The usability will be high.


 Data Collection
 Strengths/Weaknesses of existing system

 Data Analysis
 Turning data into information

 Requirements Analysis
 Identifying needs
 Different ways to access the user requirements
includes—

 Fact Finding Techniques

▪ Interview
▪ Questionnaires
▪ Review Existing Documents
▪ Onsite observation.
 This is the most creative and challenging
phase of the system life cycle.

 The first step is to determine how a output is


to be obtain and in which format.

 Second. Input data and masters files have to


be designed to meet the requirements of the
proposed output.
 During the Coding phase, developers implement the system based on
the design specifications, using programming languages and
development tools.

 This phase involves writing code, managing versions with tools like Git,
and performing peer reviews to ensure code quality.

 Debugging is also an essential part of this phase to identify and fix issues
in the code.

 Modular coding practices, adherence to coding standards, and


collaboration through version control systems are key elements to
ensure that the software is maintainable and scalable.
 Convert from old system to new system
 Train users
 Compile final documentation
 Installation
 Waterfall
 Prototyping
 Spiral
 RAD
 JAD
 Agile Model
 The waterfall model is a sequential software development
process model that follows the following defined phases:

 System Feasibility
 Requirement Analysis
 Design
 Coding
 Testing
 Implementation
 Maintenance
 Waterfall model is one of the most popular SDLC
models. It is a classic approach to software
development that follows a linear and sequential
method to deliver software product.

 This model has different deliverables from each


phase.
 This model offers the following benefits:

1. It is simple and easy to implement.

2. Since the model follows a linear approach, it becomes


easier to manage.

3. Each phase is executed one at a time.

4. This is best utilized for small-sized projects.


 1. There is a high-risk factor involved.

2. It is not beneficial for big projects.

3. It cannot be used for projects where


requirements can change.

4. It is not suited for projects that are


complex or that employ OOPS concepts.
 Requirements are very well known

 Product definition is stable

 Technology is understood

 New version of an existing product

 Porting an existing product to a new


platform.
 Waterfall model assumes in its design that no error
will occur during the design phase

 Iterative waterfall model introduces feedback paths


to the previous phases for each process phase

 It is still preferred to detect the errors in the same


phase they occur

 Conduct reviews after each milestone


Feasibility Study

Req. Analysis

Design

Coding

Testing

Maintenance
 Prototyping is the process that enables the developer to
create a working model of an information system.

 The prototyping begins with requirements gathering.

 Developers and customers meet and define the overall


objective for the software, identifies the requirement and
outline the areas where further definition is necessary.
 Requirement Gathering: Prototyping begins with the
requirement gathering.

 Quick Design: The focus is on the representation of those


aspects of the s/w that will be visible to the user.

 Building Prototype: A prototype is constructed using


several tools.(i/o and o/p screen format)

 Customer Evaluation: The prototype is evaluated by the


customer and is used to refine requirements for the s/w to be
developed.
 Review prototype: Developer should understand the needs
of the users properly for making modifications in the
prototype.

 Repeat as needed: The process is repeated till both the


users and developers find all the necessary requirements
fulfilled. And there is no use in repeating the steps.
 Software development staff may find incompleteness and
inconsistency in requirements as the prototype is developed.

 A prototype system can be used for training users before the


formal system has been delivered.

 It saves time in system development.

 System can be delivered within proper time and therefore


delays are minimized.
 The spiral model was defined by Barry Boehm in his 1986
article "A Spiral Model of Software Development and
Enhancement".

 The spiral model combines the idea of prototyping with the


systematic, controlled aspects of the waterfall model.

 The spiral model also explicitly includes risk management


within software development. Identifying major risks, both
technical and managerial.
Determine Evaluate
objectives, alternatives,
alternatives, identify and
constraints resolve risks

Plan next
phases Develop verify
next level
product
 Users see the system early because of rapid
prototyping tools

 Critical high-risk functions are developed first

 Users can be closely tied to all lifecycle steps

 Early and frequent feedback from users


 Time spent for evaluating risks too large for small or low-risk
projects

 Time spent planning, resetting objectives, doing risk analysis


and prototyping may be excessive

 The model is complex

 Risk assessment expertise is required

 May be hard to define objective, verifiable milestones that


indicate readiness to proceed through the next iteration
 When creation of a prototype is appropriate
 When costs and risk evaluation is important
 For medium to high-risk projects
 Users are unsure of their needs
 Requirements are complex
 RAD, or rapid application development, is
an object-oriented approach to systems
development that includes a method of
development as well as software tools.

 RAD is incremental software development


process model that allows usable systems to
be built in as little as 60-90 days
 Primarily for information systems applications

 Requirements well-understood, fully functional system


produced in short time

 The application modularized - major functions can be


completed in 3 months

 Separate teams complete the functions, then integrated


as a whole

 Requires human resource and commitment


 Agile software development

 Joint Application Development (JAD)

 Scrum

 Extreme Programming (XP)


 Requires a systematic approach for
modularized

 Requires highly skilled and well-trained


developers
(Joint Application Development)
 It is a group based approach to modern structured
software development.

 JAD was proposed by Chuck Morris and Tony


Crawford of IBM in the late 1970’s.

 JAD was about bringing user and developers together


in a same physical location but today, virtual meetings
too conducted with members located at remote sites
is also called as JAD.
 System Owner

 Project Leader

 Facilitator

 Scribe/Recorder

 Participants

 Observers
 The Agile Model was primarily designed to help a project
adapt quickly to change requests.
 The main aim of the Agile model is to facilitate quick
project completion.
 To accomplish this task, agility is required.
 Agility is achieved by fitting the process to the project and
removing activities that may not be essential for a specific
project.
 The Agile Model refers to a group of development
processes.
• Agile processes must be adaptable to technical and environmental
changes. That means if any technological changes occur, then the
agile process must accommodate them.

• The development of agile processes must be incremental. That


means, in each development, the increment should contain some
functionality that can be tested and verified by the customer.

• The customer feedback must be used to create the next increment


of the process.

• The software increment must be delivered in a short span of time.

• It must be iterative so that each increment can be evaluated


regularly.

Common questions

Powered by AI

In the Waterfall model, maintenance occurs post-delivery and is seen as a distinct phase where updates and error corrections are handled sequentially . The Agile model treats maintenance as an ongoing part of the development cycle, with continuous updates and improvements integrated as part of iterative development, making it continuous rather than distinct . The Spiral model, like Agile, incorporates feedback and potential improvements into each iteration, treating maintenance as an extension of regular development processes through the identification, analysis, and mitigation of risks in its cycles .

Requirement engineering in Agile is flexible, allowing for ongoing revision based on feedback and changing project needs . It emphasizes continuous collaboration with stakeholders to keep requirements aligned with user needs, fostering adaptability throughout the development process. In contrast, the Waterfall model requires that requirements be defined comprehensively at the start, with little scope for modification once a phase is complete . This rigidity can lead to challenges if project needs evolve, potentially impacting project outcomes by delivering less aligned solutions or requiring costly changes later .

Prototyping and RAD handle user requirements by allowing early user involvement and feedback, enabling iterative development based on constant refinement of requirements. Prototyping begins with requirement gathering, quickly leading to a working model which users evaluate to refine requirements, and this cycle repeats until satisfaction . RAD focuses on rapid delivery of a fully functional system in a short time, incrementally developed by separating major functions to be completed by teams . Both models offer advantages over the Waterfall model by being flexible to changes and enabling faster responses to user feedback, leading to potentially higher satisfaction and reduced time to market .

Both prototyping and Agile models heavily rely on user feedback but use it differently. In prototyping, user feedback is central to refining requirements and functionality of the prototype, ensuring that the final system closely meets user needs and expectations. This feedback is used iteratively to enhance and adjust the prototype until it aligns with the customer requirements . The Agile model, on the other hand, uses feedback in a continuous, iterative process to shape incremental inflections of the software. Feedback is integrated after each iteration, helping to shape future development cycles, which supports rapid response to changes and ongoing improvement .

RAD and Agile SDLC models are highly effective in rapidly changing technology environments due to their flexible and iterative approaches. RAD supports adaptability by allowing rapid adjustments through its modular structure, enabling quick, incremental development and testing, which is beneficial in dynamic settings . Agile further enhances adaptability by incorporating continuous feedback loops, iterative improvements, and customer involvement throughout the lifecycle, allowing for immediate responses to changes in technology or user needs . The primary difference lies in Agile's structured incremental releases of functional software, whereas RAD focuses more on the rapid assembly of components to speed delivery .

The primary phases of the Agile Model include requirement analysis, incremental and iterative development, and regular evaluation . These phases contribute to Agile's ability to accommodate change by being adaptable to both technical and environmental changes as they arise during development. The iterative nature ensures that each increment is continuously evaluated, and customer feedback is used to guide the next development cycle, enabling the process to quickly adapt to change requests and maintain a steady delivery pace .

The Prototyping model excels in user interface development by facilitating early user involvement and feedback, helping to refine design to user preferences and usability standards . Its advantages include higher satisfaction due to involvement, improved final design through iteration, and potentially faster development. However, its disadvantages include the risk of scope creep from continuous changes, potential delays if the refinement cycle is not well-managed, and increased costs from repeated iterations. This model is most effective when working on projects where user interaction is central and requirements are likely to evolve as user feedback is incorporated .

The Spiral Model incorporates risk management by explicitly including risk assessment at each stage of the software development process. It identifies major risks, evaluates alternatives, resolves risks, and plans subsequent phases. This iterative model combines elements of design and prototyping, allowing developers to refine product specifications frequently. Its main strengths include the early identification of high-risk functions, close user collaboration, and frequent feedback to reduce uncertainty . However, its complexity and the high time requirement for risk analysis can be drawbacks. It is less suitable for small or low-risk projects due to these intensive processes .

Critical risk factors in the Spiral model include technical, cost, scheduling, and user-related risks . To manage these effectively, each cycle of the Spiral model includes specific steps for risk assessment, facilitating the identification and analysis of potential threats. Effective management strategies involve thoroughly evaluating alternatives, developing detailed risk mitigation plans, and implementing safeguards as part of each iteration. This proactive approach allows for continuous risk reassessment and keeps high-risk elements under control, thereby enhancing project success potential .

Determining the feasibility of a software project involves evaluating technical, economic, and operational aspects . Technical feasibility checks if the available technology and resources can meet the project's demands. Economic feasibility assesses whether the project’s benefits justify its costs. Operational feasibility ensures the software will function effectively within its intended environment. Conducting this analysis early is critical because it identifies potential obstacles, determines if the project is likely to be successful, and helps avoid wasted resources on unviable goals .

You might also like