Yazılım proje geliştirme sürecinde değer odaklı iyileştirme ve bir uygulama
Value oriented improvement in the software project development and an application
Yazar: EBRU ERTEK
Danışman: DR. ÖĞR. ÜYESİ ŞEYDA SERDAR ASAN
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Endüstri Mühendisliği Ana Bilim Dalı / Endüstri Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2020
Konu: Endüstri ve Endüstri Mühendisliği = Industrial and Industrial Engineering

Özet:
Yazılım geliştirme metodolojisi, bilgi sistemleri geliştirme sürecini düzenlemek ve kontrol etmek için kullanılır. Tek bir sistem geliştirme metodolojisi tüm projeler tarafından kullanılmak için uygun değildir. Mevcut metodolojilerin her biri, çeşitli teknik, organizasyonel, proje ve ekip konularına dayanarak, belirli proje türlerine uygun biçimde şekillenmiştir. Yazılım geliştirme süreci veya yaşam döngüsü, bir yazılım ürününün geliştirilmesine uygulanan bir yapıdır. Her biri süreç boyunca gerçekleşen çeşitli görevlere veya faaliyetlere yaklaşımları tanımlayan bu tür işlemler için birkaç model vardır. 
Üretim alanında başarılı sonuçlar elde edilmesiyle birlikte yalın süreç iyileştirme yaklaşımlarının Yazılım Geliştirme alanında da uygulanmaya alınması ile yazılım geliştirme süreçlerinde yaşanan sorunların aşılmasına yönelik adımlar atılmaya başlanmıştır. Geçmişi 1960'lara dayanan Yalın yaklaşımları da üretim alanında büyük kazanımlar sağlanmasından dolayı yazılım geliştirme alanı da dahil olmak üzere birçok başka alan için kullanımı değerlendirilen yöntemlerden birisi olmuştur. Temelde atık ve israfın yok edilmesine dayalı olan Yalın yaklaşımları Değer Akış Haritalama yöntemi ile başlamaktadır. Yalın prensipler iyi tanımlanmış ve üretimde geniş bir uygulanabilirliğie sahip olsa da bilgi teknolojisine olan yayılımı hala sınırlıdır. Bu çalışma bir vaka çalışması yaklaşımına dayanarak bir firmanın BT alanında Değer Akış Haritalama yöntemini kullanarak iyileştirme girişimi uygulamasıdır. 
Bu çalışmanın amacı, yazılım geliştirme projesinde mevcut değer akış haritasından yola çıkarak israfları belirleyebilmek ve bu israfları ortadan kaldırabilecek ve süreç iyileştirmeleri sağlayacak öneriler sunarak daha kısa çevrim süreli gelecek durum değer akış haritasını oluşturabilmektir.  Bu amaçla yazılım ürünü ve yazılım geliştirme süreci değer odaklı olarak ele alınmış ve yazılım geliştirme sürecine iyileştirmeye yönelik olarak değer akışı haritalama yöntemi uygulanmıştır. Mevcut ve gelecek durum haritalarının oluşturulabilmesi için öncelikle yazılım geliştirme süreçleri için değer tanımı yapılmış ve bu değer tanımından yola çıkarak projelerin sınıflandırılabilmesi adına kriterler belirlenmiş ve projeler gruplandırılmıştır. Her bir grup için mevcut durum değer akış haritası çizilmiştir. Bu haritalardan yola çıkarak bekleme süresini uzatan faaliyetler yani israflar tespit edilerek çevrim süresini kısaltacak ve süreci iyileştirecek iyileştirme öneleri sunulmuş ve bu doğrultuda en uzun bekleme süresine ait proje kümesi için gelecek durum değer akış haritası çıkarılmıştır.
Çevrim süresini uzatacak israfları gereksiz kodlar, iyi tanımlanmamış ihtiyaçlar, bürokrasi, yavaş iç iletişim oluşturmaktadır. Müşteri ile sık sık iletişim, prototip oluşturma, kaynak sorununu anlama, gerçekler belirleninceye kadar bağlayıcı kararlar alınmaması hataların önüne geçer. Takımların doğru liderler ile yönetilmesi, sistemin merkezi kavramlarının düzgün bir bütün olarak birlikte çalışmaları ve büyük işlerin küçük parçalara ayrılarak yönetilmesi gibi yalın düşünme yaklaşımları sürecin çevrim süresini azaltmada önemli faktörlerdir.
Yazılım geliştirme projeleri için değer odaklı iyileştirme çalışmaları oldukça kısıtlıdır, bu çalışmada hem iki adımlı kümeleme analizi yapılmış hem de değer odaklı iyileştirme yapılarak mevcut ve gelecek durum haritalarının oluşturularak yazılım geliştirme projeleri için değer odaklı iyileştirme alanında kaynak sağlanmıştır. Bu araştırma, Bilgi Teknolojileri departmanı için yapılmıştır. Fakat şirket içerisinde insan kaynakları, finans, satış ve pazarlama, müşteri hizmetleri ve destek, vb. diğer alanlara da genişletilebilir. Maliyet ve benzeri performans ölçütlerinde önemli miktarda tasarrufla birlikte şirketin tamamındaki işleri yönetmede etkinlik sağlayabilir. Zamanında ve daha iyi müşteri hizmeti ile kaliteli ürünler ortaya çıkarılabilir.

Abstract:
Software development methodology is used to regulate and control the information systems development process. A single system development methodology is not suitable for use by all projects. Each of the available methodologies is tailored to specific project types, based on a variety of technical, organizational, project and team issues. A software development process or life cycle is a structure that applies to the development of a software product. There are several models for such processes, each of which defines approaches to the various tasks or activities that occur during the process.
With the successful results obtained in the field of production, the implementation of lean process improvement approaches in the field of Software Development has started to take steps to overcome the problems experienced in software development processes. Lean approaches, which date back to the 1960s, have been one of the methods used for many other fields, including software development, due to the huge gains in the field of production. Lean approaches, which are mainly based on waste and waste elimination, begin with Value Flow Mapping. Although lean principles are well defined and have broad applicability in production, their spread to information technology is still limited. This study is a case study approach based on a firm's attempt to improve the IT field using Value Flow Mapping.
The aim of this study is to present a solution proposal that provides a quality software product that will provide customer satisfaction with more effective communication and visibility to the end user, simultaneously reducing the total supply time and increasing resource utilization efficiency. For this purpose, the software product and software development process are handled with a focus on value, and a value stream mapping method has been applied to improve the software development process. In order to create current and future status maps, firstly, the definition of value has been made for software development processes and criteria have been determined and the projects have been grouped in order to classify the projects based on this value definition. The current state value flow map was drawn for each group. Based on these maps, activities that prolong the waiting time, namely waste, were identified and improvement measures were offered to shorten the cycle time and improve the process, and in this direction, a future value flow map was created for the project set for the longest waiting period.
Firstly, in the literature, definitions are made based on the value definitions related to software development and that take into account the current status and expectations of the software provider. It is important that the defined value is converted into measurable and / or observable dimensions and that the data of them are accessible. Value is defined separately in terms of shareholder, employee and customer. Shareholder: The company has financial shares and expects investments to gain value or generate income. Employee: People working for a company rely on wages or salaries for their livelihood. In addition, health insurance, pensions, paid vacation time, family sick leave, childcare facilities, etc. Such social benefits constitute an important part of compensation packages.Customer: Customers expect certain benefits from the products they purchase. In general, they remain loyal to the company as long as their needs are met at a reasonable price. If customers cannot obtain the products they need from another company at an affordable price, they may be concerned with the company's survival and well-being. 
Software value dimensions are listed in the literature as follows. Accuracy comes together with analysts and project stakeholders before developing a software, and a specification is prepared in line with the requirements. It is a definition of value that the prepared software is true to the created specification. This is to some extent a measure of whether the software is functioning properly. Reliability is how often an error will occur in the process after the software project is put into practice, that is, in a live environment. Data integrity and security, large programs or program systems often have a responsibility to ensure a permanent mass of data. Data may need to provide consistency limitations. If so, the software should ensure that it does not violate these restrictions. In addition, it may be the software's responsibility to limit access to data. It is especially important to limit the changes of the data. And changes with serious consequences should not be too easy. Delivery time, delivery on time - the buyer of the software always waits for the delivery of the product on time. When the buyer is a business firm, he needs the software on the date given to fulfill his commitments. In case the software cannot be delivered before the deadline, the buyer may stop receiving the product and turn to another company. Therefore, it may be preferable to deliver the software incorrectly instead of delivering it after the deadline. The minimum cost, the buyer will want to pay the lowest price to achieve the desired functionality and quality. Ease of use is that it offers a clear interface to the user and the availability of the application is easy. Being open to development should be able to meet the additional requests placed on the software.
In practice, the IBM SPSS Two-Step Cluster Analysis technique is used to cluster projects because we have both categorical and metric data to evaluate software projects. The variables of priority and purpose used in the analysis are categorical, cost, effort, resource, number of additional requests, number of updates and total years of experience are metric variables. Although the two-step analysis of the variables did not meet the normality and multinomality assumptions, the analysis continued because the method was robust.
After the projects are grouped, a value stream map is drawn. The value stream mapping method is the lean planning tool used to visualize the value stream and is considered the main approach to identify the waste involved in a process. Every step that creates a process is classified as an activity that adds or adds value.
On the current value stream map, activities that create and do not create value within the framework of value definitions are examined and waste is revealed. Improvement suggestions are provided for eliminating or reducing waste.
The future value stream map, which will be achieved with the implementation of the proposed improvement suggestions, has been drawn and new processing times have been calculated. 
Unnecessary codes, undefined needs, bureaucracy, and slow internal communication are used to prolong cycle time. Frequent communication with the customer, prototyping, understanding the source problem, and not making binding decisions until the facts are determined, prevent mistakes. Lean thinking approaches such as managing teams with the right leaders, working together as the central concepts of the system as a whole, and managing big jobs in small pieces are important factors in reducing the cycle time of the process.
Another and more costly way to reduce cycle time is changing the software development method used. In the case we examined, the waterfall method, also known as the classical approach, is used. The most important feature of this method is that one phase cannot be passed to another phase. In this case, either the employee is waiting in the intermediate passes or the project is waiting because the employee has a workload. Also, returning from one phase to another requires high cost.
As an alternative method, Agile software development method can be suggested. Agile method focuses on producing valuable output in a short time. Projects are divided into small pieces and more than one process is carried out in parallel. This situation plays a big role in detecting errors in a short time and resolving them. Moreover, its biggest advantage over the classical method is that it is quite flexible for the changing requirement. Due to the constant feedback to the customer, it is greatly reduced in misunderstandings. However, changing the method of software development is particularly difficult in companies with a corporate structure. It is costly because it requires new technologies and training and the adaptation process of the employees is one of the factors that make the transition difficult.
Value-oriented improvements are limited for software development projects. In this study, a two-step cluster analysis was performed and a resource was provided in the field of value-oriented improvement for software development projects by creating value-oriented improvements by creating current and future status maps. This research was carried out for the Information Technologies department. But human resources, finance, sales and marketing, customer service and support, etc. can be extended to other areas. With significant savings in cost and similar performance criteria, it will provide efficiency in managing the entire company. Quality products can be created on time and with better customer service.