310 likes | 329 Views
Introduction to Maintenance and Construction (Chapter 1 of both books). Steve Chenoweth CSSE 375, Rose-Hulman (Labor Day ) Based on Don Bagert’s 1 2006 Lecture.
E N D
Introduction to Maintenance and Construction(Chapter 1 of both books) Steve Chenoweth CSSE 375, Rose-Hulman (Labor Day ) Based on Don Bagert’s1 2006 Lecture 1Don 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!
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!
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?
Terminology – A few things we’ll clarify today • What’s maintenance vs evolution? • What’s maintenance/evolution vs development? • What’s construction, as a part of either maintenance/evolution or development?
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
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?
Both are “…of Software,” which includes: Table From M-book
And those artifacts build / pass through these hoops: Figure From M-book
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…
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”
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”!
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
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.
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
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…
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.
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?
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.
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?
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?
Course Outcomes - Revisited Students who complete this course should be able to: 1. Explain how to plan for and transition to 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. 10. Develop white-box tests for construction activities.
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?)
And now, for a Mark Ardis-memorial1 cartoon: 1Mark 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.
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 .