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

SER516 Lecture 25a

SER516 Lecture 25a

Software Agility: Project and Process Management
Software Factories
(202004)

B546a9b97d993392e4b22b74b99b91fe?s=128

Javier Gonzalez

March 02, 2019
Tweet

Transcript

  1. SER516 Software Agility: Project and Process Management Javier Gonzalez-Sanchez javiergs@asu.edu

    javiergs.engineering.asu.edu Office Hours: By appointment
  2. Software Product Families, Software Product Lines, and Software Factories 21

  3. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 3 Software

    Product Family § A group of related systems or applications sharing a common set of features manufactured from a common set of core assets. § Develop: Manufacturing (several) vs Craftmanship (one) § Reuse: systematic vs opportunistic (copy/paste)
  4. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 4 Software

    Product Line Create a collection of similar systems (a family), through an assembly process, from a common set of assets following a common architecture Goal: § productivity, § quality and § evolution capability
  5. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 5 Software

    Product Line Create a collection of similar systems (a family), through an assembly process, from a common set of assets following a common architecture
  6. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 6 Example

    | FaceView § Face face = new Face(); // … § ClientEngine dataSource = ClientEngine(); dataSource.start(); dataSource.addObserver(face); this.add(face); // … § public interface Face // extend Observer{ // parser // paint }
  7. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 7 Software

    Factory A software factory is a software product line supported and configured for a particular domain with tools and processes.
  8. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 8 Ad

    Hoc Development Project 3
  9. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 9 Ad

    Hoc Development
  10. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 10 Ad

    Hoc Development • D • A • I • ELOC • Cyclomatic Complexity • SOC • DRY • KISS
  11. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 11 Example

    1
  12. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 12 Example

    1 Is it readable? What class should you open to change the face?
  13. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 13 Example

    2
  14. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 14 Example

    2
  15. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 15 Software

    Factories § Abstraction (Features). hide complexity; emphasize characteristics; features to model to code. § Granularity (Size). Coarse grained components. (more functionality and fewer dependencies) § Specificity (Scope). Separation of commonality (core) and variability (optional).
  16. Abstractions

  17. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 17 Abstractions

    charts faces client server pushData popData console parser data UI client UI server
  18. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 18 Abstractions

    parser charts face client server pushData popData console console data UI client data UI client
  19. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 19 Abstractions

    § Face face = new Face (); § ChartView charts = new ChartView(); § ClientEngine engine = new ClientEngine(); § Console console = new Console(); § engine.addObserver(face); § engine.addObserver(charts); § engine.addObserver(console); § engine.start(); § UIClient view = new UIClient (face, chart);
  20. Granularity

  21. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 21 Granularity

    parser charts face client popData console data UI client
  22. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 22 Granularity

    parser charts face client popData console data UI client
  23. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 23 Granularity

    parser charts face client popData console data UI client
  24. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 24 Granularity

    § Create a Contract public interface FaceInterface extends Observer { // variables ?? // new ?? public void update(Observable observable, Object object); public void paint(); }
  25. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 25 Granularity

    § Apply a Contract public class myFace extends JPanel implements FaceInterface { public void update(Observable observable, Object object) { FaceData data = (FaceData)observable.getValue() } public void paint(); // drawHead(); // drawEyes(); // drawMouth(); repaint(); }
  26. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 26 Granularity

    § What did you do to use jFreeChart? § What did you do to use javax.json?
  27. Specificity

  28. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 28 Specificity

    parser charts face client server pushData popData console console data UI client data UI client General vs Particular
  29. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 29 Specificity

    General vs Particular
  30. SER516 – Software Agility Javier Gonzalez-Sanchez javiergs@asu.edu Spring 2018 Disclaimer.

    These slides can only be used as study material for the SER516 course at ASU. They cannot be distributed or used for another purpose.