Title: ICS 52: Introduction to Software Engineering
1ICS 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.
2Todays Lecture
- Administrative details
- Introduce software engineering and to explain its
importance
3Who Is Who?
- Instructor
- Michele Rousseau (michele_at_ics.uci.edu)
- Office hrs. (ICS2 - 227) TBA
- for the first week by appointment
- Teaching assistants
- Girish Suryanarayana(gsuryana_at_uci.edu)
4Course Materials
- Required textbook
- Sommerville
- Software Engineering
- Recommended textbooks
- Brooks, F.
- The Mythical Man-Month
- Schach
- Classical and Object-Oriented Software
Engineering - Horstmann, Cornell
- Core Java 2, Volume 1 Fundamentals
5Add/Drop Policy
- Second week of classes
- Deadline to add
- Second week of classes
- Deadline to drop
6How 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
7Help each other but dont 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 friends help may be cheating
8Assignments (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
9Assignments (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
10Grading
- 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
11Exceptions
- 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, didnt know it was due
today, my computer crashed, couldnt find
parking, etc.
12Questions
- 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 dont leave your questions to the day before
an assignment is due
13Miscellaneous
- 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
14Focus
- Your detailed knowledge and understanding of the
concepts employed in software engineering - Your ability to practice software engineering
15Assignment and grading
Project Special Requirements Design Implementation Testing 50 3 15 12 10 10
Midterm 20
Final 30
16What is software?
- Computer programs and associated documentation
- Software products may be developed for a
particular customer or may be developed for a
general market
17What 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 users needs.
Furthermore, the software must be easy to modify
when the users needs change. Schach - Software engineering is concerned with theories,
methods and tools for professional software
development Sommerville
18What 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
19Why Software Engineering?
- To reduce the Software Crisis (Brooks)
- Late
- Over Budget
- Wrong product
- To reduce Costs and increase quality
20Software 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
21Software 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.
22Software Engineering is like Architecture
- Architecture Requirements, sketch, blueprints,
construction - Strengths of analogy
- Phasing of activities, intermediate products
- User input and review, mostly for reqs 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
23Software 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
24Software Engineering is not programming
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
25Differences 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
26The five Ps 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
27From 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
28People
- 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
29Processes
- 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
30Tools
- 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
31Product
- 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
32People, 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
33Choose the Right Solution
Hawaii
Tijuana
Europe
34Matters of Scale
- Choose appropriate technique for problem
- elephant gun to kill a fly?
- fly-swatter to ward off an elephant?
35What 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
36Components 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
37Your First Tasks
- Be proficient in Java 1.4
- Be familiar with Microsoft tools
- Microsoft Word, PowerPoint
- Read and study slides of this lecture
- Read and study Chapters 1 3 of Sommerville
No discussion until announced in class