lesson 1 software engineering

Upload: catherine-jones

Post on 06-Apr-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Lesson 1 Software Engineering

    1/25

    Intro to Software Engineering

    Software Engineering

    Lesson 1

  • 8/3/2019 Lesson 1 Software Engineering

    2/25

    Software Engineering

    The establishment and use of sound engineering

    principles in order to obtain economically,

    software that is reliable and works efficiently onreal machines

  • 8/3/2019 Lesson 1 Software Engineering

    3/25

    Introduction to Software Engineering

    Objectives

    Define Software

    Identify software components, evolution &

    application

    Define Software Engineering

    Discuss software paradigms

  • 8/3/2019 Lesson 1 Software Engineering

    4/25

    Introduction to Software Engineering

    What is Software ?

    A set of instructions which when executed

    provide desired functions & performance

    Data structures that enable programs to

    adequately manipulate data & information

  • 8/3/2019 Lesson 1 Software Engineering

    5/25

    Software DefinitionDefinitions ofSoftware on the Web:

    A computer program, which provides the instructions whichenable the computer hardware to work. System software,such as Windows or MacOS, operate the machine itself,

    and applications software, such as spreadsheet or wordprocessing programs, provide specific functionality.www.getnetwise.org/glossary.php

    Computer programs; instructions that make hardware work.Two main types of software are system software

    (operating systems), which control the workings of thecomputer, and applications, such as word processingprograms, spreadsheets, and databases.www.microsoft.com/office/newtosite/glossary.asp

    http://www.getnetwise.org/glossary.phphttp://www.microsoft.com/office/newtosite/glossary.asphttp://www.microsoft.com/office/newtosite/glossary.asphttp://www.getnetwise.org/glossary.php
  • 8/3/2019 Lesson 1 Software Engineering

    6/25

    Introduction to Software Engineering

    Characteristics of Software It is developed or engineered, not manufactured in the classical

    sense

    Most software is custom-built, rather than being built fromcomponents

    It does not wear out

    Software is intangible Hard to understand development effort

    Software is easy to reproduce Cost is in its development

    in other engineering products, manufacturing is the costly stage

    The industry is labor-intensive Hard to automate

  • 8/3/2019 Lesson 1 Software Engineering

    7/25

    The Nature of Software ...

    Untrained people can hack something

    together

    Quality problems are hard to notice

    Software is easy to modify

    People make changes without fully

    understanding it

    Software does not wear out It deteriorates by having its design changed:

    erroneously, or

    in ways that were not anticipated, thus making it complex

  • 8/3/2019 Lesson 1 Software Engineering

    8/25

    The Nature of Software

    Conclusions

    Much software has poor design and is getting

    worse

    Demand for software is high and rising

    We are in a perpetual software crisis

    We have to learn to engineer software

  • 8/3/2019 Lesson 1 Software Engineering

    9/25

    Types of Software...

    Custom

    For a specific customer

    GenericSold on open market

    Often called

    COTS (Commercial Off The Shelf)

    Shrink-wrapped

    Embedded

    Built into hardware

    Hard to change

  • 8/3/2019 Lesson 1 Software Engineering

    10/25

    Types of Software

    Differences among custom, generic and

    embedded software

    Custom Generic EmbeddedNumber ofcopies in use low medium high

    Total processing power

    devoted to running this type

    of software

    low high medium

    Worldwide annual

    development effort

    high medium low

  • 8/3/2019 Lesson 1 Software Engineering

    11/25

    Types of Software

    Real time software

    E.g. control and monitoring systems

    Must react immediately

    Safety often a concern

    Data processing software

    Used to run businesses

    Accuracy and security of data are key

    Some software has both aspects

  • 8/3/2019 Lesson 1 Software Engineering

    12/25

    What is Software Engineering?...

    The process of solving customers problemsby the systematic development and

    evolution of large, high-quality softwaresystems within cost, time and otherconstraints

  • 8/3/2019 Lesson 1 Software Engineering

    13/25

    What is SE?

    Solving customers problems

    This is the goal of software engineering

    Sometimes the solution is to buy, not build

    Adding unnecessary features does not help

    solve the problem

    Software engineers must communicateeffectively to identify and understand the

    problem

  • 8/3/2019 Lesson 1 Software Engineering

    14/25

    What is Software Engineering?

    Systematic development and evolution

    An engineering process involves applying wellunderstood techniques in a organized and disciplined

    way

    Many well-accepted practices have been formallystandardized

    e.g. by the IEEE or ISO

    Most development work is evolution

  • 8/3/2019 Lesson 1 Software Engineering

    15/25

    What is SE?

    Large, high quality software systems

    Software engineering techniques are needed because

    large systems cannot be completely understood by oneperson

    Teamwork and co-ordination are required

    Key challenge: Dividing up the work and ensuring that

    the parts of the system work properly together The end-product that is produced must be of sufficient

    quality

  • 8/3/2019 Lesson 1 Software Engineering

    16/25

    What is Software Engineering?

    Cost, time and other constraints

    Finite resources

    The benefit must outweigh the cost

    Others are competing to do the job cheaper and

    faster

    Inaccurate estimates of cost and time havecaused many project failures

  • 8/3/2019 Lesson 1 Software Engineering

    17/25

    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

  • 8/3/2019 Lesson 1 Software Engineering

    18/25

    Stakeholders in Software

    Engineering1. Users

    Those who use the software

    2. Customers

    Those who pay for the software

    3. Software developers

    4. Development Managers

    All four roles can be fulfilled by the same person

  • 8/3/2019 Lesson 1 Software Engineering

    19/25

    Software Quality...

    Usability

    Users can learn it and fast and get their job done easily

    Efficiency

    It doesnt waste resources such as CPU time and memory Reliability

    It does what it is required to do without failing

    Maintainability

    It can be easily changed Reusability

    Its parts can be used in other projects, so reprogramming is not

    needed

  • 8/3/2019 Lesson 1 Software Engineering

    20/25

    Software Quality...

    QUALITY

    SOFTWARE

    Developer:

    easy to design;

    easy to maintain;

    easy to reuse its parts

    User:

    easy to learn;

    efficient to use;

    helps get work done

    Customer:

    solves problems atan acceptable cost in

    terms of money paid and

    resources used

    Development manager:

    sells more and

    pleases customerswhile costing less

    to develop and maintain

  • 8/3/2019 Lesson 1 Software Engineering

    21/25

    Software Quality

    The different qualities can conflict

    Increasing efficiency can reduce maintainability orreusability

    Increasing usability can reduce efficiency

    Setting objectives for quality is a key engineeringactivity

    You then design to meet the objectives Avoids over-engineering which wastes money

    Optimizing is also sometimes necessary

    E.g. obtain the highest possible reliability using a fixedbudget

  • 8/3/2019 Lesson 1 Software Engineering

    22/25

    Importance of product characteristics

    The relative importance of these characteristics

    depends on the product and the environment in

    which it is to be used In some cases, some attributes may dominate

    In safety-critical real-time systems, key attributes

    may be dependability and efficiency

    Costs tend to rise exponentially if very highlevels of any one attribute are required

  • 8/3/2019 Lesson 1 Software Engineering

    23/25

    Efficiency costsCost

    Efficiency

  • 8/3/2019 Lesson 1 Software Engineering

    24/25

    Introduction to Software Engineering

    Questions

    Why so long to complete programs ?

    Why costs so high ?

    Why still contain errors when handed over ?

    Why so difficult to measure progress ?

  • 8/3/2019 Lesson 1 Software Engineering

    25/25

    The END

    Zainudin Johari

    Senior Lecturer

    Unity

    B Sc. (Hons) Computer Science, UPM

    M Sc. Computer Science (Information Systems) UPM