惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
L
LangChain Blog
I
InfoQ
D
Docker
F
Fortinet All Blogs
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
月光博客
月光博客
B
Blog
Engineering at Meta
Engineering at Meta
T
Tailwind CSS Blog
罗磊的独立博客
博客园_首页
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
IT之家
IT之家
V
V2EX

Yusuf Aytas

When Code Is Cheap, Does Quality Still Matter? Why Crouching Tiger, Hidden Dragon Is a Masterpiece Why We Ignore Advice The Mirror Is Part of the Machine When Too Many Maps Overlap on One Person The Work Runs on Different Maps Your Work Introduces You Trial By Fire The Dude Why Headcount Math Lies Capacity Is the Roadmap The Roadmap Is Not the System Torres del Paine W Trek Escaping Status Theater Incentives Drive Everything Scaling Culture Without Dilution What Good Looks Like Why Airport Security Feels Random Why Politics Appear How to Work with Me The Janus Protocol Multi-Horizon Delivery Framework What Good Execution Looks Like Managing Your Manager Why Kingdom of Heaven’s Director’s Cut Is Better AI Broke Interviews Most of What We Call Progress Managers Have Been Vibe Coding All Along Stop Wasting Brainpower Why Over-Engineering Happens
Çevik Yazılım
Yusuf Aytas · 2012-03-07 · via Yusuf Aytas

Published · 3 min read

Çevik yazılım geliştirme, bir takım yazılım geliştirme yönteminden ibarettir. Bu yöntemler, yazılımın ve gereksinimlerin birbiriyle etkileşim halinde tutarak ortaya koyulmuş süreçlerin tekrarlanmasına ve aşamalı bir şekilde ilerlemeye dayanır. Yöntemlerin uygulanmasında, zamana dayalı ilerleme, evrimsel geliştirme ve teslim süreci ve değişime karşı esnek yapı ön plana çıkar. 2001 yılında yayımlanan Agile Manifesto, yöntemlerin temelini oluşturan belgedir.

Yazımın devamında, çevik yazılımı doğuran süreç ve çevik yazılım geliştirme üzerinde duracağım. Aşamalı ilerleme yöntemleri çok eskiye dayanmaktadır. Aslında çoğu mühendislik biliminde de karşımıza çıkan bir uygulamadır. Ama, yazılım dünyasında çevik diyebileceğimiz algı, 1974 yılında E. A. Edmonds tarafından yayımlanan uyarlanabilir yazılım geliştirme süreci (adaptive software development process) adlı makaleye dayanmaktadır.

Fakat, çevik yazılımın ortaya çıkmasındaki en büyük etken, klasik mühendislik yöntemlerinin bilgisayar biliminde yeterli olmamasıydı. Klasik mühendislik methodları, ürünün her bir parçasının geliştirme sürecine girmeden önce tek tek ele alınıp tasarımı yapılıp sonra da üretim bandına sokulmasını öngörür. Halbuki, yazılım dünyasında ürün her an değişebilir nitelikte olmalıdır. Bu durum, daha dinamik bir yöntem olan çevik yazılım geliştirme kavramını ortaya çıkardı.

Çevik yazılım geliştirme klasik anlayıştan vazgeçerek, değişime her zaman ayak uydurmaya dayanan bir anlayış. Çevik yazılım, projenin safhalara bölünerek, her safhada çalışan bir ürün elde etmeyi hedefler. Her bir safha kendine özgü tasarım, kodlama ve test etme faaliyetlerinden oluşur. Safhanın bitiminde elde edilen ürün, varolan gereksinimleri karşılayamıyor ya da gereksinimleri değiştiyse bir sonraki safhada düzeltilir. Yeni safhada müşteri ile müzakere edilerek, safhanın planı yapılır. Ürün tamamlanana kadar bu döngüye devam edilir.

Çevik yazılımın etkin bir şekilde uygulanması için aşağıda anlattığımız birkaç unsurun uygulanması önem taşımaktadır. İhtiyaçların anlaşılması ve değişikliklerin iyi yorumlanması için müşteri ya da çalışma alanında uzman biri (domain expert) ile birlikte çalışılması en önemli unsurlardan biridir. Çünkü, gerekli bilgilerin en doğru ve hızlı aktarımı gereksinimlerin birinci ağızdan duyulmasına bağlıdır. Bu yapılmadığında yazılımcılar kendi anladıklarını hayata geçirerek, bir sonraki safhada geliştirilen ürünü fazlaca değiştirmeye hatta sil baştan yapmaya sebep olabilir. Dolayısıyla, çevik yazılımda müşteri de yazılım ekibinin bir parçası olmalıdır.

Çevik yazılımda önemli olduğuna inandığım bir diğer unsur takım çalışmasıdır. Projedeki her bir bireyin, projenin ne doğrultuda olduğunu ve kendisinin ne yaptığını iyi anlaması gerekir çünkü ekipteki her elemanın farkındalığı ve dinginliği proje için önemlidir. Ayrıca, proje ekibinde elemanlar arasındaki farklar gözetilmelidir. Aksi takdirde, yapılan işlerde gecikmeler ya da erken bitirme durumları ortaya çıkabilir. Önemli olan görevleri ekipçe zamanında bitirmektir.

Çevik yazılım, adından da anlaşılabileceği gibi kolay ve çabuk bir şekilde yeni gelen ya da değiştirilen gereksinimlere ayak uydurmaktır. Varolan mühendislik yöntemlerinin, yazılım sektörü için uygun olmayışından ortaya çıkan bir yöntemdir. Ana felsefesi, yazılım sürecinin safhalara bölünerek, her bir safhada çalışan bir ürün elde etmektir. Bu felsefeyi uygularken, takım çalışması ve müşteri etkinliği dikkat edilmesi gereken unsurlardır. Sonuç olarak çevik yazılım, gereksinimlerin sürekli değiştiği yazılım dünyası için güzel bir yaklaşımdır.