Yazılım geliştirme süreci sürdürülebilirlik faktörlerinin performans üzerindeki etkisinin yapısal eşitlik modellemesi ile değerlendirilmesi
Evaluation of the effect of software development life cycle sustainability factors on performance by structural equation modeling
Yazar: KORAY ÇIRAK
Danışman: DOÇ. DR. HÜR BERSAM BOLAT
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / İşletme Mühendisliği Ana Bilim Dalı / İşletme Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2017
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control ; İşletme = Business Administration
Dizin: Finansal sürdürülebilirlik = Financial sustainability ; Kurumsal sürdürülebilirlik = Corporate sustainability ; Çevresel sürdürülebilirlik = Sustainable environment

Özet:
Sürdürülebilirlik problemleri gün geçtikçe daha kritik seviyelere ulaşmakta ve insan yaşamını her geçen gün daha fazla tehdit etmektedir. Sosyal açıdan baktığımızda, toplumlar arasındaki eşitsizliğin hızla yükseldiğini görebiliriz. Artan eşitisizlikle doğru orantılı olarak bireylerin sağlık ve eğitim imkanlarından yeteri kadar faydalanma imkanları kısıtlanmakta ve bu durum da toplumda cinayet, obezite ve depresyon vakalarının çoğalmasına sebep olmaktadır. Çevresel açıdan baktığımızda ise, küresel ısınma etkilerinin ve doğal kaynak ve besin kıtlığının arttığı görülmektedir. Hızla artan insan nüfusu ile birlikte tüketim de aynı oranda artmaktadır. Böylece kaynakların tüketimi ile birlikte ortaya çıkan çevresel atıklarda ciddi bir tehlike oluşturmaktadır. Bu çevresel problemler insanlar üzerinde oluşturduğu etkiler dışında, biyolojik çeşitlilik ve doğa üzerinde de ciddi tehditler oluşturmaktadır. Ekonomik açıdan ise, kaynakların bilinçsiz kullanımı ve yatırım kararlarının uzun vadeli risklerin göz önünde bulundurulmadan alınması, birçok insanın işsizlik problemi ile karşı karşıya kalmasına yol açacaktır. Bu sorunları engellemek adına üretilen çözümlere sürdürülebilirlik anlamında katkıda bulunmadan güvenmek, bu tarz sorunların etkili ve kalıcı bir şekilde çözülmesini imkansız kılmaktadır.
Yazılım, hızla gelişim gösteren ve hayatımızın her alanına girmekte olan teknolojik toplumun en temel bileşenlerinden birisidir. Günümüzde insanlar, yazılımları sadece profesyonel iş hayatlarında çalışmalarını gerçekleştirmek amacıyla değil, aynı zamanda gündelik yaşamlarında da kullanmaktadır. Artık yazılımın olmadığı bir gelecek düşlemek imkansızdır. Bu eğilim, her geçen gün daha fazla yazılım uygulamasına ihtiyaç duyulmasına ve daha fazla yazılım geliştirme eforunun ortaya konulmasına sebep olmaktadır. Yazılım ugulamaları yaşantımızda bu denli önemli bir yere sahip oldukça yazılım mühendisliğinin önemi de gün yüzüne çıkmaktadır. Yazılım mühendisliği, bir yazılım uygulamasının geliştirilmesi, işletilmesi ve bakımının sağlanması için ölçülebilir, disiplinli ve sistematik yöntemlerin kullanılması ve araştırılmasıdır (Pressman, 2000). Gelişen yazılım mühendisliği bilimi ile birlikte sürdürülebilirlik kavramı da BT alanında gelecek nesillere daha sağlıklı ve yaşanabilir bir gelecek bırakabilmek adına önemli bir noktaya dönüşmektedir. Sürdürülebilirlik konusu eski yazılım mühendisliği metodolojilerinde yeterince ele alınmamıştır. Fakat yazılım uygulamalarının yaygınlaşması ve doğal kaynaklarımınız limitli olması araştırmacıların yazılım geliştirme sürecinde sürdürülebilirlik sağlayacak araştırmalara daha çok yönelmesine sebep olmaktadır. Artan popülaritesi ve yazılım birimleri üretirken duyduğu güç ve kaynak ihtiyacı sebebiyle yazılım mühendisliği bilimi, sürdürülebilir iyileştirmeleri büyük ölçüde etkileyebilir.
BT alanında yapılan çalışmaları daha sürdürülebilir bir hale getirebilmek adına yapılan çalışmalar genellikle donanım üzerinde yoğunlaşmaktadır. Fakat donanımsal çalışmaların yanı sıra yazılım tarafıda büyük önem kazanmaktadır. Yazılımlar, üzerinde koştukları donanımların faaliyetlerini yönettikleri için, donanımların herbir faliyetinden de sorumludurlar. Bu sebeple, BT alanında artan sürdürülebilirlik sorunlarına çözüm bulmak için etkin ve verimli yazılımların üretilmesi gerekmektedir. Sürdürülebilirlik anlamında etkin yazılımlar geliştirilmesi için yazılım geliştiricilerin bunları nasıl başarılabileceğini bilmeleri ve bu amaca ulaşmak için uygun araçlara sahip olmaları gerekir. Bunlarla birlikte yazılım geliştirme süreci de sürdürülebilirlik metrikleri açısından değerlendirmeye tabi olmalıdır. Sürdürülebilirlik tanımına bağlı kalarak yazılım mühendisliği için sürdürülebilirliğin desteklendiği modeler geliştirilmiştir. Bu modeller de yazılım ürününün bütün yaşam döngüsü (geliştirme, kullanım ve ürün ömrünün sonu) düşünüldüğünde, özellikle sürdürülebilir yazılımlar oluşturma süreçlerine odaklanılmaktadır. Sürdürülebilir yazılım geliştirme süreçleri elde etmek için, yazılım mühendisliği süreçleri, sürdürülebilirlik unsurları göz önünde bulundurularak yapılan geliştirmelerle genişletilmiştir.
Sürdürülebilir bir yazılım ürünü, yazılım geliştirme sürecinde yer alan kişilerin, yazılım ürününün yaratacağı sürdürülebilir etkinin farkında olması durumunda ortaya çıkarılabilir. Bu sebeplede yazılım geliştirme sürecine yazılımın sürdürülebilirliğini ölçümleyen sürecinde dahil edilmesi gerekmektedir. Sürçte yer alan kişilerinde ölçümlemede kullanılacak metriklerin karar verme sürecine dahil edilmesi sağlanarak sürecin organizasyon içerisinde kurumsallaşması ve benimsenmesi sağlanabilir. Sürdürülebilirlik yönlerini yönetilebilir kılmak için de belirtilen gereksinimler ve önlemler yazılım geliştirme sürecine dahil edilmelidir. Bu sayede, yazılım geliştiriciler ve yazılım mimarları, yazılım ürününü sürdürülebilir metriklere uygun olarak optimize edebilir. Yazılım geliştirme süreci boyunca çevresel, sosyal ve ekonomik etkilerin göz önüne alınması ve sürdürülebilir kalkınma hedeflerinin konulması ile sürdürülebilir bir yazılım ürünü ortaya çıkarılmış olur.
Bu çalışmada yazılım geliştirme sürecinde yer alan kişileri, sürdürülebilir bir yazılım geliştirme modeline etki eden sürdürülebilirlik faktörleri belirlerleme sürecine dahil edebilmek adına onlara yönelik bir anket çalışması yapılmıştır. Bu sayede yazılım geliştirme sürecinde yer alan kişiler yazılım geliştirme modelinin sürdürülebilirlik anlamında genişletilmesine doğrudan katkı sağlayarak doğru sonuçların elde edilmesi amaçlanmıştır. Bu amaç doğrultusunda araştırmaya katılan kişilerin demografik yapıları, tecrübeleri ve çalıştıkları sektörler incelenmiş ve daha sonra anket çalışmasında yer alan yazılım geliştirme sürecinde sürdürülebilirliğe etki eden faktörler ile ilgili olan 23 madde için, IBM SPSS kullanılarak faktör analizi uygulanmıştır. Daha sonra IBM AMOS programı aracılığıyla doğrulayıcı faktör analizi ile modelin uygunluğu test edilmiştir. Bu çalışmalar öncesinde verilerin normal dağılıp dağılmadığını ve güvenilir olup olmadığını öğrenebilmek için çeşitli testler uygulanmıştır. Doğrulayıcı faktör analizi sonucunda yazılım geliştirme sürecini etkileyen çevresel, ekonomik, sosyal, bireysel ve teknik olmak üzere 5 adet sürdürülebilirlik boyutu olduğu sonucuna varılmştır.
Yazılım geliştirme sürecine etki eden sürdürülebilirlik faktörleri belirlendikten sonra, yazılım geliştirme sürecine etki eden sürdürülebilirlik faktörünün ve yazılım geliştirme sürecinde yer alan kişilerin eğitim düzeyinin, yaşının ve tecrübesinin ISO 25000 standartları referans alınarak hazırlanan model üzerinden ölçülen yazılım performansı üzerindeki etkisi IBM AMOS programı kullanılarak oluşturulan yapısal eşitlik modeli üzerinden incelenmiştir. Hipotezleri test etmeden önce ölçüm modellerinin geçerliliği test edilmiş, gerek duyulması halinde modeller üzerinden iyileştirmeler yapılmıştır.
Son aşamada, AMOS programı üzerinden kurulan Yol Analizi ile hipotezler test edilmiştir. Eğitim durumu ve yazılım performansı arasındaki ilişkiyi test eden H4 hipotezi dışındaki hipotezler anlamlı bulunmuştur.
Sonuç olarak, literatür  de belirtildiği gibi, yazılım geliştirme sürecini etkileyen ve ekonomik, sosyal, çevresel, bireysel ve teknik boyutlarından oluşan sürdürülebilirlik faktörü seçili örneklem üzerinde yapılan anket çalışması sonucunda belirlenmiştir. Yine teoride belirtildiği gibi, yazılım uygulamaları insan faliyetleri sonucu ortaya çıkan bir ürün olduğu için, tanımlayıcı özelliklerin yazılım performansı üzerinde etkili olduğu ve yine yazılım geliştirme sürecine sürdürülebilirlik anlamında etki eden faktörlerin yazılım performansı üzerinde etkili olduğu  yapısal eşitlik modeli üzerinden belirlenmiştir.

Abstract:
Humanity is facing sustainability problems at a serious level. When we look at it from a social perspective, we can see that the inequality is rising rapidly. Along with the increasing inequality, murder, obesity and depression are increasing in the society. From an environmental point of view, global warming effects and scarcity of natural resource and food seem to increase. Apart from the effects on humanity, there are also serious threats to biodiversity and nature. In the face of these problems, relying on innovation and technological solutions without contributing to sustainability makes it impossible to solve such problems effectively.
Software is one of the most fundamental components of technological society that is fast growing and entering into every aspect of our lives. Today, people use software applications not only to work in their professional business life, but also in daily life. It is impossible to imagine a future without software. This tendency has led to need more and more software applications day by day and introduce more software development effort. As software applications have such an important place in our lives, the importance of software engineering is also increasing. Software engineering is the use and research of measurable, disciplined and systematic methods for the development, operation and maintenance of a software application. Together with evolving software engineering knowledge, the concept of sustainability is becoming an important point in the field of information technology to support our future. Sustainability has not been adequately addressed in earlier software engineering methodologies. But the widespread adoption of software applications and limited natural resources have led researchers to focus more on their researchs that will provide sustainability in the software development process. Due to the growing popularity and the power and resources required to produce software units, software engineering can greatly impact sustainable improvements.
In addition to the hardware aspects, software is gaining great importance in the researchs whch  carry out in the context of ways to make information technologies more sustainable and to encourage eco-friendly actions by IT. Since software manages the activities of the hardware they run on, they are also responsible for the energy they consume. For this reason, it is necessary to produce energy efficient software to solve the problem of increasing energy consumption in IT field. To develop effective software in the sense of sustainability, software developers need to know how to achieve them and have appropriate tools to achieve that goal. Additionally, the software development process should also be evaluated in terms of sustainability metrics. Based on the definition of sustainability, models were developed to support sustainability for software engineering. These models focus on the processes of creating sustainable software, especially when considering the whole life cycle of the software product (development, usage and product life span). In order to achieve sustainable software development processes, software engineering processes have been broadened to include improvements in sustainability considerations.
A sustainable software product can be discovered if the people involved in the software development process are aware of the sustainable impact of the software product. For this reason, the software development model must be included in the process of measuring the sustainability of the software. The sustainability metrics must be determined by the people involved in the software process. In that way, the sustainability process can be institutionalized within the organization. Because, people adapt more easily to the decisions they make. In order to make sustainability aspects manageable, the specified requirements and measures must be included in the software development process. At this point, software developers and software architects can optimize the software product in accordance with its sustainable metrics. Through the software development process, a sustainable software product is created by considering the environmental, social and economic impacts and putting sustainable development goals. 
In this study, a survey was conducted to include the people who involved in the software development process, in the process of determining factors that affect a sustainable software development model. With the survey study, people involved in the software development process directly contributed to the extension of the software development model in terms of sustainability. Thus, it is aimed to obtain more accurate results. Then, for the 23 items related to sustainability factors in the software development process included in the survey study, explanatory factor analysis was applied. After that, the suitability of the model was tested by confirmatory factor analysis. Before these studies, various tests were performed to find out whether the data were normally distributed and whether they were reliable. As a result of confirmatory factor analysis, it is concluded that there are 5 sustainability dimensions which are environmental, economic, social, individual and technical which affect the software development process.
After determining the sustainability factors affecting the software development process, the impact of  the sustainability factor and the level of education, age, and experience of the people involved in the software development process on software performance, which measured through model created with reference to ISO 25000 standards,  were examined using the structural equation model created using the IBM AMOS program. Before testing hypotheses, the validity of the measurement models was tested and improvements were made to the models if needed.
At the last stage, the hypotheses have been tested with the Path Analysis established through the AMOS program. The hypotheses other than the H4 hypothesis, which measures the effect of the education on software performance, are significant.
As a result, as stated in the literature, the sustainability factor, which affects the software development process and is composed of economic, social, environmental, individual and technical dimensions, has been determined as a result of the survey study on the selected sample. Again, as stated in the theory, the structural equality model determines that the descriptive attributes and sustainability factors are influential on software performance.
It has been observed that the factors affecting performance positively affect the sustainability of software development negatively. This shows that while the software development process is focused on the performance of the software product, it is away from the concepts of sustainability. However, if it is desired that the continuity of the marginal utility obtained from the software industry, it should be paid attention to the optimum use of limited resources as well as performance
The sustainability of the software development process does not only leave a more livable world for future generations, but also contributes to the ecnomic structure and productivity of the companies. In an environment where competition is intense, having a sensitive profile in terms of more efficient use of resources and sustainability can play an active role in favor of companies, customers and employees.