=Paper= {{Paper |id=Vol-1346/paper4 |storemode=property |title=Real Projects with Informal Models |pdfUrl=https://ceur-ws.org/Vol-1346/edusymp2014_paper_5.pdf |volume=Vol-1346 |dblpUrl=https://dblp.org/rec/conf/models/DzvonyarKA14 }} ==Real Projects with Informal Models== https://ceur-ws.org/Vol-1346/edusymp2014_paper_5.pdf
             Real Projects with Informal Models

             Dora Dzvonyar, Stephan Krusche, and Lukas Alperowitz

                  Technische Universität München, Munich Germany
                      {dzvonyar,krusche,alperowi}@in.tum.de



        Abstract. 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 situa-
        tions 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 advan-
        tages of informal models and agree that they improve the outcome of
        their projects.

        Keywords: Teaching, Real Projects, Informal Models, Communication
        Models, Prototyping, Release Management, Software Theater, Trailer


1     Introduction
In software engineering practical courses, we encourage the use of informal mod-
els such as trailers, mock-ups, scenarios and early prototypes. As opposed to
formal models, informal models can be incomplete, ambiguous, or even unreal-
izable. We also call them communication models as they facilitate the exchange
of ideas between customers and developers [1].
    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 particu-
lar, we show three examples in which informal models help to deal with different
situations in the beginning of a project.


2     Course Description
In summer 2014, we conducted a multi-customer capstone course called iOS
Praktikum in which students developed mobile applications with industry part-
ners and real deadlines. A project-based organization allows us to run multiple
software engineering projects at the same time [1]. 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 avail-
able 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 [1].
1
    http://www1.in.tum.de/ios14
II

    We organize the projects in an agile way using Scrum [2] and elements of the
Unified Process [3]. 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.
    In the Design Review, which takes place after two thirds of the course dura-
tion, they focus on presenting the overall architecture together with the ratio-
nale 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 require-
ments elicitation, called software cinema [4], 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 show-
casing 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 [5].


          Project
                                                            Design                      Customer
          Kickoff
                                                            Review                      Acceptance
            Team                                                                        Test
            Allocation
               Sprint 0                    Development Sprints
                Software Cinema          Software Theater            Software Theater

           April                   May                      June                    July

                              Fig. 1. Capstone course timeline



    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 [6].
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 [7], encouraging them to build best practices and learn
from their experiences [8].
    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 [9]. To build team spirit and to synchronize all students
                                                                                  III

regarding technical expertise as well as understanding of the requirements, each
team conducts a non-development sprint, which we call Sprint 0 [1]. In this sprint
we encourage the use of informal models to create a common understanding of
the problem between team and customer.
    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 [10].
    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. Re-
sults of our evaluations can be found in [8] and [10]. In the following section, we
concentrate on the use of various informal models during the initial phase of the
projects.


3   Case Study

The heterogeneity of projects and customers in our course leads to the situa-
tion, that some teams start with a detailed problem statement with concrete
requirements, while others begin their project only with a vague idea. This re-
sults in varying starting positions and differences in team velocities which raise
challenges at the beginning of the course.
    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 re-
quirements 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 elabo-
rate 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.
    In the summer 2014 course, one of the customers without a problem state-
ment was Siemens IT. The team was presented with a vague idea of an applica-
tion motivating employees to get to know a company-internal reporting solution.
IV




          Situation 1
                                                             Problem
                                                            Statement
                                                                                                    Top Level
                                    Requirements Elicitation                                        Design

                                                                              Analysis                 Product
                                                                                                       Backlog


                                                                Product
          Situation 2
                                          Analysis              Backlog
                         Problem                                                         Detailed
                        Statement
                                                                Design
                                                                                         Design       Sprint 1
                                                                                         UI
                                                Top Level                                Mock-ups
                                                 Design

                                                                Product
          Situation 3




                                          Analysis              Backlog
                         Problem
                        Statement                                  Detailed
                                                                   Design          Sprint 1
                                             Design
                                                                   UI
                        Top Level
                                                                   Mock-ups
                         Design


                    Project Kickoff                  Sprint 0

     Fig. 2. Varying initial situations, based on the lifecycle model described in [10]



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.

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 over-
all 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 ac-
tivities is a detailed subsystem decomposition which they visualize in an UML
Deployment Diagram [9].
    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 [11]. One advantage of unpolished in-
terface designs is that they are fast to produce and easy to adapt [12]. 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
                                                                               V

the customer thinking that the application is almost finished even though the
actual functionality is not yet implemented [13]. 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 [14].
   In the BMW project, the team obtained a detailed problem statement. The
goal was to design an application for conveniently arranging appointments be-
tween 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 misunder-
standings 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.
    An example in this category was the NTT DATA project. The team im-
proved the user interface of an already existing iPhone app for finding and re-
serving 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 sys-
tem through informal models whenever possible, not only during requirements
elicitation. Fig. 3 shows a top-level design which he used in the kickoff presen-
tation. 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.




                  Fig. 3. Example of an informal top-level design
VI

    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 evo-
lution 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.




Fig. 4. Evolution of the user interface, from rough sketch (left) to the delivered appli-
cation (right)




4    Conclusion

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.
    We also described how informal models can help to generate a shared under-
standing in the early stages of software development. They facilitate communi-
cation 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.


References
 1. Bruegge, B., Krusche, S., Wagner, M.: Teaching Tornado. In: Proceedings of
    EduSymp ’12, ACM (2012) 5–12
 2. Schwaber, K., Beedle, M.: Agile software development with Scrum. Prentice Hall
    PTR (2002)
 3. Kruchten, P.: The rational unified process: an introduction. Addison-Wesley Pro-
    fessional (2004)
 4. Creighton, O., Ott, M., Bruegge, B.: Software cinema - video-based requirements
    engineering. In: Requirements Engineering, 14th IEEE International Conference,
    IEEE (2006) 109–118
 5. Bruegge, B., Krusche, S., Alperowitz, L.: Software Engineering Project Courses
    with Industrial Clients. ACM Transactions on Computing Education (TOCE)
    (2015)
 6. Braun, A., Dutoit, A. Bruegge, B.: A software architecture for knowledge acqui-
    sition and retrieval for global distributed teams. In: GSD’03 The International
    Workshop on Global Software Development. (2003) 24
 7. Kolb, D.: Experiential learning: Experience as the source of learning and develop-
    ment. Prentice Hall. (1984)
 8. Krusche, S., Alperowitz, L.: Introduction of Continuous Delivery in Multi-customer
    Project Courses. In: Proceedings of ICSE’14, ACM (2014) 335–343
 9. Bruegge, B., Dutoit, A.H.: Object Oriented Software Engineering Using UML,
    Patterns, and Java. Prentice Hall International (2009)
10. Krusche, S., Alperowitz, L., Bruegge, B., Wagner, M.: Rugby: An Agile Process
    Model Based on Continuous Delivery. In: Proceedings of RCoSE’14, ACM (2014)
    42–50
11. Balsamiq Studios: Balsamiq Mockups (2014) http://balsamiq.com/products/
    mockups, accessed 07/18/2014.
12. Mayhew, D.: The Usability Engineering Lifecycle: A Practitioner’s Guide to User
    Interface Design. Morgan Kaufmann Publishers (1999)
13. Spolsky, J.: The Iceberg Secret, Revealed. In: Joel on Software. Springer (2004)
    189–195
14. Rudd, J., Stern, K., Isensee, S.: Low vs. high-fidelity prototyping debate. Interac-
    tions (1996) 76–85