week 1 summary

Gergő Pintér, PhD

gergo.pinter@uni-corvinus.hu

program is like a recipe

  • executing a program is following a recipe
  • programming is like creating a recipe
  • software development is like running a restaurant
    • come up with recipes,
    • cook the food,
    • ingredient logistics and preparation,
    • food serving,
    • marketing,
    • cleaning

software development often compared to house building

  • because it is an engineering discipline
  • but software does not have to obey the laws of physics
  • software design should focus only on the data structures and the connection between the modules
    • not the implementation details
      (e.g., hardware)

software development is more like gardening

  • a garden might be planned
  • external factors influence the result
    • weather, pests
  • garden needs constant care to bloom
  • sometimes also experimentation
    • methods, tools
  • garden is like an art (with function)

software growth

  • number of lines of code is increasing
    • which increases complexity
  • “every line of code written comes at a price: maintenance” [1]
    • larger garden, more gardening
  • software development processes to handle the complexity

evolution of software life cycle models (incomplete)

  • software life cycle models
    • waterfall
      • improved waterfall
    • V model
    • iterative
    • agile
  • regarding to change management

waterfall model

  • sequential, rigid model
    • (originally) not possible to step back to a previous phase
  • testing is after the implementation, errors are found late in the process
  • not possible to make changes during the development
  • could take years

V model

  • still rigid
  • each phase has output and a review process
    • errors are found at early stage
    • decreases the risk of failure
  • large to small: testing is done in a hierarchical perspective

iterative model

  • software is built incrementally,
    • with each iteration adding new features or refining existing ones
  • possible to get feedback after each iteration
  • can be rigid within an iteration

agile model

  • continuous collaboration and fast response to change, while the iterative model takes a more gradual approach, building up the final product over multiple iterations
  • scrum is an agile methodology

references

[1]
tef, “Write code that is easy to delete, not easy to extend.” https://programmingisterrible.com/post/139222674273/write-code-that-is-easy-to-delete-not-easy-to , 13-Feb-2016.