ECE 355 Software Engineering Instructor Kostas Kontogiannis 1 Welcome • Welcome to the Software Engineering course • Demanding, challenging and, rewarding course • A glimpse of what software engineering in industry is all about 2 How to reach me • Kostas Kontogiannis – – – – Web: www.swen.uwaterloo.ca/~kostas E-mail: kostas@swen.uwaterloo.ca Tel. (xt. 2840) Office hours: • Monday 16:00 – 17:00 • DC 2539 3 ECE 355: Software Engineering CHAPTER 1 Unit 1 4 Outline for today Introduction • Course description • Software engineering basics 5 Course components • 4 lectures – Section 2 RCH 302 • 10:30-11:20 T, • 9:30-11:20 Th – Section 1 RCH 101, RCH 103 • 15:30 – 16:20 T, • 14:30-16:20 Th • 6 tutorials – T, Th, F • 1 project 6 Course website • • • • • • • • http://www.swen.uwaterloo.ca/~kostas/ECE355-05/ schedule lecture notes & slides recommended book – Object Oriented Software Engineering Using UML, Patterns and Java, 2nd edition B. Bruegge, A. Dutoit © 2004 Prentice Hall assignments & solutions and a sample final exam project description grade allocation course news system 7 Project component • Design and implement software for an IP Telephony application • Groups of 4 (after class request) • 25% of total grade • Three parts: – Requirements – Design – Implementation 8 Goals of this course • Become familiar with software engineering concepts • Learn how to perform analysis, design and basic project management tasks using examples • Experience software engineering in a larger project that uses several components Note: – “Scratching the surface of software engineering” – “Fitting you to become an amateur software engineer” 9 Course outline Unit 1: Software Engineering Basics - Chapter 1 • Unit 2: Process Models and Software Life Cycle - Chapter 1 • Unit 3: Software Requirements - Chapter 4 • Unit 4: Unified Modeling Language (UML) - Chapter 2 • Unit 5: Design Basics and Software Architecture - Chapter 6 • Unit 6: OO Analysis and Design - Chapter 5 & 7 & 9 • Unit 7: Design Patterns - Chapter 8 & 10 • Unit 8: Testing and Reliability - Chapter 11 • Unit 9: Software Engineering Management and Economics Chapter 3 & 14 10 What to do by Friday • Visit the Web site • Go to the Project section – Complete Part I • Administration – Complete Part II • Preparation – Task 1 Use of SIP Clients – Task 2 Startup Eclipse (subtask 2.1) 11 Outline for today • Introduction • Course description Software engineering basics 12 Software Engineering: A Problem Solving Activity • Analysis: Understand the nature of the problem and break the problem into pieces • Synthesis: Put the pieces together into a large structure For problem solving we use • Techniques (methods): – Formal procedures for producing results using some well-defined notation • Methodologies: – Collection of techniques applied across software development and unified by a philosophical approach • Tools: – Instrument or automated systems to accomplish a technique 13 Software Engineering Software Engineering is a collection of techniques, methodologies and tools that help with the production of: • • • • a high quality software system with a given budget before a given deadline while change occurs. 14 20 Scientist vs Engineer • Computer Scientist – Proves theorems about algorithms, designs languages, defines knowledge representation schemes – Has infinite time… • Engineer – Develops a solution for an application-specific problem for a client – Uses computers & languages, tools, techniques and methods • Software Engineer – Works in multiple application domains – Has only 3 months... – …while changes occurs in requirements and available technology 16 Science, Engineering, Management, Human Factors • Science: empirical studies; theories characterizing aggregate system behavior (e.g. reliability) • Management: organizing teams, directing activities, correcting problems • Human factors: user task understanding and modeling; ergonomics in user interface design • Engineering: tradeoffs, canonical solutions to typical problems – Tradeoffs and representative qualities • Pick any two: – Good, fast, cheap – Scalability, functionality, performance 17 Source: Lecture Notes by Richard Taylor Software Engineering: Definition • The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. [IEEE Standard 610.12] 18 Differences from Programming • Software engineering includes, e.g.: – determining what to build – organizing teams to cooperatively build systems; – analysis and testing – lifecycle system engineering – software architecture 19 Source: Lecture Notes by Richard Taylor 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 Programming Engineering 20 Source: Lecture Notes by Richard Taylor Prepare to be surprised... • Software engineers deal with a very broad range of projects, kinds of systems, organizational settings, scale, criticality, domain expertise, etc. • Think of the following examples – Embedded software controlling • • • • nuclear power plant airplane automobile telecom network – Information system of large corporations – Standard operating and systems software – Shrink-wrap office software 21 Software Lifecycle • • • • • • • • Requirements phase Analysis phase Design phase (System and Object) Implementation phase Testing phase Integration phase Maintenance phase Retirement 22 Software Lifecycle Activities ...and their models Requirements Elicitation Analysis Expressed in Terms Of System Design Structured By Object Design Implementation Implemented By Realized By Verified By class... class... class... Use Case Model Application Subsystems Domain Objects Testing Solution Domain Objects Source Code ? class.... ? Test Cases 23 Product and Process • Which is the more important corporate asset: products or development processes? – Products: the only thing that brings in revenue – Process: the only thing you retain • The asset that distinguishes you from your competitor en route to a product • The asset that gets you to your next product • The asset that determines key properties of your products 24 Source: Lecture Notes by Richard Taylor The order of things... • Better to think of the phases as activities that could occur – in parallel – in different orders • The order depends on – particular development process and method used and – the project context 25 Average cost distribution (1976–1981 data) Object-Oriented and Classical Software Engineer 5th Edition, Schach (2002) 26