software engineering
DESCRIPTION
Software Engineering. A Preview Chapter 1. Outline. My Background Definitions of s oftware engineering (SE) Historical origins of SE SE as p art of systems engineering SE consists of many activities in addition to programming SE and other disciplines. My Background. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/1.jpg)
Ch.1 1
Software Engineering
A Preview
Chapter 1
![Page 2: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/2.jpg)
Ch.1 2
Outline• My Background
• Definitions of software engineering (SE)
• Historical origins of SE
• SE as part of systems engineering
• SE consists of many activities in addition to programming
• SE and other disciplines
![Page 3: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/3.jpg)
Ch.1 3
My Background• BSc in computer science from Ontario
• MSc and PhD in computer science at UofR
• Research specializing in machine learning and game theory
• Avid programmer. First language was Basic in 1989, last was C# 8 months ago .
![Page 4: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/4.jpg)
Ch.1 4
Industry Experience– Government of Ontario
(Web developer)
– IBM Canada (lead developer of e-commerce site)
– Dundee Securities (network security analyst)
– Sask. Watershed Authority (team lead)
– UofR (programmer analyst I, II)
– Numerous lab teaching and lecturing appointments
![Page 5: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/5.jpg)
Ch.1 5
Definitions• The application of engineering to software• Field of computer science dealing with
software systems– large and complex– built by teams– exist in many versions– last many years– undergo changes
![Page 6: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/6.jpg)
Ch.1 6
Definitions• Application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of software (IEEE 1990)
• Multi-person construction of multi-version software (Parnas 1978)
![Page 7: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/7.jpg)
Ch.1 7
Role of SE in system design• SE part of larger projects
• Embedded– Software requirements to be balanced against
others• e.g., telephone switching systems
– certain requirements can only be met by hw, sw, and special devices
![Page 8: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/8.jpg)
Ch.1 8
History• The field of software engineering was born
in 1968 in response to chronic failures of large software projects to meet schedule and budget constraints – Recognition of "the software crisis"
• Term became popular after NATO Conference in Garmisch Partenkirchen (Germany), 1968
![Page 9: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/9.jpg)
Ch.1 9
Role of software engineer• Programming skill not enough• Software engineering involves "programming-in-
the –large"– understand requirements and write specifications
• derive models and reason about them
– master software – operate at various abstraction levels– member of a team
• communication skills• management skills
![Page 10: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/10.jpg)
Ch.1 10
The software lifecycle (a preview)
Requirements analysis and specification
Design and specification
Code and module testing
Integration and system testing
Delivery and maintenance
waterfall model
![Page 11: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/11.jpg)
Ch.1 11
Relationships between SE and other CS disciplines• Programming languages
• Operating systems
• Data bases
• Artificial intelligence
• Theory
• Management science
• Systems engineering
• Others
![Page 12: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/12.jpg)
Ch.1 12
Programming• Languages are the central tools used in
software development.
• Modularity:– Separation of implementation and specification
• Java and packages
• Exception handling:– Engineer support for error checking
![Page 13: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/13.jpg)
Ch.1 13
Operating Systems• The first large software systems built.
• Concepts developed in OS are applicable to many large-scale software systems:– Virtual machines, abstraction, separation of
policy from mechanism:• Separate the “what” from the “how”
![Page 14: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/14.jpg)
Ch.1 14
Databases• Concept of data independence:
– Another ex. of separation of specification and implementation.
• Many innovations in database technology were required with the design of large-scale software systems:– Storing large structured or unstructured objects.– Transaction lengths.
![Page 15: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/15.jpg)
Ch.1 15
Artificial Intelligence• Many are large-scale software systems.• Necessity of “exploratory development”
since many of them were vague on how they worked.
• SE techniques used in expert systems, a modularized system with clear separation between facts known and rules used to process facts.– Programming assistants.
![Page 16: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/16.jpg)
Ch.1 16
Theoretical Models• Many models have been developed that
have become useful tools in SE:– Finite State Machines
• Basis of software specifications and a model for software design and structure.
– Petri Nets• Originally used to model hardware, but have been
adopted to model software.
![Page 17: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/17.jpg)
Ch.1 17
Topics covered in this course• Part I: SE Overview
– SE Introduction– Software Qualities and Principles– Software Design and Architecture
• Part II: Specification & Testing– Operational and Descriptive specifications
• Part III: Software Production Process– Activities and models
![Page 18: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/18.jpg)
Ch.1 18
Group project• Comprehensive project that covers major
deliverables and duties of a real developer team.
• Groups of 4 should be decided by the end of the week.
• All members of team receive same project mark
• Tip: Pick a well-rounded group of writers, testers, and developers.
![Page 19: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/19.jpg)
Ch.1 19
Group project• Each group will meet with me at least once
midway through to discuss project.
• I will provide a list of available projects, but I’m also open to ones not on a list if I think they are viable.
• REMEMBER: You have 6.5 weeks to finish it, starting now!
![Page 20: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/20.jpg)
Ch.1 20
CHAOS Report by Standish Group for 1995
• Standish Group studied 3682 projects in 365 companies in 1995
• Huge investment in software development– US $250 billion spent each year on IT
development of c. 175 000 projects in the US (1995 estimates)
• Huge losses– US $81 billion spent on cancelled projects and
additional $59 billion on time overruns by US companies and government (1995estimates)
![Page 21: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/21.jpg)
Ch.1 21
• Project success rate– Success 16.2%– Challenged (either late or over budget) 52.7%– Impaired (cancelled) 31.1%
• Average cost overrun of original estimate was 189%
• Average time overrun of original estimate was 222%
• On average only 61% of originally specified features and functions were available on these projects
![Page 22: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/22.jpg)
Ch.1 22
Challenges of Software Development
• Productivity– Growing demand for new systems and variants
• Complexity– Requirements concerning functionality, efficiency, and
especially connectivity are constantly growing.
• Quality– User expectations of quality are high, and may be life
critical
• Maintenance & Legacy Systems– 20 years or more
![Page 23: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/23.jpg)
Ch.1 23
Programming vs. Software Engineering
• Small project• You• Build what you want• One product• Few sequential changes• Short-lived• Cheap• Small consequences
• Huge project• Teams• Build what they want• Family of products• Many parallel changes• Long-lived• Costly• Large consequences
![Page 24: Software Engineering](https://reader036.vdocuments.site/reader036/viewer/2022081516/5681389e550346895da056d4/html5/thumbnails/24.jpg)
Ch.1 24
Average cost of software
Object-Oriented and Classical Software Engineer 5th Edition, Schach (2002)