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.
Topic 1 2
Today’s Lecture
Administrative details Introduce software engineering and to
explain its importance
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])
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
Topic 1 5
Add/Drop Policy
Second week of classes– Deadline to add
Second week of classes– Deadline to drop
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
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
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
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
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
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.
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
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
Topic 1 14
Focus
– Your detailed knowledge and understanding of the concepts employed in software engineering
– Your ability to practice software engineering
Topic 1 15
Assignment and grading
ProjectSpecialRequirementsDesignImplementationTesting
50%3%15%12%10%10%
Midterm 20%
Final 30%
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
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]
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
Topic 1 19
Why Software Engineering?
To reduce the Software Crisis (Brooks)– Late– Over Budget– Wrong product
To reduce Costs and increase quality
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
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.
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
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
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
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
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
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
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
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
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
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
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
Topic 1 33
Choose the Right Solution
Tijuana
Europe
Hawaii
Topic 1 34
Matters of Scale
Choose appropriate technique for problem–elephant gun to kill a fly?–fly-swatter to ward off an elephant?
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
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
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