Lecture 1- Intro to SE

download Lecture 1- Intro to SE

of 29

Transcript of Lecture 1- Intro to SE

  • 7/31/2019 Lecture 1- Intro to SE

    1/29

  • 7/31/2019 Lecture 1- Intro to SE

    2/29

    Learning Outcomes

    Illustrate the concept of software engineering

    Apply the concept of software engineering in thesystem development

    Produce formal specification and softwaremodeling in a collaborative team environment

  • 7/31/2019 Lecture 1- Intro to SE

    3/29

    Assessment

    Quiz 5%

    Mid Term Exam 20%

    Lab work/Assignments 10%

    Mini project 25%

    Final Exam 40%

  • 7/31/2019 Lecture 1- Intro to SE

    4/29

    Lecture 1

    An Introduction to SoftwareEngineering

  • 7/31/2019 Lecture 1- Intro to SE

    5/29

    Objectives

    To introduce software engineering and toexplain its importance

    To set out the answers to key questions aboutsoftware engineering

    To introduce ethical and professional issues and

    to explain why they are of concern to softwareengineers

  • 7/31/2019 Lecture 1- Intro to SE

    6/29

    Software engineering

    The economies of ALL developed nations aredependent on software.

    More and more systems are software controlled Software engineering is concerned with theories,

    methods and tools for professional softwaredevelopment.

  • 7/31/2019 Lecture 1- Intro to SE

    7/29

  • 7/31/2019 Lecture 1- Intro to SE

    8/29

    Figure1.11 The roles of the development team

    Maintenance

    System Design

    Requirements Analysisand Definition

    Program Design

    Program Implementation

    Unit Testing

    Integration Testing

    System Testing

    System DeliverySO

    FTWAREDEVELOPMENT

    STEPS

    DEVELOPERROLES

    ANALYST

    DESIGNER

    PROGRAMMER

    TESTER

    TRAINER

  • 7/31/2019 Lecture 1- Intro to SE

    9/29

    FAQs about software engineering

    What is software?

    What is software engineering?

    What is the difference between softwareengineering and computer science?

    What is the difference between software

    engineering and system engineering? What is a software process?

    What is a software process model?

  • 7/31/2019 Lecture 1- Intro to SE

    10/29

    FAQs about software engineering

    What are the costs of software engineering?

    What are software engineering methods?

    What is CASE (Computer-Aided SoftwareEngineering)

    What are the attributes of good software?

    What are the key challenges facing softwareengineering?

  • 7/31/2019 Lecture 1- Intro to SE

    11/29

    What is software? Computer programs and associated

    documentation such as requirements, designmodels and user manuals.

    Software products may be developed for aparticular customer or may be developed for a

    general market. Software products may be

    Generic - developed to be sold to a range of different customerse.g. PC software such as Excel or Word.

    Bespoke (custom) - developed for a single customer according

    to their specification. New software can be created by developing new

    programs, configuring generic software systemsor reusing existing software.

  • 7/31/2019 Lecture 1- Intro to SE

    12/29

    Variety of Software ProductsExamples

    Real time : air traffic control

    Embedded systems : digital camera, GPS

    Data processing : telephone billing, pensions

    Information systems : web sites, digital libraries

    Sensors : weather data

    System software : operating systems, compilers

    Communications : routers, mobile telephones

    Offices : word processing, video conferences

    Scientific : simulations, weather forecasting

    Graphical : film making, design

  • 7/31/2019 Lecture 1- Intro to SE

    13/29

    Categories of Software Product

    Generic (e.g., Microsoft Excel)

    Packages (e.g., Mathematica)

    Customized versions of generic packages (e.g.,UTeM's payroll system)

    Bespoke (customized) (e.g., IRS internal system)

    Demonstration, prototype, research,

  • 7/31/2019 Lecture 1- Intro to SE

    14/29

    What is software engineering?

    Software engineering is an engineeringdiscipline that is concerned with all aspects of

    software production.

    Software engineers should adopt a systematicand organised approach to their work and use

    appropriate tools and techniques dependingon the problem to be solved, the developmentconstraints and the resources available.

  • 7/31/2019 Lecture 1- Intro to SE

    15/29

    Computer Science Customer

    TheoriesComputer

    FunctionsProblem

    Software

    Engineering

    Tools andTechniques

    to Solve

    Problem

  • 7/31/2019 Lecture 1- Intro to SE

    16/29

    What is the difference between softwareengineering and computer science?

    Computer science is concerned with theory andfundamentals; software engineering is

    concerned with the practicalities of developingand delivering useful software.

    Computer science theories are still insufficient to

    act as a complete underpinning for softwareengineering.

  • 7/31/2019 Lecture 1- Intro to SE

    17/29

    What is the difference between software

    engineering and system engineering?

    System engineering is concerned with all aspectsof computer-based systems developmentincluding hardware, software and processengineering. Software engineering is part of this

    process concerned with developing the softwareinfrastructure, control, applications anddatabases in the system.

    System engineers are involved in system

    specification, architectural design, integrationand deployment.

  • 7/31/2019 Lecture 1- Intro to SE

    18/29

    What is a software process?

    A set of activities whose goal is the developmentor 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.

  • 7/31/2019 Lecture 1- Intro to SE

    19/29

    What is a software process model?A simplified representation of a software

    process, presented from a specific perspective.

    Examples of process perspectives are Workflow perspective - sequence of activities; Data-flow perspective - information flow; Role/action perspective - who does what.

    Generic process models Waterfall; Iterative development; Component-based software engineering.

  • 7/31/2019 Lecture 1- Intro to SE

    20/29

    Figure1.12 The key factors that have changed software development

    Time to market

    Shifts in economics

    Desktop computing

    Networking

    Object technology Problems with waterfall

    User interfaces

    CHANGES IN

    SOFTWARE

    ENGINEERING

  • 7/31/2019 Lecture 1- Intro to SE

    21/29

    Human Error Fault Failure

    can lead to can lead to

  • 7/31/2019 Lecture 1- Intro to SE

    22/29

    Software costs

    Software costs often dominate computer systemcosts. The costs of software on a PC are oftengreater 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 timesdevelopment costs.

    Software engineering is concerned with cost-

    effective software development.

  • 7/31/2019 Lecture 1- Intro to SE

    23/29

  • 7/31/2019 Lecture 1- Intro to SE

    24/29

  • 7/31/2019 Lecture 1- Intro to SE

    25/29

    Figure 1.5 McCalls quality model.

    Correctness

    Reliability

    Efficiency

    Integrity

    Usability

    MaintainabilityTestability

    Flexibility

    Portability

    Reusability

    Interoperability

    Traceability

    Completeness

    Consistency

    Accuracy

    Error Tolerance

    Execution Efficiency

    Storage efficiency

    Access control

    Access audit

    Operability

    Training

    Communicativeness

    Simplicity

    Conciseness

    Instrumentation

    Self-descriptiveness

    Expandability

    GeneralityModularity

    Software System Independence

    Machine Independence

    Communications commonality

    Data commonality

  • 7/31/2019 Lecture 1- Intro to SE

    26/29

    What are the attributes of good software?

    The software should deliver the required functionality andperformance to the user and should be maintainable, dependableand acceptable.

    Maintainability Software must evolve to meet changing needs;

    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 andcompatible with other systems.

  • 7/31/2019 Lecture 1- Intro to SE

    27/29

    What are the key challenges facingsoftware engineering?

    Heterogeneity, delivery and trust.

    Heterogeneity Developing techniques for building software that can

    cope with heterogeneous platforms and executionenvironments;

    Delivery

    Developing techniques that lead to faster delivery ofsoftware;

    Trust Developing techniques that demonstrate that software

    can be trusted by its users.

  • 7/31/2019 Lecture 1- Intro to SE

    28/29

    Key points Software engineering is an engineering

    discipline that is concerned with all aspects of

    software production. Software products consist of developed

    programs and associated documentation.Essential product attributes are maintainability,

    dependability, efficiency and usability.

  • 7/31/2019 Lecture 1- Intro to SE

    29/29

    Continue..

    The software process consists of activities thatare involved in developing software products.Basic activities are software specification,development, validation and evolution.

    Methods are organised ways of producingsoftware. They include suggestions for theprocess to be followed, the notations to be used,rules governing the system descriptions whichare produced and design guidelines.