Title: CPSC 333 SENG 311: Foundations of Software Engineering
1CPSC 333 / SENG 311 Foundations of Software
Engineering
Instructors Dr. Rose Joshua, ICT
548 joshuar_at_cpsc.ucalgary.ca Office Hours MTW
12-1pm Dr. Rob Walker, ICT 546 rwalker_at_cpsc.ucalg
ary.ca Office Hours WF 1-2pm
2Contents / Reading List
- Organizational stuff
- Why software engineering?
- What is software engineering?
- Read Pressman, Chapter 1
3General Information
- Labs start on Mon/Tue, Sept. 15, 2003.
Participation in the first lab is absolutely
required
4Course information
- http//sern.ucalgary.ca/Courses/CPSC/333/ f03/ind
ex.html - Slides will be available after each class
- Newsgroup cpsc.courses.cpsc333
- Use your news reader to subscribe (e.g. Netscape)
- information will be distributed via the mailing
list (e.g. hints for assignments, corrections
etc.)
5Textbooks
- See your Course Info Sheet
- Pressman Software Engineering A Practitioners
Approach, 2001 (5th. Edition). - Beck Fowler Planning Extreme Programming,
2000. - Fowler Scott UML Distilled, 1999.
- Beck Extreme Programming Explained, 1999.
6Assessment
- Lab
- Individual Assignments 9
- Group Assignments 31
- Exams
- Mid-Term Exam 20 Friday, Oct. 17th, 6pm, ST
140 - Final exam 40
- Both components must be passed in order to pass
the course.
7Assignments
- Team project
- Teams of 6 8 members
- Every team will develop their own system.
- The overall assignment will be split into three
iterations that will be marked individually - Individual Assignments TBA
- No late submissions will be accepted. Late
submissions will earn ZERO for the entire group
affected.
8Goal of the team assignment
- Learning to develop a modular software system
within a team following an object-oriented
methodology - we will use the Java Development Kit and Swing
for group assignments - Getting a feeling for the (management) problems
in software development - Software development is not just coding. A lot
of planning and resource management goes into the
creation of any reasonably-sized software
product. - Getting an idea of your own productivity
- Individuals must contribute positively to their
group work
9Team assignment
- The software should be developed following basic
software engineering principles - processes code, test, design, review
- products story cards, test cases, test results,
design documents, source code, review results,
and productivity metrics
10Contents
- Organizational stuff
- Why software engineering?
- What is software engineering?
11What is Software?
- (Ideally) a structured collection of well
documented and packaged series of instructions on
data, that deliver computing power for driving
practical processes and applications - Application areas? Practically every walk of
life health, education, transportation,
government, military, , including driving
hardware devices like cell phones, microwave
ovens, etc.
12Characteristics of Software
- Developed in an evolving process during which
all pieces are put together - Is therefore easier to modify than hardware,
without upsetting the use of the entire system - Doesnt wear out in the same manner as hardware
- Could however be difficult to maintain, esp. in
the presence of several defects
13Characteristics of Software
- Big RESPONSIBILITY for developers
- Consider lives at stake in hospital applications,
for example - or more lives in the aviation industry
- billions of dollars of investment
- Could be reused
- Strive for writing reusable modules
- components-based assembly
14Why Software Engineering?
- ...to get away from ad hoc and unpredictable
software development towards a systematic,
understood one... - to provide an efficient process for creating
high-quality programs
15Characteristics of todays software development
- Development of large complex systems
- Software systems must fulfill the requirements of
a client - Number of persons involved in the development gt
1 - Software systems are expected to live long and be
used by many people
16What are the problems?
- Increased quality demands on software products
- Inefficient defect detection / error recovery
- High cost and time pressure
- Shorter time to market
- Coordination problems within the projects
- Scarce resources
- These problems are chronic in that they have
lasted for so long. These problems are caused by
an interplay of misconceptions by management,
customers, and developers alike
17Management myths
- State-of-the-art tools are the solution
- A fool with a tool is still a fool. Tools are
often not used effectively - Getting behind schedule resolved by hiring
additional programmers - adding people to a late software project makes
it later, mostly due to training needs and
learning curves
18(No Transcript)
19Customer myths
- A general statement of objectives is sufficient
to begin writing programs - we can fill in
details later. - Thorough communication between customer and
developer needed - Changes can be easily accommodated because
software is flexible - changes happen as a fact of life
- late changes are expensive
20Practitioners myths
- Once we write a program and get it to work, our
job is done - 60-80 of all effort after first delivery to
customer - Until I get the program running, I really have
no way in assessing its quality - inspections reviews
- The only deliverable for a successful project is
the working program - documentation (users, maintenance) guide for
future work, and good engineering discipline.
21The software crisis and a solution approach
- 1968 NATO conference in Garmisch-Partenkirchen
- software crisis (to characterize the situation)
- software engineering (idea for a solution)
22Why still Software Engineering?
- Has the software crisis vanished?
- No!
- Software projects still run over time and out of
budget - no break-through in quality !!!still an art
rather than engineering discipline
23Practical disasters
- Y2K Lessons learned?
- European Space Agency Ariane 5
- Track control system failure results in self
destruction - NASA 1999
- Incorrect conversion from imperial?metric leads
to loss of Mars satellite - Denver Airport
- Late delivery of software for the baggage system
delays the opening of the airport by 16 months - US study (1995) 81 billion US spend per year
for failing software development projects
24Why is software still delivered late?
- Unrealistic deadlines forced from the outside
- Unfocused development too many unnecessary
features, just in case - Changed requirements not reflected in schedule
- Underestimation of effort
- Risks not considered
- Unforeseen technical human difficulties
- Miscommunication among project staff
- Management fails to see that the project falls
behind schedule
25What can you do against unrealistic deadlines?
- You cannot change them
- You cannot refuse to do the work
- Perform detailed estimate
- Try to use incremental model
- define critical functionality
- postpone other functionality to later phases
- pair programming
- continuous integration
- Explain to the customer why you are not able to
meet the deadline (using estimates based on the
performance of past projects)
26Contents
- Organizational stuff
- Why software engineering?
- What is software engineering?
27Definition Software Engineering
- Software Engineering IEEE-93
- The application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance of software that is,
the application of engineering to software. - The study of approaches as in (1)
28Three Ps
People
Processes
Products
29People, processes, products
- Processes
- planning
- testing
- estimating
- coordination
- management
- measuring
- designing
- coding
- pair programming
- continuous integration
- multiple iterations
-
- Products
- stories
- test cases
- test results
- source code
- executable
- user documentation
- change request
- ....
- People
- education
- skills
- communication
- style
- .....
30Summary
- Software engineering is the engineering-like
development of a software system as the solution
to an users problem applying the right
techniques / methods / tools - Software engineering is necessary for developing
reliable complex software - Software engineering techniques help to develop
software in large teams
31Were Available!
- Questions?
- if you have any questions about contents of this
lecture or other course-related issues, please
come by during our office hours, or send us email - Dr. Joshua MTW, 12-1pm, ICT 548
- joshuar_at_cpsc.ucalgary.ca
- Dr. Walker WF, 1-2pm, ICT 546
- rwalker_at_cpsc.ucalgary.ca