Yazılım Mühendisliğinde Çevik Yöntemler Üzerine Kavramsal Bir İnceleme ve Sınıflandırma

Hızla gelişen yazılım endüstrisinin ihtiyaçlarına cevap verebilmek için yazılım mühendisliğinde tanımlı çeşitli yöntembilimlerin yanı sıra çevik yöntembilimler de kullanılmaya başlanmıştır. Birbirine sıkı sıkıya bağlı yazılım, süreç ve proje kavramlarıyla ilgili çevik yöntembilimleri başlığı altında birçok yöntem ve uygulama geliştirilmiştir. Bunların her birisinin kendine özgü yapıları olması yanında birçok ortak noktaları da vardır. Kavram karışıklıklarını engellemek amacıyla bu ortak noktaları vurgulayan Çevik Yazılım Geliştirme Manifestosu ilan edilmiştir. Bu çalışmada çevik yazılım geliştirme yöntemine dayalı uygulama ve süreçlerde öne çıkan bu ortak özellikler sınıflandırılmaya çalışılmıştır. Çevik yazılım geliştirme yönteminde analiz, yönetim, iyileştirme, gerçekleştirme yeniden yapılanma ve değerlendirme gibi bazı faaliyetler öne çıkmaktadır. Çevik yöntembilimler başlığı altında tanımlı yöntem ve uygulamalarının sınıflandırılması bu faaliyetlere göre yapılmıştır. Sınıflandırma çalışmasının okuyucuya daha yararlı olabilmesi için, yazılım proje yönetiminde kullanılan bazı kavram ve uygulamaların birbirleriyle ilgi ve farklılıkları kavramsal bir çerçevede ortaya konmaya çalışılmıştır.

A CONCEPTUAL STUDY AND CLASSIFICATION ON AGILE METHODOLOGIES AT SOFTWARE ENGINEERING

To accomplish the needs of rapidly growing software industry, in addition to varios methodologies defined in software engineering, agile methodologies have been used. Many methods and applications have been developed under the title of agile methodologies related to software, process and project concepts. Each of these has its own specific structures as well as many common points. Agile Software Development Manifest, which emphasizes these common points, has been declared to prevent concept confusion. In this study, it has been tried to classify these common features in the application and processes based on agile software development method. Some activities such as analysis, management, improvement, implementation, reengineering and evaluation in agile software development method are prominent. Classification of defined methods and applications under title of agile methodologies is based on these activities. In order to make the classification work more useful to the reader, it has been tried to reveal the interests and differences of some concepts and applications used in software project management within a conceptual framework.

___

Acm. (2016a). Mühendislik Pratikleri. İstanbul: Acm Software. Erişim Tarihi: 16 Mart 2016. http://www.acm-software.com/muhendislik-pratikleri/

Acm. (2016b). Scrum. İstanbul: Acm Software. Erişim Tarihi: 16 Mart 2016. http://www.acm-software.com/scrum/

Acuña, S. T. & Ferré, X. (2001). "Software Process Modelling". World Multiconference on Systemics, Cybernetics and Informatics (ISAS-SCI), 22-25 Temmuz, (ss. 237-242). ABD: Florida, Orlando. ISBN: 980-07-7541-2.

Agilealliance. (2019a). Agile Manifesto. Corryton, Tennessee, ABD: Agile Alliance. Erişim Tarihi: 24 Nisan 2019. https://www.agilealliance.org/agile101/the-agile-manifesto/

Agilealliance. Agile Manifesto. (2019b). Corryton, Tennessee, ABD: Agile Alliance. Erişim Tarihi: 24 Nisan 2019. https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/

Akgül, Ö. (2010). "Model Güdümlü Yazılım Geliştirme" [Elektronik Versiyon]. Bilişim Dergi. 16, 1-4.

Akyol, M. (2015). Yazılım Kalitesi ve Standartlar [Sunum]. Erişim Tarihi: 20 Mart 2016. http://docplayer.biz.tr/5825934-Yazilim-kalitesi-ve-standartlar.html

Alkan, M. (2004). Rapid Application Development (RAD). Erişim Tarihi: 16 Mart 2016. http://www.csharpnedir.com/articles/read/?id=315

Altmann, J. & Weinreich, R. (1998). "An environment for cooperative software development realization and implications". Thirty-First Hawaii International Conference, 9 Haziran, (ss. 27-37). ABD: Hawaii, Kohala Coast. DOI: 10.1.1.615.166.

Altuntaş, C. Test Driven Development. (2007). Erişim Tarihi: 16 Mart 2016. http://www.cihataltuntas.com/test-driven-development/

Arifoğlu, A. & Doğru, A. (2001). Yazılım Mühendisliği : yöntemler, metodolojiler, CASE ortamları, günün teknolojisi. 1. Baskı. Ankara: SAS Bilişim Yayınları. ISBN: 975-97197-2-X.

Awad, M. A. (2005). A Comparison between Agile and Traditional Software Development Methodologies. Western Australia University. DOI: 10.1.1.464.6090.

Aybek, A. (2010). Çevik Yazılım Geliştirme "Agile". İstanbul: Acm Software. Erişim Tarihi: 16 Mart 2019. http://www.acm-software.com/Pdf/AboutAgile.pdf

Baelen, H. V. (2011). "Agile (Unified Process)", [Elektronik Versiyon]. Agile Record, 6, 22-24. ISSN 2191-1320

Bayar, V. (2016). Bilesen Yönelimli Yazılım Geliştirme için Süreç Modeli. Erişim Tarihi: 16 Mart 2016. http://www.emo.org.tr/ekler/de8edbbe1547786_ek.pdf

Bilge, İ. (2013). Refactoring Nedir? Erişim Tarihi: 16 Mart 2016. http://ibrahimbilge.com/refactoring

Camoğlu, K. (2008). Yazılım Geliştirme Süreci. Erişim Tarihi: 5 Nisan 2016 http://www.chip.com.tr/blog/kadircamoglu/Yazilim-Gelistirme-Sureci_524.html

Castro, J., Kolp, M. & Mylopoulos, J. (2002). "Towards requirements-driven information systems engineering the Tropos project". Information Systems 27(6), 365-389. DOI: 10.1016/S0306-4379(02)00012-1.

Çatal, Ç. (2005). RUP ve XP Süreçlerinin Karşılaştırılması. Erişim Tarihi: 16 Mart 2016. http://www.csharpnedir.com/articles/read/?id=458

Chappell, D. (2008). What is Application Lifecycle Management?. Kaliforniya: Chappell & Associates. Erişim Tarihi: 16 Mart 2019. www.davidchappell.com/WhatIsALM--Chappell.pdf

Chen, Z., Liu, Z., Ravn, A. P., Stolz, V. & Zhan, N. (2009). "Refinement and verification in component-based model-driven design". Science of Computer Programming, 74(4), 168-196. DOI: 10.1016/j.scico.2008.08.003.

Cohn, M. (2004). User Stories Applied: For Agile Software Development. Usa: Addison Wesley. ISBN: 978-0321205681.

Demir, Ö., & Acar, M. (1992). Sosyal Bilimler Sözlüğü. İstanbul: Ağaç Yayıncılık. ISBN: 9752500102.

Ebert, C., Abrahamsson, P. & Oza, N. (2012). "Lean Software Development". IEEE Software, (5), 22-25. DOI: 10.1109/ICSECOMPANION.2007.46.

Edeki, C. (2013). "Agile Unified Process". International Journal of Computer Science and Mobile Aplications, 1(3), 13-17. ISSN: 2321-8363.

EPF. (2012). What is OpenUP? Ottawa, Ontario, Kanada: The Eclipse Foundation. Erişim Tarihi: 16 Mart, 2019. https://www.eclipse.org/epf/general/OpenUP.pdf

Eryılmaz, Ö. (2014). Application Lifecycle Management Nedir? Erişim Tarihi: 16 Mart 2016. http://www.omereryilmaz.com/alm-application-lifecycle-management-nedir/

Fernandes, J. M. & Almeida, M. (2010). "A Technique to Classify and Compare Agile Methods". Departamento de Informática, Universidade do Minho, (48), 385-386. ISBN: 978-3-642-13053-3

Fernandes, J. M. & Almeida, M. (2010). "Classification and Comparison of Agile Methods". 7th International Conference Information and Communications Technolog, 29 Eylül-2 Ekim, (ss. 391-396). Portekiz: Oporto. DOI: 10.1109/QUATIC.2010.71.

Güçlü, T. (2004). Yazılım Geliştirmede Disiplin ve PSP Yöntemi. Erişim Tarihi: 16 Mart 2016. http://www.csharpnedir.com/articles/read/?id=321

Gürcan, V. B. (2013). Agile Software Development (Çevik Yazılım Geliştirme). Erişim Tarihi: 16 Mart 2016. http://www.barbarosgurcan.com/post/Agile-Software-Development

Gürsoy, İ. (2011). Nesne Yönelimli Programlama (OOP) Nedir? Erişim Tarihi: 16 Mart 2016. http://www.ismailgursoy.com.tr/nesne-yonelimli-programlama-oop-nedir/

Hofmeister, C., Kruchten, P., Nord, R. N., Obbink, H., Ran, A. & America, P. (2007). "A General Model of Software Architecture Design", [Elektronik Versiyon]. Systems and Software (80), 106-126. DOI: 10.1016/j.jss.2006.05.024.

Hui, Y. (2015). "Compare Essential Unified Process (EssUP) with Rational Unified Process (RUP)". Industrial Electronics and Applications (ICIEA), 15-17 Haziran, (ss. 472-476). New Zealand: Auckland. DOI:10.1109/ICIEA.2015.7334159.

Humphrey, W. S., Chick, T. A. & Nicolas, W. (2010). "Team Software Process Body of Knowledge Technical Report (Rapor No: CMU/SEI-2010-TR-020)". Hanscom: Software Engineering Institute Carnegie Mellon University.

Iacovelli, A. & Souveyet, C. (2008). "Framework for Agile Methods Classification". Proceedings of Model Driven Information Systems Engineering (MoDISE-EUS), 16-17 Haziran, (ss. 91-102). France: Montpellier. ISSN: 1613-0073.

IBM (2008). "Collaborative Application Lifecycle Management with IBM Rational Products (Rapor No: SG24-7622-00)". New York: International Business Machines Corporation (IBM).

İrgin, D. (2013). Aspect-Oriented Programming Kavramı. Erişim Tarihi: 16 Mart 2016. http://www.denizirgin.com/post/2013/10/07/Aspect-Oriented-Programming

Kara, B. (2010a). Agile Unified Process.. Erişim Tarihi: 16 Mart 2016. İş Analizi Nedir: http://www.isanalizinedir.com

Kara, B. (2010b). Essential Unified Process. Erişim Tarihi: 16 Mart 2016. http://www.isanalizinedir.com

Keskinkılıç, M., Özmen, E. (2018). "Yazılım Projelerinde Yazılım Geliştiricilerin Yazılım Süreç Modellerini Kullanım Farkındalıkları". Akademi Sosyal Bilimler Dergisi, 5 (15), 61-78.

Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J.-M. (1997). "Aspect-Oriented Programming". ECOOP'97—Object-oriented programming, 9-13 Haziran, (ss. 220-242). Finland: Jyväskylä. ISBN 978-3-540-63089-0

Koskela, M., Rahikainen, M. & Wan, T. (2007). Software Development Methods: SOA vs. CBD, OO and AOP. DOI: 10.1.1.111.9582.

Kruchten, P. (2003). "The Rational Unified Process White Paper (TP026B, Rev 11/01)". Boston: Addison-Wesley.

Larman, C. (2003). Agile and Iterative Development. Boston Massachusetts, ABD: Addison Wesley. ISBN: 0-13-111155-8.

Mahanti, R., Neogi, M. S. & Bhattacherjee, V. (2012). "Factors Affecting the Choice of Software Life Cycle Models in the Software Industry". Computer Science 8(8), 1253-1262. ISSN: 1549-3636.

McGregor, S. L. & Murnane, J. A. (2010). "Paradigm, methodology and method intellectual integrity in consumer scholarship". International Journal of Consumer Studies, (34), 419-427. DOI: 10.1111/j.1470-6431.2010.00883.x.

Microsoft (2003). "Microsoft Solutions Framework version 3.0 Overview White Paper (MSF_V3)". Microsoft Corporation.

MSF. (2016). Microsoft Solutions Framework Overview. Erişim Tarihi: 16 Mart 2016. https://msdn.microsoft.com/tr-tr/library/jj161047(v=vs.120).aspx Mujumdar, A., Masiwal, G. & Chawan, P. M. (2012). "Analysis of various Software Process Models. Engineering Research and Applications", 2(3), 2015-2021. ISSN: 2248-9622.

NASA. (1990). "Manager's Handbook for Software Development (No: SEL-84-101)" . Greenbelt: Goddard Space.

Nizam, A. (2014). Yazılım Proje Yönetimi. 1. Basım. İstanbul: Papatya Yayıncılık. ISBN 978-605-4220-74-4.

O'Regan G. (2017). Concise Guide to Software Engineering from Fundamentals to Application Methods (Undergraduate Topics in Computer Science), Springer International Publishing AG 2017. ISBN 978-3-319-57749-4.

Oussalah, M. C. (2014). Software Architecture 1. Somerset, US: Wiley-ISTE. ISBN: 9781848216006.Over, J. (2010). Introduction to the Team Software Process. Pittsburgh: Software Engineering Institute Carnegie Mellon University.

Paulish, D. J. (1993). Paulish, D. J. (1993). "Software process improvement methods technical report (No: CMU/SEI-92-TR-026)". Carnegie-Mellon Univ. Pittsburgh Pa Software Engineering Inst.

Poppendieck, M. & Poppendieck, T. (2003). Lean Software Development. Boston: Addison Wesley. ISBN: 978-0321150783.

Pressman, R. S. (2001). Software Engineering: A practitioner's approach(5'th Edition). Usa: McGraw-Hill Eduactıon. ISBN: 0073655783.

Ranniko, P. (2011). User-Centered Design in Agile Software Development. (Yayımlanmış Master Tezi). University of Tampere School of Information Sciences.

Rational, S. (2003). The Rational Unified Process: An Introduction (3rd Ed.). Lexington: Rational Software Development. ISBN: 0-321-19770-4.Reddy, A. R., Naidu, M. M. ve Govindarajulu, P. (2006). "Programming Methodologies and Software Architecture". Computer Science and Network Security, 6(11), 29-39. ISSN: 1738-7906

Royce, W. W. (1987). "Managing the Development of Large Software Systems : Concepts and techniques ". 9th international conference on Software Engineering, 30 Mart-2 Nisan, (ss. 328-338). Kalifornya: IEEE Computer Society. ISBN: 0-89791-216-0

Sarıdoğan, M, Erhan. (2004). Yazılım Mühendisliği, 1. Basım. İstanbul: Papatya Yayıncılık. ISBN 975-6797-57-6.

Sasankar, A. B. & Chavan, V. (2011). "SWOT Analysis of Software Development Process Models". International Journal of Computer Science, 8(5), 390-399. ISSN: 1694-0814.

Sliger, M. & Broderick, S. (2008). The Software Project Manager`s. Usa: Adison Wesley. ISBN: 978-0321502759

Sommerville, I. (2011). Software Engineering (9'th Ed.). Usa: Pearson Education Inc. ISBN: 978-0137035151.

Stamelos, I. G. & Sfetsos, P. (2007). Agile Software Development Quality Assurance. ISBN: 978-1599042169.

Taheri, M. & Sadjadi, S. M. (2015). "Tool-Selection Classification Software Development". The 27th International Conference on Software Engineering and Knowledge Engineering Conference, 6-8 Haziran, (ss. 700-704). ABD: Pittsburgh, Wyndham Pittsburgh University Center. DOI: 10.18293/SEKE2015-234

Tekinerdoğan, B. (2003). Classifying Software Architecture Design Methods. Enschede: Twente Research and Education on Software Engineering.

Thakur, D. Software Process Assessment. (2016). Erişim Tarihi: 16 Mart 2016. ecomputernotes.com/software-engineering/software-process-assessment

Tüfekçi, Ö., Çokkeçeci, İ. & Çetin, S. (2015). Gereksinim Güdümlü Uygulama Geliştirme. Erişim Tarihi: 16 Mart 2016. www.cs.com.tr/TR/themes/touch/images/haberler/

Türkiye Bilişim Ansiklopedisi (2006). İstanbul: Papatya Yayıncılık. ISBN 975-6797-38-X

Turan, O. (2011). Lean Düşüncesinin Doğuşu. Erişim Tarihi: 16 Mart 2016. www.prince2turkey.com/cevik-yontemler/33-lean-yazilim-gelistirme.html

TÜRCERT. (2016). ISO 15504 Yazılım Süreç Değerlendirme Sistemi. Erişim Tarihi: 16 Mart 2016. http://www.turcert.com/belgelendirme/sistem-belgelendirme/

Ülgen, S. (2016). Yazılım Geliştirme Süreçleri. Erişim Tarihi: 16 Mart 2016. http://www.sulc3.com/surecler.html

Versionone. (2016). What Is Agile Methodology? Erişim Tarihi: 4 Ağustos 2016. https://www.versionone.com/agile-101/agile-methodologies

Vinarek, J. & Hnetynka, P. (2016). "Towards an Automated Requirements-driven Development of Smart Cyber-Physical Systems". International Workshop on Formal Engineering approaches to Software Components & Architectures, 3 Nisan, (ss. 59-68). Netherlands: Eindhoven. DOI: 10.4204/EPTCS.205.5.

Yazıcıoğlu, S. (2011). SOA Nedir? Erişim Tarihi: 16 Mart 2016. http://blog.serkanyazicioglu.com/2011/12/soa-nedir/ Yazılım Geliştirme Süreci. (t.y). Erişim Tarihi: 27.05.2018, https://forum.java.com.tr/yazilim-gelistirme-sureci/

Yousuf, F. (2012).Reengineering Software Development. Erişim Tarihi: 17 Mart 2016. slideshare.net/faizayousuf/reengineering-software-development-process