ics 52: introduction to software engineering lecture notes for summer quarter, 2003 michele rousseau...

37
ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by Ian Sommerville, Richard N. Taylor, André van der Hoek, Dan Frost & Doris Tonne. Duplication of course material for any commercial purpose without the written permission of the lecturers is prohibited.

Post on 21-Dec-2015

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

ICS 52: Introduction to Software Engineering

Lecture Notes for Summer Quarter, 2003Michele RousseauSet 1

Partially based on lecture notes written by Ian Sommerville, Richard N. Taylor, André van der Hoek, Dan Frost & Doris Tonne. Duplication of course material for any commercial purpose without the written permission of the lecturers is prohibited.

Page 2: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 2

Today’s Lecture

Administrative details Introduce software engineering and to

explain its importance

Page 3: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 3

Who Is Who? Instructor

– Michele Rousseau ([email protected])– Office hrs. (ICS2 - 227): TBA –

for the first week by appointment Teaching assistants

– Girish Suryanarayana([email protected])

Page 4: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 4

Course Materials Required textbook

– SommervilleSoftware Engineering

Recommended textbooks– Brooks, F.

The Mythical Man-Month– Schach

Classical and Object-Oriented Software Engineering– Horstmann, Cornell

Core Java 2, Volume 1: Fundamentals

Page 5: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 5

Add/Drop Policy

Second week of classes– Deadline to add

Second week of classes– Deadline to drop

Page 6: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 6

How to be successful in ICS 52 Attend class

– Much is covered that is not in the textbook• Material is core part of the exams• What is said in class supercedes all else

– Official place for announcements Visit course Web site on a regular basis

– Assignments– Copy of announcements

Read e-mail frequently Use discussion section and office hours Ask questions

Page 7: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 7

Help each other but don’t share work

You cheat, you fail!– Final grade is “F”, irrespective of partial grades– Project, midterm, final

To avoid being a cheater– Always do your work by yourself– Do not borrow work– Do not lend work

• Do not put your work on the Web– Use good Judgment

Your TA is your friend, but your friend is not your TA– Your friend’s help may be cheating

Page 8: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 8

Assignments (1)

If a deadline is on a class day it is due 1 hour before class starts

Turn in to distribution center before class Hand in on time

– You do get sufficient time• Course is six credits

– Do not wait until the last minute• Assignments take time• Printers break, paper runs out• You are not the only one

No late assignments

Page 9: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 9

Assignments (2)

Package properly– Every assignment…

• …lists your student ID• …lists your name• …has a cover page with class title and assignment #• …is properly stapled

– No handwriting– Floppies (when needed) are properly attached– Failure results in loss of points

Do no more and do no less

Page 10: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 10

Grading

Performed by TA Might be double-checked by Me Disagreements

– Resolve with TA first, then with professor– The “points-game” does not work

• TA and professor have limited time• TAs are human too• Double check before you bring it in

Always check your (partial) grades

Page 11: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 11

Exceptions

Only granted by professor– Contact the professor as soon as possible

Valid reasons– Serious illness, accident, family emergency, etc.

Not-so-valid reasons– “No ink in my printer”, “didn’t know it was due

today”, “my computer crashed”, “couldn’t find parking”, etc.

Page 12: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 12

Questions

When in doubt– Ask the TA– Ask the professor

• Open door policy

E-mail questions Questions will generally be answered

within 24 hours (except weekends)– So don’t leave your questions to the day

before an assignment is due

Page 13: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 13

Miscellaneous

ICS 52 mimics the real-world– Package your homework properly– Use proper language and proper form

You get out of ICS 52 what you put into it– Class is intense, you need to participate from the

beginning – playing “catch up” is not recommended– Attend discussion section (when it is being held)– Follow instructions– Read and study the textbook and slides– Help is available, do not be afraid to ask questions

Page 14: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 14

Focus

– Your detailed knowledge and understanding of the concepts employed in software engineering

– Your ability to practice software engineering

Page 15: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 15

Assignment and grading

ProjectSpecialRequirementsDesignImplementationTesting

50%3%15%12%10%10%

Midterm 20%

Final 30%

Page 16: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 16

What is software?

Computer programs and associated documentation

Software products may be developed for a particular customer or may be developed for a general market

Page 17: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 17

What is Software Engineering? “A discipline that deals with the building of software

systems which are so large that they are built by a team or teams of engineers.” [Ghezzi, Jazayeri, Mandrioli]

“Multi-person construction of multi-version software.” [Parnas]

A discipline whose aim is the production of fault-free software, delivered on-time and within budget, that satisfies the user’s needs. Furthermore, the software must be easy to modify when the user’s needs change.” [Schach]

Software engineering is concerned with theories, methods and tools for professional software development [Sommerville]

Page 18: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 18

What is Software Engineering? (2)

Software engineering is an engineering discipline which is concerned with all aspects of software production

Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available

Page 19: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 19

Why Software Engineering?

To reduce the Software Crisis (Brooks)– Late– Over Budget– Wrong product

To reduce Costs and increase quality

Page 20: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 20

Software Costs

Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost

Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs

Page 21: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 21

Software Engineering is like…

Throwing a party. Building a house or building. Getting married. Writing a textbook. Creating laws. Any complex project involving

many people and multiple phases.

Page 22: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 22

Software Engineering is like Architecture Architecture: Requirements, sketch, blueprints,

construction Strengths of analogy:

– Phasing of activities, intermediate products– User input and review, mostly for req’s and sketch– User only minimally involved in construction

Weaknesses of analogy:– Lots of domain knowledge on the part of the consumer– 10,000 years of know-how– Progress easily measurable

Page 23: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 23

Software Engineering is like Legislation Legislation: Commission, committee, congress,

bureaucracy Strengths of analogy:

– Intangible product–Unforeseen consequences–Difficult to measure progress–Laws get "patched"– Importance of careful reviews highlighted

Weakness of analogy: –Difficult to test laws–Legislation not executed predictably

Page 24: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 24

Software Engineering is not programming

Programming Engineering

Small projectYouBuild what you wantOne productFew sequential changesShort-livedCheapSmall consequences

Huge projectTeams

Build what they wantFamily of products

Many parallel changesLong-lived

CostlyLarge consequences

Page 25: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 25

Differences from Programming

Software Engineering includes–determining what to build–eliciting requirements from user(s)–organizing teams to build systems

cooperatively–designing a software architecture–analysis and design of modules–testing–lifecycle system engineering–writing documentation

Page 26: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 26

The five P’s of Software Engineering

People - who develop, manage, and run the software

Product - the software itself Project - the activity of creating the

software Process - the manner in which the

project proceeds Professionalism - the attitude of all

involved

Page 27: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 27

From Programming to Engineering People

– Who else would do the work?– Range from novice to very experienced

Processes– To organize and manage the efforts of individuals– Range from informal to very formal

Tools– To support the people and the processes– Range from simple to very advanced

People + Processes + Tools Product

Page 28: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 28

People

The single most important factor in the success/failure of a product

Scarce resource– Quality– Suitability– Cost

Many different kinds of people– Managers– Programmers– Technical writers

Page 29: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 29

Processes

Essential to achieve a quality product (Time is a) scarce resource

– Quality– Suitability– Cost

Many different kinds of processes– Bug tracking– Change approval– Quality assurance

Focus of ICS 52

Page 30: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 30

Tools

Needed to support people and processes Scarce resource

– Quality– Suitability– Cost

Many different kinds of tools– Drawing– Analysis– Project management– Source code management

people support

process support

Page 31: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 31

Result of applying people, processes, and tools

Consists of many deliverables– Software– Documentation – User manuals– Test cases– Design documents

Intrinsic qualities– Safety– Reliability– User friendliness

Product

Page 32: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 32

People, Processes, Tools, Products

Products are always the eventual goal– Selling products creates revenue– Selling good products creates lots of revenue– Selling bad products creates little revenue

People, processes, and tools are retained by organization– Build a reputation through the quality of products– Create organizational culture– Important to keep the team intact

People + Processes + Tools Product

Page 33: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 33

Choose the Right Solution

Tijuana

Europe

Hawaii

Page 34: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 34

Matters of Scale

Choose appropriate technique for problem–elephant gun to kill a fly?–fly-swatter to ward off an elephant?

Page 35: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 35

What Makes It Engineering?

Project plans– Teams are assembled– Processes are designed– Tools are purchased– Goals are established– Difficulties are anticipated

Tradeoffs– Limited resources

Repetition– Same basic principles hold in many different settings

Page 36: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 36

Components of Software Engineering Science: empirical studies; theories characterizing

aggregate system behavior (e.g. reliability) Management: organizing teams, directing activities,

correcting problems Human factors / psychology: user task

understanding and modeling; ergonomics in user interface design

Engineering: tradeoffs, canonical solutions to typical problems, skill and art– A common quip: “pick any two:”

• Good, soon, cheap• Scalability, functionality, performance

Page 37: ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by

Topic 1 37

Your First Tasks

1. Be proficient in Java 1.4

2. Be familiar with Microsoft tools– Microsoft Word, PowerPoint

3. Read and study slides of this lecture

4. Read and study Chapters 1 – 3 of Sommerville

No discussion until announced in class