software reuse & refactoring

Post on 12-Feb-2016

82 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Software Reuse & Refactoring. By: Matthew Merricks Brian Smith Ryan Waggoner. Overview of Presentation. Introduction Software Reuse Software Refactoring Benefits and Problems with Software Reuse and Refactoring Conclusion. Introduction. - PowerPoint PPT Presentation

TRANSCRIPT

Software Reuse & RefactoringSoftware Reuse & RefactoringBy: Matthew MerricksBy: Matthew Merricks Brian SmithBrian Smith Ryan WaggonerRyan Waggoner

Overview of PresentationOverview of Presentation IntroductionIntroduction Software ReuseSoftware Reuse Software RefactoringSoftware Refactoring Benefits and Problems with Benefits and Problems with

Software Reuse and RefactoringSoftware Reuse and Refactoring ConclusionConclusion

IntroductionIntroduction Increase in demand for software Increase in demand for software

= Need for quicker and more = Need for quicker and more cost effective strategies for cost effective strategies for software developmentsoftware development

Software ReuseSoftware Reuse Opportunistic Reuse – Unplanned Opportunistic Reuse – Unplanned

Reuse that is realized to be beneficial Reuse that is realized to be beneficial once a project has started.once a project has started. Internal Reuse – When programmers Internal Reuse – When programmers

reuse their own code.reuse their own code. External Reuse – When programmers External Reuse – When programmers

make use of code others have written.make use of code others have written. Planned Reuse – When code is Planned Reuse – When code is

written with intention to be used in written with intention to be used in the future.the future.

Types of Software ReuseTypes of Software Reuse Abstraction - describes initial Abstraction - describes initial

methods and definitions for the methods and definitions for the programmers to be able to build programmers to be able to build upon to achieve their objectives.upon to achieve their objectives.

Software Product Line - analyzes Software Product Line - analyzes the objectives and plans for the the objectives and plans for the code to be functional as well as code to be functional as well as adaptable and capable of adaptable and capable of evolution.evolution.

Types of Software ReuseTypes of Software Reuse Cut-and-Paste Programming - Cut-and-Paste Programming -

code is simply taken directly code is simply taken directly from one program and copied from one program and copied straight into another program.straight into another program.

Generic Programming - Generic Programming - deliberately writes fairly deliberately writes fairly ambiguous code that can be ambiguous code that can be adjusted by the programmer to adjusted by the programmer to suit their intentions.suit their intentions.

Benefits of ReuseBenefits of Reuse Saves time, money, resources.Saves time, money, resources. Allows for the growth and Allows for the growth and

maximization of code. maximization of code. Code can be analyzed and Code can be analyzed and

improved when time comes to improved when time comes to be re-written.be re-written.

Popular method used in Popular method used in marketing and can be profitable marketing and can be profitable for businesses.for businesses.

Software RefactoringSoftware Refactoring Invented by Martin Fowler:Invented by Martin Fowler:

Software RefactoringSoftware Refactoring Fowler says, “Refactoring Fowler says, “Refactoring

is a disciplined technique is a disciplined technique for restructuring an for restructuring an existing body of code existing body of code altering its internal altering its internal structure without structure without changing its external changing its external behavior.”behavior.”

Software RefactoringsSoftware Refactorings Extract Method – takes a clump Extract Method – takes a clump

of code and turns it into a of code and turns it into a methodmethod

Inline Method – takes a method Inline Method – takes a method and replaces it with a body of and replaces it with a body of codecode

Inline Temp – replaces all Inline Temp – replaces all instances of a temp method instances of a temp method with the original methodwith the original method

Software RefactoringsSoftware Refactorings Introduce Explaining Variable – Introduce Explaining Variable –

places a complicated expression places a complicated expression in a temporary variablein a temporary variable

Split Temporary Variable – Split Temporary Variable – renames a variable that is renames a variable that is assigned more than onceassigned more than once

Remove Assignment Parameters Remove Assignment Parameters – assigns parameters to a – assigns parameters to a temporary variabletemporary variable

Software RefactoringsSoftware Refactorings Replace Method with Method Replace Method with Method

Object – turns a method into an Object – turns a method into an object so that the object can be object so that the object can be decomposed into different decomposed into different methodsmethods

Substitution Algorithm – Substitution Algorithm – substitutes an algorithm with a substitutes an algorithm with a clearer algorithmclearer algorithm

Time Performance Break Time Performance Break DownDown

Perf[Architecture]

Perf[Algorithm]

Perf[Coding]

Perf[Storage]

Perf[Processor]

More CPU[Processor]

Deeper pipeline[Processor]

Faster CPU frequency

[Processor]

Perf [Main Memory]

Perf[Cache]

Larger cache line[Cache]

More set associativity

[Cache]

Larger cache size[Cache]

Soft Goal ExampleSoft Goal Example

Soft Goal A

Soft Goal B

Soft Goal C

Soft Goal D

Soft Goal E

Soft Goal F

Soft Goal H

Soft Goal I

Soft Goal G

Soft Goal J

Soft Goal K

Soft Goal N

Soft Goal Q

Soft Goal R

Soft Goal P

Soft Goal O

Soft Goal L

Soft Goal M

Soft Goal ExampleSoft Goal Example

Soft Goal A

Soft Goal B

Soft Goal C

Soft Goal D

Soft Goal E

Soft Goal F

Soft Goal H

Soft Goal I

Soft Goal G

Soft Goal J

Soft Goal K

Soft Goal N

Soft Goal Q

Soft Goal R

Soft Goal P

Soft Goal O

Soft Goal L

Soft Goal M

Soft Goal ExampleSoft Goal Example

Soft Goal A

Soft Goal B

Soft Goal C

Soft Goal D

Soft Goal E

Soft Goal F

Soft Goal H

Soft Goal I

Soft Goal G

Soft Goal J

Soft Goal K

Soft Goal N

Soft Goal Q

Soft Goal R

Soft Goal P

Soft Goal O

Soft Goal L

Soft Goal M

Soft Goal ExampleSoft Goal Example

Soft Goal A

Soft Goal B

Soft Goal C

Soft Goal D

Soft Goal E

Soft Goal F

Soft Goal H

Soft Goal I

Soft Goal G

Soft Goal J

Soft Goal K

Soft Goal N

Soft Goal Q

Soft Goal R

Soft Goal P

Soft Goal O

Soft Goal L

Soft Goal M

Soft Goal ExampleSoft Goal Example

Soft Goal A

Soft Goal B

Soft Goal C

Soft Goal D

Soft Goal E

Soft Goal F

Soft Goal H

Soft Goal I

Soft Goal G

Soft Goal J

Soft Goal K

Soft Goal N

Soft Goal Q

Soft Goal R

Soft Goal P

Soft Goal O

Soft Goal L

Soft Goal M

Soft Goal ExampleSoft Goal Example

Soft Goal A

Soft Goal B

Soft Goal C

Soft Goal D

Soft Goal E

Soft Goal F

Soft Goal H

Soft Goal I

Soft Goal G

Soft Goal J

Soft Goal K

Soft Goal N

Soft Goal Q

Soft Goal R

Soft Goal P

Soft Goal O

Soft Goal L

Soft Goal M

Soft Goal ExampleSoft Goal Example

Soft Goal A

Soft Goal B

Soft Goal C

Soft Goal D

Soft Goal E

Soft Goal F

Soft Goal H

Soft Goal I

Soft Goal G

Soft Goal J

Soft Goal K

Soft Goal N

Soft Goal Q

Soft Goal R

Soft Goal P

Soft Goal O

Soft Goal L

Soft Goal M

Visual WorksVisual Works Smalltalk IDE produced by Smalltalk IDE produced by

CincomCincom Features Smalllint, a style Features Smalllint, a style

checker and bug detectorchecker and bug detector Support continuous Support continuous

modificationsmodifications Can roll back to its initial stateCan roll back to its initial state

Visual WorksVisual Works High degree of safety due to High degree of safety due to

dynamic checking and user dynamic checking and user inputinput

Low effort tool because it can Low effort tool because it can automate the modifying of codeautomate the modifying of code

Does not include metrics of any Does not include metrics of any kindkind

EclipseEclipse Uses a Java Development Tool Uses a Java Development Tool

(JDT)(JDT) Uses partial recompilationUses partial recompilation Supports continuous changesSupports continuous changes A local applicationA local application Uses repositories to update codeUses repositories to update code Partially automated with the use Partially automated with the use

of the Refactoring Wizardof the Refactoring Wizard

GuruGuru Developed by Ivan Moore for the Developed by Ivan Moore for the

SELFSELF Used for restructuring Used for restructuring

inheritance hierarchies and inheritance hierarchies and refactoring methodsrefactoring methods

Automatic tool with no user Automatic tool with no user interaction neededinteraction needed

Automatically generated object Automatically generated object and method namesand method names

GuruGuru Very low effort toolVery low effort tool Highly invasiveHighly invasive Global applicationGlobal application

Together Control CenterTogether Control Center Created by TogetherSoftCreated by TogetherSoft Uses a refactoring menu Uses a refactoring menu Is a refactoring tool and a Is a refactoring tool and a

development environmentdevelopment environment Local applicationLocal application Offers versioning and undo Offers versioning and undo

capabilitiescapabilities Low effort toolLow effort tool

Facet Visual Works Eclipse Guru

Control Center

Time of Change T2, T3

Before T1 or T2 After T3

Before T1 or T2 After T3

Before T1 or T2 After T3

Change History Irrelevant

Parallel / Asynchronous

Unversioned Versioned

Frequency

Continuously

Continuously

Occasionally

Continuously

Distribution Local Local Local Local

Facet Visual Works Eclipse Guru

Control Center

Automation

Semi-Automatic

Semi-Automatic

Fully Automated

Semi-Automatic

Effect Alteration Any Alteration Any

Invasiveness

Non-Invasive Non-Invasive

Highly Invasive

Non-Invasive

Effort Low Effort Low EffortVirtually No Effort Low Effort

Software Reuse: BenefitsSoftware Reuse: Benefits Increased DependabilityIncreased Dependability Reduced Process RiskReduced Process Risk Effective Use of SpecialistsEffective Use of Specialists Standards ComplianceStandards Compliance Accelerated DevelopmentAccelerated Development

Software Reuse: ProblemsSoftware Reuse: Problems Increased Maintenance CostsIncreased Maintenance Costs Lack of Tool SupportLack of Tool Support Not-Invented-Here SyndromeNot-Invented-Here Syndrome Creating and Maintaining a Creating and Maintaining a

Component LibraryComponent Library Finding, Understanding and Finding, Understanding and

Adapting Reusable ComponentsAdapting Reusable Components

Refactoring: BenefitsRefactoring: Benefits Improves Design of SoftwareImproves Design of Software Makes Software Easier to Makes Software Easier to

UnderstandUnderstand Helps in Finding BugsHelps in Finding Bugs Helps to Program Faster (in the Helps to Program Faster (in the

long term)long term)

Refactoring: ProblemsRefactoring: Problems Lack of Software Quality Lack of Software Quality

ImprovementImprovement Unreliability of Refactoring ToolsUnreliability of Refactoring Tools

ConclusionConclusion Use Software Reuse and Use Software Reuse and

RefactoringRefactoring But not BLINDLY!But not BLINDLY!

Works Cited IWorks Cited I Fowler, Martin. Fowler, Martin. Refactoring: Improving the Design of Refactoring: Improving the Design of

Existing CodeExisting Code. Boston, MA: Addison-Wesley, 2000.. Boston, MA: Addison-Wesley, 2000. Fowler, Martin. “What is Refactoring?” Fowler, Martin. “What is Refactoring?” Refactoring Refactoring

HomeHome. 1 Nov. 2007 <http://www.refactoring.com/>.. 1 Nov. 2007 <http://www.refactoring.com/>. Glynn, Erica, Strooper, Paul. “Evaluating Software Glynn, Erica, Strooper, Paul. “Evaluating Software

Refactoring Tool Support” In Refactoring Tool Support” In Software Engineering Software Engineering Conference. Conference. 18-21 April 2006. Melbourne, Vic.18-21 April 2006. Melbourne, Vic.

Jacobson, Ivar and Griss, Martin and Johsson, Patrik. Jacobson, Ivar and Griss, Martin and Johsson, Patrik. "Software Reuse: Architecture, Process and "Software Reuse: Architecture, Process and Organization for Business Success." Addison-Wesley Organization for Business Success." Addison-Wesley Professional(1997). Professional(1997).

Lim, Wayve C. "Managing Software Re-Use." Prentice Lim, Wayve C. "Managing Software Re-Use." Prentice Hall PTR(1998).Hall PTR(1998).

Mealy, E., Carrington, D., Strooper, P., Wyeh, P. Mealy, E., Carrington, D., Strooper, P., Wyeh, P. 2007. “Improving Usability of Software Refactoring 2007. “Improving Usability of Software Refactoring Tools” In Tools” In Software Engineering Conference. Software Engineering Conference. 10-13 10-13 April 2007. Melbourne, Vic. 307-318.April 2007. Melbourne, Vic. 307-318.

Works Cited IIWorks Cited II Mens, Tom, and Tourwe, Tom. “A Survey of Software Mens, Tom, and Tourwe, Tom. “A Survey of Software

Refactoring.” IEEE Transactions on Software Refactoring.” IEEE Transactions on Software Engineering Vol. XX No. Y (2004) 1-3.Engineering Vol. XX No. Y (2004) 1-3.

Mili, Hafedh and Mili, Ali and Yacoub, Sherif, and Addy, Mili, Hafedh and Mili, Ali and Yacoub, Sherif, and Addy, Edward. "Reuse-Based Software Engineering: Edward. "Reuse-Based Software Engineering: Techniques, Organizations, and Controls." Wiley-Techniques, Organizations, and Controls." Wiley-Interscience(2001).Interscience(2001).

Mylopoulos, John, and Yu, Eric, and Yu, Yijun. “Software Mylopoulos, John, and Yu, Eric, and Yu, Yijun. “Software Refactoring Guided by Multiple Soft-Goals.” Not Refactoring Guided by Multiple Soft-Goals.” Not available. available.

Simmonds, J. and T. Mens, A comparison of software Simmonds, J. and T. Mens, A comparison of software refactoring tools, Technical Report vub-prog-tr-02-15, refactoring tools, Technical Report vub-prog-tr-02-15, Programming Technology Lab (2002).Programming Technology Lab (2002).

Sommerville, Ian. Sommerville, Ian. Software EngineeringSoftware Engineering. 8th ed. New . 8th ed. New York: Addison-Wesley, 2007. 63-91.York: Addison-Wesley, 2007. 63-91.

Spinellis, Diomidis, and Stroggylos. Konstantinos. Spinellis, Diomidis, and Stroggylos. Konstantinos. “Refactoring – Does it Improve Software Quality?” Fifth “Refactoring – Does it Improve Software Quality?” Fifth International Workshop on Software Quality (2007) 1-4. International Workshop on Software Quality (2007) 1-4.

top related