Slide 1

Slide 1 text

Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.info office: 14 -227 CSC 508/9 Software Engineering (Design & Deployment) Lecture 14. Final Review

Slide 2

Slide 2 text

Grading 2

Slide 3

Slide 3 text

Grading

Slide 4

Slide 4 text

jgs The following slides shows some examples
 related to some topics
 
 
 This is NOT a comprehensive list of topics


Slide 5

Slide 5 text

Key Ideas Lecture 01

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Idea 7 OOAD, Grady Booch, 2007

Slide 8

Slide 8 text

Lecture 01 8

Slide 9

Slide 9 text

Key Ideas Lecture 02-05, 11

Slide 10

Slide 10 text

Blueprint Architecture Design Code

Slide 11

Slide 11 text

Model-View-Controller 11

Slide 12

Slide 12 text

Drafting an Implementation 12

Slide 13

Slide 13 text

Client-Server 13

Slide 14

Slide 14 text

Homework 14 Brain View Controller Client Blackboard PostOffice Model Server Publisher Subscriber

Slide 15

Slide 15 text

Team 2. Affect Recognition Module Affect Recognition (speed) 15

Slide 16

Slide 16 text

Team 3. Head Tracking Module Head Movement 16

Slide 17

Slide 17 text

Team 4. Cobot Universal Robotics - eSeries 17

Slide 18

Slide 18 text

Team 5. Control Dashboard Hub 18

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Does this smells? 20

Slide 21

Slide 21 text

Key Ideas Lecture 06

Slide 22

Slide 22 text

Clean Code Readability • DRY • KIS • SRP • Comments • Error Handling with a Logger 22 Metrics • LOC (eLOC, lLOC) • CC • A • I • D

Slide 23

Slide 23 text

• Instability = Cout (Cin + Cout) Stable Abstraction Principle (SAP) 23

Slide 24

Slide 24 text

Example 24

Slide 25

Slide 25 text

Structural Metrics 26 Instability = Cout (Cin + Cout) D = A + I – 1

Slide 26

Slide 26 text

Key Ideas Lecture 06, 11

Slide 27

Slide 27 text

Relationships 29 Association Directed Association Reflexive Association Multiplicity Aggregation Composition Generalization Realization

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

Example 31 Write the Source Code

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

DIP Example 33

Slide 32

Slide 32 text

GoF Patterns 34

Slide 33

Slide 33 text

Tools Lecture 08, 10, 12

Slide 34

Slide 34 text

POM.xml 36

Slide 35

Slide 35 text

src/main/resources/logback.xml 37 https://github.com/CSC3100/Tool-Logging

Slide 36

Slide 36 text

Good Idea 38 message 01 message 02 message 03 message 04 message 05

Slide 37

Slide 37 text

logs.betterstack.com 39

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

Key Ideas Lecture 13

Slide 40

Slide 40 text

Environment

Slide 41

Slide 41 text

Final Project Presentation

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

Demo Part 1

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

Architecture and Design Part 2

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

Part 2. The product • Docker? • Libraries? 50

Slide 49

Slide 49 text

Code Part 3

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

Structural Metrics 53 Abstract concrete Stable Hard to Change Only incoming dependencies Unstable Changeable Only outgoing dependencies

Slide 52

Slide 52 text

Deployment Part 4

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

Deployment | POM.XML 56

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

Peers Not for the Video

Slide 57

Slide 57 text

(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

Slide 58

Slide 58 text

Questions 60

Slide 59

Slide 59 text

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.