CSE460 Lecture 03

CSE460 Lecture 03

Software Analysis and Design
Antipatterns
(202008)

B546a9b97d993392e4b22b74b99b91fe?s=128

Javier Gonzalez

July 03, 2020
Tweet

Transcript

  1. jgs CSE 460 Software Analysis and Design Lecture 03: Antipatterns

    Dr. Javier Gonzalez-Sanchez javiergs@asu.edu javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment
  2. jgs Previously

  3. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 3 jgs

    Previously Labor-Intensive
  4. jgs Anti-Patterns

  5. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 5 jgs

    Definition * Martin Flower - Software developer, author and speaker on OO software development, analysis and design.
  6. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 6 jgs

    Definition
  7. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 7 jgs

    Definition § how to go from a problem to a bad solution. § Identifying bad practices can be as valuable as identifying good practices.
  8. jgs Anti-Patterns: Design and Implementation

  9. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 9 jgs

    Lava Flow § systems that originated as prototype but ended up in production § fragments of code, wayward variables classes and methods that are not clearly related to the overall system § Source: Among others, this is incremental going wrong!
  10. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 10 jgs

    Lava Flow
  11. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 11 jgs

    § Something that is hard to debug or modify because of the lack of a proper design § Source: Lack of experience Spaghetti
  12. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 12 jgs

    Spaghetti Code
  13. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 13 jgs

    Spaghetti Design
  14. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 14 jgs

    The Blob § A class / object that knows too much or does too much § I performs multiple tasks, declares many unrelated attributes, and § maintains a collection of methods that have no logical relationship to one another, other than performing operations pivotal to the application function. § Source: Someone forgot separation of concerns
  15. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 15 jgs

    The Blob
  16. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 16 jgs

    Poltergeist § Useless code (components, relationships, or both) § Source: a designer that grabs a template or best practice intended for much larger systems
  17. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 17 jgs

    Poltergeist
  18. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 18 jgs

    Poltergeist
  19. jgs To be continued…

  20. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 20 jgs

    Homework § UML Review Class Diagrams Inheritance Generalization Realization Association Composition Aggregation
  21. jgs CSE 460 Software Analysis and Design Javier Gonzalez-Sanchez javiergs@asu.edu

    Fall 2020 Disclaimer. These slides can only be used as study material for the class CSE460 at ASU. They cannot be distributed or used for another purpose.