You are on page 1of 77

  

CS8494 Software Engineering 


SYLLABUS
UNIT I SOFTWARE PROCESS AND AGILE DEVELOPMENT
Introduction to Software Engineering, Software Process, Perspective and Specialized Process Models –
Introduction to Agility-Agile process-Extreme programming-XP Process.

UNIT II REQUIREMENTS ANALYSIS AND SPECIFICATION


Software Requirements: Functional and Non-Functional, User requirements, System requirements, Software
Requirements Document – Requirement Engineering Process: Feasibility Studies, Requirements elicitation and
analysis, requirements validation, requirements management-Classical analysis: Structured system Analysis,
Petri Nets- Data Dictionary.

UNIT III SOFTWARE DESIGN


Design process – Design Concepts-Design Model– Design Heuristic – Architectural Design -Architectural styles,
Architectural Design, Architectural Mapping using Data Flow- User Interface Design: Interface analysis,
Interface Design –Component level Design: Designing Class based components, traditional Components.

UNIT IV TESTING AND MAINTENANCE


Software testing fundamentals-Internal and external views of Testing-white box testing - basis path testing-
control structure testing-black box testing- Regression Testing – Unit Testing – Integration Testing – Validation
Testing – System Testing And Debugging –Software Implementation Techniques: Coding practices-Refactoring-
Maintenance and Reengineering-BPR model-Reengineering process model-Reverse and Forward Engineering.

UNIT V PROJECT MANAGEMENT


Software Project Management: Estimation – LOC, FP Based Estimation, Make/Buy Decision COCOMO I & II
Model – Project Scheduling – Scheduling, Earned Value Analysis Planning – Project Plan, Planning Process, RFP
Risk Management – Identification, Projection - Risk Management-Risk Identification-RMMM Plan-CASE TOOLS
BOOKS
1. Roger S. Pressman, ―Software Engineering – A Practitioner‟s Approach‖,
Seventh Edition, Mc Graw-Hill International Edition, 2010.
2. Ian Sommerville, ―Software Engineering‖, 9th Edition, Pearson Education
Asia, 2011.

REFERENCES: CS8494 Notes Software Engineering


1. Rajib Mall, ―Fundamentals of Software Engineering‖, Third Edition, PHI
Learning PrivateLimited, 2009.
2. Pankaj Jalote, ―Software Engineering, A Precise Approach‖, Wiley India, 2010.
3. Kelkar S.A., ―Software Engineering‖, Prentice Hall of India Pvt Ltd, 2007.
4. Stephen R.Schach, ―Software Engineering‖, Tata McGraw-Hill Publishing
Company Limited,2007
OBJECTIVES:

To understand the phases in a software project

To understand fundamental concepts of requirements engineering and Analysis


modeling.

To understand the various software design methodologies


 
OUTCOMES

Identify the key activities in managing a software project.

Compare different process models.

Apply systematic procedure for software design and deployment


UNIT I SOFTWARE PROCESS AND AGILE DEVELOPMENT

Introduction to Software Engineering

Software Process

Perspective and Specialized Process Models

Introduction to Agility-Agile process

Extreme programming-XP Process.


Introduction to Software Engineering
Software is the language of a computer.
Like human language, there are many different computer languages.

Three main groups depending on their use and application.

System software – manages both hardware and software


Application software – excel word powerpoint
Programming languages - C C++ JAVA

Software engineering Definition:

Analyzing user requirements


Designing a software
Building a software
Testing a software application which will satisfy those requirements
Program Software

1) Small in size.  1) Large in size. 


2) Authors himself is user-soul.  2) Large number. 
3) Single developer.  3) Team developer. 
4) Adopt development.  4) Systematic development. 
5) Large proper documentation 5) Well documented
 Software engineering - Layered technology
Software engineering is a fully layered technology.

To develop a software, we need to go from one layer to another.

All these layers are related to each other and each layer demands the
fulfillment of the previous layer

Software Engineering – A layered Technology


1. Quality focus
•Maintainability of the software
•Integrity-security
•Usability
2. Process
•Base layer
•It covers all  activities, actions and tasks required to be carried out for software
development.
3. Methods
•Provides the answers of all 'how-to' that are asked during the process.
•Technical way to implement the software.
4. Tools
•It is automated support for the software development.
•The information created by one tool can be used by the other tool.
For example: The Microsoft publisher can be used as a web designing tool
Software Process Model:
•A software process model is an abstraction of the actual process, which is
being described.

•Simplified representation

•Each model represents a process from a specific perspective


Umbrella Activities
•It is a protocol that software engineering team follows to maintain the progress,
quality, change and risks of the overall development tasks.

Umbrella Activities are as follows:


•Software Project Tracking and Control
•Formal Technical Reviews
•Software Quality Assurance
•Software Configuration Management
•Document Preparation and Production
•Re-usability Management
•Risk Management

Each of these umbrella activities should be followed by the software engineer


for the successful development of the project.
04/06/2020
Perspective and Specialized Process Models

• Ensuring the project follows the right way


• Checking whether it follows pre-defined or systematic approach

Traditional Process Models


1. Waterfall Model / Linear-sequential life cycle model
• First Process Model in SDLC
• very simple to understand and use
• A layered approach
• The outcome of one phase acts as the input for the next phase sequentially.
Waterfall Model – Application

Some situations where the use of Waterfall model is most appropriate


are −

•Requirements are very well documented, clear and fixed.


•Product definition is stable.
•Technology is understood and is not dynamic.
•Ample resources with required expertise are available to support the
product.
•The project is short.
Waterfall Model – Advantages

•Simple and easy to use and understand


•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
Waterfall Model – Disadvantages

•Till the later half of life cycle, working software may not be known
•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.
•Cannot accommodate changing requirements.
•Adjusting scope during the life cycle can end a project.
•Integration is done as a "big-bang” at the end.
2.Iterative Model
• It’s an iterative process
• Starts with initial user requirement specifications
• Based upon the review, enhancements may be done
• It iteratively enhances the evolving versions until the full system is
implemented
• At each iteration, design modifications are made and new functional
capabilities are added
Iterative Model
Iterative Model - Application

•Major requirements must be defined


•A new technology is being used and is being learnt by the development
team while working on the project.
•Resources with needed skill sets are unavailable and are planned to be
used on contract basis for specific iterations.
Iterative Model - Advantages
•Some working functionality can be developed quickly and early in the life cycle.
•Results are obtained early and periodically.
•Progress can be measured.
•Testing and debugging during smaller iteration is easy.
•Easier to manage risk - High risk part is done first.
•With every increment, operational product is delivered.
•Issues, challenges and risks identified from each increment can be
utilized/applied to the next increment.
•Risk analysis is better.
•It supports changing requirements.
•Better suited for large and mission-critical projects.
•During the life cycle, software is produced early which facilitates customer
evaluation and feedback.
Iterative Model – Disadvantages
•More resources may be required.
•More management attention is required.
•Not suitable for smaller projects.
•Management complexity is more.
•End of project may not be known which is a risk.
•Highly skilled resources are required for risk analysis.
3. Spiral Model
•This Spiral model is a combination of iterative development process model and
sequential linear development model
•The spiral model has four phases

Spiral Model
Spiral Model Application

•When there is a budget constraint and risk evaluation is important.


•For medium to high-risk projects.
•Long-term project commitment
•Customer is not sure of their requirements
•Requirements are complex and need evaluation to get clarity.
Spiral Model - Advantages

•Changing requirements can be accommodated.


•Requirements can be captured more accurately.
•Users see the system early.
•Development can be divided into smaller parts
Spiral Model - Disadvantages
•End of the project may not be known early.
•Not suitable for small or low risk projects
•Could be expensive for small projects.
•Process is complex
•Spiral may go on indefinitely.
4.Incremental Model
• It is a method of software development where the product is designed,
implemented and tested incrementally until the product is finished
• It combines the elements of Iterative model and waterfall model.

• The difference between Incremental and Iterative model is

Incremental model:
In incremental development, system functionality is sliced
into increments (portions), whereby in each increment, a
slice of functionality is delivered.

Iterative model:
At each iteration, design modifications are made and new
functional capabilities are added.
Incremental Model – Characteristics
•First tackled highest priority requirements.
•System is broken down into many mini development projects.
•The requirement of a portion is frozen once the incremented portion
is developed.
Incremental Model - Advantages
•After each iteration, testing should be conducted. During this testing,
few changes are made within any single iteration.
•It is generally easier to test and debug than other methods of software
development.
•Customer can respond to features and review the product for any
needed or useful changes.
Incremental Model - Disadvantages
•Resulting cost may exceed the cost of the organization.
•As additional functionality is added to the product, problems
may arise related to system architecture
5.Evolutionary Process Models
•Evolutionary models are iterative type models.
•They allow to develop more complete versions of the
software.
Following are the evolutionary process models.
5a. The spiral model
5b. The prototyping model
5c. Concurrent development model
5b. The prototyping model
•The Prototyping Model is one of the most popularly used Software
Development Life Cycle Models (SDLC models)
•In this process model, the system is partially implemented before or
during the analysis phase thereby giving the customers an
opportunity 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
There are 2 approaches for this model:
Rapid Throwaway Prototyping :
•This technique offers a useful method of exploring ideas and getting
customer feedback for each of them.
•Customer feedback helps in preventing unnecessary design faults and
hence, the final prototype developed is of a better quality.
Evolutionary Prototyping :
•In this method, the prototype developed initially is incrementally refined
on the basis of customer feedback.
•It offers a better approach which saves time as well as effort.
Prototyping Model
Prototyping Model - Advantages
•The customers get to see the partial product early in the
life cycle.
•New requirements can be easily accommodated as there is
scope for refinement.
•Errors can be detected much earlier thereby saving a lot of
effort and cost
•The developed prototype can be reused by the developer
for more complicated projects in the future.
•Prototyping Model - Disadvantages
•Costly with respect to 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 the developers to accommodate all the
changes demanded by the customer.
5c.Concurrent development model
•The concurrent development model is called as concurrent model.
Advantages - Concurrent development model
•This model is applicable to all types of software
development processes.
•It is easy for understanding and use.
•It gives immediate feedback from testing.
•It provides an accurate picture of the current state of a
project.
Disadvantages - Concurrent development model
•It needs better communication between the team
members.
•It requires to remember the status of the different
activities.
6. V-model
•The V-model is an SDLC model.
•It is also known as Verification and Validation model.
•Every single phase in the development cycle, there is a directly
associated testing phase.
•This is a highly-disciplined model and the next phase starts only after
completion of the previous phase.
V- Model ─ Application
•V- Model application is almost the same as the waterfall
model
•Requirements have to be very clear before the project starts
•Product definition is stable.
•Technology is not dynamic and is well understood by the
project team.
V-Model - Advantages
•This is a highly-disciplined model and Phases are
completed one at a time.
•Works well for smaller projects where requirements
are very well understood.
•Simple and easy to understand and use.
V-Model - Disadvantages
•High 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.
•Once an application is in the testing stage, it is difficult to
go back and change a functionality.
•No working software is produced until late during the life
cycle.
7.The Big Bang model
•The Big Bang model is SDLC model
•It does not follow a process/procedure
•The software developed which may or may not be as per
customer requirement
•There is a very little planning required.
•Usually this model is followed for small projects where the
development teams are very small.
Big Bang Model ─ Application
•This model is ideal for small projects with one or two
developers working together
•It is also useful for academic or practice projects.
•It is an ideal model for the product where requirements are not
well understood and the final release date is not given.
Big Bang Model - Advantages
•This is a very simple model
•Little or no planning required
•Easy to manage
•Very few resources required
•Gives flexibility to developers
•It is a good learning aid for new comers or students.
Big Bang Model - Disadvantages
•Very High risk and uncertainty.
•Not a good model for complex and object-oriented
projects.
•Poor model for long and ongoing projects.
•Can turn out to be very expensive if requirements
are misunderstood.
8. SDLC Agile model
•Agile SDLC model is a combination of iterative and
incremental process models
•It focus on process adaptability and customer satisfaction
by rapid delivery of working software product.
SDLC AGILE MODEL
Agile Vs Traditional SDLC Models

Agile Model Traditional Model


•Adaptive software development Predictive approach
•No detailed planning Detailed planning
•No need of complete forecast Complete forecast of the exact tasks
of the exact tasks
•It does not fully depend on the  Depend on the requirement analysis
requirement analysis and planning and planning
•Adapts to the changing strict change control management and
prioritization
Agile Model - Advantages
•Promotes teamwork
•Functionality can be developed rapidly
•Resource requirements are minimum.
•Suitable for fixed or changing requirement
•Little or no planning required.
•Gives flexibility to developers.
Agile Model - Disadvantages
•More risk of maintainability and extensibility.
•Depends heavily on customer interaction, so if customer is
not clear, team can be driven in the wrong direction.
•There is a very high individual dependency, since there is
minimum documentation generated.
•Transfer of technology to new team members may be quite
challenging due to lack of documentation.
Assignment – 1

Difference Between All the Software Process Models

Submission Date :
18th June 2020(Next Thursday)
Review of Previous Classes
 Software  Waterfall model
 Software Engineering  Iterative model
 Objectives and Outcomes of  Spiral model
Software Engineering  Incremental model
 Software Engineering – A Layered  Evolutionary model
approach  Spiral model
 Importance of Software  Prototyping model
Engineering
 Concurrent development
 Software Process model
 Umbrella activities  V-Model
 Perspective and Specialized  Big – Bang Model
Process models
 Agile Model
Agile Manifesto Main Principles
•Individuals and interactions 
•Working software 
•Customer collaboration 
•Responding to change 

Twelve Support Principles of Agile Manifesto

1. Customer Satisfaction  7. Measure the Progress as per the


2. Welcome Change  Working Software 
3. Deliver a Working Software  8. Maintain Constant Pace
4. Collaboration  9. Monitoring
5. Motivation  10. Simplicity
6. Face-to-face Conversation  11. Self-organized Teams 
12. Review the Work Regularly
Roles in Agile
Scrum Master
•A Scrum Master is a team leader and facilitator
The responsibilities of a scrum master are as follows −
•To enable close co-operation between all roles and functions.
•To remove any blocks.
•To shield the team from any disturbances.
•To work with the organization to track the progress and processes of the
company.
•To ensure that Agile Inspect & Adapt processes properly which includes
 Daily stand-ups,
 Planned meetings,
 Demo,
 Review,
 Retrospective Meetings, and
 To facilitate team meetings and decision-making process.
Product Owner
•A Product Owner is the one who drives the product from business
perspective.
•The responsibilities of a Product Owner are as follows −
•To define the requirements and prioritize their values.
•To determine the release date and contents.
•To take an active role in iteration planning and release planning
meetings.
•To ensure that team is working on the most valued requirement.
•To represent the voice of the customer.
Cross-functional Team
How an Agile Team Plans its Work?
•An Agile team works in iterations to deliver user stories where
each iteration is of 10 to 15 days.
•Each user story is planned based on its backlog prioritization
and size.
•The team uses its capacity
− how many hours are available with team to work on tasks
− to decide how much scope they have to plan.
9.SDLC - RAD Model
•The RAD (Rapid Application Development) model is based on
prototyping and iterative development with no specific planning
involved.
•In the RAD model, the functional modules are developed in parallel
as prototypes
•They are integrated to make the complete product for faster product
delivery.
•The most important aspect for this model to be successful is to make
sure that the prototypes developed are reusable.
SDLC - RAD Model
RAD Model – Application
•RAD should be used only when a system can be modularized to be
delivered in an incremental manner.
•It should be used if there is a high availability of designers for modeling.
•RAD SDLC model should be chosen only if domain experts are available
with relevant business knowledge.
•working prototypes are to be presented to customer in small iterations of
2-3 months.
RAD Model – Advantages
•Changing requirements can be accommodated.
•Iteration time can be short with use of powerful RAD tools.
•Productivity with fewer people in a short time.
•Increases reusability of components.
•Quick initial reviews occur.
•Encourages customer feedback.
•Integration from very beginning solves a lot of integration issues.
RAD Model – Disadvantages
•Dependency on technically strong team members for identifying
business requirements.
•Requires highly skilled developers/designers.
•Inapplicable to cheaper projects
•Requires user involvement throughout the life cycle.
•Suitable for project requiring shorter development times.
Extreme Programming
•Extreme Programming is one of the Agile software development
methodologies.
•Programming (XP) was conceived and developed to address the specific
needs of software development by small teams for changing requirements.
•It provides values and principles to guide the team behavior.
•Extreme Programming provides specific core practice where −
 Each practice is simple and self-complete.
Embrace Change
A key assumption of Extreme Programming is that the cost of changing a
program can be held mostly constant over time.
This can be achieved with −
•Emphasis on continuous feedback from the customer
•Short iterations
•Design and redesign
•Coding and testing frequently
•Eliminating defects early, thus reducing costs
•Keeping the customer involved throughout the development
•Delivering working product to the customer
“Extreme”
Extreme Programming Process Cycle
Product Life Cycles
•This is also referred to as the Exploration phase.
•The customer arrives at high value requirements and the
requirements are given as user stories.
•Stories are the primary deliverable of this level activity.
Releases
Iterations
Tasks
Development
Feedback
Extreme Programming
The End of UNIT-1

You might also like