<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Real Pro jects with Informal Models</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dora Dzvonyar</string-name>
          <email>dzvonyar@in.tum.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stephan Krusche</string-name>
          <email>krusche@in.tum.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lukas Alperowitz</string-name>
          <email>alperowi@in.tum.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Technische Universität München</institution>
          ,
          <addr-line>Munich</addr-line>
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Informal models help to generate a shared understanding about the software to be developed as early as possible. In this paper we describe how we use informal models to react to different initial situations for project teams in our capstone course. We explain how we handle three cases ranging from projects without requirements to projects with detailed specifications. Project participants are convinced of the advantages of informal models and agree that they improve the outcome of their projects.</p>
      </abstract>
      <kwd-group>
        <kwd>Teaching</kwd>
        <kwd>Real Projects</kwd>
        <kwd>Informal Models</kwd>
        <kwd>Communication Models</kwd>
        <kwd>Prototyping</kwd>
        <kwd>Release Management</kwd>
        <kwd>Software Theater</kwd>
        <kwd>Trailer</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        In software engineering practical courses, we encourage the use of informal
models such as trailers, mock-ups, scenarios and early prototypes. As opposed to
formal models, informal models can be incomplete, ambiguous, or even
unrealizable. We also call them communication models as they facilitate the exchange
of ideas between customers and developers [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        In this paper we describe how we embed informal models into the lifecycle of
our project course and explain how we teach their usage to students. In
particular, we show three examples in which informal models help to deal with different
situations in the beginning of a project.
In summer 2014, we conducted a multi-customer capstone course called iOS
Praktikum in which students developed mobile applications with industry
partners and real deadlines. A project-based organization allows us to run multiple
software engineering projects at the same time [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. 100 participants developed 16
applications for 11 industry partners during the 2014 summer term. The results
of the course, including the video recordings of the final presentations, are
available on the course website.1 In this course we took the roles of a Team Coach
(Dora Dzvonyar) and Instructors (Stephan Krusche and Lukas Alperowitz). For
a detailed description of those roles see [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
1 http://www1.in.tum.de/ios14
      </p>
      <p>
        We organize the projects in an agile way using Scrum [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and elements of the
Unified Process [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The overall timeline is shown in fig. 1. Our course runs over
a period of three months and starts with a kickoff event in which each customer
presents their problem. The students then solve these problems in teams and
showcase their progress in two course-wide presentations, the Design Review
and the Customer Acceptance Test.
      </p>
      <p>
        In the Design Review, which takes place after two thirds of the course
duration, they focus on presenting the overall architecture together with the
rationale behind their design decisions. They also show a trailer which they typically
create in the beginning of the project. The technique of using video for
requirements elicitation, called software cinema [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], has shown to help the participants
to communicate the main idea of their project. At the end of the course, we
organize a Customer Acceptance Test (CAT) in which each team presents their
final application. In both presentations, especially in the CAT, we encourage the
participants to demonstrate their product by acting out a scenario while
showcasing their application. We call this technique software theater and believe that
it enriches the presentations by giving a more comprehensible impression of the
project outcome [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <sec id="sec-1-1">
        <title>Project</title>
      </sec>
      <sec id="sec-1-2">
        <title>Kickoff</title>
        <p>Team </p>
      </sec>
      <sec id="sec-1-3">
        <title>Allocation</title>
        <p>Design </p>
      </sec>
      <sec id="sec-1-4">
        <title>Review</title>
        <p>Customer 
Acceptance </p>
      </sec>
      <sec id="sec-1-5">
        <title>Test</title>
        <sec id="sec-1-5-1">
          <title>Sprint 0</title>
          <p>Software Cinema</p>
        </sec>
        <sec id="sec-1-5-2">
          <title>Development Sprints</title>
          <p>Software Theater
Software Theater</p>
        </sec>
      </sec>
      <sec id="sec-1-6">
        <title>April</title>
        <p>May</p>
      </sec>
      <sec id="sec-1-7">
        <title>June</title>
      </sec>
      <sec id="sec-1-8">
        <title>July</title>
        <p>
          The prior knowledge of participants varies from undergraduates in their first
year up to graduates with profound experience in software engineering. During
the first week of the course, we assign the students to project teams based on their
personal preferences as well as their prior experience with the goal of creating
balanced teams. This approach permits less experienced students to learn from
experienced ones and facilitates knowledge exchange within the project team [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
Additionally we hold interactive tutorials in which we familiarize the students
with the tools for creating informal models. Different velocities in the teams
lead to the situation, that some participants gain first experiences with informal
models even before we cover the topic in the tutorial. Therefore we use concepts
from experiential learning [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], encouraging them to build best practices and learn
from their experiences [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ].
        </p>
        <p>
          Most of the teams receive a problem statement from their customer right at
the beginning of the course. It includes at least one visionary scenario describing
the purpose of the system [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. To build team spirit and to synchronize all students
regarding technical expertise as well as understanding of the requirements, each
team conducts a non-development sprint, which we call Sprint 0 [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. In this sprint
we encourage the use of informal models to create a common understanding of
the problem between team and customer.
        </p>
        <p>
          After Sprint 0, the students work with these informal models, transforming
them into executable prototypes in regular development sprints which usually
last one to two weeks. In the later stages of the course, they refine and formalize
their early models, but also create new informal models, e.g. to quickly propose
a solution to a change request made by the customer. When the team wants to
obtain feedback, the students deliver an executable prototype to their customer
using the continuous delivery workflow described in [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ].
        </p>
        <p>
          In recent years, we conducted evaluations using questionnaires about how
informal models, in particular executable prototypes, are used by the project
teams and in management meetings throughout the whole course lifecycle.
Results of our evaluations can be found in [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] and [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. In the following section, we
concentrate on the use of various informal models during the initial phase of the
projects.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Case Study</title>
      <p>The heterogeneity of projects and customers in our course leads to the
situation, that some teams start with a detailed problem statement with concrete
requirements, while others begin their project only with a vague idea. This
results in varying starting positions and differences in team velocities which raise
challenges at the beginning of the course.</p>
      <p>Depending on the level of detail of the problem statement, the teams lay a
different focus on the three activities requirements elicitation, analysis and design
in Sprint 0. This section describes three typical cases of initial positions and
outlines how the teams use informal models to master their individual situation.
These situations are shown in fig. 2 together with the lifecycle activities the teams
need to focus on and the required artifacts as black diamonds, that also represent
important milestones in the lifecycle model. In each case we report about the
opinions of one project participant regarding the use of informal models.
Situation 1: There is no problem statement and no top-level design
If the team does not receive a problem statement, the developers focus on
requirements elicitation activities during the first weeks of the project. Projects
without problem statements usually involve a high degree of innovation, and
sometimes the customer does not have a clear idea of the desired application in
the beginning. During requirements elicitation, developers and customer
elaborate and agree on at least one visionary scenario describing the main purpose of
the application. This scenario then serves as basis for analysis and design.</p>
      <p>In the summer 2014 course, one of the customers without a problem
statement was Siemens IT. The team was presented with a vague idea of an
application motivating employees to get to know a company-internal reporting solution.
2
n
o
i
t
a
u
t
i
S</p>
      <p>Problem</p>
      <p>Statement
3
iton SPtarotebmleemn t
a
u
tiS Top Level </p>
      <p>Design</p>
      <p>Problem</p>
      <p>Statement
Requirements Elicitation</p>
      <p>Analysis
Analysis</p>
      <p>Design
Top Level 
Design
Product 
Backlog
Design
Product 
Backlog
Detailed 
Design
UI 
Mock-ups</p>
      <p>Analysis
Detailed 
Design
UI </p>
      <p>Mock-ups
Sprint 1
Project Kickoff</p>
      <p>Sprint 0
Top Level 
Design
Product 
Backlog
Sprint 1
Thiemo Taube, the team coach, guided the developers through the requirements
elicitation phase. According to him, creating a short trailer for the application
helped the developers to generate a common understanding of the purpose of
their product. The team members also wrote visionary scenarios describing the
way users interact with the system. These informal modeling activities motivated
the developers to analyze all aspects of the problem and to discuss and verify
their assumptions with the customer.</p>
      <p>
        Situation 2: There is a problem statement, but no top-level design
If the team receives a problem statement including a detailed visionary scenario,
it can immediately start to divide the requirements into backlog items, e.g. user
stories. The developers can also define the top-level design, describing the
overall architecture and potential technologies used for the communication between
subsystems. Both artifacts provide the basis for the following design activities,
in which the team members refine the top-level design. The result of these
activities is a detailed subsystem decomposition which they visualize in an UML
Deployment Diagram [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        Furthermore, they start designing the user interface of the application. We
encourage the developers to use low-fidelity mock-ups, e.g. drawn on paper or
created using a tool such as Balsamiq [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. One advantage of unpolished
interface designs is that they are fast to produce and easy to adapt [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Thus,
they are well-suited for facilitating discussions between stakeholders early in
the project. Moreover, showing low-fidelity mock-ups to the customer helps to
avoid unrealistic expectations regarding the status of the implementation. If the
team produces perfectly refined screen designs from the beginning, they risk
the customer thinking that the application is almost finished even though the
actual functionality is not yet implemented [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Research has also shown that
unpolished designs generate more feedback than high-fidelity ones because the
customer is not afraid that his comments lead to high modification effort [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
      </p>
      <p>In the BMW project, the team obtained a detailed problem statement. The
goal was to design an application for conveniently arranging appointments
between drivers and car workshops. Vitus Holzner, customer of the project, reports
that receiving early prototypes was very useful both during Sprint 0 and the
regular development sprints. According to him, they helped to detect
misunderstandings and ensured that developers understood the complex details of the
problem statement. He was able to get an impression of how it feels to use the
application instead of having to imagine it based on a formal specification.
Situation 3: There is a problem statement and a top-level design
If the team receives a detailed problem statement and a top-level design from
the customer, both analysis and design activities can start immediately. This
is usually the case when developers are refining an existing application or the
customer has profound background knowledge in software engineering.</p>
      <p>An example in this category was the NTT DATA project. The team
improved the user interface of an already existing iPhone app for finding and
reserving electric bikes. It also extended the application with the capability of
reporting damages on a defective bike. The customer of the project, Frank von
Eitzen, recommends that project participants communicate their ideas of a
system through informal models whenever possible, not only during requirements
elicitation. Fig. 3 shows a top-level design which he used in the kickoff
presentation. While it does not follow any formal rules, it helps to convey the overall
system architecture. It is also easier to understand than e.g. an UML Deployment
Diagram.</p>
      <p>According to Frank von Eitzen, low-fidelity interface designs such as pen and
paper sketches are very useful informal models. They facilitate discussions while
keeping both customers and developers focused on the essential parts of the
application. They were used in the project to choose between different design
alternatives for a particular functionality. Fig. 4 shows from left to right the
evolution of a first whiteboard sketch of a new screen through a mock-up made with
Balsamiq into a finished interface. He also reports that executable prototypes
delivered by the development team gave him a good insight into the status of
the implementation. They allowed him to verify that the agreed functionality
had been realized as desired and to plan the subsequent iteration.
In this paper we described how we use informal models in our capstone course. In
three exemplary projects, we showed how informal models help students to deal
with different starting situations. While factors such as the degree of innovation
or the technical requirements of a project influence team velocity, the initial
situation of a team is determined largely by the level of specification provided
by the customer. For each case, we outlined how informal models helped them
to master these individual challenges.</p>
      <p>We also described how informal models can help to generate a shared
understanding in the early stages of software development. They facilitate
communication and discussion, and encourage customers to give feedback. Our project
participants are convinced of the advantages of informal modeling and agree
that it has improved the outcome of their projects. While we encourage our
VII
students to use informal models we also teach them how to transition to formal
specification at later stages in the course.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Bruegge</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krusche</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Teaching Tornado</article-title>
          .
          <source>In: Proceedings of EduSymp '12</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2012</year>
          )
          <fpage>5</fpage>
          -
          <lpage>12</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Schwaber</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beedle</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Agile software development with Scrum. Prentice Hall PTR (</article-title>
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Kruchten</surname>
            ,
            <given-names>P.:</given-names>
          </string-name>
          <article-title>The rational unified process: an introduction</article-title>
          . Addison-Wesley
          <string-name>
            <surname>Professional</surname>
          </string-name>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Creighton</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ott</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bruegge</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Software cinema - video-based requirements engineering</article-title>
          . In: Requirements Engineering, 14th IEEE International Conference, IEEE (
          <year>2006</year>
          )
          <fpage>109</fpage>
          -
          <lpage>118</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bruegge</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krusche</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alperowitz</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Software Engineering Project Courses with Industrial Clients</article-title>
          .
          <source>ACM Transactions on Computing Education (TOCE)</source>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Braun</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dutoit</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Bruegge</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>A software architecture for knowledge acquisition and retrieval for global distributed teams</article-title>
          .
          <source>In: GSD'03 The International Workshop on Global Software Development</source>
          . (
          <year>2003</year>
          )
          <fpage>24</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kolb</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Experiential learning: Experience as the source of learning and development</article-title>
          . Prentice Hall. (
          <year>1984</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Krusche</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alperowitz</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Introduction of Continuous Delivery in Multi-customer Project Courses</article-title>
          .
          <source>In: Proceedings of ICSE'14</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2014</year>
          )
          <fpage>335</fpage>
          -
          <lpage>343</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Bruegge</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dutoit</surname>
            ,
            <given-names>A.H.: Object</given-names>
          </string-name>
          <string-name>
            <surname>Oriented Software Engineering Using</surname>
            <given-names>UML</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patterns</surname>
          </string-name>
          , and
          <string-name>
            <surname>Java</surname>
          </string-name>
          . Prentice Hall International (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Krusche</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alperowitz</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bruegge</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Rugby: An Agile Process Model Based on Continuous Delivery</article-title>
          .
          <source>In: Proceedings of RCoSE'14</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2014</year>
          )
          <fpage>42</fpage>
          -
          <lpage>50</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. Balsamiq Studios: Balsamiq Mockups (
          <year>2014</year>
          ) http://balsamiq.com/products/ mockups, accessed
          <volume>07</volume>
          /18/
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Mayhew</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>The Usability Engineering Lifecycle: A Practitioner's Guide to User Interface Design</article-title>
          . Morgan Kaufmann Publishers (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Spolsky</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>The Iceberg Secret, Revealed</article-title>
          . In: Joel on Software. Springer (
          <year>2004</year>
          )
          <fpage>189</fpage>
          -
          <lpage>195</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Rudd</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stern</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Isensee</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Low vs. high-fidelity prototyping debate</article-title>
          .
          <source>Interactions</source>
          (
          <year>1996</year>
          )
          <fpage>76</fpage>
          -
          <lpage>85</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>