1 CSSE 477 – Intro to Modifiability Steve Chenoweth Friday, 9/23/2011 Week 3, Day 4 Right - A modified VW beetle, from

Slides:



Advertisements
Similar presentations
Computer Systems & Architecture Lesson 2 4. Achieving Qualities.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Lecture 13 Enterprise Systems Development ( CSC447 ) COMSATS Islamabad Muhammad Usman, Assistant Professor.
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
1 CSSE 477: Swre Arch – This year’s course… Steve Chenoweth Tuesday, 11/8/11 Week 10, Day 2 Right – Sunset at the Louvre, in Paris From
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
1 CSSE 377 – Intro to Availability & Reliability Part 1 Steve Chenoweth Monday, 9/12/11 Week 2, Day 1 Right – John Musa’s “Software Reliability Engineered.
1 Steve Chenoweth Tuesday, 10/04/11 Week 5, Day 2 Right – Typical tool for reading out error codes logged by your car’s computer, to help analyze its problems.
1 Steve Chenoweth Tuesday, 10/25/11 Week 8, Day 2 Right – Desktop computer usability metaphor, from
1 CSSE 377 – Intro to Availability & Reliability Part 2 Steve Chenoweth Tuesday, 9/13/11 Week 2, Day 2 Right – Pictorial view of how to achieve high availability.
Elaboration of Use Cases CSSE 371, Software Requirements and Specification Steve Chenoweth, Rose-Hulman Institute October 21, 2004 In the book – This is.
1 Steve Chenoweth Tuesday, 10/18/11 Week 7, Day 2 Right – One view of the layers of ingredients to an enterprise security program. From
1 CSSE 477 – Intro to Performance Steve Chenoweth Friday, 9/2/11 Week 0, Day 2 Right – A close analogy to performance as we mean it – Danica Patrick in.
1 Quality Assurance in Construction and Maintenance (Section 13.4 of Maintenance Text; Chapter 20 of Code Complete) Steve Chenoweth CSSE 375, Rose-Hulman.
Vakgroep Informatietechnologie – IBCN Software Architecture Prof.Dr.ir. F. Gielen Quality Attributes & Tactics (4) Modifiability.
Testing - an Overview September 10, What is it, Why do it? Testing is a set of activities aimed at validating that an attribute or capability.
Systems Design. Analysis involves understanding and documenting user requirements in a clear and unambiguous way. It focuses on the business side and.
Introduction to Software Testing
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
1 KAN’S INTRO AND OVERVIEW MODELS Ch1 & 2 in his book Steve Chenoweth, CSSE.
1 Documenting the Architecture CSSE 477 Software Architecture Steve Chenoweth, Rose-Hulman Institute Monday, September 26, 2011 Left – architecture of.
Starting Chapter 4 Starting. 1 Course Outline* Covered in first half until Dr. Li takes over. JAVA and OO: Review what is Object Oriented Programming.
The Design Discipline.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
Managing Software Quality
Supplementary Specifications (Chapters 20,22 - Requirements Text) Question 1 by Steve & Chandan (Along with others in the past! - See notes, below)
1 Computer Systems & Architecture Lesson 2 3. Understanding Quality Attributes.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
CSE 303 – Software Design and Architecture
Supplementary Specifications (Chapters 20,22 - Requirements Text) 1.
1 Designing the Architecture CSSE 477 Software Architecture Steve Chenoweth, Rose-Hulman Institute Week 3, Day 1, Monday, September 19, 2011.
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Chapter 11 Maintaining the System System evolution Legacy systems Software rejuvenation.
Guided Notes Ch. 9 ADT and Modules Ch. 10 Object-Oriented Programming PHP support for OOP and Assignment 4 Term project proposal C++ and Java Designer.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
John D. McGregor Class 4 – Initial decomposition
1 CMPT 275 High Level Design Phase Modularization.
Software Design: Principles, Process, and Concepts Getting Started with Design.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Evaluating Architectures. Quality Control Rarely fun, but always necessary 1.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
1 Software Architecture in Practice Quality attributes (The amputated version)
CSE 303 – Software Design and Architecture
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
System Maintenance Modifications or corrections made to an information system after it has been released to its customers Changing an information system.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
1 Software Maintenance and Evolution CSSE 575: Session 4, Part 2 Software Maintenance Process Steve Chenoweth Office Phone: (812) Cell: (937)
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Software Testing.
Chapter 7: Modifiability
The Development Process of Web Applications
Chapter 18 Maintaining Information Systems
Quality Management Perfectqaservices.
What is an Architecture?
What is an Architecture?
Applying Use Cases (Chapters 25,26)
Applying Use Cases (Chapters 25,26)
Presentation transcript:

1 CSSE 477 – Intro to Modifiability Steve Chenoweth Friday, 9/23/2011 Week 3, Day 4 Right - A modified VW beetle, from /categories/6-Classic-Car-Pictures/P2.htmlhttp:// /categories/6-Classic-Car-Pictures/P2.html.

2 Today  If perchance your team didn’t turn in Project 2 last night, please do this by tonight!  Please also do the team member peer evaluation on Angel How to do Project 3… Work with a team of “implementers” about “what to modify.” –If we run out of time, we’ll do this Monday Software modifiability – this  –Bass’s Ch 4 (pp ) and Ch 5 (pp ). –For a whole lot more, see the last term’s OO Design book (Larman)! –You had lots of discussion also in CSSE 375. Here we take an architectural view! –Great reference – Bachman, Bass & Nord’s article, “Modifiability Tactics” (2007) -

3 We next pick modifiability from Bass’s QA list… Bass’s list of six, from the inside back cover of his book: –Availability –Modifiability –Performance –Security –Testability –Usability

4 And here’s the project about it: On the project where you were designers, –Determine the modifiability of your current project system – actually, of something specific about it, and try to improve on that modifiability. –Implement a tactic to improve this by a designated amount! We’re also going to study how to document the arch, so: –An added feature of this project – start a draft of that, for your sys. And a first step to take today: Brainstorm with your assigned “implementers” about what new features you might add. Perhaps something you or they haven’t ever considered… These will be a “target” for making changes efficiently. Divide into two “equal” sets of changes, so that these appear to be of about equal difficulty. Try to make each group “not homogenous,” in terms of what’s changed. It is especially good if each set includes changes to the same areas as the other set. Turn those in, in your “team journal” by 11:55 PM. Next steps – By Tuesday, do the first set, timing how long it takes. And, decide how to make your system “more modifiable.”

5 Let’s do some basics… Brad Appleton’s take: The Modifiability of a software system is related to how minimal is the cost/effort to develop and deploy changes to the software. This relates to well known concepts and principles of coupling, cohesion, maintainability, etc. and is the basis for many of the elements of object-oriented, component-based, and aspect- oriented design ("reuse" is a close cousin for all these as well). Brad being optimistic From

6 More basics… Alistair Cockburn’s take: “Software development is a cooperative game – using props and markers to remind and incite, to reach the next move. The endpoint of the game is a delivered system. The next game is to alter or replace the system.” From Alistair showing ‘tude

7 More basics… Steve’s take: There are tradeoffs – foresight and planning versus time to market for R 1.0. Getting developers and testers familiar with the domain, and the OO domain model, is a big win. It’s theoretically impossible to foresee all the areas of future change. Spooky crystal ball gazer from

8 What’s Bass say about this QA? Scenarios – What’s in “The Notes” at the end of the supplementary spec template?supplementary spec template What is Modifiability “about” – Ch 4? What are some good tactics – Ch 5?

9 Bass’s modifiability scenarios Source: End user, developer, system administrator Stimulus: Wishes to add/delete/modify/vary functionality, quality attribute, capacity Artifact: System user interface, platform, environment, system that interoperates with target system Environment: At runtime, compile time, build time, design time Response: Locates places in architecture to be modified; makes modification without affecting other functionality; tests modification; deploys modification Response Measure: Cost in terms of number of elements affected, effort, money; extent to which this affects other functions or quality attributes

10 Example scenario Source: Developer Stimulus: Wishes to change the UI Artifact: Code Environment: At design time Response: Modification is made with no side effects Response Measure: In 3 hours

11 Modifiability situations 1. Change can occur to almost any aspect of the system: –What it computes –The platform it runs on “Portability” How big / fast this is –The environment it operates within Like other systems it talks to, or The protocols used Ch 4

12 Modifiability situations, cntd 2. Software changes typically are made to source code: –A developer makes it, and it’s tested and deployed (somewhere!) So, a part of efficiency lies in things like “how to make each change just once” –Some changes are made on site, by others: DB changes Parameter changes Script language changes

13 Coupling = Ripple effects Syntax of –Data (format) –Service (signature) Semantics of –Data (meaning) –Service (how used) Sequence of –Data (order sent) –Control (steps) Identity of an interface of A (may have > 1) Location of A (runtime) Quality of service / data provided by A (accuracy, etc.) Resource behavior of A (how much used) Ch 5 What kinds of dependencies module A can have with B?

14 Additional considerations – different kinds of modifications Corrective Change – changes to fix errors in requirements, design, logic, coding, documentation Adaptive Change – changes for use in a new environment – most common, your component vendors require moving to a new version Perfective Change – changes to meet new or different customer needs – most common, additional features Preventative Change (special case of corrective) – change to fix errors before they occur (this term is not universally used) – e.g., you know some customers will move to Vista, fix your app so it will work there Things in CSSE 375…

15 Overall cost… Maintenance = 50% to 95% of total system cost. –I.e., the initial development is < ½ of it –Logically, systems should be designed for ease of maintenance Not for getting Rel 1 out the door fast –If you’re working on a system that already exists, you need to stop and “refactor” it for modifiability. This is what we’ll do in the middle of Project 3!

16 A typical improvement… We have DB accesses to get the data out of the same table, written all over the system. With new changes we plan, there will be even more of these! None of them have good error handling. So, Create a new class that does the all the DB accessing from this table, with validity checks and other error handling.

17 Tactics to achieve modifiability Localize Changes (increase cohesion) –Maintain Semantic Coherence –Anticipate Expected [types of] Changes –Generalize the Module –Limit Possible Options –Abstract Common Services Defer Binding-time (defer decision-making) –Run-time Registration –Configuration Files –Polymorphism/Delegation –Component Replacement –Adhere to Defined Protocols Prevent Ripple Effects (reduce coupling) –Hide Information –Maintain Existing Interfaces –Restrict Communication Paths –Use an Intermediary (Proxy, etc.) See Bass, Ch 5

18 Project 3 – Modifiability Overall theme – Do the first set of changes, and time how long they take. (Without improving modifiability.) Implement a strategy for making changes more efficient (e.g., refactor the code) Do the second set of changes, and time how long they take. Report on how this “experiment” went. See Project 3 for the details!