Introduction to Maintenance and Construction (Chapter 1 of both books) Steve Chenoweth CSSE 375, Rose-Hulman (Labor Day ) Based on Don Bagert’s 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.
2 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!
3 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!
4 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?
Introduction to Basic Maintenance Concepts
6 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?
7 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
8 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?
9 Both are “…of Software,” which includes: Table From M-book
10 And those artifacts build / pass through these hoops: Figure From M-book
11 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…
12 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”
13 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”!
14 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 4 th 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
15 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.
16 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
17 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…
18 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.
19 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?
Introduction to Software Construction
21 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.
22 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?
23 What is it? – C-book pic
24 What is it? – 2 nd C- book pic
25 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!?)
Big Question: How do maintenance/evolution and construction relate to each other?
27 Course Outcomes - Revisited Students who complete this course should be able to: maintenance 1. Explain how to plan for and transition to maintenance. maintenance 2. Use the software maintenance process model. maintenance 3. Participate on a software maintenance team. 4. Re-engineer requirements and design for an existing project. construction 5. Effectively employ in construction implementation methods and tools studied in earlier courses. development 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. Evolution 9. Verify the Laws of Software Evolution. construction 10. Develop white-box tests for construction activities.
28 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?)
29 And now, for a Mark Ardis-memorial 1 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 research projects together.
30 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! Image from blogs.usatoday.com/weather/tornadoes/index.html.blogs.usatoday.com/weather/tornadoes/index.html