#Chapter 1-1
#Chapter 1-1
Mattu University
Engineering and Technology College
Department of Computer Science
Software Engineering
software.
More and more systems are software controlled.
Software costs
Techniques (methods):
Methodologies:
Collection of techniques applied across software development and unified by a
philosophical approach
Tools:
Instrument or automated systems to accomplish a technique
Software : Definition
Software is a Computer programs and associated documentation such
as requirements, design models and user manuals.
Software products may be developed for a particular customer or
may be developed for a general market.
Software products may be
e.g. control systems for electronic devices, air traffic control systems.
Software : Definition…
New software can be created by:
Dependability
Software must be trustworthy;
Efficiency
Software should not make wasteful use of system resources;
Acceptability
Software must accepted by the users for which it was designed. This means it must be
understandable, usable and compatible.
Software Engineering: Definition
software production.
Heterogeneity
Delivery
Trust
Traditional technique
View software as a collection of programs or functions.
A system that is designed for performing certain actions.
Algorithms + Data Structures = Programs.
Software Development Models (Waterfall, Spiral, Incremental, etc..)
Moving from one phase to another phase is complex.
Increase duration of project.
Cont’d…
Object oriented system development technique
OO development offers a different model from the traditional software
based on functions and procedures.
Concern on objects, that encapsulate their data as well as the
functionality.
Each object has attributes (properties) and method (procedures).
software by building self contained modules or objects that can be easily
REPLACED, MODIFIED and REUSED.
Objects grouped in to classes and object are responsible for itself.
Six ideas characterize object-oriented systems’ programming:
Object
Class
Message
Encapsulation
Inheritance
Polymorphism
Cont’d…
Difference between Traditional and Object Oriented Approach
1.3. Software Development process model
Software Process?
A set of activities whose goal is the development or evolution of
software.
Generic activities in all software processes are:
Specification - what the system should do and its development
constraints.
Development – production of the software system
Validation - checking that the software is what the customer
wants
Evolution - changing the software in response to changing
demands
A software process model is an abstract representation of a
process. It presents a description of a process from some particular
perspective.
Cont’d…
Software Process…
Cont’d…
Software Development Life Cycle (SDLC)
has several clearly defined phases
Requirements gathering( What does the user want?)
Feasibility analysis
Systems analysis :Understanding/documenting requirements
Design: Planning a possible solution
Implementation: Building a solution
Testing the implementation: Ensuring it meets requirements
Maintenance
(Take below point clearly to understand well)
Requirements gathering and systems analysis are performed
iteratively.
Design/Implementation/Testing are done sequentially.
Cont’d…
Requirements gathering and analysis
The requirement is the first stage in the SDLC process.
It is conducted by the senior team members with inputs from
all the stakeholders and domain experts in the industry.
Planning for the quality assurance requirements and recognition
of the risks involved is also done at this stage.
This stage gives a clearer picture of the scope of the entire project
and the anticipated issues, opportunities, and directives which
triggered the project.
Requirements Gathering stage need teams to get detailed and
precise requirements. This helps companies to finalize the
necessary timeline to finish the work of that system.
Cont’d…
Feasibility Study
Once the requirement analysis phase is completed the next sdlc
step is to define and document software needs.
This process conducted with the help of „Software Requirement
Specification‟ document also known as „SRS‟ document.
There are mainly five types of feasibilities checks:
• Economic: Can we complete the project within the budget or not?
• Legal: Can we handle this project as cyber law and other regulatory
framework/compliances.
• Operation feasibility: Can we create operations which is expected by the
client?
• Technical: Need to check whether the current computer system can
support the software
• Schedule: Decide that the project can be completed within the given
schedule or not.
Cont’d…
Design
In this third phase, the system and software design documents
are prepared as per the requirement specification document.
This design phase serves as input for the next phase of the
model.
Cont’d…
Coding
Once the system design phase is over, the next phase is coding.
In this phase, developers start build the entire system by
writing code using the chosen programming language.
In the coding phase, tasks are divided into units or modules and
assigned to the various developers.
It is the longest phase of the SDLC process.
In this phase, Developer needs to follow certain predefined
coding guidelines.
They also need to use programming tools like compiler,
interpreters, debugger to generate and implement the code.
Cont’d…
Testing
Once the software is complete, and it is deployed in the testing
environment.
The testing team starts testing the functionality of the entire
system.
This is done to verify that the entire application works according
to the customer requirement.
During this phase, QA and testing team may find some
bugs/defects which they communicate to developers.
The development team fixes the bug and send back to QA for a
re-test.
This process continues until the software is bug-free, stable, and
working according to the business needs of that system.
Cont’d…
Installation / Deployment
Once the software testing phase is over and no bugs or errors left
in the system then the final deployment process starts.
Based on the feedback given by the project manager, the final
software is released and checked for deployment issues if any.
Maintenance
Once the system is deployed, and customers start using the
developed system, following 3 activities occur
• Bug fixing – bugs are reported because of some scenarios
which are not tested at all
• Upgrade – Upgrading the application to the newer versions
of the Software
• Enhancement – Adding some new features into the existing
software
Cont’d…
Cont’d…
Software Development Process / Software Engineering process
A process used to create a software system
Consists of:
• Methods (steps)
– A sequence of step-by-step approaches that help develop
the information system.
• Techniques
– Processes that the analyst follows to ensure thorough,
complete and comprehensive analysis and design
• Tools
– Computer programs that aid in applying techniques
Cont’d…
What are software engineering methods?
Tools + steps + techniques= methodology
Well organized and Structured approaches to software development
which include system models, notations, rules, design advice and
process guidance.
Model descriptions
• Descriptions of graphical models which should be produced;
Rules
• Constraints applied to system models.
Recommendations
• Advice on good design practice.
Process guidance
• What activities to follow.
Cont’d…
Why is the SDLC important?
It provides a standardized framework that defines activities and
deliverables.
It aids in project planning, estimating, and scheduling.
It makes project tracking and control easier.
It increases visibility on all aspects of the life cycle to all stakeholders.
It increases the speed of development.
It improves client relations.
It decreases project risks.
It decreases project management expenses and the overall cost of
production.
Cont’d…
Software Development Process Model
A simplified representation of a software process, presented from a
specific perspective.
Generic process models
Waterfall (linear sequential)
Prototyping
Iterative (Evolutionary)development)
RUP – Rational Unified Process
Process Iteration models
Incremental and Spiral development
Other current software development process models
Agile
Cleanroom
DSDM - Dynamic Systems Development Method
RAD - Rapid Application Development
XP – eXtreme Programming
V-Model
Cont’d…
1. Waterfall Model of SDLC
Cont’d…
Discussion of Waterfall Model
Advantages:
Process visibility: well known by non-software parties making it easier to
communicate.
Dependence on individuals: good model to use when requirements are well
understood and are quite stable.
Easy for Quality and cost control
Disadvantages:
Inflexible partitioning of the project into distinct stages
This makes it difficult to respond to changing customer requirements
This model is only appropriate when the requirements are well-understood
Each stage in the process reveals new understanding of the previous stages, that
requires the earlier stages to be revised.
Cont’d…
When to use Waterfall Model
It works well for products that are well understood and whose
technical methodologies are also clear.
It also works well for projects that are repeats of earlier work
such as migration, updates, new releases.
1. Incremental delivery;
2. Spiral development.
Cont’d…
Iterative development Model
Cont’d…
1. Incremental delivery
Rather than deliver the system as a single delivery, the development
and delivery is broken down into increments with each increment
delivering part of the required functionality.
What is process?
analysing,
Increased quality
…
Why We Need Object-Orientation ?
Easier to maintain
More robust
Code reuse
Cont’d…
Others
Promotion of reusability.
OVERVIEW OF UNIFIED APPROACH
development.
UA utilizes the unified modelling language (UML) which is a set
Inheritance
Encapsulation
Abstraction