Software engineering

advertisement
ICS 52
Introduction to Software Engineering
Lecture 2
Duplication of course material for any commercial purpose without the explicit written
permission of the professor is prohibited.
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 1
Today’s lecture
• Defining software engineering
• People, processes, tools, and products
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 2
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]
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 3
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]
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 4
Software engineering
• “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]
• “It’s where you get to design big stuff and be creative.”
[Taylor]
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 5
Software engineering
• “Difficult.” [van der Hoek]
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 6
Essential characteristics
•
•
•
•
•
•
•
•
SDCL
Software engineering concerns the development of large programs
The central theme is mastering complexity
Software evolves
The efficiency with which software is developed is of crucial
importance
Regular cooperation between people is an integral part of
programming-in-the-large
The software has to support its users effectively
Software engineering is a field in which members of one culture
create artifacts on behalf of members of another culture
Software engineering is a balancing act
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 7
Programming versus software engineering
Small project
Large to huge project
You
Teams
Build what you want
Build what they want
One product
Family of products
Few sequential changes
Many parallel changes
Short-lived
Long-lived
Cheap
Costly
Small consequences
Large consequences
Programming
SDCL
Software Design and
Collaboration Laboratory
Software engineering
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 8
From programming to software 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
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 9
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
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 10
Processes
• Essential to achieve a quality product
• Scarce resource
– quality
– suitability
– cost
• Many different kinds of processes
– bug tracking
– change approval
– quality assurance
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 11
Tools
• Needed to support people and processes
• Scarce resource
– quality
– suitability
– cost
• Many different kinds of tools
–
–
–
–
SDCL
drawing
analysis
project management
source code management
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 12
Products
• Result of applying people, processes, and tools
• Consist of many deliverables
–
–
–
–
–
software
documentation
user manuals
test cases
design documents
• Have intrinsic qualities
– safety
– reliability
– user friendliness
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 13
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
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 14
Does it always work?
People
Processes
Tools
Product
Good
Good
Good
Good
Good
Good
Good
Bad
Good
Good
Bad
Good
Good
Good
Bad
Bad
Good
Bad
Good
Good
Good
Bad
Good
Bad
Bad
Good
Good
Good
Bad
Good
Good
Bad
Good
Bad
Bad
Good
Good
Bad
Bad
Bad
Bad
Good
Bad
Good
Bad
Good
Bad
Bad
Bad
Bad
Good
Good
Bad
Bad
Good
Bad
Bad
Bad
Bad
Good
Bad
Bad
Bad
Bad
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 15
Choose the right solution
Hawaii
Tijuana
Europe
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 16
Homework
• Read chapter 1, van Vliet
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 17
Download