1 Interfaces, Aspects, and Views David Shepherd Dr. Lori Pollock University of Delaware.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
The design process IACT 403 IACT 931 CSCI 324 Human Computer Interface Lecturer:Gene Awyzio Room:3.117 Phone:
HOW DO PROFESSIONAL DEVELOPERS COMPREHEND TO SOFTWARE Report submitted by Tobias Roehm, Rebecca Tiarks, Rainer Koschke, Walid Maalej.
System Analysis (Part 1)
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)
Interactive Visualization of Small World Graphs An implementation in prefuse.
Designing classes How to write classes in a way that they are easily understandable, maintainable and reusable 4.0.
Using Natural Language Program Analysis to Locate and understand Action-Oriented Concerns David Shepherd, Zachary P. Fry, Emily Hill, Lori Pollock, and.
Chapter Extension 19 Alternative Development Techniques © 2008 Pearson Prentice Hall, Experiencing MIS, David Kroenke.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
University of British Columbia Software Practices Lab CAS Seminar 06 Fluid AJ - A Simple Fluid AOP Tool Terry Hon Gregor Kiczales.
Chapter 7 Using Data Flow Diagrams
Ruby on Rails a popular web application framework, aimed to increase the speed and ease of web development Ruby on Rails, Tim Zappe.
Chapter 9 Using Data Flow Diagrams
Winter 2007ACS-3913 Ron McFadyen1 Observer Pattern Problem: There are many objects (observers / subscribers) needing to know of the state changes, or events,
CSC230 Software Design (Engineering)
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
Chapter 1 1 © Prentice Hall, 2002 Database Design Dr. Bijoy Bordoloi Introduction to Database Processing.
1 Timna: A Framework for Automatically Combining Aspect Mining Analyses David Shepherd 1 Jeffrey Palm 2 Lori Pollock 1 Mark Chu-Carroll 3 1 University.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Software.
IT – DBMS Concepts Relational Database Theory.
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Computers & Employment By Andrew Attard and Stephen Calleja.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
“Enhancing Reuse with Information Hiding” ITT Proceedings of the Workshop on Reusability in Programming, 1983 Reprinted in Software Reusability, Volume.
Objectives Overview Define the term, database, and explain how a database interacts with data and information Define the term, data integrity, and describe.
Project Coordinators: Eduardo Santana de Almeida Silvio Romero de Lemos Meira Federal University of Pernambuco Informatics Center Recife Center for Advanced.
Software Refactoring Part I: Introduction Bartosz Walter Advanced Object-Oriented Design Lecture 5.
Integrated Development Environment for Policies Anjali B Shah Department of Computer Science and Electrical Engineering University of Maryland Baltimore.
HCI in Software Process Material from Authors of Human Computer Interaction Alan Dix, et al.
Composing Adaptive Software Authors Philip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. Cheng Presented by Ana Rodriguez June 21, 2006.
(c) University of Washington08-1 CSC 143 Models and Views Reading: Ch. 18.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Applying Clone.
Problem Statement: Users can get too busy at work or at home to check the current weather condition for sever weather. Many of the free weather software.
Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
Mining Logical Clones in Software: Revealing High-Level Business & Programming Rules Wenyi Qian 1, Xin Peng 1, Zhenchang Xing 2, Stan Jarzabek 3, Wenyun.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
Proxy, Observer, Symbolic Links Rebecca Chernoff.
Designing Classes. Software changes Software is not like a novel that is written once and then remains unchanged. Software is extended, corrected, maintained,
 Accessible informal format.  Graphical notation is trivial. But writing good use cases is a skillful process.
Aspect Mining Jin Huang Huazhong University of Science & Technology, China
Chapter 8 Object Design Reuse and Patterns. More Patterns Abstract Factory: Provide manufacturer independence Builder: Hide a complex creation process.
CSC444F'07Lecture 41 CSC444 Software Engineering Top 10 Practices.
MiniDraw Introducing a Framework... and a few patterns.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Automating software releases brian d foy August 24, 2004 Dallas/Ft. Worth Perl Mongers sponsored by Metallect.
Supporting the design of interactive systems a perspective on supporting people’s work Hans de Graaff 27 april 2000.
1 Structured Programming Arab Academy for Science and Technology CC112 Dr. Sherif Mohamed Tawfik The Course.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Software Design and Development Development Methodoligies Computing Science.
Advanced Software Engineering Dr. Cheng
FOP: Multi-Screen Apps
Introducing a Framework ... and a few patterns
Chapter 18 Maintaining Information Systems
David Shepherd, Zachary P. Fry, Emily Hill, Lori Pollock, and K
CAE-SCRUB for Incorporating Static Analysis into Peer Reviews
HCI in the software process
Objects First with Java
Review: Design Pattern Structure
HCI in the software process
Chapter 8 Software Evolution.
HCI in the software process
What is a System? A system is a collection of interrelated components that work together to perform a specific task.
Presentation transcript:

1 Interfaces, Aspects, and Views David Shepherd Dr. Lori Pollock University of Delaware

2 Given: Source code to JHotDraw, an open source drawing framework Context: Just coded CompositeFigure recently, but not updating correctly Task: Investigate and fix Example task...

3 Observer Pattern in JHotDraw Observer (Display Area) must be notified when Subject (Rectangle) changes Display Area rectangle coordinates (1,5) rectangle coordinates (6,5) refresh screen rectangle coordinates (6,5) Subject Observer notify()

4 Coder Charlie - Step 1 Looks in CompositeFigure Suspects it is part of the Observer design pattern because implements FigureChangedListener

5 Coder Charlie - Step 2 Follows type hierarchy to AbstractFigure − Because of knowledge of design pattern, suspects notify() (from Design Patterns) is there

6 Coder Charlie - Step 3 Goes to AbstractFigure Looks for notify() Can you find it?

7 Coder Charlie - Step 3 cont'd notify() = changed()

8 Coder Charlie - Step 4 Goes back to CompositeFigure Realizes should add call to changed() to figureChanged() 1/2 of the job done right − needs to add willChange() too

9 Problem Cross-cutting concerns are often not implemented consistently Code added throughout lifecycle Different programmers Forgetfulness Unknown policy/convention Even when explicit, as interface

10 Symptoms of Inconsistent Implementation Decreased code quality Decreased reliability Decreased maintainability (Possibly) missing functionality

11 Our Goal Improve implementation of cross-cutting concerns + Without increasing burden on programmer + Without large computational demands at user interaction time Introducing... Aspect Miner And Viewer (AMAV)

12 Class DClass CClass B Technique - Aspect Miner...(AMAV) Class A change cacheMepersistD doCache persistB changed willChange persistC getSize cache Cluster related methods Pluggable similarity metric Simple Natural Language Processing (NLP) technique Sub-string (method name) matching Cluster related methods Pluggable similarity metric Simple Natural Language Processing (NLP) technique Sub-string (method name) matching

13 Aspect Miner And Viewer (AMAV) Show closely related methods in Virtual Source File (VSF) − Allows programmer to learn from other methods − Leads to consistency Use tool for... − Initial coding, bug squashing − Refactoring opportunities VSF changed doChange willChange AMAV

14 Using AMAV During Implementation New Coder: Plug-In-Hugger Paul − "I LUUUUUUV AMAV!" Same task − Given: JHotDraw, an open source drawing framework − Context: Just coded CompositeFigure recently, but they are not updating correctly − Task: Investigate and fix AMAV Plug-in

15 Goes to CompositeFigure Suspects composite is part of the Observer design pattern, because implements FigureChangedListener Plug-In-Hugger Paul - Step 1

16 Plug-In-Hugger Paul - Step 2a-c Find figureChanged in ClusterViewer Look at closely related methods Follow their patterns New implementation consistent VSF

17 Task Results Why is Paul so happy? He finished before poor Charlie He had an easier time than Charlie He won the company award for high quality code (he had a more consistent and correct implementation) − Best Parking Space

18 Charlie Examines Refactoring Opportunities Browse through Cluster View... Find (in top 15) VSF

19 Charlie Examines Refactoring Opportunities Browse through Cluster View... Find (in top 15) VSF

20 Conclusion AMAV clusters related methods across classes − NLP-based similarity − Pluggable metric (possibly n dimensions) AMAV integrates mining and viewing AMAV helps with maintenance, implementation, evolution Paul is home sleeping while Charlie is still at work, fixing his code For details: