Implementing-Value Stream Mapping
Implementing-Value Stream Mapping
Information Technology
Internet Technology
2016
2016| 24
Value Stream Mapping (VSM) is a tool that helps to visualize and understand streamline work
processes using lean manufacturing‘s techniques and tools. Ovikone OY commissioned this
thesis whose purpose was to create an iOS tablet application that implements the VSM
process. In this thesis an iOS tablet application that implements the VSM process is built for
Ovikone Oy.
The theoretical part of the thesis handles the different aspects of the Apple operating system
(iOS). Scrum was used as a project management methodology, Trello was used as the Scrum
tool and the different features of the app were implemented during each sprint. This thesis
follows the development process from the beginning of the application development through the
end.
This thesis does not only focus on these specific application features but also broadens and
explores different aspects of the Swift programming language which can be used for other
applications.
KEYWORDS:
APPENDICES
PICTURES
Picture 9. UI presentation 17
Picture 10. Icon sticker Function 18
Picture 11. Write to a file 20
Picture 12. Delete a file 20
UI User Interface
6
1 INTRODUCTION
The aim of this thesis is to develop an iOS tablet application that implements a
VSM (Value Stream Mapping) process with Swift. This thesis explains different
techniques and methods used to program and build the application.
The thesis begins with the introduction chapter which states the purpose of the
thesis. The Swift programming language and terminology are discussed in
detail in the Chapter 2. Chapter 3 discusses the technical part of the thesis with
the method required and the application design. Finally, the thesis is concluded
in Chapter 4.
iOS (originally iPhone OS) is a mobile operating system created and developed
by Apple Inc. and distributed exclusively for Apple hardware and products. It is
not licensed to other manufacturers. [3]
IOS was unveiled to the public in 2007 [3] for the iPhone. Since then, it has
been extended to support other Apple devices such as the iPod Touch and the
IPad. IOS is a closed source operating system and runs only on Apple device.
However, these restrictions have not prevented it from succeeding. In 2015
there were more than 1.4 million iOS applications and apps running on the iOS
have been downloaded more than 100 billion times.[4] iOS major versions are
released annually and the current release, iOS 9 was released in September
2015.
Most of the devices that run iOS are touch devices apart for the old devices
such as the IPod. Touch gestures help the user to interact with the touch
devices. Touch gestures are used for scrolling, zooming, rotating and many
more functions depending on the application. iOS is written with C, C++,
Objective-C, and Swift. IOS apps are either written with Objective–C or using
Swift.
Apple’s main objective when building Swift was to make it fast. Using the high-
performance Low Level Virtual Machine (LLVM) compiler, Swift code is
transformed into optimized native code that achieves the maximum out of the
modern hardware. The syntax and library have also been tuned to make
programming code easier to read. Swift has been derived from both the C and
Objective-C languages. It is a low-level primitive language that contains types,
operators, and flow control and provides object-oriented features such as
protocols, classes and generics. [6]
Xcode is the only official IDE for developing software for Macintosh computers
running OS X and iOS mobile devices. Xcode was first released in 2003 by
Apple for developers. Apple released Xcode 7.1 on October 2015. It is available
via the Mac App store free of charge for only OS X, Yosemite, and OS X El
Captain users.
Cocoa Touch is a User Interface (UI) framework for building software programs
to run Apple iOS. It is written in Objective-C and it is based on Mac OX. Cocoa
Touch was based on Model View Controller (MVC) architecture. MVC is a
software pattern to help organize and implement user interfaces. The Cocoa
Touch framework implements the root class and NSObject which defines basic
object behavior. It implements classes that represent primitive types such as
string and numbers; it also represents collections such as arrays and
dictionaries. The framework also provides object persistence, file management
and XML processing. The VSM app user interface uses the AppKit and UIKit
frameworks. These two frameworks include everything needed for developing
the app, such as event handling, drawing, animation, image-handling, text
processing, typography and inter-application data transfer. These two
frameworks also include UI elements like buttons, table views, text fields, alert
dialogs, slider, and many more elements.
The first task on Trello is to create a simple button that creates a UIView as a
placeholder.
UIViews are very important and essential in iOS development. The UIView
class is defined by a rectangular area on the screen on which it shows its
content. This class handles the rendering of any content in this area where
gesture, touch recognizer and many more features can be added. [11]
The objective in this sprint is to map (model, document) an existing process and
to classify the tasks of that process timeline as value-adding work, auxiliary
work or pure waste by using post-it note like symbols so that user can use the
VSM app in a way that is intuitive and customary, and so that the waste in the
processes can be identified.
After seeing another VSM app (LucidChart), the practical approach is to create
a timeline similar to that iPhone photo viewer. On button press, a new sticker is
generated positioned right next to the previous one just like when scrolling
photos on iPhone. For proper implementation of this behavior, there are three
choices: the first one is to create a UITableView so that each sticker would fit in
each column. The second one is to create a UICollectionView so that each
sticker would go inside a UICollectionViewCell. The last one is to create a
UIStackView which is quite simple because the class itself provides a
streamlined interface for laying out a collection of views in either column or a
row. At the end the UIStackView is convenient for this thesis and also this class
provides much more functionality compared to the other two. Furthermore, the
UIStackView provides a user interface that can dynamically adapt to the device
orientation which cannot be found in the other two classes.
When the user creates a sticker, the UIStackView adds it to an array called
StickerArray. This array come in handy because UIStackView has a property
called arrangedSubviews that manages the layout of all views inside the array.
These Views are arranged along the stackView’s axis based on their order in
the arrangedSubviews array. It can be seen from picture 4, StickerArray is the
array’s name and stackView is the UIStackView.
Most of the time in Value Stream Mapping different stages of work or production
are represented by a symbol or a color. This app uses color to represent
different stages of the work. There are three traditional colors of VSM (green,
orange and red). The value adding work will be represented by green, orange
will represent the auxiliary work and red will represent pure waste. To
implement this, three buttons are created on the UIView. Buttons in Swift are a
component of UIView and they can be added as subviews in a parent View.
These three buttons can change the color of their respective UIView. A target
and a function are added on each button so that each time the button is clicked,
the respective UIView changes color. ButtonGreenColor is the button name and
buttonGreenColorPressed is the function name. (Picture 5)
The main objective in the second sprint is to create one infinite scroll of stickers
which the user can scroll to bring the sticker to edit mode. The focused sticker
should be zoomed in the center of the screen while others subside.
The UIScrollView class provides support for displaying content that is larger
than the size of the superView and also enables scrolling within that content by
making swiping gestures. [12]
The zooming part works now, but a method is needed in order to focus a
sticker in the center of the screen. To make this happen, the
UIScrollViewDelegate protocol is used. This protocol allows the adopting
delegate to respond from the UIScrollView class and respond to some event
such as scrolling, zooming or deceleration of scrolled content., the
scrollViewDidEndDragging function is used to decelerate scroll and to call the
CGAffineTransformMakeScale(X, Y) inside it.(Picture 6)
The main objective of the third sprint is to create the settings of each sticker by
flipping it. The desired setting includes change of background color, font, and
font size. There is a data type called UIViewAnimationOptions that animates
two views using block objects. The goal is to create a transition animation with
transitionwithView and when the user touches the flip button the first view in this
case the stickerView (it is the UIView that the user creates with the create
button at the beginning) becomes hidden, and then the second View (the view
that contains the settings with the background color, font, and font size option)
becomes visible. (Picture 7)
To represent options to choose a font size and font family, two dropdown lists
are created for the font family and the font size and three separate buttons for
the color. Picture 9 is the UI presentation after some small changes
implemented by the client.
Picture 9. UI presentation.
The target in the last sprint is to save the stickers as pdf files and to be able to
search a file for a particular sticker.
Loading and saving data in apps development is very common. In iOS, there
are many ways to accomplish this: NSUserDefaults, Plist, CoreData, NSCoding
Protocol and many more. NSUserDefaults is a simple key value dictionary that
stores basic data type, such as YES/NO values, for specific user preferences. It
does not support querying and it is restricted to a limited set of objects so it is
not convenient for larger amount of data. For this app CoreData is used
because it is fast and provides tools for complex data models, such as querying
and automatic migrations.
**appendix 1**
After creating this class, (in the appendix 1) it just need to call this object
whenever it is necessary to write to the file, save to the file or delete the file.
Picture 11 is the code used for writing to the file and saving it. (Picture 11)
In order to search for a saved file, UITableView is created and each saved file
name is put inside the table rows. The file name will be arranged in order of the
saved date in the table and will be much easier for the user to search for a
specific saved file. To put the saved file in each table rows, this code below is
used.(Picture 13)
4 CONCLUSION
The main goal of this thesis is to develop an iOS tablet application that
implements a VSM process. This thesis focuses on different methods and
functions used to develop this application. Scrum and Trello are also used as a
project management tool to help prioritize task and make collaboration easy. To
make this thesis clear, the third chapter is organized by the order of the sprints
carried out in the project. Most of the app developments processes mentioned
in this thesis are reusable over and over again in so many different ways.
My first obstacle when writing this thesis was learning a new programming
language and at the same time participating in the project. When working with
scrum, the success of the project depend on the technical skill of the developer.
And that is why all four sprint lasted longer than intended.
The first sprint was hard to implement because it is hard to visualize and
program a process timeline. When writing this thesis, the main obstacle was
communicating with the client and using Trello. Communication is a key issue
in a successful project work.
REFERENCES
return ["fileName"]