{"id":33143,"date":"2025-10-30T06:31:40","date_gmt":"2025-10-30T03:31:40","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/"},"modified":"2025-10-30T06:31:40","modified_gmt":"2025-10-30T03:31:40","slug":"giris-se-371-proje-2-neden-bu-kadar-onemli","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/","title":{"rendered":"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?"},"content":{"rendered":"<p>SE 371 Proje 2, modern yaz\u0131l\u0131m geli\u015ftirme prensiplerini ger\u00e7ek d\u00fcnya senaryolar\u0131yla birle\u015ftiren kapsaml\u0131 bir uygulamal\u0131 deneyim sunar. Bu makalede, projenin temel ta\u015flar\u0131ndan ileri d\u00fczey optimizasyonlara kadar her \u015feyi ke\u015ffedece\u011fiz. Gelin, bu \u00f6nemli projenin detaylar\u0131na birlikte dalal\u0131m ve yaz\u0131l\u0131m geli\u015ftirme yolculu\u011funuzda size yol g\u00f6sterecek bilgileri \u00f6\u011frenelim.<\/p>\n<hr>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131, s\u00fcrekli de\u011fi\u015fen teknolojiler ve kullan\u0131c\u0131 beklentileriyle dolu dinamik bir aland\u0131r. Teorik bilginin \u00f6tesinde, bu bilgiyi ger\u00e7ek d\u00fcnya problemlerine uygulayabilme yetene\u011fi, ba\u015far\u0131l\u0131 bir yaz\u0131l\u0131mc\u0131n\u0131n en kritik \u00f6zelli\u011fidir. Peki, SE 371 Proje 2 tam olarak bu noktada devreye giriyor. Bir\u00e7ok \u00f6\u011frenci ve profesyonel i\u00e7in, bu proje sadece bir dersin gereklili\u011fi olman\u0131n \u00e7ok \u00f6tesinde, tam te\u015fekk\u00fcll\u00fc bir yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecinin canl\u0131 bir sim\u00fclasyonudur.<\/p>\n<p>Bu proje, geleneksel \u00f6\u011frenme y\u00f6ntemlerinin aksine, \u00f6\u011frencilere teorik bilgileri pratik becerilere d\u00f6n\u00fc\u015ft\u00fcrme f\u0131rsat\u0131 sunar. Bir tak\u0131m halinde \u00e7al\u0131\u015fmay\u0131, gereksinimleri analiz etmeyi, uygun teknolojileri se\u00e7meyi, kod yazmay\u0131, test etmeyi ve nihayetinde \u00e7al\u0131\u015fan bir \u00fcr\u00fcn\u00fc da\u011f\u0131tmay\u0131 deneyimlersiniz. Bu s\u00fcre\u00e7, ger\u00e7ek bir \u015firketin \u00fcr\u00fcn geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc yak\u0131ndan taklit eder ve mezun olduktan sonra kar\u015f\u0131la\u015faca\u011f\u0131n\u0131z zorluklara kar\u015f\u0131 sizi haz\u0131rlar. K\u0131sacas\u0131, SE 371 Proje 2, \u00fcniversite s\u0131ralar\u0131nda edindi\u011finiz bilgileri sekt\u00f6re \u00f6zel yetkinliklere d\u00f6n\u00fc\u015ft\u00fcren bir k\u00f6pr\u00fc g\u00f6revi g\u00f6r\u00fcr. Proje boyunca, sadece teknik becerilerinizi geli\u015ftirmekle kalmayacak, ayn\u0131 zamanda problem \u00e7\u00f6zme, kritik d\u00fc\u015f\u00fcnme ve etkili ileti\u015fim gibi yumu\u015fak becerilerinizi de keskinle\u015ftirme f\u0131rsat\u0131 bulacaks\u0131n\u0131z. Bu nedenle, projeyi sadece bir not alma arac\u0131 olarak g\u00f6rmek yerine, kariyerinizin \u00f6nemli bir yap\u0131 ta\u015f\u0131 olarak de\u011ferlendirmek b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz yaz\u0131l\u0131m end\u00fcstrisinde, \u201cfull-stack\u201d geli\u015ftiricilere olan talep hi\u00e7 bu kadar y\u00fcksek olmam\u0131\u015ft\u0131. SE 371 Proje 2, tam da bu ihtiyaca y\u00f6nelik bir deneyim sunarak hem \u00f6n y\u00fcz (frontend) hem de arka y\u00fcz (backend) geli\u015ftirme prensiplerini bir arada ele alman\u0131z\u0131 sa\u011flar. Veritaban\u0131 y\u00f6netimi, API tasar\u0131m\u0131, kullan\u0131c\u0131 aray\u00fcz\u00fc geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri gibi konulara hakim olmak, sizi i\u015f piyasas\u0131nda daha rekabet\u00e7i k\u0131lacakt\u0131r. Dolay\u0131s\u0131yla, bu proje yaln\u0131zca bir teknik al\u0131\u015ft\u0131rma de\u011fil, ayn\u0131 zamanda ki\u015fisel ve profesyonel geli\u015fiminizi destekleyen kapsaml\u0131 bir e\u011fitim platformudur. Bu projenin sundu\u011fu f\u0131rsatlar\u0131 en iyi \u015fekilde de\u011ferlendirmek i\u00e7in, her a\u015famas\u0131na \u00f6zen g\u00f6stermeli ve kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z zorluklar\u0131 birer \u00f6\u011frenme f\u0131rsat\u0131 olarak g\u00f6rmelisiniz.<\/p>\n<hr>\n<h2>Temel Kavramlar ve Proje 2&#8217;nin Omurgas\u0131: Hangi Teknolojiler Kullan\u0131l\u0131yor?<\/h2>\n<p>SE 371 Proje 2&#8217;nin ba\u015far\u0131l\u0131 bir \u015fekilde tamamlanmas\u0131 i\u00e7in, temel yaz\u0131l\u0131m geli\u015ftirme kavramlar\u0131na ve projenin kulland\u0131\u011f\u0131 teknoloji y\u0131\u011f\u0131n\u0131na hakim olmak hayati \u00f6neme sahiptir. Bu b\u00f6l\u00fcmde, projenin amac\u0131n\u0131, kapsam\u0131n\u0131 ve genellikle tercih edilen teknolojik bile\u015fenleri detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Unutmay\u0131n, bu projede her \u015fey birbirine ba\u011fl\u0131d\u0131r ve bir par\u00e7an\u0131n iyi anla\u015f\u0131lmas\u0131, di\u011fer par\u00e7alar\u0131n da daha rahat kavranmas\u0131na yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Projenin Amac\u0131 ve Kapsam\u0131 Nedir?<\/h3>\n<p>SE 371 Proje 2&#8217;nin temel amac\u0131, \u00f6\u011frencilere ger\u00e7ek bir yaz\u0131l\u0131m \u00fcr\u00fcn\u00fcn\u00fcn ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc ba\u015ftan sona deneyimleme f\u0131rsat\u0131 sunmakt\u0131r. Bu, sadece kod yazmakla s\u0131n\u0131rl\u0131 de\u011fildir; ayn\u0131 zamanda gereksinimlerin toplanmas\u0131, tasar\u0131m\u0131n yap\u0131lmas\u0131, geli\u015ftirme, test etme, da\u011f\u0131t\u0131m ve bak\u0131m gibi t\u00fcm a\u015famalar\u0131 kapsar. Genellikle, proje bir &#8220;mini-uygulama&#8221; geli\u015ftirmeyi hedefler. Bu uygulama, basit bir e-ticaret sitesinden bir randevu sistemi uygulamas\u0131na veya bir g\u00f6rev y\u00f6netim arac\u0131na kadar \u00e7e\u015fitli fonksiyonlara sahip olabilir. \u00d6nemli olan, uygulaman\u0131n birden fazla kullan\u0131c\u0131 rol\u00fcne sahip olmas\u0131 (\u00f6rne\u011fin, y\u00f6netici ve standart kullan\u0131c\u0131), bir veritaban\u0131 ile etkile\u015fime ge\u00e7mesi ve kullan\u0131c\u0131 dostu bir aray\u00fcze sahip olmas\u0131d\u0131r. Proje kapsam\u0131, genellikle \u00f6nceden belirlenmi\u015f kullan\u0131c\u0131 hikayeleri veya gereksinimler listesi \u00fczerinden netle\u015ftirilir, bu da tak\u0131m\u0131n ne in\u015fa edece\u011fine dair sa\u011flam bir yol haritas\u0131 sunar. Bu yakla\u015f\u0131mla, t\u00fcm tak\u0131m \u00fcyeleri projenin genel vizyonunu ve hedeflerini net bir \u015fekilde anlar ve b\u00f6ylece s\u00fcre\u00e7 daha verimli hale gelir.<\/p>\n<h3>Teknoloji Y\u0131\u011f\u0131n\u0131na Yak\u0131ndan Bak\u0131\u015f: Frontend, Backend, Veritaban\u0131<\/h3>\n<p>SE 371 Proje 2, modern web uygulamalar\u0131n\u0131n standart bir teknoloji y\u0131\u011f\u0131n\u0131n\u0131 (stack) kullan\u0131r. Bu y\u0131\u011f\u0131n genellikle \u00fc\u00e7 ana bile\u015fenden olu\u015fur:<\/p>\n<ol>\n<li><strong>Frontend (\u00d6n Y\u00fcz):<\/strong> Kullan\u0131c\u0131lar\u0131n do\u011frudan etkile\u015fimde bulundu\u011fu k\u0131s\u0131md\u0131r. G\u00f6rsel aray\u00fcz\u00fc, etkile\u015fimli bile\u015fenleri ve kullan\u0131c\u0131 deneyimini kapsar.\n<ul>\n<li><strong>HTML:<\/strong> Sayfan\u0131n iskeletini olu\u015fturur.<\/li>\n<li><strong>CSS:<\/strong> Sayfan\u0131n stilini ve d\u00fczenini belirler. Responsive tasar\u0131m burada devreye girer.<\/li>\n<li><strong>JavaScript:<\/strong> Sayfay\u0131 dinamik ve interaktif hale getirir. Genellikle React, Vue.js veya Angular gibi modern k\u00fct\u00fcphane\/framework&#8217;ler kullan\u0131l\u0131r. \u00d6rne\u011fin, React kullanarak kullan\u0131c\u0131 aray\u00fcz\u00fc olu\u015fturmak, bile\u015fen tabanl\u0131 bir mimariyle daha y\u00f6netilebilir ve yeniden kullan\u0131labilir kod yazman\u0131za olanak tan\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Backend (Arka Y\u00fcz):<\/strong> Uygulaman\u0131n sunucu taraf\u0131 mant\u0131\u011f\u0131n\u0131 ve veritaban\u0131 ile etkile\u015fimini y\u00f6netir. Kullan\u0131c\u0131lar\u0131n g\u00f6remedi\u011fi, ancak uygulaman\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in kritik olan t\u00fcm i\u015flemleri ger\u00e7ekle\u015ftirir.\n<ul>\n<li><strong>Programlama Dili:<\/strong> Genellikle Java (Spring Boot ile), Node.js (Express.js ile) veya Python (Django\/Flask ile) tercih edilir. Bu diller, API&#8217;ler olu\u015fturmak, i\u015f mant\u0131\u011f\u0131n\u0131 y\u00fcr\u00fctmek ve veritaban\u0131 ile ileti\u015fim kurmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>API (Uygulama Programlama Aray\u00fcz\u00fc):<\/strong> Frontend ile backend aras\u0131ndaki ileti\u015fimi sa\u011flayan kurallar ve protokollerdir. Genellikle RESTful API&#8217;ler tercih edilir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Veritaban\u0131:<\/strong> Uygulaman\u0131n t\u00fcm verilerini (kullan\u0131c\u0131 bilgileri, \u00fcr\u00fcnler, sipari\u015fler vb.) depolayan ve y\u00f6neten sistemdir.\n<ul>\n<li><strong>\u0130li\u015fkisel Veritabanlar\u0131:<\/strong> MySQL, PostgreSQL veya H2 (geli\u015ftirme i\u00e7in) s\u0131k\u00e7a kullan\u0131l\u0131r. SQL sorgular\u0131 ile veri ekleme, g\u00fcncelleme, silme ve okuma i\u015flemleri yap\u0131l\u0131r.<\/li>\n<li><strong>ORM (Object-Relational Mapping):<\/strong> Hibernate (Java i\u00e7in) veya Sequelize (Node.js i\u00e7in) gibi ara\u00e7lar, veritaban\u0131 i\u015flemlerini programlama dili nesneleriyle daha kolay y\u00f6netmeyi sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<div class=\"uzman-ipucu\" style=\"background-color: #e0f7fa; border-left: 5px solid #00bcd4; padding: 10px; margin: 15px 0;\">\n  <strong>Uzman \u0130pucu:<\/strong> Teknoloji se\u00e7imi yaparken tak\u0131m\u0131n\u0131z\u0131n mevcut beceri setini ve projenin gereksinimlerini g\u00f6z \u00f6n\u00fcnde bulundurun. Pop\u00fclerlik \u00f6nemli olsa da, tak\u0131m\u0131n rahat oldu\u011fu teknolojilerle ba\u015flamak \u00f6\u011frenme e\u011frisini d\u00fc\u015f\u00fcr\u00fcr ve verimlili\u011fi art\u0131r\u0131r.\n<\/div>\n<h3>\u00c7evik Geli\u015ftirme Metodolojileri: Scrum ve Kanban<\/h3>\n<p>SE 371 Proje 2&#8217;nin bir di\u011fer \u00f6nemli bile\u015feni de \u00e7evik (Agile) geli\u015ftirme metodolojilerinin kullan\u0131lmas\u0131d\u0131r. Bu metodolojiler, yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerini daha esnek, adaptif ve m\u00fc\u015fteri odakl\u0131 hale getirir. Projede en s\u0131k kar\u015f\u0131la\u015f\u0131lan iki \u00e7evik metodoloji \u015funlard\u0131r:<\/p>\n<ol>\n<li><strong>Scrum:<\/strong> Belirli s\u00fcreli iterasyonlar (sprintler) halinde \u00e7al\u0131\u015fmay\u0131 temel al\u0131r. Her sprintin ba\u015f\u0131nda sprint planlama toplant\u0131s\u0131 yap\u0131l\u0131r, geli\u015ftirme s\u0131ras\u0131nda g\u00fcnl\u00fck &#8220;daily scrum&#8221; toplant\u0131lar\u0131 ile ilerleme takip edilir ve sprint sonunda sprint inceleme (review) ve retrospektif toplant\u0131lar\u0131 ile s\u00fcre\u00e7 de\u011ferlendirilir. Roller (Product Owner, Scrum Master, Geli\u015ftirme Tak\u0131m\u0131) ve etkinlikler net bir \u015fekilde tan\u0131mlanm\u0131\u015ft\u0131r. Bu sayede, karma\u015f\u0131k projelerde dahi ilerleme \u015feffaf ve y\u00f6netilebilir olur.<\/li>\n<li><strong>Kanban:<\/strong> \u0130\u015f ak\u0131\u015f\u0131n\u0131 g\u00f6rselle\u015ftirmeye odaklan\u0131r. Bir Kanban panosu \u00fczerinde g\u00f6revler (kartlar) s\u00fctunlar halinde (Yap\u0131lacaklar, Yap\u0131l\u0131yor, Tamamland\u0131 gibi) d\u00fczenlenir. Kanban&#8217;\u0131n temel prensibi, &#8220;WIP limitleri&#8221; (Work In Progress limitleri) ile ayn\u0131 anda \u00fczerinde \u00e7al\u0131\u015f\u0131lan i\u015f miktar\u0131n\u0131 s\u0131n\u0131rlamak ve i\u015f ak\u0131\u015f\u0131n\u0131 s\u00fcrekli iyile\u015ftirmektir. Kanban, daha \u00e7ok s\u00fcrekli teslimat\u0131n ve esnekli\u011fin \u00f6n planda oldu\u011fu projeler i\u00e7in idealdir.<\/li>\n<\/ol>\n<p>Proje 2&#8217;de, genellikle Scrum&#8217;\u0131n belirli elementleri kullan\u0131larak veya hibrit bir yakla\u015f\u0131mla ilerlenir. Bu metodolojileri benimsemek, tak\u0131m i\u00e7inde ileti\u015fimi g\u00fc\u00e7lendirir, problemleri erken a\u015famada tespit etmeyi sa\u011flar ve m\u00fc\u015fteri geri bildirimlerini h\u0131zl\u0131ca entegre etme olana\u011f\u0131 sunar. Sonu\u00e7 olarak, projenin temel kavramlar\u0131n\u0131 ve teknoloji y\u0131\u011f\u0131n\u0131n\u0131 anlamak, sadece kod yazmakla kalmay\u0131p, ayn\u0131 zamanda modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin b\u00fct\u00fcnsel bir par\u00e7as\u0131 olman\u0131z\u0131 sa\u011flar.<\/p>\n<hr>\n<h2>Ad\u0131m Ad\u0131m Geli\u015ftirme S\u00fcreci: Proje Nas\u0131l Hayata Ge\u00e7irilir?<\/h2>\n<p>Bir yaz\u0131l\u0131m projesini hayata ge\u00e7irmek, sadece kod yazmaktan \u00e7ok daha fazlas\u0131n\u0131 gerektirir. Planlama, tasar\u0131m, geli\u015ftirme ve entegrasyon gibi a\u015famalar\u0131n her biri b\u00fcy\u00fck bir \u00f6zenle ele al\u0131nmal\u0131d\u0131r. SE 371 Proje 2 kapsam\u0131nda, bu s\u00fcre\u00e7leri ad\u0131m ad\u0131m uygulayarak ger\u00e7ek bir \u00fcr\u00fcn geli\u015ftirme deneyimi ya\u015fars\u0131n\u0131z. Bu b\u00f6l\u00fcmde, projenizin ba\u015flang\u0131c\u0131ndan itibaren nas\u0131l ilerlemeniz gerekti\u011fine dair detayl\u0131 bir rehber sunaca\u011f\u0131z.<\/p>\n<h3>Proje Planlama ve Gereksinim Analizi Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>Her ba\u015far\u0131l\u0131 projenin temelinde sa\u011flam bir planlama yatar. \u0130lk ad\u0131m, projenizin neyi \u00e7\u00f6zmeyi hedefledi\u011fini net bir \u015fekilde anlamakt\u0131r. Bu a\u015famada, kullan\u0131c\u0131 hikayeleri (user stories) ve gereksinim analiz dok\u00fcmanlar\u0131 b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. \u00d6rne\u011fin, bir &#8220;online kitap ma\u011fazas\u0131&#8221; projesi i\u00e7in \u015f\u00f6yle bir kullan\u0131c\u0131 hikayesi belirleyebilirsiniz:<\/p>\n<pre><code class=\"language-markdown\">\nAs a \"M\u00fc\u015fteri\", I want to \"kitaplar\u0131 kategoriye g\u00f6re filtreleyebilmek\" so that \"arad\u0131\u011f\u0131m kitaplar\u0131 daha kolay bulabilirim\".\n<\/pre>\n<p><\/code><\/p>\n<p>Bu t\u00fcr hikayeler, her bir \u00f6zelli\u011fin kullan\u0131c\u0131ya ne de\u011fer katt\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur. Gereksinimleri toplarken, potansiyel son kullan\u0131c\u0131larla veya payda\u015flarla m\u00fclakatlar yapmak, anketler d\u00fczenlemek veya mevcut sistemleri analiz etmek gibi y\u00f6ntemler kullanabilirsiniz. Toplanan gereksinimler daha sonra fonksiyonel (uygulaman\u0131n ne yapaca\u011f\u0131) ve non-fonksiyonel (performans, g\u00fcvenlik gibi) olarak s\u0131n\u0131fland\u0131r\u0131lmal\u0131d\u0131r. Proje planlamas\u0131n\u0131n bir par\u00e7as\u0131 olarak, bir \"Product Backlog\" olu\u015fturulur. Bu, projenin t\u00fcm \u00f6zelliklerinin ve g\u00f6revlerinin \u00f6nceliklendirilmi\u015f bir listesidir. Zaman \u00e7izelgesi, kaynak da\u011f\u0131l\u0131m\u0131 ve risk y\u00f6netimi de bu a\u015famada g\u00f6zden ge\u00e7irilmelidir. Unutmay\u0131n ki iyi bir plan, projenin ilerleyen a\u015famalar\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz potansiyel engelleri en aza indirir.<\/p>\n<h3>Geli\u015ftirme Ortam\u0131 Kurulumu ve Ba\u015flang\u0131\u00e7 Ad\u0131mlar\u0131<\/h3>\n<p>Gereksinimler netle\u015ftikten sonra, geli\u015ftirme ortam\u0131n\u0131z\u0131 kurman\u0131z gerekir. Bu, projenin teknolojilerine ba\u011fl\u0131 olarak de\u011fi\u015febilir, ancak temel ad\u0131mlar genellikle benzerdir:<\/p>\n<ol>\n<li><strong>IDE Se\u00e7imi:<\/strong> IntelliJ IDEA (Java\/Spring Boot i\u00e7in), VS Code (Node.js\/React i\u00e7in) veya PyCharm (Python i\u00e7in) gibi bir Entegre Geli\u015ftirme Ortam\u0131 (IDE) se\u00e7in.<\/li>\n<li><strong>Versiyon Kontrol Sistemi:<\/strong> Git ve GitHub\/GitLab gibi bir versiyon kontrol sistemi kurun ve tak\u0131m\u0131n\u0131zla ortak bir depo olu\u015fturun. Bu, kodunuzu g\u00fcvenli bir \u015fekilde y\u00f6netmenizi ve tak\u0131m \u00fcyeleriyle i\u015fbirli\u011fi yapman\u0131z\u0131 sa\u011flar.<\/li>\n<li><strong>Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi:<\/strong> Projenizin gerektirdi\u011fi k\u00fct\u00fcphaneleri ve \u00e7er\u00e7eveleri y\u00fckleyin. \u00d6rne\u011fin, Node.js projeleri i\u00e7in npm veya yarn, Java projeleri i\u00e7in Maven veya Gradle kullan\u0131l\u0131r.<\/li>\n<li><strong>Veritaban\u0131 Kurulumu:<\/strong> MySQL, PostgreSQL veya H2 gibi se\u00e7ti\u011finiz veritaban\u0131n\u0131 kurun ve yap\u0131land\u0131r\u0131n. Gerekirse veritaban\u0131 y\u00f6netim ara\u00e7lar\u0131 (\u00f6rne\u011fin DBeaver) kullanabilirsiniz.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">\n# \u00d6rnek bir Node.js projesi i\u00e7in ba\u015flang\u0131\u00e7 ad\u0131mlar\u0131\n# Yeni bir React projesi olu\u015fturma\nnpx create-react-app my-se371-project-frontend\ncd my-se371-project-frontend\nnpm start\n\n# Backend i\u00e7in Node.js Express projesi olu\u015fturma\nmkdir my-se371-project-backend\ncd my-se371-project-backend\nnpm init -y\nnpm install express mongoose body-parser cors\n<\/pre>\n<p><\/code><\/p>\n<p>Bu ad\u0131mlar tamamland\u0131\u011f\u0131nda, projenizin iskeletini olu\u015fturmaya ve ilk kod sat\u0131rlar\u0131n\u0131 yazmaya haz\u0131rs\u0131n\u0131z demektir.<\/p>\n<h3>Kod \u00d6rnekleriyle Frontend ve Backend Entegrasyonu<\/h3>\n<p>Projenin kalbi, frontend ve backend aras\u0131ndaki uyumlu \u00e7al\u0131\u015fmad\u0131r. Bu iki katman\u0131n birbirleriyle sa\u011fl\u0131kl\u0131 bir \u015fekilde ileti\u015fim kurmas\u0131 i\u00e7in API'lar kullan\u0131l\u0131r. Genellikle frontend, HTTP istekleri (GET, POST, PUT, DELETE) g\u00f6ndererek backend servislerinden veri al\u0131r veya veri g\u00f6nderir.<\/p>\n<h4>Frontend Geli\u015ftirme \u0130pu\u00e7lar\u0131: Responsive Tasar\u0131m\u0131n \u00d6nemi<\/h4>\n<p>Kullan\u0131c\u0131 aray\u00fcz\u00fc (UI) geli\u015ftirirken, kullan\u0131c\u0131 deneyimini (UX) \u00f6n planda tutmak \u00e7ok \u00f6nemlidir. Modern web uygulamalar\u0131, farkl\u0131 cihaz boyutlar\u0131na (mobil, tablet, masa\u00fcst\u00fc) uyum sa\u011flayabilmelidir. Bu noktada responsive tasar\u0131m devreye girer. CSS Media Queries kullanarak sayfan\u0131z\u0131n farkl\u0131 ekran boyutlar\u0131na g\u00f6re nas\u0131l g\u00f6r\u00fcnece\u011fini ayarlayabilirsiniz.<\/p>\n<pre><code class=\"language-css\">\n\/* Genel stil *\/\nbody {\n    font-family: Arial, sans-serif;\n    margin: 0;\n    padding: 0;\n}\n\n.container {\n    width: 90%;\n    margin: 0 auto;\n    padding: 20px;\n}\n\n\/* K\u00fc\u00e7\u00fck ekranlar (mobil) i\u00e7in medya sorgusu *\/\n@media screen and (max-width: 768px) {\n    .container {\n        width: 95%; \/* Daha k\u00fc\u00e7\u00fck ekranlarda daha geni\u015f alan kapla *\/\n        padding: 10px;\n    }\n    nav ul li {\n        display: block; \/* Men\u00fc \u00f6\u011felerini alt alta s\u0131rala *\/\n        text-align: center;\n    }\n}\n\n\/* Orta ekranlar (tablet) i\u00e7in medya sorgusu *\/\n@media screen and (min-width: 769px) and (max-width: 1024px) {\n    .container {\n        width: 85%;\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>React gibi framework'ler kullan\u0131yorsan\u0131z, bile\u015fenlerinizi tasarlarken responsive prensipleri g\u00f6z \u00f6n\u00fcnde bulundurmak, kod tekrar\u0131n\u0131 azalt\u0131r ve y\u00f6netilebilirli\u011fi art\u0131r\u0131r. \u00d6rne\u011fin, bir kart bile\u015feni mobil g\u00f6r\u00fcn\u00fcmde tam geni\u015flikte, masa\u00fcst\u00fcnde ise \u00fc\u00e7 s\u00fctunlu bir d\u00fczende g\u00f6r\u00fcnt\u00fclenebilir. Frontend, genellikle backend'den ald\u0131\u011f\u0131 JSON verilerini kullanarak dinamik i\u00e7erik olu\u015fturur.<\/p>\n<h4>Backend Servisleri Olu\u015fturma: API Tasar\u0131m\u0131<\/h4>\n<p>Backend, uygulaman\u0131n i\u015f mant\u0131\u011f\u0131n\u0131 ve veritaban\u0131 etkile\u015fimlerini y\u00f6netir. Bir RESTful API tasarlamak, backend'in frontend ile veya di\u011fer servislerle nas\u0131l ileti\u015fim kuraca\u011f\u0131n\u0131 belirler. \u0130yi tasarlanm\u0131\u015f bir API, anla\u015f\u0131l\u0131r, tutarl\u0131 ve s\u00fcrd\u00fcr\u00fclebilir olmal\u0131d\u0131r. \u00d6rne\u011fin, bir \"\u00fcr\u00fcnler\" servisi i\u00e7in tipik API u\u00e7 noktalar\u0131 \u015f\u00f6yle olabilir:<\/p>\n<ul>\n<li><code>GET \/api\/products<\/code>: T\u00fcm \u00fcr\u00fcnleri listele.<\/li>\n<li><code>GET \/api\/products\/{id}<\/code>: Belirli bir \u00fcr\u00fcn\u00fc getir.<\/li>\n<li><code>POST \/api\/products<\/code>: Yeni bir \u00fcr\u00fcn olu\u015ftur.<\/li>\n<li><code>PUT \/api\/products\/{id}<\/code>: Belirli bir \u00fcr\u00fcn\u00fc g\u00fcncelle.<\/li>\n<li><code>DELETE \/api\/products\/{id}<\/code>: Belirli bir \u00fcr\u00fcn\u00fc sil.<\/li>\n<\/ul>\n<pre><code class=\"language-javascript\">\n\/\/ \u00d6rnek bir Node.js Express backend API'si\nconst express = require('express');\nconst bodyParser = require('body-parser');\nconst cors = require('cors'); \/\/ CORS middleware'i ekleyin\n\nconst app = express();\nconst PORT = 5000;\n\napp.use(cors()); \/\/ T\u00fcm gelen isteklere CORS ba\u015fl\u0131klar\u0131n\u0131 ekle\napp.use(bodyParser.json()); \/\/ Gelen JSON istek g\u00f6vdelerini ayr\u0131\u015ft\u0131r\n\nlet products = [\n    { id: 1, name: 'Kitap A', price: 25 },\n    { id: 2, name: 'Kitap B', price: 30 }\n];\n\napp.get('\/api\/products', (req, res) => {\n    res.json(products);\n});\n\napp.post('\/api\/products', (req, res) => {\n    const newProduct = {\n        id: products.length + 1,\n        name: req.body.name,\n        price: req.body.price\n    };\n    products.push(newProduct);\n    res.status(201).json(newProduct);\n});\n\napp.listen(PORT, () => {\n    console.log(<code>Backend server ${PORT} portunda \u00e7al\u0131\u015f\u0131yor.<\/code>);\n});\n<\/pre>\n<p><\/code><\/p>\n<div class=\"uzman-ipucu\" style=\"background-color: #e0f7fa; border-left: 5px solid #00bcd4; padding: 10px; margin: 15px 0;\">\n  <strong>Uzman \u0130pucu:<\/strong> API g\u00fcvenli\u011fini asla g\u00f6z ard\u0131 etmeyin. Kimlik do\u011frulama (authentication) ve yetkilendirme (authorization) mekanizmalar\u0131n\u0131 do\u011fru bir \u015fekilde uygulayarak hassas verilere eri\u015fimi k\u0131s\u0131tlay\u0131n. JWT (JSON Web Tokens) veya OAuth 2.0 gibi standartlar\u0131 kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.\n<\/div>\n<p>Frontend ve backend aras\u0131ndaki bu entegrasyon, uygulaman\u0131z\u0131n dinamik ve i\u015flevsel olmas\u0131n\u0131 sa\u011flar. Do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir API, uygulaman\u0131z\u0131n gelecekteki geni\u015flemelerine de olanak tan\u0131r. Bu nedenle, her iki taraf\u0131n da iyi tasarlanm\u0131\u015f olmas\u0131, SE 371 Proje 2'nin ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<hr>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve Vaka Analizi: Ba\u015far\u0131l\u0131 Projelerden Ne \u00d6\u011frenebiliriz?<\/h2>\n<p>Teorik bilginin ve pratik kodlama becerilerinin \u00f6tesinde, SE 371 Proje 2, \u00f6\u011frencilere ger\u00e7ek d\u00fcnya senaryolar\u0131yla y\u00fczle\u015fme ve karma\u015f\u0131k problemleri \u00e7\u00f6zme f\u0131rsat\u0131 sunar. Bu b\u00f6l\u00fcm, ba\u015far\u0131l\u0131 vaka analizleri \u00fczerinden, projelerden ne gibi dersler \u00e7\u0131karabilece\u011fimizi ve ger\u00e7ek i\u015f d\u00fcnyas\u0131nda kar\u015f\u0131la\u015fabilece\u011fimiz zorluklara nas\u0131l yakla\u015fabilece\u011fimizi ele alacakt\u0131r. Bir projenin sadece koddan ibaret olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda stratejik d\u00fc\u015f\u00fcnmeyi, problem \u00e7\u00f6zmeyi ve adaptasyonu gerektirdi\u011fini unutmamal\u0131y\u0131z.<\/p>\n<h3>E-ticaret Platformu Geli\u015ftirme Vaka Analizi<\/h3>\n<p>SE 371 Proje 2 genellikle k\u00fc\u00e7\u00fck veya orta \u00f6l\u00e7ekli bir e-ticaret platformu benzeri bir uygulama geli\u015ftirmeyi i\u00e7erir. Bu t\u00fcr bir projenin vaka analizi, bir\u00e7ok \u00f6nemli dersi bar\u0131nd\u0131r\u0131r:<\/p>\n<ol>\n<li><strong>Gereksinim \u00c7e\u015fitlili\u011fi ve Y\u00f6netimi:<\/strong> Bir e-ticaret platformu, kullan\u0131c\u0131 kay\u0131t\/giri\u015f, \u00fcr\u00fcn listeleme, sepete ekleme, \u00f6deme, sipari\u015f takibi, y\u00f6netici paneli gibi bir\u00e7ok farkl\u0131 mod\u00fcl\u00fc bar\u0131nd\u0131r\u0131r. Her bir mod\u00fcl\u00fcn kendi i\u00e7inde detayl\u0131 gereksinimleri vard\u0131r. Ba\u015far\u0131l\u0131 bir proje, bu gereksinimleri titizlikle analiz edip \u00f6nceliklendirebilen ve zamanla de\u011fi\u015febilecek taleplere esnek bir \u015fekilde uyum sa\u011flayabilen tak\u0131mlar\u0131n i\u015fidir. \u00d6zellikle \u00f6deme sistemleri entegrasyonu gibi kritik ad\u0131mlarda, \u00fc\u00e7\u00fcnc\u00fc taraf API'larla \u00e7al\u0131\u015fmak ve hata durumlar\u0131n\u0131 y\u00f6netmek karma\u015f\u0131kla\u015fabilir.<\/li>\n<li><strong>Veritaban\u0131 Tasar\u0131m\u0131n\u0131n \u00d6nemi:<\/strong> \u00dcr\u00fcnler, kullan\u0131c\u0131lar, sipari\u015fler, kategoriler, yorumlar gibi bir\u00e7ok farkl\u0131 veri tipi aras\u0131nda ili\u015fkiler bulunur. Do\u011fru bir veritaban\u0131 \u015femas\u0131 tasar\u0131m\u0131, uygulaman\u0131n performans\u0131 ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fc a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Normalizasyon kurallar\u0131na uymak, indeksleme stratejilerini do\u011fru belirlemek ve sorgu optimizasyonu yapmak, uygulaman\u0131n h\u0131z\u0131n\u0131 do\u011frudan etkiler. \u00d6rne\u011fin, bir \u00fcr\u00fcn\u00fcn farkl\u0131 varyantlar\u0131 (beden, renk) varsa, bunlar\u0131n nas\u0131l depolanaca\u011f\u0131 ve y\u00f6netilece\u011fi ba\u015ftan d\u00fc\u015f\u00fcn\u00fclmelidir.<\/li>\n<li><strong>Performans ve \u00d6l\u00e7eklenebilirlik Kayg\u0131lar\u0131:<\/strong> Ger\u00e7ek bir e-ticaret platformu, ayn\u0131 anda binlerce kullan\u0131c\u0131ya hizmet verebilir. Proje 2 \u00f6l\u00e7e\u011finde bile, gelecekteki b\u00fcy\u00fcme potansiyelini g\u00f6z \u00f6n\u00fcnde bulundurarak performans ve \u00f6l\u00e7eklenebilirlik prensipleri d\u00fc\u015f\u00fcn\u00fclmelidir. Bu, verimli algoritmalar kullanmaktan, \u00f6nbellekleme (caching) mekanizmalar\u0131 uygulamaya ve veritaban\u0131 sorgular\u0131n\u0131 optimize etmeye kadar geni\u015f bir yelpazeyi kapsar. \u00d6rne\u011fin, \u00fcr\u00fcn listeleme sayfas\u0131nda b\u00fcy\u00fck veri setleri varsa, sayfalama (pagination) veya lazy loading gibi teknikler kullan\u0131lmal\u0131d\u0131r.<\/li>\n<li><strong>G\u00fcvenlik ve Yetkilendirme:<\/strong> Kullan\u0131c\u0131 bilgileri, \u00f6deme bilgileri gibi hassas verilerin korunmas\u0131 esast\u0131r. SSL\/TLS kullan\u0131m\u0131, g\u00fcvenli \u015fifre saklama y\u00f6ntemleri (hashing), XSS (Cross-Site Scripting) ve CSRF (Cross-Site Request Forgery) gibi sald\u0131r\u0131lara kar\u015f\u0131 koruma \u00f6nlemleri, projenin temel g\u00fcvenlik yap\u0131 ta\u015flar\u0131 olmal\u0131d\u0131r. Y\u00f6netici ve kullan\u0131c\u0131 rolleri aras\u0131ndaki yetkilendirme (authorization) farklar\u0131 da dikkatlice uygulanmal\u0131d\u0131r.<\/li>\n<\/ol>\n<p>Bu vaka analizi, SE 371 Proje 2'nin sadece teknik becerileri de\u011fil, ayn\u0131 zamanda sistem tasar\u0131m\u0131, g\u00fcvenlik ve stratejik d\u00fc\u015f\u00fcnme yeteneklerini de geli\u015ftirdi\u011fini g\u00f6stermektedir. Her ad\u0131mda kar\u015f\u0131la\u015f\u0131lan zorluklar, \u00f6\u011frenme ve \u00e7\u00f6z\u00fcm \u00fcretme f\u0131rsat\u0131na d\u00f6n\u00fc\u015f\u00fcr.<\/p>\n<h3>Performans Optimizasyonu ve \u00d6l\u00e7eklenebilirlik Stratejileri<\/h3>\n<p>Herhangi bir yaz\u0131l\u0131m projesinde, \u00f6zellikle ger\u00e7ek d\u00fcnya senaryolar\u0131nda, performans ve \u00f6l\u00e7eklenebilirlik kritik \u00f6neme sahiptir. Kullan\u0131c\u0131lar h\u0131zl\u0131 ve ak\u0131c\u0131 deneyimler beklerken, uygulamalar\u0131n ani y\u00fck art\u0131\u015flar\u0131na dayanabilmesi gerekir. SE 371 Proje 2 kapsam\u0131nda bu kavramlara nas\u0131l yakla\u015fabiliriz?<\/p>\n<ol>\n<li><strong>Kod Optimizasyonu:<\/strong> En temel d\u00fczeyde, temiz, verimli ve optimize edilmi\u015f kod yazmak performans\u0131 do\u011frudan etkiler. Gereksiz d\u00f6ng\u00fclerden ka\u00e7\u0131nmak, algoritma karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 azaltmak ve kaynaklar\u0131 do\u011fru y\u00f6netmek \u00f6nemlidir. \u00d6zellikle veritaban\u0131 sorgular\u0131, uygulaman\u0131n en yava\u015f k\u0131s\u0131mlar\u0131ndan biri olabilir; bu y\u00fczden indeksleme ve sorgu optimizasyonuna dikkat edilmelidir.<\/li>\n<li><strong>\u00d6nbellekleme (Caching):<\/strong> S\u0131k eri\u015filen ancak nadiren de\u011fi\u015fen veriler i\u00e7in \u00f6nbellekleme kullanmak, veritaban\u0131 veya harici servis \u00e7a\u011fr\u0131s\u0131 y\u00fck\u00fcn\u00fc azalt\u0131r. Redis veya Memcached gibi in-memory veritabanlar\u0131, \u00f6nbellek olarak kullan\u0131labilir. \u00d6rne\u011fin, bir e-ticaret sitesinde pop\u00fcler \u00fcr\u00fcn kategorileri veya ana sayfa verileri \u00f6nbelle\u011fe al\u0131narak yan\u0131t s\u00fcreleri \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131labilir.<\/li>\n<li><strong>Veritaban\u0131 Optimizasyonu:<\/strong>\n<ul>\n<li><strong>\u0130ndeksleme:<\/strong> S\u0131k\u00e7a sorgulanan s\u00fctunlara indeks eklemek, arama s\u00fcrelerini k\u0131salt\u0131r.<\/li>\n<li><strong>Sorgu Optimizasyonu:<\/strong> Yava\u015f \u00e7al\u0131\u015fan sorgular\u0131 tespit edip (<code>EXPLAIN<\/code> komutu ile) yeniden yazmak veya uygun JOIN stratejileri kullanmak performans\u0131 art\u0131r\u0131r.<\/li>\n<li><strong>Ba\u011flant\u0131 Havuzlama:<\/strong> Veritaban\u0131 ba\u011flant\u0131lar\u0131n\u0131n s\u00fcrekli a\u00e7\u0131l\u0131p kapanmas\u0131 yerine, bir ba\u011flant\u0131 havuzu kullanarak ba\u011flant\u0131 maliyetini d\u00fc\u015f\u00fcrmek.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Asenkron \u0130\u015flemler ve Mesaj Kuyruklar\u0131:<\/strong> Uzun s\u00fcren veya gecikmeli \u00e7al\u0131\u015fabilen i\u015flemler (\u00f6rne\u011fin, e-posta g\u00f6nderme, rapor olu\u015fturma) i\u00e7in asenkron yap\u0131lar\u0131 veya mesaj kuyruklar\u0131n\u0131 (RabbitMQ, Kafka) kullanmak, ana uygulaman\u0131n tepkiselli\u011fini art\u0131r\u0131r. Bu, kullan\u0131c\u0131n\u0131n bir i\u015flemi ba\u015flat\u0131p hemen yan\u0131t almas\u0131n\u0131 sa\u011flarken, arka planda i\u015flemin tamamlanmas\u0131n\u0131 bekler.<\/li>\n<li><strong>Y\u00fck Dengeleyiciler ve Dikey\/Yatay \u00d6l\u00e7eklendirme:<\/strong> Uygulama trafi\u011fi artt\u0131\u011f\u0131nda, tek bir sunucunun yetersiz kalmas\u0131 muhtemeldir. Y\u00fck dengeleyiciler (Load Balancers), gelen istekleri birden fazla sunucuya da\u011f\u0131tarak y\u00fck\u00fc hafifletir. Dikey \u00f6l\u00e7eklendirme (sunucu kaynaklar\u0131n\u0131 art\u0131rma) ve yatay \u00f6l\u00e7eklendirme (daha fazla sunucu ekleme) se\u00e7enekleri de b\u00fcy\u00fcme stratejilerinin bir par\u00e7as\u0131d\u0131r.<\/li>\n<\/ol>\n<div class=\"uzman-ipucu\" style=\"background-color: #e0f7fa; border-left: 5px solid #00bcd4; padding: 10px; margin: 15px 0;\">\n  <strong>Uzman \u0130pucu:<\/strong> Performans \u00f6l\u00e7\u00fcm\u00fc ve izleme ara\u00e7lar\u0131n\u0131 (APM - Application Performance Monitoring) kullanmak, darbo\u011fazlar\u0131 tespit etmek ve optimizasyon \u00e7abalar\u0131n\u0131z\u0131n etkisini g\u00f6rmek i\u00e7in kritik \u00f6neme sahiptir. Projeniz k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli bile olsa, bu ara\u00e7lar\u0131 erken a\u015famada tan\u0131mak uzun vadede b\u00fcy\u00fck fayda sa\u011flar.\n<\/div>\n<p>Bu stratejiler, SE 371 Proje 2 gibi bir uygulamay\u0131 sadece \u00e7al\u0131\u015f\u0131r hale getirmekle kalmaz, ayn\u0131 zamanda onu ger\u00e7ek d\u00fcnya senaryolar\u0131nda ba\u015far\u0131l\u0131 olabilecek sa\u011flam ve \u00f6l\u00e7eklenebilir bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Her ne kadar projenin boyutu s\u0131n\u0131rl\u0131 olsa da, bu prensipleri anlamak ve uygulamaya \u00e7al\u0131\u015fmak, gelecekteki kariyeriniz i\u00e7in g\u00fc\u00e7l\u00fc bir temel olu\u015fturacakt\u0131r.<\/p>\n<hr>\n<h2>Test ve Da\u011f\u0131t\u0131m S\u00fcre\u00e7leri: G\u00fcvenilir Yaz\u0131l\u0131m Nas\u0131l Sunulur?<\/h2>\n<p>Yaz\u0131l\u0131m geli\u015ftirmede \"bitti\" demek, asl\u0131nda sadece bir ba\u015flang\u0131\u00e7t\u0131r. Geli\u015ftirilen yaz\u0131l\u0131m\u0131n g\u00fcvenilir, hatas\u0131z ve s\u00fcrekli eri\u015filebilir olmas\u0131 i\u00e7in test ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri hayati \u00f6neme sahiptir. SE 371 Proje 2 kapsam\u0131nda, bu a\u015famalar da en az kodlama kadar dikkatli bir \u015fekilde ele al\u0131nmal\u0131d\u0131r. G\u00fcvenilir bir \u00fcr\u00fcn sunabilmek i\u00e7in otomatik testlerden CI\/CD boru hatt\u0131na kadar bir\u00e7ok arac\u0131 ve prensibi anlamak gerekir.<\/p>\n<h3>Otomatik Testlerin \u00d6nemi ve Entegrasyonu<\/h3>\n<p>Manuel testler belirli bir noktaya kadar faydal\u0131 olsa da, yaz\u0131l\u0131m s\u00fcrekli geli\u015ftik\u00e7e her yeni de\u011fi\u015fiklikte t\u00fcm sistemi ba\u015ftan sona manuel olarak test etmek pratik olmaktan \u00e7\u0131kar. \u0130\u015fte bu noktada otomatik testler devreye girer. Otomatik testler, hatalar\u0131 erken a\u015famada tespit etmenizi, kod kalitesini art\u0131rman\u0131z\u0131 ve geli\u015ftirme s\u00fcrecini h\u0131zland\u0131rman\u0131z\u0131 sa\u011flar. Genellikle \u00fc\u00e7 ana test seviyesi bulunur:<\/p>\n<ol>\n<li><strong>Birim Testleri (Unit Tests):<\/strong> Yaz\u0131l\u0131m\u0131n en k\u00fc\u00e7\u00fck par\u00e7alar\u0131n\u0131 (fonksiyonlar, metotlar, s\u0131n\u0131flar) ba\u011f\u0131ms\u0131z olarak test eder. Genellikle geli\u015ftiriciler taraf\u0131ndan yaz\u0131l\u0131r ve kod taban\u0131n\u0131n do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in her de\u011fi\u015fiklikte \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.\n<pre><code class=\"language-javascript\">\n\/\/ JavaScript'te Jest ile \u00f6rnek bir birim testi\n\/\/ \u00d6rne\u011fin, bir toplama fonksiyonu i\u00e7in\nfunction add(a, b) {\n    return a + b;\n}\n\ndescribe('add fonksiyonu', () => {\n    test('iki pozitif say\u0131y\u0131 do\u011fru toplamal\u0131d\u0131r', () => {\n        expect(add(1, 2)).toBe(3);\n    });\n\n    test('s\u0131f\u0131r ile bir say\u0131y\u0131 do\u011fru toplamal\u0131d\u0131r', () => {\n        expect(add(5, 0)).toBe(5);\n    });\n\n    test('negatif ve pozitif say\u0131y\u0131 do\u011fru toplamal\u0131d\u0131r', () => {\n        expect(add(-1, 2)).toBe(1);\n    });\n});\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Entegrasyon Testleri (Integration Tests):<\/strong> Farkl\u0131 yaz\u0131l\u0131m mod\u00fcllerinin veya servislerinin (\u00f6rne\u011fin, backend servisi ile veritaban\u0131) birbiriyle do\u011fru etkile\u015fime girdi\u011fini test eder. Bu testler, birim testlerinden daha geni\u015f bir kapsam\u0131 kapsar ve sistemin farkl\u0131 par\u00e7alar\u0131n\u0131n birlikte sorunsuz \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olunmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>U\u00e7tan Uca Testler (End-to-End - E2E Tests):<\/strong> Uygulaman\u0131n bir kullan\u0131c\u0131n\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131ndan ba\u015ftan sona do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 test eder. Taray\u0131c\u0131da bir senaryoyu (\u00f6rne\u011fin, bir kullan\u0131c\u0131n\u0131n kaydolup \u00fcr\u00fcn sat\u0131n almas\u0131) otomatik olarak sim\u00fcle eder. Cypress veya Selenium gibi ara\u00e7lar bu t\u00fcr testler i\u00e7in kullan\u0131l\u0131r.<\/li>\n<\/ol>\n<p>SE 371 Proje 2'de, \u00f6zellikle birim ve entegrasyon testlerine odaklanmak, kod kalitesini ve g\u00fcvenilirli\u011fini art\u0131rman\u0131n en etkili yollar\u0131ndan biridir. Bu testleri d\u00fczenli olarak \u00e7al\u0131\u015ft\u0131rmak, hatalar\u0131n \u00fcretim ortam\u0131na ula\u015fmadan \u00f6nce tespit edilmesini sa\u011flar.<\/p>\n<h3>CI\/CD Boru Hatt\u0131 Kurulumu: G\u00fcvenli ve H\u0131zl\u0131 Da\u011f\u0131t\u0131m<\/h3>\n<p>S\u00fcrekli Entegrasyon (Continuous Integration - CI) ve S\u00fcrekli Da\u011f\u0131t\u0131m (Continuous Deployment - CD) veya S\u00fcrekli Teslimat (Continuous Delivery - CD), modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin olmazsa olmaz\u0131d\u0131r. Bu kavramlar, yaz\u0131l\u0131m\u0131n daha h\u0131zl\u0131, daha g\u00fcvenli ve daha s\u0131k bir \u015fekilde kullan\u0131c\u0131lara ula\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<ol>\n<li><strong>S\u00fcrekli Entegrasyon (CI):<\/strong> Geli\u015ftiricilerin kod de\u011fi\u015fikliklerini s\u0131k s\u0131k (g\u00fcnde birka\u00e7 kez) merkezi bir depoya entegre etmesi uygulamas\u0131d\u0131r. Her entegrasyon, otomatik testler ve build s\u00fcre\u00e7leri taraf\u0131ndan do\u011frulan\u0131r. E\u011fer testler ba\u015far\u0131s\u0131z olursa, geli\u015ftiricilere an\u0131nda geri bildirim sa\u011flan\u0131r. Bu, entegrasyon problemlerinin erken tespit edilmesini ve \u00e7\u00f6z\u00fclmesini sa\u011flar. Jenkins, GitHub Actions, GitLab CI\/CD gibi ara\u00e7lar CI i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>S\u00fcrekli Da\u011f\u0131t\u0131m\/Teslimat (CD):<\/strong>\n<ul>\n<li><strong>S\u00fcrekli Teslimat (Continuous Delivery):<\/strong> CI'n\u0131n bir uzant\u0131s\u0131d\u0131r. Kod taban\u0131 ba\u015far\u0131l\u0131 bir \u015fekilde test edildikten ve derlendikten sonra, yeni s\u00fcr\u00fcm otomatik olarak manuel onay ile da\u011f\u0131t\u0131ma haz\u0131r hale getirilir. Da\u011f\u0131t\u0131m karar\u0131 manueldir, ancak s\u00fcre\u00e7 otomatiktir.<\/li>\n<li><strong>S\u00fcrekli Da\u011f\u0131t\u0131m (Continuous Deployment):<\/strong> S\u00fcrekli teslimat\u0131n bir ad\u0131m \u00f6tesidir. T\u00fcm testlerden ba\u015far\u0131yla ge\u00e7en her de\u011fi\u015fiklik, otomatik olarak \u00fcretim ortam\u0131na da\u011f\u0131t\u0131l\u0131r. Bu, insan m\u00fcdahalesine gerek kalmadan en h\u0131zl\u0131 \u015fekilde yaz\u0131l\u0131m\u0131n canl\u0131ya \u00e7\u0131kmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>SE 371 Proje 2'de, basit bir CI\/CD boru hatt\u0131 kurmak, projenin profesyonelli\u011fini ve tak\u0131m\u0131n verimlili\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r. \u0130\u015fte GitHub Actions ile basit bir CI ad\u0131m\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-yaml\">\n# .github\/workflows\/ci.yml dosyas\u0131\nname: CI for SE371 Project 2\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\n\njobs:\n  build-and-test:\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions\/checkout@v2\n    - name: Use Node.js\n      uses: actions\/setup-node@v2\n      with:\n        node-version: '16'\n    - name: Install dependencies\n      run: npm install # Frontend ve\/veya Backend ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kur\n    - name: Run tests\n      run: npm test # Projenizdeki birim testlerini \u00e7al\u0131\u015ft\u0131r\n    - name: Build project\n      run: npm run build # Projenizi derle (\u00f6rne\u011fin React projesi)\n<\/pre>\n<p><\/code><\/p>\n<div class=\"uzman-ipucu\" style=\"background-color: #e0f7fa; border-left: 5px solid #00bcd4; padding: 10px; margin: 15px 0;\">\n  <strong>Uzman \u0130pucu:<\/strong> CI\/CD boru hatt\u0131n\u0131z\u0131 kurarken g\u00fcvenlik taramalar\u0131 (statik kod analizi, ba\u011f\u0131ml\u0131l\u0131k taramas\u0131) eklemek, potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erken a\u015famada tespit etmenize yard\u0131mc\u0131 olur. Ayr\u0131ca, da\u011f\u0131t\u0131m s\u0131ras\u0131nda ortam de\u011fi\u015fkenlerini ve hassas bilgileri g\u00fcvenli bir \u015fekilde y\u00f6netmek i\u00e7in s\u0131r y\u00f6netim ara\u00e7lar\u0131n\u0131 kullanmal\u0131s\u0131n\u0131z.\n<\/div>\n<p>Test ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini do\u011fru bir \u015fekilde uygulamak, SE 371 Proje 2'nin sadece i\u015flevsel de\u011fil, ayn\u0131 zamanda g\u00fcvenilir ve s\u00fcrd\u00fcr\u00fclebilir bir yaz\u0131l\u0131m \u00fcr\u00fcn\u00fc olmas\u0131n\u0131 sa\u011flar. Bu beceriler, herhangi bir modern yaz\u0131l\u0131m geli\u015ftirme ortam\u0131nda size b\u00fcy\u00fck bir avantaj sa\u011flayacakt\u0131r.<\/p>\n<hr>\n<h2>SE 371 Proje 2'den \u0130leriye: Gelece\u011fin Yaz\u0131l\u0131mc\u0131lar\u0131 \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/h2>\n<p>SE 371 Proje 2, sadece bir ders projesi olmakla kalmay\u0131p, ayn\u0131 zamanda yaz\u0131l\u0131m geli\u015ftirme kariyerinizin temellerini atabilece\u011finiz \u00f6nemli bir kilometre ta\u015f\u0131d\u0131r. Bu projeden edinece\u011finiz deneyimler, gelecekte kar\u015f\u0131la\u015faca\u011f\u0131n\u0131z daha b\u00fcy\u00fck ve karma\u015f\u0131k projeler i\u00e7in size paha bi\u00e7ilmez bir rehber olacakt\u0131r. Bu b\u00f6l\u00fcmde, projenin \u00f6tesine ge\u00e7erek, gelece\u011fin ba\u015far\u0131l\u0131 yaz\u0131l\u0131mc\u0131lar\u0131 i\u00e7in kritik \u00f6neme sahip baz\u0131 ipu\u00e7lar\u0131n\u0131 ve yetkinlikleri ele alaca\u011f\u0131z.<\/p>\n<h3>Proje Y\u00f6netimi ve Tak\u0131m \u00c7al\u0131\u015fmas\u0131 Becerileri<\/h3>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme, nadiren bireysel bir \u00e7abad\u0131r. Genellikle, \u00e7e\u015fitli rollerde uzmanla\u015fm\u0131\u015f ki\u015filerden olu\u015fan tak\u0131mlar halinde \u00e7al\u0131\u015f\u0131l\u0131r. SE 371 Proje 2 de bu tak\u0131m \u00e7al\u0131\u015fmas\u0131 dinamiklerini deneyimlemeniz i\u00e7in harika bir f\u0131rsatt\u0131r. \u0130\u015fte bu alanda geli\u015ftirmeniz gerekenler:<\/p>\n<ol>\n<li><strong>Etkili \u0130leti\u015fim:<\/strong> Tak\u0131m \u00fcyeleri aras\u0131nda a\u00e7\u0131k ve d\u00fczenli ileti\u015fim, yanl\u0131\u015f anlamalar\u0131 \u00f6nler ve herkesin ayn\u0131 hedefe odaklanmas\u0131n\u0131 sa\u011flar. Haftal\u0131k toplant\u0131lar, g\u00fcnl\u00fck stand-up'lar ve anl\u0131k mesajla\u015fma platformlar\u0131 (Slack, Discord) bu ileti\u015fimi kolayla\u015ft\u0131r\u0131r. \u00d6zellikle teknik konular\u0131 teknik olmayan tak\u0131m \u00fcyelerine a\u00e7\u0131klayabilme yetene\u011fi, profesyonel ya\u015famda \u00e7ok de\u011ferli bir beceridir.<\/li>\n<li><strong>G\u00f6rev Da\u011f\u0131l\u0131m\u0131 ve Takip:<\/strong> Proje y\u00f6netim ara\u00e7lar\u0131 (Jira, Trello, Asana) kullanarak g\u00f6revleri net bir \u015fekilde tan\u0131mlamak, sorumluluklar\u0131 da\u011f\u0131tmak ve ilerlemeyi takip etmek, projenin d\u00fczenli bir \u015fekilde ilerlemesini sa\u011flar. Herkesin ne \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve sonraki ad\u0131mlar\u0131n ne oldu\u011funu bilmesi, tak\u0131m motivasyonunu art\u0131r\u0131r.<\/li>\n<li><strong>\u00c7at\u0131\u015fma Y\u00f6netimi:<\/strong> Tak\u0131m ortam\u0131nda farkl\u0131 fikirlerin veya yakla\u015f\u0131mlar\u0131n ortaya \u00e7\u0131kmas\u0131 do\u011fald\u0131r. \u00d6nemli olan, bu \u00e7at\u0131\u015fmalar\u0131 yap\u0131c\u0131 bir \u015fekilde y\u00f6netebilmek ve ortak bir \u00e7\u00f6z\u00fcm \u00fczerinde anla\u015fmaya varabilmektir. Farkl\u0131 bak\u0131\u015f a\u00e7\u0131lar\u0131na sayg\u0131 duymak ve uzla\u015fmac\u0131 olmak, tak\u0131m\u0131n genel ba\u015far\u0131s\u0131 i\u00e7in kritiktir.<\/li>\n<li><strong>Kod \u0130ncelemesi (Code Review):<\/strong> Birbirinizin kodunu g\u00f6zden ge\u00e7irmek, sadece hatalar\u0131 bulmakla kalmaz, ayn\u0131 zamanda farkl\u0131 \u00e7\u00f6z\u00fcm yakla\u015f\u0131mlar\u0131n\u0131 \u00f6\u011frenmenizi ve kod kalitesini art\u0131rman\u0131z\u0131 sa\u011flar. Bu s\u00fcre\u00e7, ayn\u0131 zamanda bilgi payla\u015f\u0131m\u0131n\u0131 te\u015fvik eder ve tak\u0131m\u0131n genel teknik seviyesini y\u00fckseltir.<\/li>\n<\/ol>\n<p>Bu beceriler, sadece SE 371 Proje 2'de de\u011fil, kariyeriniz boyunca her zaman kullanaca\u011f\u0131n\u0131z temel yetkinliklerdir. Unutmay\u0131n, iyi bir yaz\u0131l\u0131mc\u0131 sadece iyi kod yazan de\u011fil, ayn\u0131 zamanda tak\u0131m i\u00e7inde uyumlu \u00e7al\u0131\u015fabilen ki\u015fidir.<\/p>\n<h3>S\u00fcrekli \u00d6\u011frenme ve Adaptasyonun Rol\u00fc<\/h3>\n<p>Yaz\u0131l\u0131m geli\u015ftirme alan\u0131, belki de en h\u0131zl\u0131 de\u011fi\u015fen sekt\u00f6rlerden biridir. Yeni framework'ler, diller, ara\u00e7lar ve yakla\u015f\u0131mlar s\u00fcrekli olarak ortaya \u00e7\u0131kmaktad\u0131r. Bu dinamik ortamda ba\u015far\u0131l\u0131 olabilmek i\u00e7in s\u00fcrekli \u00f6\u011frenme ve adaptasyon yetene\u011fi vazge\u00e7ilmezdir.<\/p>\n<ol>\n<li><strong>Teknoloji Trendlerini Takip Etme:<\/strong> Sekt\u00f6rdeki yenilikleri takip etmek i\u00e7in bloglar\u0131 okuyun, konferanslara (\u00e7evrimi\u00e7i veya fiziksel) kat\u0131l\u0131n, teknik makaleleri inceleyin. Hangi teknolojilerin y\u00fckseli\u015fte oldu\u011funu ve bunlar\u0131n ne gibi problemleri \u00e7\u00f6zd\u00fc\u011f\u00fcn\u00fc anlamaya \u00e7al\u0131\u015f\u0131n.<\/li>\n<li><strong>Pratik Uygulama:<\/strong> Yeni \u00f6\u011frendi\u011finiz bilgileri k\u00fc\u00e7\u00fck yan projelerde veya mevcut projenizin bir k\u0131sm\u0131nda denemekten \u00e7ekinmeyin. Teorik bilgi ancak pratikle peki\u015ftirildi\u011finde ger\u00e7ek bir beceriye d\u00f6n\u00fc\u015f\u00fcr.<\/li>\n<li><strong>A\u00e7\u0131k Kaynak Katk\u0131lar\u0131:<\/strong> A\u00e7\u0131k kaynak projelere katk\u0131da bulunmak, kodlama becerilerinizi geli\u015ftirmenin yan\u0131 s\u0131ra, sekt\u00f6rdeki di\u011fer geli\u015ftiricilerle etkile\u015fim kurman\u0131z\u0131 ve ger\u00e7ek d\u00fcnya kod tabanlar\u0131nda \u00e7al\u0131\u015fma deneyimi edinmenizi sa\u011flar.<\/li>\n<li><strong>Hata Yapmaktan Korkmay\u0131n:<\/strong> \u00d6\u011frenme s\u00fcrecinin do\u011fal bir par\u00e7as\u0131d\u0131r. Her hata, yeni bir \u015fey \u00f6\u011frenme f\u0131rsat\u0131d\u0131r. \u00d6nemli olan, hatalar\u0131n\u0131zdan ders \u00e7\u0131karabilmek ve kendinizi s\u00fcrekli geli\u015ftirmektir.<\/li>\n<li><strong>Mentorluk ve Bilgi Payla\u015f\u0131m\u0131:<\/strong> Alan\u0131nda daha deneyimli ki\u015filerden mentorluk almak veya kendi bildiklerinizi ba\u015fkalar\u0131yla payla\u015fmak, hem sizin hem de \u00e7evrenizdekilerin geli\u015fimine katk\u0131da bulunur. Bilgi payla\u015ft\u0131k\u00e7a artar.<\/li>\n<\/ol>\n<div class=\"uzman-ipucu\" style=\"background-color: #e0f7fa; border-left: 5px solid #00bcd4; padding: 10px; margin: 15px 0;\">\n  <strong>Uzman \u0130pucu:<\/strong> Teknik dok\u00fcmanlar\u0131 okuma ve anlama becerisi, bir yaz\u0131l\u0131mc\u0131 i\u00e7in alt\u0131n de\u011ferindedir. Yeni bir k\u00fct\u00fcphane veya API kullanmaya ba\u015flad\u0131\u011f\u0131n\u0131zda, ilk olarak resmi dok\u00fcmanlar\u0131 incelemeyi al\u0131\u015fkanl\u0131k haline getirin. Bu, hem do\u011fru bilgiyi alman\u0131z\u0131 sa\u011flar hem de problem \u00e7\u00f6zme h\u0131z\u0131n\u0131z\u0131 art\u0131r\u0131r.\n<\/div>\n<p>SE 371 Proje 2, size bu s\u00fcrekli \u00f6\u011frenme d\u00f6ng\u00fcs\u00fcn\u00fcn ilk ad\u0131mlar\u0131n\u0131 atma f\u0131rsat\u0131n\u0131 sunar. Proje s\u0131ras\u0131nda kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z her zorluk, sizi daha iyi bir yaz\u0131l\u0131mc\u0131 yapacak bir \u00f6\u011frenme f\u0131rsat\u0131d\u0131r. Bu ipu\u00e7lar\u0131n\u0131 benimseyerek, yaz\u0131l\u0131m geli\u015ftirme yolculu\u011funuzda \u00e7ok daha ileriye gidebilir ve sekt\u00f6rde aranan bir profesyonel olabilirsiniz.<\/p>\n<hr>\n<h2>Sonu\u00e7: SE 371 Proje 2'nin Kal\u0131c\u0131 Etkisi ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>SE 371 Proje 2, yaz\u0131l\u0131m m\u00fchendisli\u011fi e\u011fitiminizin temel ta\u015flar\u0131ndan biridir. Bu proje, sizi sadece teknik bilgiyle donatmakla kalmaz, ayn\u0131 zamanda ger\u00e7ek d\u00fcnya yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin karma\u015f\u0131kl\u0131\u011f\u0131na, tak\u0131m \u00e7al\u0131\u015fmas\u0131n\u0131n dinamiklerine ve s\u00fcrekli \u00f6\u011frenmenin \u00f6nemine dair paha bi\u00e7ilmez i\u00e7g\u00f6r\u00fcler sunar. Frontend ve backend entegrasyonundan veritaban\u0131 tasar\u0131m\u0131na, \u00e7evik metodolojilerden CI\/CD boru hatlar\u0131na kadar geni\u015f bir yelpazedeki konular\u0131 uygulamal\u0131 olarak deneyimleyerek, mezuniyet sonras\u0131 kariyerinize sa\u011flam bir ba\u015flang\u0131\u00e7 yapars\u0131n\u0131z. Proje boyunca kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z her zorluk, sizi daha donan\u0131ml\u0131 ve problem \u00e7\u00f6zme odakl\u0131 bir m\u00fchendis yapar. Unutmay\u0131n, iyi bir yaz\u0131l\u0131mc\u0131 olmak sadece kod yazmakla de\u011fil, ayn\u0131 zamanda sistemleri tasarlamak, test etmek, da\u011f\u0131tmak ve y\u00f6netmekle de ilgilidir. SE 371 Proje 2 size bu b\u00fct\u00fcnsel bak\u0131\u015f a\u00e7\u0131s\u0131n\u0131 kazand\u0131r\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<div class=\"faq-container\" style=\"margin-top: 20px;\">\n<details style=\"border: 1px solid #ccc; padding: 10px; margin-bottom: 10px; border-radius: 5px;\">\n<summary style=\"font-weight: bold; cursor: pointer;\">SE 371 Proje 2'de hangi programlama dillerini ve framework'leri kullanmal\u0131y\u0131m?<\/summary>\n<p style=\"margin-left: 20px; padding-top: 5px;\">Genellikle Java (Spring Boot ile), Node.js (Express.js ile) veya Python (Django\/Flask ile) backend i\u00e7in tercih edilirken, frontend i\u00e7in React, Vue.js veya Angular gibi JavaScript framework'leri kullan\u0131l\u0131r. Ancak, projenizin spesifik gereksinimleri ve tak\u0131m\u0131n\u0131z\u0131n mevcut bilgi birikimi, se\u00e7iminizde belirleyici olmal\u0131d\u0131r. \u00d6nemli olan, se\u00e7ti\u011finiz teknolojilerde rahat olman\u0131z ve projenin gereksinimlerini kar\u015f\u0131layabilmenizdir.<\/p>\n<\/details>\n<details style=\"border: 1px solid #ccc; padding: 10px; margin-bottom: 10px; border-radius: 5px;\">\n<summary style=\"font-weight: bold; cursor: pointer;\">Proje y\u00f6netimi i\u00e7in hangi ara\u00e7lar\u0131 kullanmam\u0131z \u00f6nerilir?<\/summary>\n<p style=\"margin-left: 20px; padding-top: 5px;\">Tak\u0131m i\u00e7inde g\u00f6rev takibi, sprint y\u00f6netimi ve genel i\u015f ak\u0131\u015f\u0131n\u0131 sa\u011flamak i\u00e7in Trello, Jira veya Asana gibi proje y\u00f6netim ara\u00e7lar\u0131 olduk\u00e7a faydal\u0131d\u0131r. Kod versiyon kontrol\u00fc i\u00e7in Git ve GitHub\/GitLab gibi platformlar zorunludur. \u0130leti\u015fim i\u00e7in ise Slack veya Discord gibi ara\u00e7lar tercih edilebilir.<\/p>\n<\/details>\n<details style=\"border: 1px solid #ccc; padding: 10px; margin-bottom: 10px; border-radius: 5px;\">\n<summary style=\"font-weight: bold; cursor: pointer;\">Otomatik testler neden bu kadar \u00f6nemli ve hangi test t\u00fcrlerine odaklanmal\u0131y\u0131z?<\/summary>\n<p style=\"margin-left: 20px; padding-top: 5px;\">Otomatik testler, yaz\u0131l\u0131m\u0131n g\u00fcvenilirli\u011fini art\u0131r\u0131r, hatalar\u0131 erken tespit etmeyi sa\u011flar ve geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r. SE 371 Proje 2 i\u00e7in \u00f6zellikle birim testlerine (fonksiyonel d\u00fczeyde do\u011frulama) ve entegrasyon testlerine (mod\u00fcllerin birlikte \u00e7al\u0131\u015fmas\u0131) odaklanmak \u00f6nemlidir. Bu testler, kodunuzun temel mant\u0131\u011f\u0131n\u0131 ve farkl\u0131 bile\u015fenlerin uyumunu g\u00fcvence alt\u0131na al\u0131r.<\/p>\n<\/details>\n<details style=\"border: 1px solid #ccc; padding: 10px; margin-bottom: 10px; border-radius: 5px;\">\n<summary style=\"font-weight: bold; cursor: pointer;\">Proje s\u0131ras\u0131nda kar\u015f\u0131la\u015f\u0131lan zorluklarla nas\u0131l ba\u015fa \u00e7\u0131kabilirim?<\/summary>\n<p style=\"margin-left: 20px; padding-top: 5px;\">Zorluklar, \u00f6\u011frenme s\u00fcrecinin do\u011fal bir par\u00e7as\u0131d\u0131r. \u0130lk olarak, problemi anlamaya \u00e7al\u0131\u015f\u0131n ve tak\u0131m arkada\u015flar\u0131n\u0131zla veya mentorlar\u0131n\u0131zla tart\u0131\u015f\u0131n. \u00c7\u00f6z\u00fcm bulmak i\u00e7in internet ara\u015ft\u0131rmas\u0131 yap\u0131n (Stack Overflow, resmi dok\u00fcmantasyonlar). K\u00fc\u00e7\u00fck ad\u0131mlarla ilerleyin, hatay\u0131 izole etmeye \u00e7al\u0131\u015f\u0131n ve sab\u0131rl\u0131 olun. Her zorluk, yeni bir bilgi edinme ve problem \u00e7\u00f6zme becerilerinizi geli\u015ftirme f\u0131rsat\u0131d\u0131r.<\/p>\n<\/details>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"SE 371 Proje 2, modern yaz\u0131l\u0131m geli\u015ftirme prensiplerini ger\u00e7ek d\u00fcnya senaryolar\u0131yla birle\u015ftiren kapsaml\u0131 bir uygulamal\u0131 deneyim sunar. Bu&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-33143","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?<\/title>\n<meta name=\"description\" content=\"SE 371 Proje 2, modern yaz\u0131l\u0131m geli\u015ftirme prensiplerini ger\u00e7ek d\u00fcnya senaryolar\u0131yla birle\u015ftiren kapsaml\u0131 bir uygulamal\u0131 deneyim sunar. Bu makalede, projenin temel ta\u015flar\u0131ndan ileri d\u00fczey optimizasyonlara kadar her \u015feyi ke\u015ffedece\u011fiz. Gelin, bu \u00f6nemli projenin detaylar\u0131na birlikte dalal\u0131m ve yaz\u0131l\u0131m geli\u015ftirme yolculu\u011funuzda size yol g\u00f6sterecek bilgileri \u00f6\u011frenelim.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?\" \/>\n<meta property=\"og:description\" content=\"SE 371 Proje 2, modern yaz\u0131l\u0131m geli\u015ftirme prensiplerini ger\u00e7ek d\u00fcnya senaryolar\u0131yla birle\u015ftiren kapsaml\u0131 bir uygulamal\u0131 deneyim sunar. Bu makalede, projenin temel ta\u015flar\u0131ndan ileri d\u00fczey optimizasyonlara kadar her \u015feyi ke\u015ffedece\u011fiz. Gelin, bu \u00f6nemli projenin detaylar\u0131na birlikte dalal\u0131m ve yaz\u0131l\u0131m geli\u015ftirme yolculu\u011funuzda size yol g\u00f6sterecek bilgileri \u00f6\u011frenelim.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-30T03:31:40+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"29 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?\",\"datePublished\":\"2025-10-30T03:31:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/\"},\"wordCount\":5478,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/\",\"name\":\"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-30T03:31:40+00:00\",\"description\":\"SE 371 Proje 2, modern yaz\u0131l\u0131m geli\u015ftirme prensiplerini ger\u00e7ek d\u00fcnya senaryolar\u0131yla birle\u015ftiren kapsaml\u0131 bir uygulamal\u0131 deneyim sunar. Bu makalede, projenin temel ta\u015flar\u0131ndan ileri d\u00fczey optimizasyonlara kadar her \u015feyi ke\u015ffedece\u011fiz. Gelin, bu \u00f6nemli projenin detaylar\u0131na birlikte dalal\u0131m ve yaz\u0131l\u0131m geli\u015ftirme yolculu\u011funuzda size yol g\u00f6sterecek bilgileri \u00f6\u011frenelim.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?","description":"SE 371 Proje 2, modern yaz\u0131l\u0131m geli\u015ftirme prensiplerini ger\u00e7ek d\u00fcnya senaryolar\u0131yla birle\u015ftiren kapsaml\u0131 bir uygulamal\u0131 deneyim sunar. Bu makalede, projenin temel ta\u015flar\u0131ndan ileri d\u00fczey optimizasyonlara kadar her \u015feyi ke\u015ffedece\u011fiz. Gelin, bu \u00f6nemli projenin detaylar\u0131na birlikte dalal\u0131m ve yaz\u0131l\u0131m geli\u015ftirme yolculu\u011funuzda size yol g\u00f6sterecek bilgileri \u00f6\u011frenelim.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/","og_locale":"tr_TR","og_type":"article","og_title":"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?","og_description":"SE 371 Proje 2, modern yaz\u0131l\u0131m geli\u015ftirme prensiplerini ger\u00e7ek d\u00fcnya senaryolar\u0131yla birle\u015ftiren kapsaml\u0131 bir uygulamal\u0131 deneyim sunar. Bu makalede, projenin temel ta\u015flar\u0131ndan ileri d\u00fczey optimizasyonlara kadar her \u015feyi ke\u015ffedece\u011fiz. Gelin, bu \u00f6nemli projenin detaylar\u0131na birlikte dalal\u0131m ve yaz\u0131l\u0131m geli\u015ftirme yolculu\u011funuzda size yol g\u00f6sterecek bilgileri \u00f6\u011frenelim.","og_url":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-30T03:31:40+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"29 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?","datePublished":"2025-10-30T03:31:40+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/"},"wordCount":5478,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/","url":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/","name":"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-30T03:31:40+00:00","description":"SE 371 Proje 2, modern yaz\u0131l\u0131m geli\u015ftirme prensiplerini ger\u00e7ek d\u00fcnya senaryolar\u0131yla birle\u015ftiren kapsaml\u0131 bir uygulamal\u0131 deneyim sunar. Bu makalede, projenin temel ta\u015flar\u0131ndan ileri d\u00fczey optimizasyonlara kadar her \u015feyi ke\u015ffedece\u011fiz. Gelin, bu \u00f6nemli projenin detaylar\u0131na birlikte dalal\u0131m ve yaz\u0131l\u0131m geli\u015ftirme yolculu\u011funuzda size yol g\u00f6sterecek bilgileri \u00f6\u011frenelim.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/giris-se-371-proje-2-neden-bu-kadar-onemli\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Giri\u015f: SE 371 Proje 2 Neden Bu Kadar \u00d6nemli?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=33143"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33143\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}