Lect.1 - Software Engineering Laboratory

advertisement
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
Download