1 / 24

Software Engineering

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.

Download Presentation

Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering A Preview Chapter 1 Ch.1

  2. Outline • My Background • Definitions of software engineering (SE) • Historical origins ofSE • 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. 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) 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) Ch.1

More Related