Introduction to Software Engineering
Objectives
• To introduce software engineering and to explain
its importance
• To set out the answers to key questions about
software engineering
• To introduce ethical and professional issues and
to explain why they are of concern to software
engineers
Objective(Cont..)
 The main objectives of SE are to understand the
following;
 Basic Principles of SE and System Modeling
Languages and Techniques for design
 SE Design Methodologies
 Language Developments
 Project Planning & Management
 Software Quality Assurance -SQA
 Advances in SE to meet the future IT demands
 Future Applications
• Software is a set of instructions to acquire inputs
and to manipulate them to produce the desired
output in terms of functions and performance as
determined by user of the software.
• The economies of all developed nations are
dependent on software
• More and more systems are software-controlled
• Software engineering is concerned with theories,
methods, and tools for professional software
development
• Software-engineering expenditure represents a
significant part of GNP in all developed countries
Software engineering
Software engineering
• Software engineering is the application
of a systematic, disciplined, quantifiable
approach to the development, operation
and maintenance of software, i.e. the
application of engineering to software
(IEEE)
• Software engineering is the
establishment and use of sound
engineering principles in order to obtain
economically software that is reliable and
works efficiently on real machines
(Software Engineering by Pressman)
Software
• A Software may be defined as ;
A collection of such programs for specific
application or data structures that enable the
programs to adequately manipulate
information, with documents that describe
the operations and use of the programs.
PROGRAM DESIGN AND DEVELOPMENT
DEFINE PROBLEM DEVELOP ALGO
CODE THE PROGRAM
TEST THE PROGRAM
DOCUMENTATION IMPLEMENTATION
WELL- ENGINEERED SOFTWARE
 The software is said to be Well -
Engineered if it meets the following
criterion;
 The Software should be efficient.
 The Software should be reliable.
 The Software should be user
friendly.
 The Software should be
maintainable.
Characteristics of Softwares
• SW is developed or
engineered, it is not
manufactured in classical
sense
• Software does not wear out
• Most SW is custom built, rather
than being assembled from
existing components
• Typically errors are high when
software is built or changed
and the error rates comes
down
• The cost of correction / change
increases exponentially when
we move ahead in the life cycle
of a SW project
SOFTWARE
CHARACTERISTICS(Cont..)
• Software is a Logical Component rather a
Physical Component.
• Software doesn't ‘’were out’, but becomes
obsolete when new version is released.
• Most Software Products are Custom-built,
rather assembled from components as
hardware components,until recently.
• Software costs often dominate system costs.
The costs of software on a PC are often greater
than the hardware cost
• Software costs more to maintain than to develop.
For systems with a long life, maintenance costs
may be several times the development costs
• Software engineering is concerned with the cost-
effective production of large-scale software
systems
Software costs
Cost of Correction
Cost
Project Phase
• Software costs often dominate
system costs. The costs of
software on a PC are often
greater than the hardware cost
• Software costs more to
maintain than it does to
develop. For systems with a
long life, maintenance costs
may be several times
development costs
• Software engineering is
concerned with cost-effective
software development
Software Costs
What is software?
• Computer programs and associated
documentation
• Software products may be developed for a
particular customer or may be developed for a
general market
• Software products may be
– Generic  developed to be sold to a range
of different customers
– Bespoke (custom)  developed for a single
customer according to their specification
What is software engineering?
• Software engineering is an engineering
discipline which is concerned with all aspects of
software production
• Software engineers should adopt a systematic
and organised approach to their work and use
appropriate tools and techniques depending on
the problem to be solved, the development
constraints, and the resources available
What is the difference between software
engineering and computer science?
• Computer science is concerned with the theory
and fundamentals of computing while software
engineering is concerned with the practicalities
of developing and delivering useful software
• Computer science theories are currently
insufficient to act as a complete underpinning for
software engineering
What is the difference between software
engineering and system engineering?
• System engineering is concerned with all
aspects of developing computer-based systems
including hardware, software, and process
engineering. Software engineering is part of this
• System engineers are involved in system
specification, architectural system design,
integration, and deployment
What is a software process?
• A set of activities whose goal is the production or
evolution of a software system
• Generic activities in all software processes are
– Specification  what the system should do
and its development constraints
– Development  design and implementation
of the software system
– Validation  checking that the software is
what the customer wants
– Evolution  changing the software in
response to changing demands
What is a software process model?
• A generalised representation of a software
process, presented from a specific perspective
• Examples of process perspectives
– Work flow  what is done when?
– Data flow  which information flows where?
– Role / action  who does what?
• Examples of generic process models
– “Waterfall”, formal transformations
– Evolutionary development
– Integration from reusable components
What are the costs of software
engineering?
• Roughly 60% of costs are development costs,
40% are testing costs. For custom software,
evolution costs often exceed development costs
• Costs vary depending on the type of system
being developed and the requirements of
system attributes such as performance and
system reliability
• Distribution of costs depends on the
development model that is used
What are the attributes of good
software?
• Deliver required functionality and performance,
be maintainable, dependable, and usable
• Maintainability
– Software must evolve to meet change
• Dependability
– Software must be trustworthy
• Efficiency
– Make no wasteful use of system resources
• Usability
– Software must be usable by the people for
which it was designed
What are the key challenges
facing software engineering?
• Coping with legacy systems, increasing diversity,
and demands for reduced delivery times
• Legacy systems
– Valuable existing systems must be
maintained and updated
• Heterogeneity
– Large-scale systems are often distributed
and include a mix of hardware and software
• Delivery
– There is increasing pressure for ever faster
delivery of software
Common Software Problems
– Software can cost hundreds or
thousands of dollars per line
– Lifetime maintenance costs are higher
still
– Software is late or fails
– Software is not performant (too slow)
– Software is incomprehensible
– Software is more trouble to use than it is
worth

lect1.pdf

  • 1.
  • 2.
    Objectives • To introducesoftware engineering and to explain its importance • To set out the answers to key questions about software engineering • To introduce ethical and professional issues and to explain why they are of concern to software engineers
  • 3.
    Objective(Cont..)  The mainobjectives of SE are to understand the following;  Basic Principles of SE and System Modeling Languages and Techniques for design  SE Design Methodologies  Language Developments  Project Planning & Management  Software Quality Assurance -SQA  Advances in SE to meet the future IT demands  Future Applications
  • 4.
    • Software isa set of instructions to acquire inputs and to manipulate them to produce the desired output in terms of functions and performance as determined by user of the software. • The economies of all developed nations are dependent on software • More and more systems are software-controlled • Software engineering is concerned with theories, methods, and tools for professional software development • Software-engineering expenditure represents a significant part of GNP in all developed countries Software engineering
  • 5.
    Software engineering • Softwareengineering is the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software, i.e. the application of engineering to software (IEEE) • Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines (Software Engineering by Pressman)
  • 6.
    Software • A Softwaremay be defined as ; A collection of such programs for specific application or data structures that enable the programs to adequately manipulate information, with documents that describe the operations and use of the programs.
  • 7.
    PROGRAM DESIGN ANDDEVELOPMENT DEFINE PROBLEM DEVELOP ALGO CODE THE PROGRAM TEST THE PROGRAM DOCUMENTATION IMPLEMENTATION
  • 8.
    WELL- ENGINEERED SOFTWARE The software is said to be Well - Engineered if it meets the following criterion;  The Software should be efficient.  The Software should be reliable.  The Software should be user friendly.  The Software should be maintainable.
  • 9.
    Characteristics of Softwares •SW is developed or engineered, it is not manufactured in classical sense • Software does not wear out • Most SW is custom built, rather than being assembled from existing components • Typically errors are high when software is built or changed and the error rates comes down • The cost of correction / change increases exponentially when we move ahead in the life cycle of a SW project
  • 10.
    SOFTWARE CHARACTERISTICS(Cont..) • Software isa Logical Component rather a Physical Component. • Software doesn't ‘’were out’, but becomes obsolete when new version is released. • Most Software Products are Custom-built, rather assembled from components as hardware components,until recently.
  • 11.
    • Software costsoften dominate system costs. The costs of software on a PC are often greater than the hardware cost • Software costs more to maintain than to develop. For systems with a long life, maintenance costs may be several times the development costs • Software engineering is concerned with the cost- effective production of large-scale software systems Software costs
  • 12.
  • 13.
    • Software costsoften dominate system costs. The costs of software on a PC are often greater than the hardware cost • Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs • Software engineering is concerned with cost-effective software development Software Costs
  • 14.
    What is software? •Computer programs and associated documentation • Software products may be developed for a particular customer or may be developed for a general market • Software products may be – Generic  developed to be sold to a range of different customers – Bespoke (custom)  developed for a single customer according to their specification
  • 15.
    What is softwareengineering? • Software engineering is an engineering discipline which is concerned with all aspects of software production • Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints, and the resources available
  • 16.
    What is thedifference between software engineering and computer science? • Computer science is concerned with the theory and fundamentals of computing while software engineering is concerned with the practicalities of developing and delivering useful software • Computer science theories are currently insufficient to act as a complete underpinning for software engineering
  • 17.
    What is thedifference between software engineering and system engineering? • System engineering is concerned with all aspects of developing computer-based systems including hardware, software, and process engineering. Software engineering is part of this • System engineers are involved in system specification, architectural system design, integration, and deployment
  • 18.
    What is asoftware process? • A set of activities whose goal is the production or evolution of a software system • Generic activities in all software processes are – Specification  what the system should do and its development constraints – Development  design and implementation of the software system – Validation  checking that the software is what the customer wants – Evolution  changing the software in response to changing demands
  • 19.
    What is asoftware process model? • A generalised representation of a software process, presented from a specific perspective • Examples of process perspectives – Work flow  what is done when? – Data flow  which information flows where? – Role / action  who does what? • Examples of generic process models – “Waterfall”, formal transformations – Evolutionary development – Integration from reusable components
  • 20.
    What are thecosts of software engineering? • Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs • Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability • Distribution of costs depends on the development model that is used
  • 21.
    What are theattributes of good software? • Deliver required functionality and performance, be maintainable, dependable, and usable • Maintainability – Software must evolve to meet change • Dependability – Software must be trustworthy • Efficiency – Make no wasteful use of system resources • Usability – Software must be usable by the people for which it was designed
  • 22.
    What are thekey challenges facing software engineering? • Coping with legacy systems, increasing diversity, and demands for reduced delivery times • Legacy systems – Valuable existing systems must be maintained and updated • Heterogeneity – Large-scale systems are often distributed and include a mix of hardware and software • Delivery – There is increasing pressure for ever faster delivery of software
  • 23.
    Common Software Problems –Software can cost hundreds or thousands of dollars per line – Lifetime maintenance costs are higher still – Software is late or fails – Software is not performant (too slow) – Software is incomprehensible – Software is more trouble to use than it is worth