Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

CSC509 Lecture 14

CSC509 Lecture 14

Software Design
Final Review
(202412)

Javier Gonzalez-Sanchez

December 02, 2024
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.info office: 14 -227 CSC 508/9

    Software Engineering (Design & Deployment) Lecture 14. Final Review
  2. jgs The following slides shows some examples
 related to some

    topics
 
 
 This is NOT a comprehensive list of topics

  3. Alternative Solution 6 New Yorker, June 1992 "Most software today

    is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves". – Alan Kay. Pioneering work on object-oriented programming ACM Queue. Vol. 2, No. 9 - Dec/Jan 2004-2005
  4. Key idea • Keep it Simple - over-designing the system

    is as bad as their absence when needed. • A design that is more than what we need smells. • Design principles are not a perfume to be liberally scattered all over the system. 19
  5. Clean Code Readability • DRY • KIS • SRP •

    Comments • Error Handling with a Logger 22 Metrics • LOC (eLOC, lLOC) • CC • A • I • D
  6. Example public class B implements E { public B() {

    C c1 = new C(); } public void method() { B b = new B(); b.sleep(); } } public class Y { A [] a = new A[5]; } public class A extends B { C c1, c2; public A() { c1 = new C(); } public void method() { D d = new D(); d.working(); } } public class X { public void m() { B var = new A(); double x = Math.sqrt(5); } } 30
  7. Design Principles There are five key design principles to consider

    in Object-Oriented: • Single Responsibility Principle (SRP) • Open-Closed Principle (OCP) • Liskov Substitution Principle (LSP) • Interface Segregation Principle (ISP) • Dependency Inversion Principle (DIP) 32
  8. Docker | Steps 40 2. A package that includes everything

    needed to run software, including the code, runtime, libraries, dependencies, and configuration files. 3. A container is a runtime instance of an image. It encapsulates the execution environment for a specific application or process, including the filesystem, environment variables, network settings, and runtime options. 1. A text file that contains instructions for building a Docker image
  9. Wednesday, December 11 a) Final Version of your Source Code

    - submit your Java files b) Software Design - your UML class diagram c) Metrics (Code and Structure) d) Links to your GitHub repository e) Link to your video of the Final Presentation 44
  10. First Act – The product for the Customer Demo of

    your project. Show your project running. :: notes :: you can, additionally, talk (briefly) about your proposal, i.e., the next features to be added 46
  11. Second Act – Software Design Show your architecture and class

    diagram. (Show what is important and make it easy to read for the audience) :: notes :: (you can use colors for the newly added classes) • What did you do that make this design “good”. • Do you achieve SOLID? • Do you improve A, I, or D? (show the 2D plot regarding where your classes are in terms of the pain zone) 48
  12. Part 2. The product • Describe your architecture ( a

    diagram with boxes is fine) • Describe your design. Could it be easy for a new developer to reuse, modify or extend what you have created? • Show a class diagram (Explain it and describe the details) • Be sure the diagram and code match. • What components were developed by each team member? What were the criteria for splitting the work (components, classes, methods)? 49
  13. Part 2. The product • Source code clean, DRY, and

    KIS • Code Metrics: LOC, eLOC, lLOC, CC • Structure Metrics: Abstractness, Instability, Distance • Does the product have a “good” quality? • What features were Unit Tested? • Services? 52
  14. Structural Metrics 53 Abstract concrete Stable Hard to Change Only

    incoming dependencies Unstable Changeable Only outgoing dependencies
  15. Deployment Think about the following regarding deployment: •Could someone download

    the latest version from the GitHub release and know how to run it? •Consider using a JMenuBar, JPopupMenu •Consider making your JAR file executable (see next) 55
  16. Usability •Could someone know how to use it? •Where to

    start? •What the project is about? •Take advantage of your README.md (beauIfy it) @see https://docs.github.com/en/repositories/ 57
  17. (self and peer evaluation) • NOT for the video. A

    link will be provided for this • (self and peer evaluation) What should be your grade and the grade of each of your teammates? 59
  18. CSC 509 Software Engineering Javier Gonzalez-Sanchez, Ph.D. [email protected] Fall 2024

    Copyright. These slides can only be used as study material for the class CSC509 at Cal Poly. They cannot be distributed or used for another purpose.