You are on page 1of 30

Introduction

Introduction to
to Maintenance
Maintenance
and
and Construction
Construction
(Chapter
(Chapter 11 of
of both
both books)
books)
Steve Chenoweth
CSSE 375, Rose-Hulman
(Labor Day )
Based on Don Bagert’s1 2006 Lecture

1
Don Bagert taught this course during its first 3 years, and taught
a similar course at Texas Tech before that. Don is now the CS
Dept Chair at Southeastern Missouri State Univ.
Today
• New instructor – Tori Bowman
• How’d the program analysis go? – turn
in Quiz 0A with program.
• Talk about Open Source sites
• Homework 1 – “Baseline” due Thurs*
• Intro – this +

*Due dates go with 11:55 PM, unless otherwise specified.


+
I.e., this slide presentation, of class PowerPoint! 2
New Instructor – Tori
Bowman
• Tori Bowman is joining the Computer Science and
Software Engineering department as a visiting
faculty member for the 07/08 academic year.
• Tori is a Rose-Hulman alum and has been doing
lots of software engineering and project
management for Rockwell Collins. She brings a
valuable perspective to our programs.
• Tori will be contributing to 375 so as to apply her
skills & knowledge to your learning experience!

3
Intro - this
• Intro to basic maintenance concepts
– Terminology
– Development vs Maintenance
• Intro to software construction
– What is it?
– How maint/evolution and construction relate
• Course outcomes – revisited, plus more
side benefits
• What’s next?

4
Introduction
Introduction to
to
Basic
Basic Maintenance
Maintenance Concepts
Concepts
Terminology – A few
things we’ll clarify today
1. What’s maintenance vs evolution?
2. What’s maintenance/evolution vs
development?
3. What’s construction, as a part of
either maintenance/evolution or
development?

6
Maintenance vs Evolution
• In practice, the terms “maintenance” and
“evolution” both refer to making changes to an
existing system
• “Maintenance” is officially when you are fixing
bugs or porting a system to a new platform,
whereas
• “Evolution” is officially when making
enhancements to existing software
• We’ll often use “maintenance” to mean both

7
Development vs.
Maintenance Activities
• Development (Initial)
– Officially means “from scratch”
– Can choose which process model to use - maybe
– Often it’s the right time to change / upgrade tools
– Sometimes it’s a total redo of an existing system
• Maintenance/Evolution
– Officially means “working with existing system”
– Must work within constraints of the existing process model and
tools
• E.g., “How would you change the change management system during
maintenance?

8
Both are “…of Software,”
which includes:

Table
From M-book

9
And those artifacts build /
pass through these hoops:

Figure
From M-book

10
Development vs.
Maintenance Activities
• But, is the difference “green field”?
• These days, hardly anything is “from scratch.”
• Sometimes, it’s hard to tell the difference.
• Distinction may be as crazy as “Which
manager’s team gets to do it – the
‘development’ manager, or the ‘maintenance’
manager?”
• Let’s look at some examples – you tell me…

11
Development vs.
Maintenance Activities
Example 1 – Which is it?
• One of our senior projects is creating a
web interface for Subversion
• Subversion already exists – they’re building on
top of that
• It has to “talk to” other existing stuff, like
Rose’s t-drive, maybe Angel? Maybe use
Kerberos pwds?
• Not exactly “green field”

12
Development vs.
Maintenance Activities
Example 2 – Which is it?
• One senior project this year is “fixing”
Buddy, the interactive display that was in
the lobby
– It had mysterious problems causing Buddy to
freeze – Nobody on original team could diagnose
– I said “yes” to current team’s question, “Can we
redo the software from scratch?”
– Kind of “green field”!

13
Development vs.
Maintenance Activities
Example 3 – Which is it?
• A system Steve worked on in industry
– The system kept track of maintenance data for a
very large com network
– For the 4th release of the same system, they
were making their database “available” for other
applications to access
– Most of these accesses would be ad hoc queries
of large amounts of data

14
Development vs.
Maintenance Activities
Example 4 – Which is it?
• A system Steve’s seen too many
of…
– First release was “rush to market.”
– None of the documents shown on
slide 9 were produced.
– Now they’re ready to do Rel 2.0.

15
Development vs.
Maintenance Activities
Example 5 – Which is it?
• A system you’ll surely see on the job:
– You’re assigned to “maintenance”
– All the documents shown in Slide 9 are
way out of date
– They’re developing from a string of
“change requests,” deciding what’s in or
out for each release based on what can
get done before the deadline

16
Development vs.
Maintenance Activities
Example 6 – Which is it?
• Second release of the Subversion
Web tool, in the spring.
– We don’t yet know what / how much
work that will be…

17
Development vs.
Maintenance Activities
• So, what’s the practical difference then?
– Development (initial) usually has more inherent risk
– In development,
• You need to decide how to do it, new tools & processes,
• You create new documents, a bunch of new software classes,
etc.
• Everything is “baselined.”
• You do “architecture.”
• Half the stuff you’d like in Rel. 1.0 won’t get in there – why?
• Testing the first-out product is iffy.

18
Development vs.
Maintenance Activities
• So, what’s the practical difference then?
– Maintenance has less inherent risk
– In maintenance,
• You get change requests (features & fixes),
• You prioritize those based on how much people want them and
how hard they are to do, using your experience.
• You decide what should make the cutoff for the next release, &
• You do ‘em.
• With luck, you go also back and synchronize all those pesky
documents – what happens if you don’t?

19
Introduction
Introduction to
to
Software
Software Construction
Construction
What is Software Construction?
- 1/2
• From the Guide to the Software
Engineering Body of Knowledge (SWEBOK),
2004 edition:
The term software construction refers to the
detailed creation of working, meaningful
software through a combination of coding,
verification, unit testing, integration testing,
and debugging.

21
What is Software Construction?
- 2/2
• Construction normally refers to the
process of building
• Making the “real thing” vs problem
exploration, modeling, validating on either
side of this.
• For software construction:
– What are our construction “tools”?
– How do we ensure quality?
• What’s an example of how to do that?

22
What is it? –
C-book pic

23
What is it?
– 2nd C-
book pic

24
Why is Software Construction
Important?
• It’s a large part and at the center of software development
and maintenance
• Focusing on construction can greatly improve an individual’s
programming productivity
• Source code is the only completely accurate description of
the software
• It’s the only activity that must be done!
– That’s a hot topic in Agile development methods
• Question – What’s the opposite philosophy called? (Where
coding is this little thing you do at the end, and it should
work the first time!?)

25
Big
Big Question:
Question:
How
How do
do maintenance/evolution
maintenance/evolution and
and
construction
construction relate
relate to
to each
each other?
other?
Course Outcomes - Revisited
Students who complete this course should be able to:
1. Explain how to plan for and transition to maintenance.
maintenance
2. Use the software maintenance process model.
3. Participate on a software maintenance team.
4. Re-engineer requirements and design for an existing project.
5. Effectively employ in construction implementation methods and tools
studied in earlier courses.
6. Utilize a common development environment for construction activities
(currently C++).
7. Engineer software to meet performance and reliability objectives.
8. Develop software user documentation.
9. Verify the Laws of Software Evolution.
Evolution
10. Develop white-box tests for construction activities.

27
A few more side-
benefits of the course
• Pad resume with open source, too…
• Actually learn / get better at C++
• Learn useful processes for developing your
senior project, just-in-time…
• …and for maintaining it, later on!
• Cap-off everything you already learned in
the 37x courses. E.g., now that you know
what good design is…constructing software
feels different. (Why?)

28
And now, for a Mark
Ardis-memorial1 cartoon:

1
Mark Ardis and Don Bagert were the founders of Rose-Hulman’s
Software Engineering program. Mark’s not really gone, just
starting an SE Masters program at RIT. He and I work on
29
research projects together.
What’s next?
• We’ll start with
maintenance – why?
• Later, we’ll get around
to talking about new
development!

P.S. - Tom & Ray of


NPR’s “Car Talk”
totally approve!

30
Image from blogs.usatoday.com/weather/tornadoes/index.html .

You might also like