<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Emir Kaan Çıracı on Medium]]></title>
        <description><![CDATA[Stories by Emir Kaan Çıracı on Medium]]></description>
        <link>https://medium.com/@emirkaanciracii?source=rss-6095b3dd6d85------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*9NoAnk64_SIgFxuLxgP5Zg.png</url>
            <title>Stories by Emir Kaan Çıracı on Medium</title>
            <link>https://medium.com/@emirkaanciracii?source=rss-6095b3dd6d85------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 24 May 2026 04:26:09 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@emirkaanciracii/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Clean Code]]></title>
            <link>https://emirkaanciracii.medium.com/clean-code-c016903227fe?source=rss-6095b3dd6d85------2</link>
            <guid isPermaLink="false">https://medium.com/p/c016903227fe</guid>
            <category><![CDATA[clean-code]]></category>
            <dc:creator><![CDATA[Emir Kaan Çıracı]]></dc:creator>
            <pubDate>Fri, 16 Apr 2021 11:34:19 GMT</pubDate>
            <atom:updated>2021-04-16T12:52:33.506Z</atom:updated>
            <content:encoded><![CDATA[<p>Clean Cod Nedir?</p><p>Herkes bilgisayarın anlayabileceği bir kod yazabilir fakat sadece işinin ehli olan bilgisayar ve yazılım mühendisleri ve iyi programcılar diğer insanların anlayabileceği kodlar yazabilir ve bu ancak clean code ile mümkündür . Geliştiriciler tarafından benimsenen bu düşünce tarzında, kodun pürüzsüz ve mükemmele yakın olması gerektiği ,gereksiz satırlardan uzak ,yazan kişinin dışında diğer geliştiriciler tarafından da kolayca okunabilen ve herhangi bir değişiklik yapılması gerektiğinde sistemdeki değişiklikleri sorunsuz ve verimli hale getirmek için saatler harcamamız gerekmediği koddur.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/487/1*QF0gk24YUKS5sN50O99aww.png" /></figure><p>Nasıl Clean Cod Yazarım?</p><p>-Kodunuz için gerekli olan Yazılım Tasarım kalıplarını kullanmak.</p><p>-Solid yazılım prensiplerini kullanmak.</p><p>-Gereksiz yorum satırlarından kaçınmak.</p><p>-İnsanlar için kolay okunur kod yazmak.</p><p>-Bağımlılıklara dikkat etmek.</p><p>-Kendini tekrar etmeyen kod yazmak.</p><p>-İyi İsimlendirme</p><p>-Doğal koşul ve döngüler.</p><p>Bağımlılıklar</p><p>Yazılım geliştirmede bağımlılıklarımıza her zaman çok dikkat etmemiz gerekiyor .Mümkünse bağımlılıklarımız tekil bir yönde olmalıdır .Diyelim ki bir elektronik sınıfımız var ve bu sınıfın içinde akıllı telefonlar var .Akıllı telefonların elektronik sınıfına bağlılığı gibi elektronik sınıfınında akıllı telefonlara bağımlılığı yoksa bu tek yönlü bir bağımlılıktır ve yönetilmesi daha kolaydır ancak her zaman tek yönlü bağımlılığa sahip olmak imkansızdır .Çift yönlü bağımlılıklarda her iki varlık birbirlerine bağlıdır bu yüzden ayrı olsalar bile birlikte var olmaları gerekir .Bağımlılıklar tek yönlü olmadığı sürece sistemleri güncellemekte zorlaşır .Bu yüzden bağımlılıkları yönetirken her zaman dikkatli olmak gerekir.</p><p>İsimlendirme</p><p>İsimler her zaman kısa ve anlaşılabilir olduğunda daha iyidir fakat bir ismin anlaşılabilir olması her zaman kısa olmasından daha değerlidir .Bu durumlarda uzun bir isim oluşturmaktan korkmamamız gerekir .Çünkü uzun ve açıklayıcı bir isimlendirme ,kısa ve gizemli bir isimlendirmeden ,uzun açıklayıcı yorum satırlarından çok daha değerlidir .Bir işleve isim koyarken birden çok sözcüğün kolayca okunmasına izin veren bir adlandırma kuralı kullanmak esastır .İşleve ne yaptığını söyleyen bir ad vermek içinse birden fazla kelimeden yararlanmak gerekir .Bunun içinse isimlendirmek yaparken zaman harcamaktan çekinmemek en önemli kuraldır .İsimlendirdiğimiz değişkenin ,işlevin veya sınıfın aşağıdaki üç soruya cevap vermesi gerekir;</p><ul><li>Neden var?</li><li>Bu ne işe yarıyor?</li><li>Nasıl kullanılır?</li></ul><p><strong>//Daha doğru isimlendirme (Camel style)</strong></p><p><strong>int gunCinsindenGecenSure;</strong></p><p><strong>int gecmisGunSuresi;</strong></p><p><strong>int gecenSureninGunDegeri;</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/418/1*O9HWBmeeT4PaDATR_CD7nQ.png" /></figure><p>Birinci görselde x nedir,y nedir?</p><p>Anlayabiliyor musunuz?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/582/1*wC9EZ6SC1lJKd5b7twWHsA.png" /></figure><p>-Döngüler</p><p>Kodun kendini tekrarlamasını önlemek için her türlü girişimde bulunulması gerekir .Kodun kopyalanması, ileriki safhalarda bir kavramı değiştirmeniz gerektiğinde ,birden fazla yerde değişiklik yapmanız gerektiği anlamına gelir ve zaman maliyetini arttırır.</p><p><strong>(Kötü kod)</strong></p><p><strong>public</strong> <strong>void</strong> method() {<br> <strong>int</strong> a = 1;<br> <strong>int</strong> b = 2;<br> <strong>int</strong> c = a+b; // duplicate<br> <strong>int</strong> d = b+c; // duplicate<br> }<br> …<br><br> }</p><p>(Kendini tekrar eden kod kaldırıldıktan sonra)</p><p><strong>public</strong> <strong>void</strong> method() {<br> <strong>int</strong> a = 1;<br> <strong>int</strong> b = 2;<br> <strong>int</strong> c = add(a,b);<br> <strong>int</strong> d = add(b,c);<br> }<br> …<br> <strong>private</strong> <strong>int</strong> add(<strong>int</strong> a, <strong>int</strong> b) {<br> <strong>return</strong> a+b;<br> }</p><p>-Koşullar</p><p>İf, else ,while ,switch ifadelerini uzun kullanmamak gerekir ,çünkü bazen işlevleri çok büyük ve karmaşık hale getirirler .Eğer bu ifadeleri kullanmak gerekliyse bir veya iki satır olarak kullanmaya çalışın ve iç içe ifadelerden kaçının .Negatif durum yerine pozitif durumla baş etmeye çalışın ve ilk olarak basit olan durum ile başa çıkmayı tercih edin.</p><p>Örnek olarak gösterilirse 1.Görselde koda başlanırken değil ifadesiyle başlanmıştır ve bu kodu okuyacak diğer geliştiricilerin kafasında soru işareti bırakır çünkü biz insanlar olarak bir komut gördüğümüzde ilk olarak kendisinin ne işe yaradığını düşünürüz. Komutun tersini düşünmeyiz.</p><figure><img alt="1.Görsel" src="https://cdn-images-1.medium.com/max/351/1*582o0geFXaequxDPZnIxmw.png" /><figcaption>1.Görsel</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/352/1*pjvySj1y3DZE2L3QQStMbg.png" /><figcaption>2.Görsel</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/631/1*xgnUFJVcfQTz7fhaOQyeLA.png" /></figure><p>(bad code)</p><p><strong><em>function greetings(timePhase:string) {</em></strong><br> <strong><em>if (timePhase === “morning”) {<br> console.log(“Good Morning”);<br> } else if (timePhase === “afternoon”) {<br> console.log(“Good Afternoon”);<br> } else if (timePhase === “evening”) {<br> console.log(“Good Evening”);<br> } else {<br> console.log(“Good Night”);<br> }<br> }<br> // calling<br> greetings();</em></strong></p><p>(clean code)</p><p><strong><em>function printGreeting(greeting:string) {<br> console.log(greeting);<br> }</em></strong></p><p><strong><em>function greetings(timePhase: string) {<br> let greeting = ‘Good’ + timePhase;<br> printGreeting(greeting);<br> }</em></strong></p><p>-Yorum satırları</p><p>Öncelikle bir kod yazarken her zaman önceliğimiz kendimizi yazdığımız kodla açıklamak olmalıdır bundan sebep ile yazılan en iyi kod yorum satırına ihtiyaç duymayan kod diyebiliriz .Kötü bir kodu yorumlamak yerine kaldırmayı tercih etmeliyiz ve yorum satırlarını kodun açıklaması ve sonuçların uyarısı olarak kullanın.</p><p>-Gereksiz yorum satırları</p><p>Çok yaygın bir durum. Customer class’ında müşteri sınıfı diye yorum atmak gereksizdir. Yazmasa da olur denecek bir çok kod yorumu satırı ne yazık ki karşımıza çıkıyor. Bir noktadan sonra sırf yazmak için yazılıyor.Zaten bu kadar kısa yazılıp anlaşılabilecek bir kod yazıldıysa eklemesekte olur diye düşünüyorum.</p><p>Bunun dışında yasal sebeplerden ötürü yorum satırı yazmamız gerebilir.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/605/1*oJCk1XRUx0rmvuAIZRVMgQ.png" /></figure><p>-Fonksiyonlar</p><p>Fonksiyonlar tek bir işi yapmalı ve o işi çok iyi yapmalıdırlar .Bir fonksiyon birden fazla işi içinde barınıyorsa kesinlikle o fonksiyonu daha küçük birden fazla fonksiyona bölmek şarttır.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/351/1*qTzBmlpIePLY2YAph2hxyQ.png" /></figure><p>Fonksiyon 1 şey yapmalıdır. Bu 1 şeyi yapmak birden fazla adım gerektirebilir. Yazdığımız X fonksiyonun 1 şey yapıp yapmadığını kolayca test edebiliriz: Eğer bu fonksiyondan kendisine pek benzemeyen, farklı bir isimde olan Y fonksiyonu çıkarabiliyorsak, X fonksiyonu aslında 1 değil 2 şey yapıyormuş.</p><p>Fonksiyonların ideal argüman sayısı 0&#39;dır. 0 değilse 1, 1 değilse 2, 2 değilse 3&#39;tür. Ama 3&#39;den fazlasından kaçmak lazım. Bunun sebebi de argüman sayısı arttıkça yazacağımız test case sayısı da artıyor. Argüman sayısı azaltmak için benzer durumda olan argümanları kapsayacak bir Class yazabiliriz:</p><pre>Circle makeCircle(double x, double y, double radius);</pre><p>Bunun yerine:</p><pre>Circle makeCircle(Point center, double radius)</pre><p>Kaynaklar</p><p><a href="https://dzone.com/articles/clean-code-explanation-benefits-amp-examples#:~:text=When%20we%20talk%20about%20clean,understand%20and%20easy%20to%20change.&amp;text=This%20means%20the%20code%20is,the%20code%20or%20somebody%20else">https://dzone.com/articles/clean-code-explanation-benefits-amp-examples#:~:text=When%20we%20talk%20about%20clean,understand%20and%20easy%20to%20change.&amp;text=This%20means%20the%20code%20is,the%20code%20or%20somebody%20else</a>.</p><p><a href="https://gencyazilimci.com/kotu-kokan-kod-code-smell-nedir-373/">https://gencyazilimci.com/kotu-kokan-kod-code-smell-nedir-373/</a></p><p><a href="https://medium.com/@kadircolak1999/clean-code-nedir-eeac3cb489cd">https://medium.com/@kadircolak1999/clean-code-nedir-eeac3cb489cd</a></p><p><a href="https://www.eguller.com/2014/02/clean-code.html">https://www.eguller.com/2014/02/clean-code.html</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c016903227fe" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Yazılım Yaşam Döngü Modelleri(Software Development Life Cycle Models)]]></title>
            <link>https://emirkaanciracii.medium.com/yaz%C4%B1l%C4%B1m-ya%C5%9Fam-d%C3%B6ng%C3%BC-modelleri-software-development-life-cycle-models-bf2c23090e42?source=rss-6095b3dd6d85------2</link>
            <guid isPermaLink="false">https://medium.com/p/bf2c23090e42</guid>
            <category><![CDATA[sdlc]]></category>
            <dc:creator><![CDATA[Emir Kaan Çıracı]]></dc:creator>
            <pubDate>Sat, 27 Mar 2021 20:36:21 GMT</pubDate>
            <atom:updated>2021-03-27T20:36:21.575Z</atom:updated>
            <content:encoded><![CDATA[<p>Yazılım yaşam döngüsü , yazılım geliştirme aşamalarını ve bu aşamaların yürütüldüğü sırayı açıklar .Her aşama kendinden sonraki aşamanın temelini oluşturur ve bir sonraki aşamaya geçmek için gerekli olan çıktıları üretir .Öte yandan yazılım yaşam döngüsü her zaman ileri yönde ilerlemez ,kendisini oluşturan temel aşamalar içerisinde rotasyon oluşturur. Bu rotasyon içerisindeki temel aşamalarda bir önceki aşamaya geri dönmek ve tekrar ilerlemek mümkündür. Bu temel aşamalar planlama, analiz, tasarım , gerçekleştirme ve teslim-bakımdır. Özünde yazılım yaşam döngüsü, müşterinin zaman ve maliyet beklentilerini karşılamaya yönelik yüksek kaliteli yazılımlar üretmeyi amaçlamaktadır.</p><p>1.Aşama (Planlama): SDLC’nin birinci aşamasıdır ve temel ihtiyaçlar belirlenip ,proje planlaması yapılır.</p><p>2.Aşama(Analiz): Yazılım yaşam döngüsünün 2. Aşaması olan analiz geliştirilicek olan üründen tam olarak ne istendendiğinin dokümantasyonunun yapıldığı ve ürürün somutlaşmaya başladığı evredir.</p><p>3.Aşama(Tasarım): Bu aşamada 2. Aşamada incelenen ihtiyaç özelliklerinden sistem ve yazılım tasarımı hazırlanır. Sistem tasarımı, donanım ve sistem gereksinimlerinin belirlenmesine ve ayrıca genel sistem mimarisinin tanımlanmasına yardımcı olur ve bir sonraki aşama için girdi görevi görür.</p><p>4.Aşama(Gerçekleştirme): Bu aşama kodlamanın gerçekleştirildiği aşamadır. Bu aşamada seçilen yazılım dili kullanılıp sistemin modüllere ayrılarak geliştiriciler tarafından inşa edilmesini içerir. Yazılım yaşam döngüsünün en çok zaman alan bölümünü kapsar.</p><p>5.Aşama(Teslim-Bakım):Tüm aşamalar tamamlandıktan sonra yazılım ürünün sahaya teslim edilebilir bir versiyonu çıkartılır ve müşteriye teslim edilir. Teslim çıktısı olarak ürün tek başına yeterli değildir. Ürün ile birlikte mutlaka son kullanıcılar için kullanım kılavuzu ve versiyon fark dokümanı oluşturulmalıdır. Teslim ile birlikte bakım aşaması başlar ve ürünün çalışır durumda kalması garanti çerçevesinde kontrol edilir ve ürünün üstünde müşterinin isteği doğrultusunda yeni eklemeler ve değişikler yapılabilir ve bunlar 3 kısma ayrılır.</p><p>-Hata düzeltme (Bug fixing):Üründe daha önce fark edilememiş hatalar düzeltilir.</p><p>-Yükseltme(Uprage):Ürünün daha yeni sürümlerine yükseltme işlemi yapılır.</p><p>-Geliştirme(Enhancement):Mevcut yazılıma yeni özellikler eklenir.</p><p>Yeni bir ürünün versiyonu v1.0.0’dır. 3 parçadan oluşan bu numaralandırmanın soldan sağa isimleri majör value , minör value ve build value’dir.Bu 3 tanımı bir örnek üzerinde anlatırsak eğer teslim edilen ürün üzerinde yapılan köklü değişiklikler sonrası ürünün majör değeri değişir ve versiyon 2.0.0 değerini alır.Ürün üzerinde çok fazla farklılık yaratmayan değişiklikler için minör value arttırılır ve ürünün versiyonu 2.1.0 olur.Ürün üzerindeki ufak tefek sorunları giderebilmek adına yapılan değişikliklerde ise ürünün build value’si arttırılır ve ürünün versiyonu 2.1.1 olarak adlandırılır.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*ysyxQgA_fb5Iq08JTyHS3Q.png" /></figure><p>SDLC MODELLERİ</p><p>1)Şelale(Waterfall)Modeli</p><p>En eski ve en iyi bilinen sdlc modellerinden biridir. Temel aşamalar planlamadan bakıma kadar sırasıyla birbirlerini takip ederler. İyi tanımlanmış ve anlaşılmış gereksinimleri olan sistemler , Şelale modeli için uygundur.</p><p>Şelale modelinin iyi yanları , anlaşılması kolay ve kullanımının kolay olmasının yanı sıra yeni ve deneyimsiz personel için yapı sağlar. Yönetim kontrolü için iyidir ve gereksinim istikrarını iyi ayalar. Gereksinimler çok iyi bilindiğinde ve müşterinin isteklerinin değişmeyeceği ve kesin anlaşıldığı zaman kullanıma uygundur. Fakat şelale modeli ,ihtiyaçların sürekli değiştiği projeler ,nesne odakları projeler için uygun değildir ve müşteri ile iletişime çok az fırsat tanır.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/187/1*PePWg05KzbmJzpNxJm_4RA.png" /></figure><p>2)V Süreç Modeli</p><p>Şelale modelinin bir uzantısıdır. Doğrusal bir şekilde aşağıya inmek yerine V şeklini alarak uygulama ve kodlama aşamasından sonra işlem adımları yukarı doğru bükülür. V Süreç Modelinin, Şelale modelinden en büyük farkı modeldeki erken test planlamasıdır.</p><p>Basit ve kullanımı kolaydır. Her aşamada belirli çıktıları vardır. Yaşam döngüsüsün başlarında test planının geliştirilmesi nedeniyle Şelale Modeline göre daha fazla başarı şansı vardır ve gereksinimlerin kolayca anlaşıldığı yerde iyi çalışır. Fakat şelale modeli gibi esnek değildir. Test aşamalarında bulunan sorunlar için net bir çözüm yolu sağlamaz ve ayrıntılı bir plana ek olarak maliyetlidir ve daha fazla zaman gerektirir.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/362/1*gMuTJbq35Hmzj7IFWRE2Ow.png" /></figure><p>3)Yinelemeli Model</p><p>Yinelemeli Model tamamen tekrarla ilgilidir. Geliştiriciler bütün gereksinimleri tam olarak bilmeye başlamak yerine direk yazılım geliştirme aşamasından başlanır ve bunları test eder, iyileştirir. Böylece her yenilemede yazılımın yeni bir versiyonu üretilir ve bu ürün oluşana kadar tekrar olur.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/334/1*Y908uDq_KKEUmfwgmuZI-A.png" /></figure><p>4)Spiral Model</p><p>Spiral modelin dört aşaması vardır. Bir yazılım projesi, Spiral adı verilen yinelemelerde bu aşamalardan tekrar tekrar geçer. Bu aşama, iş gereksinimlerinin temel spiralde toplanmasıyla başlar. Sonraki spirallerde ürün olgunlaştıkça, sistem gereksinimlerinin, alt sistem gereksinimlerinin ve birim gereksinimlerinin belirlenmesi bu aşamada yapılır. Bu aşama aynı zamanda müşteri ve sistem analisti arasındaki sürekli iletişim yoluyla sistem gereksinimlerinin anlaşılmasını da içerir. Spiralin sonunda, ürün belirlenen pazarda konuşlandırılır.</p><p>Spiral Modelde gereksinimler daha doğru bir şekilde anlaşılır. Kullanıcılar sistemi erken görür, geliştirme daha küçük parçalara bölünebilir ve riskli bölümler daha erken geliştirilebilir, bu da daha iyi risk yönetimine yardımcı olur. Fakat bu modelde yönetim daha karmaşıktır. Oluşturulan ürünün teslim tarihi tam olarak bilinmeyebilir ve küçük ve risksiz projeler için uygun değildir maliyeti çok fazla arttırabilir. Spiral sonsuza kadar devam edebilir ve çok fazla ara aşamanın yanında aşırı dokümantasyon gerektirir.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/410/1*7NFjpB2daB0aZ18XshcLeA.png" /></figure><p>5)Big-Bang Modeli</p><p>Big-Bang modeli ,çok az planlamayla yada hiçbir plan olmadan direk yazılım geliştirme ve kodlamaya odaklanır. Gereksinimler bu süreç ilerledikçe anlaşılır ve uygulanır. Bazen gerekli herhangi bir değişiklik için tüm yazılımı değiştirmeye gerek duyulabilir. Bu model bir veya iki kişinin birlikte çalıştığı küçük projeler için uygundur. Ayrıca akademik projeler için ve gereksinimlerin net anlaşılmadığı ve ürünün teslim tarihinin verilmediği projeler içinde uygundur.</p><p>Bu Big Bang Modelinin avantajı, çok basit olması ve çok az planlama gerektirmesi veya hiç planlama gerektirmemesidir. Yönetimi kolaydır ve resmi bir prosedür gerekmez. Bununla birlikte, Big Bang Modeli çok yüksek riskli bir modeldir ve gereksinimlerdeki değişiklikler veya yanlış anlaşılan gereksinimler, projenin tamamen baştan kodlanmasına bile yol açabilir. Minimum riskle tekrarlayan veya küçük projeler için idealdir.</p><p>6)Artımlı Model</p><p>Sistemi tek seferde teslim etmek yerine, geliştirme ve teslim parçalara bölünür. Her teslim beklenen işlevselliğin bir parçasını karşılar. Kullanıcı gereksinimleri önceliklendirilir ve öncelikli gereksinimler erken teslimlere dahil edilir. Gereksinimler önemlerine ve birbirine bağımlılıklarına göre sıralanarak her yinelemede bunların bir kısmı tamamlanır. Bir parçanın geliştirmesi başladığında, gereksinimleri dondurulur. Olası değişiklikler sonraki teslimlerde ele alınır.</p><p>Üretilen her yazılım sürümü birbirini kapsayacak ve giderek artan sayıda işlev içerecek şekilde geliştirilir. Uzun zaman alabilecek ve sistemin eksik işlevsellikle çalışabileceği türdeki projeler bu modele uygun olabilir. Bir taraftan kullanım, diğer taraftan üretim yapılır.</p><p>Her teslimle birlikte müşteriye görünen bir değer döndüğünden, sistemin işlevselliği erken aşamalarda ortaya çıkar.Erken teslimler, sonraki teslimler için gereksinimleri çıkarmada prototip vazifesi görür. Projenin tümden batması riskini azaltır. Öncelikli gereksinimleri karşılayan sistem işlevleri daha çok test edilir</p><p>7)Çevik Model</p><p>Çevik SDLC modeli, çalışan yazılım ürününün hızlı teslimi ile süreç uyarlanabilirliği ve müşteri memnuniyetine odaklanan yinelemeli ve artımlı süreç modellerinin bir kombinasyonudur. Çevik Model, ürünü küçük artımlı yapılara böler. Bu yapılarda yinelemelere gidilir. Her yineleme tipik olarak yaklaşık bir ila üç hafta sürer.</p><p>Çevik yöntemler, son zamanlarda yazılım dünyasında yaygın olarak kabul görmektedir. Ancak bu yöntem her zaman tüm ürünler için uygun olmayabilir. Yazılım geliştirmek için çok gerçekçi bir yaklaşımdır ve takım çalışmasını teşvik eder. İşlevsellik hızla geliştirilebilir ve gösterilebilir. Sabit veya değişen ihtiyaçlara uygundur, minimal kurallar vardır ve dokümantasyon kolayca anlaşılır. Yönetimi kolaydır ve geliştiricilere esneklik sağlar fakat büyük ölçüde müşteriye bağlıdır ve müşteri net değil ise ,ekip yanlış yöne yönelebilir ve bu zaman kaybına ,maliyet artışına sebep olur. Üretilen minimum dokümantasyon yüzünden çok yüksek bireysel bağımlılığa ihtiyaç duyar. Yeni ekip üyelerine teknoloji transferi, dokümantasyon eksikliği nedeniyle oldukça zor olabilir.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/196/1*gNrtF2cRsJPShcG2vWwz5Q.png" /></figure><p>SCRUM NEDİR</p><p>Scrum, günümüzde kullanılan en popüler çevik yazılım geliştirme metodlarından biridir ve haklı olarak karmaşık ürünler ve sistemler geliştirmek için kullanılmaktadır. Scrum adı aslında bir rugby terimidir. Rugby’de bir scrum, topu almaya çalışan bir grup oyuncudur. Proje yönetimi alanında “scrum”, ekip üyelerinin bir projeyle ilgili başarıları, ne kadar ileri gittikleri, sonraki adımların neler olduğu ve bekledikleri gelecekteki zorluklar hakkında konuşmak için bir araya geldiği kısa toplantıları ifade eder. Toplantılar kısa ve yoğun, daha yüksek kalitede övünen, hızlandırılmış bir ürün teslimiyle sonuçlanır ve aslında bu toplantılar geliştiricilerin kendi içlerinde sosyalleştiği alanlardır.</p><p>Önemini tam olarak anlamak için önce Çevik geliştirme sürecinin nasıl işlediğini anlamanız gerekir. Çevik, belirli bir yazılım geliştirme yöntemi veya bir çerçeve değildir, bunun yerine yazılım geliştirme yöntemlerinin sürekli gelişimini destekleyen bir dizi ilkedir. Çevik geliştirme, yinelemeli geliştirme üzerine inşa edilmiş bir dizi yazılım geliştirme metodolojisine ev sahipliği yapar.</p><p>Her şey çeşitli yöntemleri izlemek ve yazılım geliştirmek için belirli araçları kullanmakla ilgilidir. Scrum bu yöntemlerden biridir. Scrum’ın ana uygulaması, karmaşık ürünlerin ve sistemlerin geliştirilmesidir. Daha çok “yap, kontrol et ve uyarla” ilkesine dayanmaktadır. Bu süreç optimum üretkenlik sağlar ve ortaya çıkabilecek riskler üzerinde daha fazla kontrol sağlar ve bu yalnızca iki yaklaşım kullanıldığında mümkündür — yineleme ve artış. Scrum ile Çevik Proje Yönetiminin arkasındaki fikir, son kullanıcılara tam olarak istediklerini vermektir. Bu, “Sprintler” veya sürekli geri bildirim ve yinelemeler yoluyla elde edilebilir. Sprintlerin kısa, ancak düzenli, dört haftayı geçmeyen ve önemli bir ürün artışının sunulmasının beklendiği döngüler olması amaçlanmıştır.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/1*-26RwRtsQpuk5l8BaGjjqA.png" /></figure><p>Referanslar:</p><p><a href="https://guntherverheyen.com/the-scrum-values/">https://guntherverheyen.com/the-scrum-values/</a></p><p><a href="https://zeynepaygun.wordpress.com/2017/05/29/what-is-sdlc-sdlc-nedir/">https://zeynepaygun.wordpress.com/2017/05/29/what-is-sdlc-sdlc-nedir/</a></p><p><a href="https://medium.com/@denizkilinc/yaz%C4%B1l%C4%B1m-ya%C5%9Fam-d%C3%B6ng%C3%BCs%C3%BC-temel-a%C5%9Famalar%C4%B1-software-development-life-cycle-core-processes-197a4b503696">https://medium.com/@denizkilinc/yaz%C4%B1l%C4%B1m-ya%C5%9Fam-d%C3%B6ng%C3%BCs%C3%BC-temel-a%C5%9Famalar%C4%B1-software-development-life-cycle-core-processes-197a4b503696</a></p><p><a href="https://medium.com/@chandu_22532/sdlc-models-software-development-life-cycle-models-452a1e10d015">https://medium.com/@chandu_22532/sdlc-models-software-development-life-cycle-models-452a1e10d015</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bf2c23090e42" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>