$30 off During Our Annual Pro Sale. View Details »

CSC509 Lecture 15

Avatar for Javier Gonzalez-Sanchez Javier Gonzalez-Sanchez PRO
December 02, 2025
19

CSC509 Lecture 15

Software Design
Final Review
(202512)

Avatar for Javier Gonzalez-Sanchez

Javier Gonzalez-Sanchez PRO

December 02, 2025
Tweet

Transcript

  1. Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.info o ffi ce: 14 -227

    CSC 508/9 Software Engineering (Design & Deployment) Lecture 15. Final Review
  2. Announcements 2 * Final Exam December 04 (Lecture Time) *

    Final Project Due by December 11 (no extensions)
  3. Grading 5 >= 96.5 A >= 93 A- >= 89.5

    B+ >= 86 B >= 82.5 B- >= 79 C+ >= 75.5 C >= 72 C- >= 68.5 D+ >= 65 D >= 61.5 D- < 61.5 F
  4. Alternative Solution 8 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
  5. 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); } } 15
  6. Key idea • Keep it Simple - over-designing the system

    is a s b a d a s their a bsence when needed. • A design th a t is more th a n wh a t we need smells. • Design principles are not a perfume to be liberally scattered all over the system. 23
  7. Lecture 06 - 08 30 Abstract Concrete Stable Hard to

    Change Only incoming dependencies Unstable Changeable Only outgoing dependencies the main sequence Painful Useless 0 1 1 0 Instability Abstractness
  8. Abstractness • Indic a tes whether: ( a ) the

    item is m a inly a bstr a ct (interf a ces, a bstr a ct cl a sses – extensible but not directly us a ble); or (b) it is m a inly concrete (implement a tions – directly us a ble but less extensible). • It is a v a lue between 0 a nd 1: 0 ( a concrete cl a ss or a p a ck a ge with only concrete cl a sses) 1 ( a n a bstr a ct cl a ss/interf a ce or a p a ck a ge with only a bstr a ct cl a sses/interf a ces) 31
  9. Instability • Indic a tes whether: ( a ) the

    item is m a inly used by others (st a ble – h a rd to ch a nge); or (b) it m a inly depends on other items (in-st a ble – ch a nge a ble). • It is a v a lue between 0 a nd 1: • 0 only incoming dependencies to • 1 (only outgoing dependencies). 32
  10. Docker | Steps 37 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
  11. December 11 a ) Fin a l Version of your

    Source Code - submit your J a v a f iles b) Softw a re Design - your UML cl a ss di a gr a m c) Metrics (Code a nd Structure) d) Links to your GitHub repository e) Link to your video of the Fin a l Present a tion 44
  12. First Act – The product for the Customer Demo of

    your project. Show your project running. :: notes :: you c a n, a ddition a lly, t a lk (brie f ly) a bout your propos a l, i.e., the next fe a tures to be a dded 46
  13. Second Act – Software Design Show your a rchitecture a

    nd cl a ss di a gr a m. (Show wh a t is import a nt a nd m a ke it e a sy to re a d for the a udience) :: notes :: (you c a n use colors for the newly a dded cl a sses) • Wh a t did you do th a t m a ke this design “good”. • Do you a chieve SOLID? • Do you improve A, I, or D? (show the 2D plot reg a rding where your cl a sses a re in terms of the p a in zone) 48
  14. Part 2. The product • Describe your a rchitecture (

    a di a gr a m with boxes is f ine) • Describe your design. Could it be e a sy for a new developer to reuse, modify or extend wh a t you h a ve cre a ted? • Show a cl a ss di a gr a m (Expl a in it a nd describe the det a ils) • Be sure the di a gr a m a nd code m a tch. • Wh a t components were developed by e a ch te a m member? Wh a t were the criteri a for splitting the work (components, cl a sses, methods)? 49
  15. Part 2. The product • Source code cle a n,

    DRY, a nd KIS • Code Metrics: LOC, eLOC, lLOC, CC • Structure Metrics: Abstr a ctness, Inst a bility, Dist a nce • Does the product h a ve a “good” qu a lity? • Wh a t fe a tures were Unit Tested? • Services? 52
  16. Lecture 06 - 08 53 Abstract Concrete Stable Hard to

    Change Only incoming dependencies Unstable Changeable Only outgoing dependencies the main sequence Painful Useless 0 1 1 0 Instability Abstractness
  17. 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 fi le executable (see next) 55
  18. Usability •Could someone know how to use it? •Where to

    start? •What the project is about? •Take advantage of your README.md (beau ti fy it) @see https://docs.github.com/en/repositories/ 56
  19. 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.