120 likes | 280 Views
Software Change. Strategies: Software maintenance Code changes, but fundamental structure constant Architectural transformation Significant changes to system architecture
E N D
Software Change Strategies: • Software maintenanceCode changes, but fundamental structure constant • Architectural transformationSignificant changes to system architecture • Software re-engineeringModifications so system is easier to understand, maintain (not motivated by need to add specific functionality) Ch.27 - Software Change
Lehman’s “Laws” • Change is inevitable • As systems change, complexity increase & structure degrades • In large systems, evolution controlled not by management decisions, but by organizational factors. • Evolution is fairly constant, generally unrelated to changes in resources • Rate at which new functionality can be introduced limited [Lehman & Belady (1985)] Ch.27 - Software Change
Forms of Software Maintenance • Repairing software faults • Adaptation to new environment • Addition/modification of functionality Ch.27 - Software Change
Forms of Software Maintenance • Repairing software faults (17%) • Adaptation to new environment (18%) • Addition/modification of functionality (65%) [Leintz & Swanson (1980)] [also Nosek & Palvia (1990)] Lesson: Plan ahead! Ch.27 - Software Change
Spiral Maintenance Model Ch.27 - Software Change
Costs of Software Maintenance • Higher costs due to: • Team (in)stability • Contractual failings • Staff skills • maintenance is less “sexy” • System structure degradation Ch.27 - Software Change
Reaction instead of “proaction” • Emergency bug fixes age system unnecessarily fast • Fixing the fault (at any cost) is highest priority • Cleaning the mess up afterwards ends up as (too) low priority Ch.27 - Software Change
Architectural EvolutionCentralized Distributed systems Example: migration from a (1980s-style) centralized to a (modern) distributed system Pressures: • Hardware costs mainframes $$$ • User interface expectationsText forms vs. GUIs, mice, etc. • Remote/distributed accessMultiple company sites, Internet Ch.27 - Software Change
Architectural EvolutionCentralized Distributed systems • Keep old system, but wrap new (distributed) components around it • Legacy system stays on legacy environment • Offloads work, increases traffic support • Can distribute data processing, UI processing • see §27.3 for elaboration Ch.27 - Software Change
Legacy Systems • Old, existing systems that are well-established components of business • Tricky to replace, because: • lack of complete specification • intertwined with business process • may include embedded business rules • replacement software risky Ch.27 - Software Change
Legacy SystemsAssessment Options: • Discard • Continue to maintain • Transform (improve maintainability) • Replace Ch.27 - Software Change
Legacy SystemsAssessment Assessments: • Low quality, low business valueCandidate for discarding • Low quality, high business valueExpensive to maintain: transform or replace • High quality, low business valueNot worth attention: maintain or discard • High quality, high business valueIdeal: continue regular maintenance Ch.27 - Software Change