Ch.1 1 Software Engineering A Preview Chapter 1
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
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.
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
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
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)
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
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
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
Ch.1 10 The software lifecycle (a preview) waterfall model
Ch.1 11 Relationships between SE and other CS disciplines Programming languages Operating systems Data bases Artificial intelligence Theory Management science Systems engineering Others
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
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”
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.
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.
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.
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
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.
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!
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 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)
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
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
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
Ch.1 24 Average cost of software Object-Oriented and Classical Software Engineer 5th Edition, Schach (2002)