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