Week 2. Introduction To Software Engineering
Week 2. Introduction To Software Engineering
Week 2. Introduction To Software Engineering
Software Engineering
Nailing Painting
Setting posts Cutting wood
[ 2 time units for unpainted; [ 5 time units for uncut wood;
[ 3 time units ] [ 2 time units ]
3 time units otherwise ] 4 time units otherwise ]
Set of
instructions
WHERE DOES THE SOFTWARE RESIDES?
TYPES OF SOFTWARE
System Application
Software Software
Operate and control the Set of one or more programs
computer hardware and designed to carry out
provide a platform for operations for a specific
running application software. application.
SYSTEM SOFTWARE
System System
Management System Support Development
Programs Programs Programs
Programming
Operating Systems System Utilities Language
Translators
Computer Aided
Database
Software
Management Security Monitors
Engineering (CASE)
Systems
Tools
APPLICATION SOFTWARE
General Purpose Specific Purpose
Application Programs Application Programs
Manufacturing-
Graphics Software Production
Control
COMMON SOFTWARE TYPES
Business Software
Software
Artificial Intelligence
Software
Scientific Software
SOFTWARE CRISIS
• It was in late 1960’s
• Many software projects failed.
• Many software projects late, over budget, providing unreliable software that is
expensive to maintain.
• Many software projects produced software which did not satisfy the
requirements of the customer.
• Complexities of software projects increased as hardware capability increased.
• Larger software system is more difficult and expensive to maintain.
• Demand of new software increased faster than ability to generate new software.
All the above attributes of what was called a ‘Software Crisis’. So the term
‘Software Engineering’ first introduced at a conference in late 1960’s to discuss the
software crisis.
WHY SOFTWARE ENGINEERING?
• Once the need for software engineering was identified and software
engineering recognized as a discipline.
• The late 1970’s saw the widespread evolution of software engineering
principles.
• The 1980’s saw the automation of software engineering and growth of CASE
(Computer Aided Software Engineering).
• The 1990’s have seen increased emphasis on the ‘management’ aspects of
projects and the use of standard quality and ‘process’ models like ISO 9001
and the Software Engineering Institute’s Software Capability Maturity Model
(CMM).
• By combining all the above definition we can define software engineering as, ‘Software
engineering is the technological and managerial discipline concerned with systematic
production and maintenance of software products that are developed and modified on
time and within cost estimates.’
GOAL OF SOFTWARE ENGINEERING
The primary goals of software engineering are:
• To improve the quality of the software products.
• To increase the productivity
• To give job satisfaction to the software engineers.
FOUNDATION OF SOFTWARE ENGINEERING
Software engineering is a technological discipline distinct from, but based
on the foundation of the following disciplines:
• Computer Science
• Management Science
• Economics
• System Engineering
• Communication Skills
RELATIONSHIP OF SOFTWARE ENGINEERING
WITH OTHER DISCIPLINES
• Computer Science gives the scientific foundation to the software as electrical engineering
relies on physics.
• Management Science provides the foundation for software project management. Since
software engineering is labor intensive activity, it requires both technical and managerial
control.
• Economics provides the foundation for resource estimation and cost control. Since,
computing system must be developed and maintained on time and within cost estimates;
thus economics plays an important role.
• System Engineering is the field concerned with studying complex systems. Software is
often a component of a much larger system. For example, the software in a factory
monitoring system or the flight software on an airplane; is just the component of more
complex system. System engineering techniques can be applied to study of such systems
• Good oral, written and interpersonal communication skills are crucial for the software
engineers, because software engineering activities occur within an organizational context,
and a high degree of communication is required among customers, managers, software
engineers, hardware engineers and other technical workers.
THE ROLE OF SOFTWARE ENGINEER
The evolution of software engineering field has defined the role of the
software engineer. A software engineer should have the following qualities:
Customer
Programmer
System-to-be
(includes hardware)
Problem Domain
Software-to-be
User
Withdraw Dispense
H Dispensing!
$60 $60
Please take
your cash
EXAMPLE: ATM MACHINE
Understanding the money-machine problem:
1
7
4
0
2
5 3
8 6
9
Communication link
Bank’s
remote
ATM machine
datacenter
Bank
customer
HOW ATM MACHINE MIGHT WORK
Domain Model
Transaction
How may I record
help you? Cash
Bookkeeper
Speakerphone Safe
Safe keeper
Phone
Window clerk
Datacenter
liaison
Dispenser
Bank’s
remote
datacenter
Customer
PROBLEM-SOLVING STRATEGY
Divide-and-conquer:
Identify logical parts of the system that each solves a part of the problem
Easiest done with the help of a domain expert who already knows the steps in the
process (“how it is currently done”)
Result:
A Model of the Problem Domain
(or “domain model”)
SOFTWARE ENGINEERING BLUEPRINTS
❑ Specifying software problems and solutions is like cartoon strip writing
• Any well engineered software system should have the following attributes:
• Be easy to maintain
• Be reliable
• Be efficient
• Provides an appropriate user interface
• Generic products: These are stand alone systems which are produced by a
software development organizations/firms and sold on the open market to
any customer who is able to buy them.
– Therefore, this model is only appropriate when the requirements are well-
understood and changes will be fairly limited during the design process.
– Few business systems have stable requirements.
• The waterfall model is mostly used for large systems engineering projects
where a system is developed at several sites.
– In those circumstances, the plan-driven nature of the waterfall model helps
coordinate the work.
2. Structured Evolutionary Prototyping Model
• Developers build a prototype during the requirements
phase.
• Prototype is evaluated by end users.
• Users give corrective feedback.
• Developers further refine the prototype.
• When the user is satisfied, the prototype code is brought up to the standards
needed for a final product.
STRUCTURED EVOLUTIONARY PROTOTYPING STEPS
:
4. EVOLUTIONARY MODEL
• Successive versions model.
• Incremental model.
• A simple working system is built, which
subsequently undergoes many functionality improvements and
additions until the desired system is realized .
• Also sometimes referred to as design a little, build a little, test a
little, deploy a little model.
• That is once the requirements have been specified, the design,
build, test and deployment activities are interleaved.
• The software requirements is first broken down into several modules(functional
units) that can be incrementally constructed and delivered.
• The development team first develop the core modules of the system.
• The Core modules are those that don’t need services from the other modules.
• The initial product Skelton is refined into increasing levels of capability by adding
new functionalities in the successive versions.
LIFE CYCLE ACTIVITIES
ITERATIVE MODEL
• A Requirements phase, in which the requirements for the software are gathered
and analysed. Iteration should eventually result in a requirements phase that
produces a complete and final specification of requirements.
• Best suggestion
– “Mix-and-match” life-cycle model