Test Odaklı Geliştirme sürecinde Yazılım Mimarının rolü nedir?


10

Anladığım kadarıyla, Test Odaklı Geliştirme, program spesifikasyonlarını tanımlamak için testler yazmakla ilgilidir (yanlışsam beni düzeltebilirsiniz).

Yazılımın teknik özelliklerini (genel bir API dahil) yazmaktan sorumlu biri varsa (ona Yazılım Mimarı diyelim), bu Yazılım Mimarının tüm testleri yazması gerektiği anlamına mı geliyor?

Yoksa Yazılım Mimarı spesifikasyonları yazıyor ve ardından testler yazmak için geliştiricilere mi veriyor?

Yoksa tüm geliştiricilerin kendi testlerini yazmalarına ve bir Yazılım Mimarı sahibi olmayı unutarak teknik özelliklerin organik olarak büyümesine izin veriyor musunuz?



@Jose: OP'mdeki son cümlenin biraz yanak olması gerekiyordu, çünkü bana göre bir program her zaman bir müşteriden ayrıntılı özelliklere sahip olmalı. Ancak müşteriler her zaman tam olarak ne istediklerini bilmiyorlar, bu yüzden yinelemeli yazılım geliştirme süreçleri var. "Büyüyen yazılım" metaforu hakkında daha fazla bilgi için buraya bakın .
Robert Harvey

Yanıtlar:


5
Test Odaklı Geliştirme, program özelliklerini tanımlamak için testler yazmakla ilgilidir

Özelliklerini test açıklamaları, kullanıcı hikayelerini tanımlamak için testler yazmayın ve özellik açıklamaları vardır 'ölü ağaçların anlamda, şartname.

Gözden geçirmek için, kısaca TDD süreci:

  • bir projeyi özellikler açısından tanımlamak
  • kullanıcı hikayelerini kullanarak her bir özelliğin paydaşını, davranışını ve hedefini tanımlayın
  • test açıklamalarını kullanarak bir kullanıcı hikayesiyle ilişkili beklenen öğeleri, tetikleyici olayları / koşulları ve davranışları / sonuçları belirtin [ve bu 'spesifikasyonu' tamamlar]
  • her bir yineleme için bir dizi özellik seçin; yinelemeler kısa olmalıdır [kısalık için planlama ve tahmin adımlarını atlıyorum]
    • bir özellik için bir testi kodlayın (başarısız olur, ancak testi kodlamak için API kararları vermeniz gerekir)
    • testin geçebilmesi için yeterli özelliği uygulayın
    • gerekirse kodu yeniden düzenleyin
    • özellik tamamlanana kadar bir sonraki testle tekrarlayın
    • yineleme tamamlanana kadar bir sonraki özellik ile tekrarlayın
  • proje tamamlanana kadar bir sonraki yineleme ile tekrarlayın

ne kadar tasarım, mimari, destekleyici belgeler, vb. yapmayı seçtiğiniz TDD'nin bir parçası değildir. Okuyabileceğiniz bazı pratik 'en iyi uygulamalar' vardır, ancak bunların sizin değil başka birinin atölyesinde 'en iyi' uygulamalar olduğunu unutmayın .

nokta müşteri ve geliştirici karşılıklı anlayış için , özellikleri gelip hikayeler ve test açıklamaları birlikte yazmak için olduğunu unutmayın

yani, bununla birlikte, asıl soru şuydu:

TDD'de bir yazılım mimarının rolü nedir?

Ve kısa cevap:

Her zamanki gibi, her zamanki gibi. --David Byrne


DÜZENLEME: Uzun cevap: mimar gerektiğinde tüm süreç boyunca olağan vizyoner / araştırmacı / tahriş edici / destek / backstop rolleri oynar.

EDIT 2: üzgünüm alt soruların noktasını özledim! Şartnamelerin yazılmasından herkes sorumludur; uygun olduğunda / uygun olduğunda mimar dahil tüm geliştiriciler artı müşteri . Geliştiriciler ayrıca testleri kodlar.


1
Bu mantıklı, ama TDD bağlamında insanların konuştuğunu duyduğum tek adım, beş kurşun içindeki beş adımdır (kırmızı-yeşil-refactor sürecini tanımlayan). Kalan mermiler gerçekten TDD'nin bir parçası mı yoksa Agile veya DDD gibi daha geniş kapsamlı bir metodolojinin parçası mı?
Robert Harvey

@ Robert hmmm ... güzel soru! teknik olarak diğer mermiler XP olacaktır; XP ve TDD'yi aynı anda öğrendim ve asla ayırmayı düşünmedim. Şimdiye kadar ;-)
Steven A. Lowe

@ Robert bazı tazeleme okuması yaptı; bkz düzenlemeleri (Bilginize XP ref kullanarak extremeprogramming.org ve TDD ref agiledata.org/essays/tdd.html#WhatIsTDD )
Steven A. Lowe

Hmm, TDD için sağladığınız bağlantı TDD'nin gerçekten Test Odaklı Tasarım olduğunu söylüyor . Şimdi başladığım yere geri döndüm. "Sen , çalışan kod kararlar arasında geri bildirim sağlayan organik tasarım ."
Robert Harvey

1
@ Robert düzenlemeler kesinlikle soruyu daha iyi anlamama yardımcı oldu. D'yi Geliştirme olarak alıyorum ve sadece kodlama kısmı değil, tüm yaşam döngüsü olarak yorumluyorum. TDDev, mimari becerileri öğrenmek için iyi bir yoldur - yeniden düzenleme, birini bu yönde itme eğilimindedir
Steven A. Lowe

1

Yazılım Mimarı tüm testleri yazmıyor. Bu bir kişinin omuzlarına çok fazla aklıma geliyor.

Yazılım Mimarı, geliştiricilerin daha sonra bunun için testler yazdıkları ve daha sonra API'yı oluşturdukları API için bir başlangıç ​​formu çizebilmelidir. Bununla birlikte, Yazılım Mimarı zorunlu olarak test edilemeyen çeşitli kod standartlarına sahip olabilir, örn. Dokümantasyon veya adlandırma kuralları. Ayrıca, ilk API'nin bazı çağrıları kaçırması olasılığı vardır ve bir uygulama yapıldıkça API'ya yeni çağrılar eklenir. Bu nedenle, kod tabanı büyüdükçe API'da organik bir büyüme olacaktır, ancak Mimarın rolü üst düzey kılavuzlar sağlamak ve bunların takip edildiğinden emin olmaktır.

Bir takımın bir Yazılım Mimarı sahibi olmaya karar verebileceği durumlar olabilir, ancak ilgili API ve şirketin ölçeğine bağlı olarak bu iyi bir fikir olabilir veya olmayabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.