Скачать презентацию ECE 355 Software Engineering Instructor Kostas Kontogiannis 1 Скачать презентацию ECE 355 Software Engineering Instructor Kostas Kontogiannis 1

52a45687f05ec50a2031539e635b4e74.ppt

  • Количество слайдов: 25

ECE 355 Software Engineering Instructor Kostas Kontogiannis 1 ECE 355 Software Engineering Instructor Kostas Kontogiannis 1

Welcome • Welcome to the Software Engineering course • Demanding, challenging and, rewarding course 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 – 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 ECE 355: Software Engineering CHAPTER 1 Unit 1 4

Outline for today èIntroduction • Course description • Software engineering basics 5 Outline for today èIntroduction • Course description • Software engineering basics 5

Course components • 4 lectures – Section 2 RCH 302 • 10: 30 -11: 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/ECE 355 -05/ schedule lecture notes Course website • • http: //www. swen. uwaterloo. ca/~kostas/ECE 355 -05/ schedule lecture notes & slides recommended book – Object Oriented Software Engineering Using UML, Patterns and Java, 2 nd 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 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 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 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 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 Outline for today • Introduction • Course description èSoftware engineering basics 12

Software Engineering: A Problem Solving Activity • Analysis: Understand the nature of the problem 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 is a collection of techniques, methodologies and tools that help with the 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 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 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 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 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 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 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 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 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. . . 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 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 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 5 th Edition, Average cost distribution (1976– 1981 data) Object-Oriented and Classical Software Engineer 5 th Edition, Schach (2002) 26