Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

jgs Previously

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

jgs Notes

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

jgs Tools

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

jgs Deployment

Slide 22

Slide 22 text

jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 22 POM.XML

Slide 23

Slide 23 text

jgs Extra Things CSC 357

Slide 24

Slide 24 text

jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 24 TCP Socket

Slide 25

Slide 25 text

jgs To Be Continued…

Slide 26

Slide 26 text

jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 26 Questions

Slide 27

Slide 27 text

jgs

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 30 Let’s Work

Slide 30

Slide 30 text

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.