Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSC305 Summer Lecture 12

CSC305 Summer Lecture 12

Individual Software Design and Development
Final Project + Structural Metrics
(202508)

Avatar for Javier Gonzalez-Sanchez

Javier Gonzalez-Sanchez PRO

August 22, 2025
Tweet

Transcript

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

    CSC 305 Individual Software Design and Development | Summer Version Lecture 12. Final Project + Structural Metrics
  2. Announcements 2 Final Exam August 29 at 12:00 pm (during

    lecture time) Final Project Due August 29 by 11:59 pm No extensions — submit whatever you complete.
  3. Running code isn’t enough — design matters This class is

    about design, not just programming.Being able to compile and run your code is necessary but not sufficient — the focus should be on demonstrating clear design, quality, and adherence to standards.
  4. Submission a ) Fin a l Version of Source Code

    – Submit your repository a s ZIP f ile (j a v a , README.md, pom.xml included) b) Softw a re Design – Submit your UML cl a ss di a gr a m a s a PNG or JPEG im a ge, cre a ted using the Ast a h tool. c) Fin a l Present a tion Video – Provide a link to your recorded present a tion. 5
  5. Ask Yourselves • Does this cl a ss follow SRP,

    DRY, KIS principles? Is it re a d a ble, cle a n, a nd does it include the required J a v a Doc? • Am I a pplying st a nd a rd solutions for sh a ring d a t a , storing d a t a , p a ssing p a r a meters, building complex objects, h a ndling decision-m a king logic, a nd a dding a ttributes or functions a t runtime? • Ref a ctoring is OK – your re a l work begins a fter the code compiles a nd runs - • Does my code m a tch the UML di a gr a m I a m a tt a ching? • I a m con f ident I c a n expl a in both the code a nd the corresponding di a gr a m in a 5- minute video. It is very notice a ble when someone is trying to a void det a ils or is not con f ident in their implement a tion. 7
  6. Ask Yourselves How many lines per method? How many classes

    per file? How many Attributes (Global Variables)?
  7. 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/ 9
  8. UML Class Diagram We will talk more during the review.

    But remember: Your diagram is an essential part of the project — not just a cover page.
  9. 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 extr a items or missing items. 15
  10. Second Act – Software Design Show your UML 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 cl a sses, for inst a nce, group cl a sses of the s a me p a ttern) • Wh a t did you do th a t m a ke this design “good”. • Do you a chieve DRY, KIS, SRP, Cle a n, Re a d a ble, Document? • 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) 17
  11. Second Act – Structural Metrics 18 Abstract concrete Stable Hard

    to Change Only incoming dependencies Unstable Changeable Only outgoing dependencies
  12. Third Act – The product Show, expl a in, a

    nd highlight how e a sy it is to re a d your code. • Expl a in to the viewer why a nd how your source code is cle a n, follows DRY, a nd a pplies KIS principles. • Ensure e a ch cl a ss is in its own f ile. • Provide J a v a Doc comments for e a ch cl a ss. • Showc a se how your code m a tches your design (cl a ss di a gr a m), cl a ss by cl a ss. • Re f lect: Does the product h a ve “good” qu a lity? If not, wh a t is missing? • This is your opportunity to justify the use of “extr a ” glob a l v a ri a bles, duplic a ted code, overuse of st a tic methods, or a ny other rule you m a y h a ve broken. 20
  13. (self and peer evaluation) • NOT for the video. A

    link will be provided for this • (self a nd peer ev a lu a tion) Wh a t should be your gr a de a nd the gr a de of e a ch of your te a mm a tes? - if a ny 21
  14. Project | Example 1 | Tab 1 24 M a

    in01.j a v a M a in02.j a v a M a in03.j a v a M a in04.j a v a M a in05.j a v a README.md Src LICENSE M a in01.j a v a Take the population values and divide them into three groups by first finding the largest and smallest values, then calculating the range between them, and finally using that range to set two cut- off points.
  15. Project | Example 1 | Tab 2 25 M a

    in01.j a v a M a in02.j a v a M a in03.j a v a M a in04.j a v a M a in05.j a v a * java files colors to be calculated; * not showing them here Add inheritance and local variables, but only for the other classes in this folder
  16. Project | Example 1 | Tab 3 26 The class

    diagram shown is a simulation, not the actual one. However, the shapes for classes, interfaces, and abstract classes are correct, as are the relationships between them.
  17. Project | Example 1 | Tab 4 27 The class

    diagram shown is a simulation, not the actual one. However, the shapes for classes, interfaces, and abstract classes are correct, as are the relationships between them. Painful Useless
  18. Project | Example 2 | Tab 1 28 M a

    in01.j a v a M a in02.j a v a M a in03.j a v a M a in04.j a v a M a in05.j a v a delete.tmp M a in01.j a v a M a in01.j a v a M a in01.j a v a Take the population values and divide them into three groups by first finding the largest and smallest values, then calculating the range between them, and finally using that range to set two cut- off points.
  19. Project | Example 2 | Tab 2 29 M a

    in01.j a v a M a in02.j a v a M a in03.j a v a M a in04.j a v a M a in05.j a v a * java files colors to be calculated; * not showing them here
  20. Project | Example 2 | Tab 3 30 The class

    diagram shown is a simulation, not the actual one. However, the shapes for classes, interfaces, and abstract classes are correct, as are the relationships between them.
  21. Project | Example 1 | Tab 4 31 The class

    diagram shown is a simulation, not the actual one. However, the shapes for classes, interfaces, and abstract classes are correct, as are the relationships between them. Painful Useless
  22. Project | Example 3 | Tab 2 33 M a

    in01.j a v a * java files colors to be calculated; * not showing them here
  23. Project | Example 3 | Tab 3 34 The class

    diagram shown is a simulation, not the actual one. However, the shapes for classes, interfaces, and abstract classes are correct, as are the relationships between them.
  24. Project | Example 1 | Tab 4 35 The class

    diagram shown is a simulation, not the actual one. However, the shapes for classes, interfaces, and abstract classes are correct, as are the relationships between them. Painful Useless
  25. Create a GitHub Token • Log into GitHub, go to

    Settings, then Developer settings. • Under Access → Tokens choose cl a ssic tokens (works for a ll repos). • Click Gener a te new token, give it a n a me a nd expir a tion, a nd set scopes: public_repo for public repos, repo a ccess for priv a te repos. • Fin a lly, copy the token. 37
  26. 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). 42
  27. 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) 43
  28. Distance 44 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
  29. CSC 305 Individual Software Design and Development Javier Gonzalez-Sanchez, Ph.D.

    [email protected] Summer 2025 Copyright. These slides can only be used as study material for the class CSC305 at Cal Poly. They cannot be distributed or used for another purpose.