Prototyping, Evaluation, and Documentation

This week’s structure

This weeks curriculum has tree phases:

Scrapebook

Learning goals for the week.

After this week, you should be able to:


Prototyping

What is a Prototype?

Oxford Dictionary of English

A prototype is an initial version of a software system that is used to demonstrate concepts, try out design options, and find out more about the problem and its possible solutions.

Ian Sommerville, “Software Engineering 9th Edition”

In general, prototypes do not have to be executable. For example, in UI design and development paper-based mock-ups are often used to evaluate usage scenarios. They are extremely cheap to develop and setup, see Marc Rettig, “Practical Programmer: Prototyping for Tiny Fingers”. Comm. ACM, 37 (4), 21–7 (http://berea.mobi/courses/ba4abw-sp13/media/prototyping-for-tiny-fingers.pdf)

However, we focus on technical prototypes. That is executable pieces of software, which we want to evaluate.

Recap - The Architecture of Investigation

When to build a prototype?

What is an experiment in software engineering?

Oxford Dictionary of English

Experiments are launched when we want control over the situation and want to manipulate behavior directly, precisely and systematically. For example, if it is possible to control who is using one method and who is using another method, and when and where they are used, it is possible to perform an experiment.

Experiments may be human-oriented or technology-oriented. In human-oriented experiments, humans apply different treatments to objects, for example, two inspection methods are applied to two pieces of code. In technology-oriented experiments, typically different tools are applied to different objects, for example, two test case generation tools are applied to the same programs.

Claes Wohlin, et al. “Experimentation in Software Engineering”

Experiments are appropriate to investigate different aspects, including:

Claes Wohlin, et al. “Experimentation in Software Engineering”

Benchmarking examples

Oxford Dictionary of English

Benchmarks are just a certain type of experiments in which you compare different but similar solutions or prototypes to each other.

Your turn!

Read the following blog posts, which compare various web frameworks with each other.

  1. https://medium.com/@tschundeee/express-vs-flask-vs-go-acc0879c2122
  2. https://klen.github.io/py-frameworks-bench/#methodic
  3. http://nichol.as/benchmark-of-python-web-servers
  4. https://www.codementor.io/garethdwyer/flask-vs-django-why-flask-might-be-better-4xs7mdf8v
  5. https://stackshare.io/stackups/django-rest-framework-vs-expressjs-vs-flask
  6. https://medium.com/entrepreneurguide-me/rails-vs-django-vs-laravel-an-analysis-of-web-frameworks-from-a-non-technical-founder-312506969afd

Describe with a few bullet points

Exercise on Benchmarking… due next week

There are three webservers running in different parts of the world. They serve a static “Hello, World!”” message. You can access them under the following addresses:

Your task is to plan, setup, execute, and evaluate a small experiment concerning these three webservers. In particluar you have to:

OBS you should execute the experiment twice. Once you measure response times from school and once from home.

Write a document that explains all of the above. That is, that formulates your hypothesis, that describes the experiment setup, that describes how you executed the experiment, that explains how to reproduce your experiment, and that collects, interprets, and discusses you measurement results.