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