Software Engineering
Software Engineering
By,
K. VENKATARANGAIAH ACHARI
Assistant professor
Dept. of CSE AIML
MRECW
Course Objectives:
The students will be able :
To comprehend the various software process models.
development.
To know about quality control and risk management.
Course Outcomes:
Students will have the ability:
To compare and select a process model for a business system.
application.
To develop and maintain efficient, reliable and cost-effective software
solutions.
To critically think and evaluate assumptions and arguments
Syllabus
UNIT – I:
Introduction to Software Engineering: The evolving role of software, Changing Nature of
Software, Software myths. A Generic view of process: Software engineering- A layered
technology, a process framework, Process patterns, process assessment. Process models: The
waterfall model, Incremental process models, Evolutionary process models, The Unified
process, Agility and Agile Process model, Extreme Programming, Other process models of
Agile Development and Tools
UNIT ‐II:
Software Requirements: Functional and non-functional requirements, User
requirements, System requirements, Interface specification, the software requirements
document. Requirements engineering process: Feasibility studies, Requirements
elicitation and analysis, Requirements validation, Requirements management. System
models: Context Models, Behavioural models, Data models, Object models, structured
methods. UML Diagrams.
UNIT ‐III:
Design Engineering: Design process and Design quality, Design concepts, the design
model. Creating an architectural design: Software architecture, Data design, Architectural
styles and patterns, Architectural Design.
Object-Oriented Design: Objects and object classes, An Object-Oriented design process,
Design evolution. Performing User interface design: Golden rules, User interface analysis
and design, interface analysis, interface design steps, Design evaluation.
UNIT ‐IV:
Risk management: Reactive vs. Proactive Risk strategies, software risks, Risk
identification, Risk projection, Risk refinement, RMMM, RMMM Plan. Quality
Management: Quality concepts, Software quality assurance, Software Reviews, Formal
technical reviews, Statistical Software quality Assurance, The Capability Maturity Model
Integration (CMMI), Software reliability, The ISO 9000 quality standards.
UNIT ‐V:
Risk management: Reactive vs. Proactive Risk strategies, software risks, Risk
identification, Risk projection, Risk refinement, RMMM, RMMM Plan. Quality
Management: Quality concepts, Software quality assurance, Software Reviews, Formal
technical reviews, Statistical Software quality Assurance, The Capability Maturity Model
Integration (CMMI), Software reliability, The ISO 9000 quality standards.
TEXT BOOKS:
1. Software Engineering A Practitioner’s Approach, Roger S Pressman, 6 th edition.
McGraw Hill International Edition.
2. Software Engineering, Ian Sommerville, 7th edition, Pearson education.
REFERENCE BOOKS:
3. Software Engineering, A Precise Approach, Pankaj Jalote, Wiley India, 2010.
4. Software Engineering: A Primer, Waman S Jawadekar, Tata McGraw-Hill, 2008
3. Software Engineering, Principles and Practices, Deepak Jain, Oxford University
Press.
4. Software Engineering1: Abstraction and modelling, Diner Bjorner, Springer
International edition, 2006.
5. Software Engineering2: Specification of systems and languages, Diner Bjorner,
Springer International edition 2006.
6. Software Engineering Principles and Practice, Hans Van Vliet, 3rd edition, John
Wiley
& Sons Ltd.
7. Software Engineering3: Domains, Requirements, and Software Design, D. Bjorner,
Software:
It is a collection of executable integrated programs associated libraries and
documentation.
Means it carefully , organized instructions and code written by developers
on any of various particular computer languages.
Engineering:
it is the application of scientific and mathematical principles to design, develop,
build, and maintain structures, machines, devices, systems, and processes.
i.e. developing products, using well-defined, scientific principles and methods.
.
Software Engineering:
Application of engineering for the development of software is known as software
engineering
Key Points:
It is a systematic, innovative, and cost-effective approach to develop
software.
A person involved in developing the product is called a software
engineer.
A software (S/w) engineer is a licensed professional who is skilled in the
engineering discipline.
Need of Software Engineering
1. Handling Big Projects:
Corporation must use SE to handle large projects without any issues.
2. To manage the cost:
Software engineering programmers plan everything and reduce all those things
that are not required.
3. To decrease time:
It will save a lot of time if you are developing software using a software engineering
technique.
4. Reliable software:
It is the company’s responsibility to deliver software products on schedule and to
address any defects that may exist.
5. Effectiveness:
Effectiveness results from things being created in accordance with the software
standards.
Characteristics of Good Software:
Characteristics of software
Functionality:
What the system does and the purpose of the system.
Usability:
The quality of a user's experience when interacting with products or
software.
Reliability:
The probability of failure-free operation of a computer program in a
specified environment.
Performance:
The measure of how well an application executes its intended tasks.
Scalability:
A type of testing that checks a software’s ability to grow or expand
effectively.
Characteristics of Software:
1.Software is developed or engineered, but it is not manufactured
Development of software and other hardware involves manpower, but the
quantity and the way of approach remain significantly different.
In both the manufacturing processes, one will be left out with certain end
products , but the efforts applied in them remain different.
Developed or Engineered - Completely new thing
Manufactured - modifying or prototyping Existing
2. Software does not wear out
One of the fundamental characteristics of software is that it does not wear out
in the same way that physical objects do. Software doesn’t degrade or lose
functionality over time due to wear and tear.
The hardware development process the failure rate is very high because of
manufacturing detects the failure rate remains constant for some period of
time and again it starts increasing because of environment maladies (Extreme
temperature, duties, and Vibrations).
physical thing – wear and tear like expiry date
Virtual (s/w) - not wear tear no expiry date
3. Software is custom built rather than
assembling existing components
When software is custom-built rather than assembled from existing components,
it means that the software is designed and developed specifically for a particular
user, organization, or purpose, instead of being based on pre-made parts,
libraries, or frameworks.
S/W is developed based on customer requirements but other physical things
does not like (purchased pre manufactured)
Evolving role of software
Software has dual roles.
1.product
2.Vehicle (process)
1. S/W as a product:
it produces ,Manages and displays the information
2. S/W as a vehicle:
it is a vehicle for delivering product(process).it is like a information
s/w’s.)
Nature of Software:
1. Software is every where and any where.
2. Software is a set of instructions or programs instructing a
3.computer to do specific tasks.
Based on usage
specific task.
Examples:
Social media apps( WhatsApp , Insta ,Facebook)
Gaming apps
Multimedia apps
Examples:
◦ Google Cloud
◦ Azure Studio
◦ TensorFlow
◦ Salesforce, etc.
Software Myths
Myth : Some thing assumption like may or may not be true
Types:
1.Management myth
2.Customer myth
3. Developer’s or Practitioners myth
1. Management myth
Managers with software responsibility, like managers in most disciplines, are
often under pressure to maintain budgets, keep schedules from slipping, and
improve quality.
types: 3 types
Myth 1: We already have a book that’s full of standards and procedures
for building software – won’t that provide my people with everything they
need to know?
Reality: The book of standards may very well exist but, is it used? Are
software practitioners aware of its existence? Does it reflect modern software
engineering practice?
Myth 2: If we get behind schedule, we can add more programmers and
catch up.
Reality: It is true that software requirements change, but the impact of change
varies with the time at which it is introduced. Change can cause upheaval that
requires additional resources and major design modification.
3.Practitioner’s myths
Myths that are still believed by software practitioners. During the early days
of software, programming was viewed as an art. Old ways and attitudes die
hard.
Myth 1: Once we write the program and get it to work, our jobs are
done.
Reality: Someone once said that the sooner you begin writing code, the
longer it’ll take you to get done. Industry data indicate that between 60 and 80
percent of all effort expended on software will be expended after it is
delivered to the customer for the first time.
Myth 2: The only deliverable work product for a successful project is the working
program.
Reality: A working program is only one part of a software configuration that includes many
elements. Documentation provides guidance for software support.
Ex:- developer need to check quality daily formal technical reviews to check the quality no
need to wait completion of code.
3. Practitioner’s
myths
Myth 3: Software engineering will make us create voluminous and
unnecessary documentation and will invariably slow us down.
Software Process:
means To develop Quality products by using technical and management rules.
A software process defines how software is created. It’s a series of steps and
practices that, when followed, aim to deliver a product that meets user needs, is
reliable, and can be maintained over time.
Phases:
Communication
Planning
Modeling
Construction
Deployment
Framework activities:
It is suitable to small Projects.
The five generic process framework activities useful in developing several
projects are given below:
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
1. Communication:
Software development starts with the communication between customer and
developer.
Developer gather requirements of the project with the users.
Communication with consumers ,and stake holders to determine the systems
Objectives, software requirements and features.
2. Planning
It consists of complete estimation ,scheduling for project development and
tracking.
Discuss work plan, technical risk , list of resource requirements, work schedules.
3. Modelling
Constructing practical model to get better understanding of the project.
It consists of complete requirement analysis and design of the project like
algorithm ,flowchart. If any Changes are required, we can implement them in
this step.
4. Construction
It is a combination of code generation and testing.
5. Deployment
In this framework activity, usually the developed project is delivered to the end
users. They deploy the project and give relative feedbacks to the developers.
Umbrella activities:
Suitable to large projects. It is Mainly to track , control and manage the project
There are eight umbrella activities of a software process framework.
They are:
Tracking and controlling software project - a team will monitor every thing.
Software Configuration Management – any changes that effects the user and
organization.
Reusability management – define criteria for again reuse a s/w
Work product preparation and production – requirements to create the work
like documents ,records , files, tables, man power etc.
Software engineering – A layered technology
Software engineering is a fully layered technology. To develop software, we
need to go from one layer to another. All the layers are connected and each
layer demands the fulfillment of the previous layer. each layer performs a
specific set of tasks, contributing to the application's overall functionality .
4. Tools
Software engineering tools provide a self-operating system for processes and
methods. Tools are integrated which means information created by one tool
can be used by another.
Process Patterns
Process patterns define a set of activities, actions, work tasks, work
products and/or related behaviors
A template is used to define a pattern. Template provides important
examples:
Customer communication (a process activity)
Self Assessment :
This is conducted internally by the people of their own organization.
Second Party assessment:
Repeatable(Level 2): Basic project management processes are established to track cost, schedule, and
functionality.
focus on establishing basic project management policies to develop current
projects based on past experiences.
Project Planning
Configuration Management
Software Quality assurance
Defined(Level 3): Processes are well-documented and standardized across the
organization.
Peer reviews
Inter group communication
Training Programs
Requirements
Analysis
Design
Implementation/development
Testing
Deployment
1. Requirements phase :
In this phase collecting requirements from user and provided
to development team.
2. Analysis phase :
In this phase Documents the requirements in the SRS(software
requirement specification).
3. Design Phase :
Based on user Requirements to make a design showing how
the flow of process should happen.
Design classified 2 types
1. High level design
2. Low level Design
High level design:
describes how each and every feature in the s/w product should work
4. Development Phase:
in this phase, writing the code using programming languages for the
software product.
i.e. based on design developer develops the code.
It is also called as Implementation.
5. Testing:
Once the implementation of code to test the code working properly or not.
in this phase finding errors and bugs and correcting them by the QA testers
by using different types of testing methods.
6. Deployment and Maintainance:
in this phase developed s/w product delivers to end user and provide
Documentation(user guide) to end users.
again developers team collect feedback from users, stakeholders,
distributors etc
SDLC/PROCESS MODELS
Process: A series of steps taken to produce an intended output.
Design: Once the documents collected from SRS, the design phase begins. This
involves creating a detailed design (blue print).
Testing: In the testing phase, developed code is tested using testing methods.
Deployment: Once the software has been tested and approved, it is deployed to the
production environment.
Disadvantages:
High risk
Low customer requirement
Difficult to identify errors
2. V model
The V-model is an SDLC model where execution of processes happens in a
sequential manner in a V-shape.
It is also known as Verification and Validation model.
The V-Model is an extension of the waterfall model and is based on the
association of a testing phase for each corresponding development stage.
This means that for 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.
The left-hand side of the V represents the verification phase while the right-
hand side represents the validation phase.
Verification confirms the product is built correctly according to specifications.
Validation confirms the product meets user needs and expectations.
The V-model is useful when working with larger teams where communication
and coordination between developers and testers becomes challenging.
By clearly defining the testing requirements for each stage of the development
process, the V-model can ensure that all team members are working toward a
shared understanding of the project’s goals and objectives.
2. Quick design
Quick design is implemented when requirements are known.
It includes only the important aspects like input and output format of the
software.
It focuses on those aspects which are visible to the user rather than the detailed
plan.
It helps to construct a prototype.
The development process is the best platform to understand the system by the
user.
Errors are detected much earlier.
difficult functions.
Disadvantages of Prototyping Model:
The client involvement is more and it is not always considered by the developer.
It is a slow process because it takes more time for development.
Many changes can disturb the rhythm of the development team.
It is a thrown away prototype when the users are confused with it.
4. Construction of prototype
The prototype is evaluated by the customer itself.
Disadvantages
It is not suitable for smaller projects.
More Resources may be required.
Design can be changed again and again because of imperfect requirements.
Requirement changes can cause over budget.
Project completion date not confirmed because of changing requirements.
When to use the Iterative Model?
1.When requirements are defined clearly and easy to understand.
2.When the software application is large.
3.When there is a requirement of changes in future.
4. Incremental Process
Model
The Incremental model is a software Development approach which is used to
breakdown the project into smaller and easily manageable parts.
In these, each part passes through Requirement, Design, Testing phases and
Implementation phase. The overall process continue until we got the complete
System.
The Incremental Process Model is a method of software development where the
system is built step by step. Instead of delivering the whole system at once, it is
developed and delivered in small parts called increments. Each increment builds
upon the previous one by adding new functionality, until the complete system is
finished.
In the incremental model, we first build the project with basic features and then
evolve the project in every iteration, it is mainly used for large projects.
The first step is to gather the requirements and then perform analysis, design,
code, and test and this process goes the same over and over again until our final
project is ready.
Phases
The phases of Incremental model is divided into the four parts which is
Requirement, Design, Testing phases and Implementation phase.
In those phase, the process continues until we got the expected output at the end.
Requirements
Design
Testing
Implementation
1. Requirement Analysis
The first step in the Incremental Model is understanding what the software needs to do.
The team gathers the requirements from the product experts and clearly defines the
system’s functional needs. This phase is important because it sets the foundation for
everything else in the development process.
2. Design & Development
Next, the team focuses on designing how the software will function and starts
developing it. They work on adding new features and making sure the system works as
expected. The design and development steps go hand-in-hand to build the functionality
of the software.
3. Testing
Once a feature is developed, it goes through testing. The testing phase checks how the
software performs, including both new and existing features. The team uses different
testing methods to make sure everything is working correctly.
4. Implementation
This phase involves writing the final code based on the design and development steps.
After testing the functionality, the team verify that everything is working as planned.
By the end of this phase, the product is gradually improved and updated until it
becomes the final working version.
Advantages:
The Incremental Model of software development builds a system in small,
manageable sections (increments), making it a good choice for many projects.
Faster Software Delivery
Clear Understanding for Clients
Easy to Implement Changes
Effective Risk Management
Cost-Effective
Disadvantages
Requires a Skilled Team and Proper Planning
Cost Can Increase Over Time
High Effort to Fix Repeated Issues
When to use the incremental model
1.When major requirements are understood but some requirements can evolve within
the passage of time.
2.When product launch in the market is getting late.
3.When a customer has no problem with the budget but he demands more and more
quality in software.
2. Spiral model
Spiral model is a combination of iterative development process model and
sequential linear development model(waterfall Model).
This model is used in Projects which are large and complex
in this, we focused on risk handling along with developing the project with the
incremental and iterative approach, producing the output quickly.
The software is created through multiple iterations using a spiral approach.
Later on, after successive development the final product will develop, and the
customer interaction is there so the chances of error get reduced.
The spiral model has four phases:
1. Planning
2. Risk Analysis
3. Engineering
4. Evaluation.
A software project repeatedly passes through these phases in iterations (called
Spirals).
The baseline spiral, starting in the planning phase, requirements are
gathered and risk is assessed. Each subsequent spirals builds on the
baseline spiral.
Spiral model is divided into four quadrants