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

CSC309 Lecture 14

CSC309 Lecture 14

Software Engineering II
Sprint Review 2
(202405)

Javier Gonzalez-Sanchez

February 13, 2023
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. jgs CSC 309 Software Engineering II Lecture 14: Sprint Review

    II Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.com Building 14 -227 Office Hours: By appointment
  2. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    3 6 Model (Weather) and set up! Actions, Releases … statistics
  3. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    5 Note Recommendations after Sprint 2
  4. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    6 Demo of your project. Show your project running. Particularly New Features First Act – Demo
  5. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    7 Taiga à Stories, Backlogs, and Task board Stories (INVEST), Sprint backlog, product backlog. Estimation (story points) Talk about tasks; who is doing what? Everybody is doing some programming! Show and explain your Burndown Chart. Second Act – Your process
  6. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    8 Show your class diagram. Use colors for the newly added classes) If there are new functionalities, then there are new classes (Single Responsibility Principle) How they are connected? (Abstract Class? Interfaces?) What are the A, I, or D in the new class? (show the 2D plot regarding where your classes are in terms of the pain zone) Third Act – Software Design
  7. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    9 Show US your GitHub Who is doing What? (everyone is adding or updating code) Show US your Code and Code Metrics Are your metrics OK (LOC, eLOC, lLOC, CC)? Any significant aspect that you want to share? Do you acquire technical debt for something? What did you that made this code better than the one in the CSC 308 submission? Test Cases (Unit Testing) What are you testing? Why? Fourth Act – Code
  8. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    10 Review What is Good in the product? What is next for the product (next features to be added)? (your promise for the next sprint presentation) What Problems/Risks were detected in the product? Retrospective (Process & People) What went well? What did not go well? And your velocity this sprint and the previous one Fifth Act – Review and Retrospective
  9. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    11 § “Any fool can write code that a computer can understand. Good programmers write code that humans can understand”. -Martin Fowler Coding Take care of Clean Coding (Readability) And Clean Design
  10. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    13 § The Robot class in the Java AWT is useful for GUI test automation and self- running demos. § Robot enables users to control the mouse and keyboard devices. Robot Class in Java
  11. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    14 import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; public class Main { public static void main(String[] args) throws AWTException, InterruptedException { Robot robot = new Robot(); //Write hello robot.keyPress(KeyEvent.VK_H); Thread.sleep(500); robot.keyPress(KeyEvent.VK_I); Thread.sleep(500); robot.keyPress(KeyEvent.VK_SPACE); Thread.sleep(500); robot.keyPress(KeyEvent.VK_H); Thread.sleep(500); robot.keyPress(KeyEvent.VK_I); Thread.sleep(500); //Move mouse robot.mouseMove(100, 100); Thread.sleep(500); robot.mouseMove(200, 200); Thread.sleep(500); robot.mouseMove(300, 300); Thread.sleep(500); } } Robot Class in Java
  12. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    15 § JLayeredPane is a container in Java Swing that enables to overlay and manage (positions and visibility) for multiple components in a single container. § https://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html JLayered Pane Class in Java
  13. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    16 import javax.swing.*; import java.awt.*; public class Main extends JFrame { public Main() { setTitle("Layered Pane Example"); JLayeredPane layeredPane = new JLayeredPane(); layeredPane.setPreferredSize(new Dimension(400, 400)); BackgroundPanel backgroundPanel = new BackgroundPanel(); backgroundPanel.setBounds(0, 0, 400, 400); layeredPane.add(backgroundPanel, JLayeredPane.DEFAULT_LAYER); AnimatedPanel animatedPanel = new AnimatedPanel(); animatedPanel.setOpaque(false); animatedPanel.setBounds(0, 0, 400, 400); layeredPane.add(animatedPanel, JLayeredPane.PALETTE_LAYER); add(layeredPane); } public static void main(String[] args) { Main main = new Main(); main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); main.setSize(400, 400); main.setVisible(true); } } JLayered Pane Class in Java
  14. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    17 import javax.swing.*; import java.awt.*; public class BackgroundPanel extends JPanel { public BackgroundPanel() { super(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLUE); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(Color.YELLOW); g.fillRect(0, 0, getWidth() / 3, getHeight()); } } JLayered Pane Class in Java
  15. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    18 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class AnimatedPanel extends JPanel { public AnimatedPanel() { super(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.RED); g.fillOval(100, 100, 50, 50); } } JLayered Pane Class in Java
  16. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    19 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class AnimatedPanel extends JPanel implements ActionListener{ private Timer timer; private int x1, y1; public AnimatedPanel() { super(); timer = new Timer(50, this); timer.start(); } public void actionPerformed(ActionEvent e) { moveCircle(); repaint(); } Timer
  17. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    20 private void moveCircle() { x1 += 5; if (x1 > 400) { x1 = -50; } y1 = 200; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.RED); g.fillOval(x1, y1, 50, 50); // Draw a red circle } } Timer
  18. jgs

  19. jgs CSC 309 Software Engineering II Lab 14: Work in

    your Sprint Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.com Building 14 -227 Office Hours: By appointment
  20. jgs CSC 309 Software Engineering II Javier Gonzalez-Sanchez, Ph.D. [email protected]

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