SOFTWARE
ENGINEERING
Definition
• Software is a program or set of programs
containing instructions that provide the
desired functionality.
• Software engineering is the process of designing, developing,
testing and maintaining software. It is a systematic and disciplined
approach to software development that aims to create high-quality,
reliable, and maintainable software.
The Evolving role of software
Software crisis
Software view
Software
engineering
view
Software
product
IMPORTANCE
OF SOFTWARE
ENGINEERING
Characteristics of software
• Software is developed or engineered, it is not
manufactured
• Software doesn't wear out
• Most of the software is custom built
Changing the nature of software
• System Software – Service other programs
Ex: Compilers , Editors
• Application Software – Stand Alone programs Ex: POS
• Engineering/Scientific Software
• Embedded Software: Keypad control Ex: OVEN
• Product-line Software : Word Processing
• Web-applications: Website
• Artificial Intelligence Software: Robotics
LEGACY SOFTWARE
SE – A LAYERED TECHNOLOGY
Software Myths
Management Myths
• Myth1: 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?
• Myth2: If we get behind schedule, we can add more programmers
and catch up?
• Myth3: If I decide to outsource the software project to a third party, I
can just relax.
• Myth4: My people have modern software development tools, after all
, we buy them the newest computers.
Customer Myths
• Myth1: A general statement of objectives is sufficient to begin
writing programs – we can fill in the details later.
• Myth2: Software requirements continually change, but change can
be easily accommodated because software is flexible.
Practitioner’s(Developer) Myths
• Once we write the program and get it to work, our job is done.
• Until I get the program “Running” I have no way of evaluate its
quality.
SOFTWARE PROCESS FRAMEWORK
Umbrella
Activities
A Generic
Software
Process Model
TYPES OF PROCESS FLOW
•Linear Process Flow
•Iterative Process flow
•Evolutionary Process flow
•Parallel Process flow.
Linear Process Flow
Iterative Process flow
Evolutionary Process flow
Parallel Process flow
CAPABILITY MATURITY MODEL INTEGRATION
(CMMI)
• Benchmark for measuring the maturity of an organization.
• It’s a software process
Level 1: Basic level
Immature
Not well defined.
• Level 2: managed (repeatable)
• Basic project management policies (Previous project exp)
• Project planning
• Configuration management
• Software Quality assurance
Level 3 - Defined
• Documentation done in this defined
• Peer reviews
• Intergroup communication
• Training programs
Level 4
• Quantitative and qualitative goals are set
• Software quality management
• Quantitative management
Level 5
• Continuous improvement is done by taking feedback
• Defect prevention
Process Models
• The waterfall model
• Incremental Process model
• Rapid Application Development model
• The prototyping model
• The spiral model
• The concurrent development model
• The unified Process
• Personal & team process model
The Waterfall Model
Important points to remember in this model
• It is called as Classic life cycle model
• Winston Royce introduced the Waterfall model in 1970
• It is also referred as Linear sequential life cycle model
• In Waterfall model, the phases do not overlap.
• Oldest model
• Requirements should be very clear
• No reverse direction
• No customer involvement
• Low budget projects
• Will not allow any changes
Requirement gathering in Waterfall model
• Basic requirement of system
• User requirements – should gather
• Documentation – software requirement specifications(SRS)
Planning & Modelling in Waterfall model
• Plan how to develop the software
• Obtain a design
The Spiral Model
Spiral Model Important Points
• 5 stages
• Repetitive activities
• Iterative model
• Mainly used in risky handling
• Endless loop
• First iteration is core product
• Radius increase money increase and time increase.
• Angle indicates the progress.
• Suitable for longer projects