• Save
Design Smells
Upcoming SlideShare
Loading in...5
×
 

Design Smells

on

  • 6,546 views

A quick-and-dirty introduction to Design Smells, as presented in Robert 'Uncle Bob' Martin book "Agile Software Development". Thought as the first of a series.

A quick-and-dirty introduction to Design Smells, as presented in Robert 'Uncle Bob' Martin book "Agile Software Development". Thought as the first of a series.

Statistics

Views

Total Views
6,546
Views on SlideShare
6,536
Embed Views
10

Actions

Likes
8
Downloads
0
Comments
0

2 Embeds 10

http://www.slideshare.net 9
https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Design Smells Design Smells Presentation Transcript

  • D esign S mells The 7 Odors of R otting S oftware G iorgio V espucci – S oftware F actory R oma
  • ?
  • W hat is
  • S oftware D esign
  • ?
  • “ […] the design of a software project is documented primarily by its source code .” Robert C. Martin
  • The source code is the design.
  • Abandoned code rots .
  • When it rots, it smells .
  • 7 S mells
  • 1. R igidity
  • The tendency for software to be difficult to change , even in simple ways. The design is hard to change .
  • 2. F ragility
  • The tendency of a program to break in many places when a single change is made. The design is easy to break .
  • 3. I mmobility
  • It is hard to disentangle the system into components that can be reused in other systems. The design is hard to reuse .
  • 4. V iscosity
  • S oftware viscosity
  • Design -preserving methods vs. Hacks
  • E nvironment viscosity
  • Slow and inefficient development environment Very long compile times Hours to check-in Several minutes to deploy
  • Doing things wrong is easier than doing things right .
  • 5. N eedless C omplexity
  • Elements not currently useful in the design. O verdesign.
  • 6. N eedless R epetition
  • C ut- a nd- p aste is useful for text-editing, but can be disastrous for c ode- e diting.
  • The design contains repeating structures that could be unified under a single abstraction.
  • 7. O pacity
  • The tendency of a module to be difficult to understand .
  • Code written in a clear and expressive manner vs. Code written in an opaque and convoluted manner.
  • ?
  • W hat is a
  • D esign S mell
  • ?
  • A d esign s mell is a symptom .
  • It’s a violation of P rinciples.
  • S . O . L . I . D . Principles
  • T o be c ontinued...