Top Banner

of 18

2.SommerVilleCh01

Apr 14, 2018

Download

Documents

Ahmed Saleh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/28/2019 2.SommerVilleCh01

    1/18

    Introduction to Software Engineering Kamran Sartipi

    Programming is part ofSoftware Design & Engineering

    These slides introduce software engineering andexplain its importance in dealing with largesoftware systems.

    Provide answers to key questions about softwaredesign and development as part of software

    engineering discipline.

  • 7/28/2019 2.SommerVilleCh01

    2/18

    Introduction to Software Engineering Kamran Sartipi

    Software systems

    The impact of software systems on modern society andtechnology for 50 years. Process automation: automobile industry; refinery; software

    product family for electronic devices; telephony and switching

    systems Equipment control: embedded systems in different electronic

    devices such as home appliances; automobile control gadgets Scientific problems: differential equations; matrix operations;

    model checking; searching algorithms; information system

    manipulation Entertainment industry: gaming; graphics; movies; music Education and office management: distance education; word

    processors; databases; spreadsheets; slide presenters

  • 7/28/2019 2.SommerVilleCh01

    3/18

    Introduction to Software Engineering Kamran Sartipi

    Software systems

    Example of very large software systems Flight simulators; medical and imaging applications; air-traffic

    control; banking; telecommunications; etc. These systems are written in more than 500 different languages. Billions of lines of source code are written for mission critical

    software systems worldwide.

  • 7/28/2019 2.SommerVilleCh01

    4/18

    Introduction to Software Engineering Kamran Sartipi

    Software engineering to solve

    software crisis

    Software crisis refers to the current state of softwaretechnology in dealing with development and maintenanceof large and complex software systems. Instances are:

    For every 8 large projects, 2 are cancelled. Most projects exceed their time-schedule by 50%. 75% of large software systems malfunction after completion. Detecting and correcting errors take 50% of time and effort. Maintenance cost of a system is 60% of entire cost. An example: baggage-handling system at Denver international airport

    4000 telecars, 5000 electric-eyes, 400 radio receivers, 100 computers, cost $193million

    Software engineering tackles the software crisis by providingdisciplined processes and methodologies to design,implement, and maintain large systems.

  • 7/28/2019 2.SommerVilleCh01

    5/18

    Introduction to Software Engineering Kamran Sartipi

    Software engineering key questions

    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/28/2019 2.SommerVilleCh01

    6/18

    Introduction to Software Engineering Kamran Sartipi

    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 software

    engineering?

  • 7/28/2019 2.SommerVilleCh01

    7/18

    Introduction to Software Engineering Kamran Sartipi

    What is software?

    Computer programs and associateddocumentation: SRS, SDS, Technical manual, User manual, Source code,

    Binary files, Build files, Versions Tool provided documents: Reverse Engineering aspects,

    Tracing code to requirement Software products may be

    Generic - developed to be sold to a range of different customers Customized - developed for a single customer according to their

    specification

  • 7/28/2019 2.SommerVilleCh01

    8/18

    Introduction to Software Engineering Kamran Sartipi

    What is software engineering?

    Multi-person construction of multi-versionsoftware [Parnas 1978]

    Software engineering is an engineering discipline whichis concerned with all aspects of software production

    Software engineers should adopt a systematic andorganised approach to their work and use appropriate

    tools and techniques depending on the problem to besolved, the development constraints and the resourcesavailable

  • 7/28/2019 2.SommerVilleCh01

    9/18

    Introduction to Software Engineering Kamran Sartipi

    Professional Responsibilities ofSoftware Engineers

    Accept individual responsibility Solve the real problem Be honest about capabilities and competence Produce reviewable designs Consider maintainability of product Respect to confidentiality of the clients Knowledge of IP rights for patents, copyright, etc. No computer miss-use by e.g., computer games;

    spreading computer viruses P.Eng. Applicants write Ethics and Law Exams

  • 7/28/2019 2.SommerVilleCh01

    10/18

    Introduction to Software Engineering Kamran Sartipi

    What is the difference between softwareengineering and computer science?

    Computer science is concerned with theory andfundamentals; software engineering is concernedwith the practicalities of developing and

    delivering useful software Computer science theories are currently

    insufficient to act as a complete underpinning for

    software engineering

  • 7/28/2019 2.SommerVilleCh01

    11/18

    Introduction to Software Engineering Kamran Sartipi

    What is the difference between softwareengineering and system engineering?

    System engineering is concerned with all aspectsof computer-based systems developmentincluding hardware, software and process

    engineering. Software engineering is part of thisprocess

    System engineers are involved in systemspecification, architectural design, integration and

    deployment

  • 7/28/2019 2.SommerVilleCh01

    12/18

    Introduction to Software Engineering Kamran Sartipi

    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/28/2019 2.SommerVilleCh01

    13/18

    Introduction to Software Engineering Kamran Sartipi

    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 Evolutionary development Formal transformation Integration from reusable components

  • 7/28/2019 2.SommerVilleCh01

    14/18

    Introduction to Software Engineering Kamran Sartipi

    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 beingdeveloped and the requirements of system

    attributes such as performance and system

    reliability Distribution of costs depends on the development

    model that is used

  • 7/28/2019 2.SommerVilleCh01

    15/18

    Introduction to Software Engineering Kamran Sartipi

    What are software engineering methods?

    Structured approaches to software development whichinclude system models, notations, rules, design advice andprocess guidance

    Model descriptions Descriptions of graphical models which should be produced

    Rules Constraints applied to system models

    Recommendations Advice on good design practice

    Process guidance What activities to follow

  • 7/28/2019 2.SommerVilleCh01

    16/18

    Introduction to Software Engineering Kamran Sartipi

    What is CASE (Computer-AidedSoftware Engineering)

    Software systems which are intended to provideautomated support for software process activities.CASE systems are often used for method support

    Upper-CASE Tools to support the early process activities of requirements and

    design Lower-CASE

    Tools to support later activities such as programming,debugging and testing

  • 7/28/2019 2.SommerVilleCh01

    17/18

    Introduction to Software Engineering Kamran Sartipi

    What are the attributes of good software?

    The software should deliver the required functionality andperformance to the user and should be maintainable,dependable and usable

    Maintainability Software must evolve to meet changing needs

    Dependability Software must be trustworthy

    Efficiency Software should not make wasteful use of system resources

    Usability Software must be usable by the users for which it was designed

  • 7/28/2019 2.SommerVilleCh01

    18/18

    Introduction to Software Engineering Kamran Sartipi

    What are the key challenges facingsoftware engineering?

    Coping with legacy systems, coping withincreasing diversity and coping with demands forreduced delivery times Legacy systems

    Old, valuable systems must be maintained and updated Heterogeneity

    Systems are distributed and include a mix of hardware and software Delivery

    There is increasing pressure for faster delivery of software