Geliştirme döneminde spesifikasyonun neden değiştirilmemesi gerektiğini açıklamak istiyorum


11

Yeni planlama departmanı çalışanına şartnamenin geliştirme döneminde neden değiştirilmemesi gerektiğini açıklamak istiyorum.


4
Hareket eden bir hedefe karşı programlama eğlencenin yarısıdır!
Anthony Pegram

1
Diyorum ki mutlaka çok güçlü bir terimdir. Bir şartname bir taslaktır, ancak bazen değişiklik yapmak için çok iyi nedenler vardır.

7
"Her ikisi de donmuşsa su üzerinde yürümek ve bir spesifikasyondan yazılım geliştirmek kolaydır." - Edward V Berard
Jason Hall

1
teknik özelliklerin çoğu değişir, sadece değişikliklerinin büyük olasılıkla son tarihi etkileyeceğini bildirin. İş yerimde bir spesifikasyon verdikten ve bir değişikliğe ihtiyaç duyulduktan sonra, bize değişikliğin tam bir taslağını vermeliler ve alacağı zamanı sunacağız ve değişikliği kabul ediyorlar ya da yapmıyorlar (ya da bizi yapıyorlar) geç kalmak)
Johnny Quest

1
Şartnamenin değiştirilmesi gerektiğinde, gereklilikler değiştiği veya yanlış olduğu tespit edildiğinde, şartname değiştirilmeli ve en kısa zamanda değiştirilmelidir. Sadece değişikliğin maliyetinin tüm taraflar tarafından bilindiğinden emin olun.
user16764

Yanıtlar:


18

Bir şartname, en basit projelerden herhangi biri için geliştirme sırasında neredeyse her zaman değişir.

Nedenleri:

  • Projenin geliştirilmesi veya daha olası entegrasyon testi, orijinal spesifikasyon yapıldığında fark edilmeyen şeyleri ortaya çıkarır - uç durumlardan büyük yönlere. Örneğin, geliştirici, sipariş dışı mesaj onaylarının gelebileceğini fark eder.

  • Spesifikasyonu belirleyen gerçek dünya koşulu donmaz. Örneğin, doğrudan işleme spesifikasyonuna eklenmesi gereken yeni bir finansal ürün yaratılır.

  • Son tarih baskıları, budamalara neden olur.

  • Projenin ek paydaşları keşfedildi (örneğin, proje boyunca farklı bir alanda benzer bir proje keşfedildi ve ortak alt sistemlerin merkezileştirilmesi / paylaşılması gerekiyor - bu bana 2 yıllık proje boyunca ortada büyük bir yeniden sonuç verdi. architeching).

  • Projenin ek sponsorlarının yeni spesifikasyon gereksinimleri var (en ünlü örneklerden biri Bradley Fighting Vehicle'in gelişim tarihidir).

Spesifikasyon değişikliklerinin neden olumsuz bir etkiye sahip olduğuna gelince ("olmamalı" diyemezsiniz çünkü görebildiğiniz gibi birçok neden var, neredeyse tüm kontrolünüz dışında ve birçoğu iyi bir nedenden dolayı) -

  • Spesifik değişiklikler, kod değişikliklerine neden olarak, henüz yazılmayan proje bölümlerini tamamlamanızı engeller (hepimizin bildiği ve Joel Spolsky tarafından evangelize edildiği için odak değişiklikleri geliştiriciler için çok kötüdür)

  • Bazı spesifikasyon değişiklikleri (bazen görünüşte ÇOK önemsiz gibi görünüyor) , spesifikasyondan alınan bir varsayım temelinde 2 mimarlık arasında bir seçim yapıldığından sistemin tamamen yeniden yapılandırılması / yeniden yapılandırılması gereği ortaya çıkabilir .

  • TDD durumunda, testlere tabi tutulan büyük bir iş geçersiz olabilir.

  • Spesifikasyon değişiklikleri yukarıda belirtildiği gibi ek paydaşlardan geliyorsa, mevcut spesifikasyonla çelişkili olabilir ve bu da ürün kalitesinde önemli bir düşüşe neden olabilir (bkz. Fighting Vehicle, Bradley).

  • Spesifikasyon değişikliği, değiştiricinin / talep edenin farkında olamayacağı veya ilgilenemeyeceği bazı mevcut işletme gereksinimlerini ihlal edebilir (bu gerçekten son kurşun noktasıyla aynıdır).

Tüm bunların ne olacağı elbette projenin teslim tarihini uzatır (bazen önemli ölçüde) ve potansiyel olarak arızalı olma olasılığını arttırır.

Spesifikasyondaki küçük bir değişikliğin nasıl aşırı problemler yaratabileceğine dair en iyi örnek için, sizin için 3 harfim var:

Y2K .

Yaptıkları tek şey, " 2000 yılından sonra çalışmalı " dediklerini değiştirmekti .

Ayrıca, bazı durumlarda şartnamenin değişmemesi ZORUNLUDUR ("iyi bir sebep olmadan değişmemelidir" yerine):

  • Spesifikasyonun bir kısmı, arayüzler olması gereken harici bir sistemin spesifikasyonudur (veya bağımlıdır).

  • Spesifikasyonun bir kısmı, sistemin uygulandığı bir donanımdır (veya ona bağımlıdır).

  • Bir müşteri ile yapılan sözleşme gereklilikleri (sınırlama, sadece değişiklik gerçeğinin aksine, önce müşteri ile yapılan değişiklikler üzerinde çalışmadan ve sözleşmeyi değiştirmeden spesifikasyonu değiştirmekten bahsediyor olsa da)

  • Bir sistemin, müşteri tercihine bakılmaksızın belirli yasal veya düzenleyici gereksinimleri karşılaması gerekebilir. Örnekler: kredi kartı şifrelemesi, vergi verilerinin korunması.


Tamam; Geri takıldım.

Şartnameleri değiştirmemenin bir başka nedeni de, paradoksal olarak onları değiştirmenin bir nedeni olan yasal gerekliliklerdir. Birçok yazılım parçası bununla ilgilenir. İçeriği olan yasalar değişmediği sürece, bu gereksinimler durağandır. Değişir değişmez gereksinimler değişir. Ve bu tamamen geliştirme ekibinin veya müşterilerinin eline geçmez (bu müşteriler doğrudan bu yasaları yürürlüğe koyan insanlar değildir, ki bu çok nadirdir).
jwenting

9

Geliştirme sırasında spesifikasyonda değişiklik yapılmasını yasaklamak programcı için idealdir, ancak gerçek dünya ortamında gerçekçi değildir. İnsanlar, her şey kapıdan çıksa bile, her zaman değişiklik yapmak isteyeceklerdir. Asla durmaz. Ve bu insanların bazıları maaş çekini imzalıyor olabilir. Ne kadar çok önem verirlerse, o kadar çok düşünürler ve bu nedenle tasarımı daha sık revize etmek isterler. Başlamadan önce bile, tasarımın tamamlanmadan önce değiştirilmesini tolere edebilmelisiniz.

Önemli olan, değişikliklerin sonuçlarını net bir şekilde iletmektir, böylece herkes tasarım sürecinden gerçekçi beklentilere sahiptir.

Değişikliklerin uygun şekilde tartışılması gerekir ve söz konusu şeyin sorumlusu değişikliklerin teslimat tarihinde ne gibi bir etkisi olacağını net bir şekilde anlamalıdır. Bunu elde etmek için geliştiriciyle konuşmak zorunda. Bununla birlikte, sürekli bir tartışma tartışması geliştiriciyi su altında tutacağından ve herhangi bir gerçek çalışmanın gerçekleşmesini engelleyeceğinden, değişikliklerin sıralı ve seyrek aralıklarla sıraya alınması ve tartışılması gerekir. Umarım budur.

İdeal olarak, insanlara yapmak istedikleri değişiklikleri not etmelerini ve haftalık / iki haftada bir / aylık / her türlü koordinasyon toplantısında getirmelerini istemeniz talimatını verirsiniz. Toplantı sırasında, talep edilen özelliğin uygulanması için yapılması gereken temel değişikliklerin ve dolayısıyla tamamlanma tarihi üzerindeki etkinin tartışılması da dahil olmak üzere her değişiklik talebi tartışılır. Değişikliğin "maliyeti" belirlendikten sonra, bunu dahil edip etmeyeceğini belirleyebilirler.

Bu sürecin getirdiği önemli şey, her değişikliğin ilişkili bir maliyetinin olduğu ve proje boyunca ilerledikçe maliyetin genellikle daha yüksek olduğu fikridir, çünkü daha fazla çalışma çoğaltılmalıdır. Gelişimde çalışmayan insanlar genellikle bir değişikliğin ne kadara mal olacağı konusunda hiçbir fikre sahip değildir; anlatmanın tek yolu onu önermek ve tepkinizi ölçmektir. İyi tanımlanmış bir değişiklik inceleme süreci oluşturmak hem onlara hem de size yardımcı olacaktır.

Programcıların ya bir değişikliğin ne kadar kolay olduğu konusunda son derece iyimser ya da ne kadar imkansız olacağı konusunda son derece kötümser olduklarını unutmayın. Orijinal tahminlerinizi sonuçlarla karşılaştırarak ne olduğunuzu anlamaya çalışın ve buna göre ayarlayın.


6

Belki de spesifikasyonun geçerli bir değişiklik talebi ve süreci olmadan değişmemesi gerektiğini söylemek daha iyi olur. Bir spesifikasyon değişikliği talep etmenin program ve maliyet üzerinde etkileri vardır, bu nedenle bunların onaylanması gerekir.

Uygun bir değişiklik yönetimi süreci olduğu göz önüne alındığında, teknik özelliklerin değiştirilmesi hakkında "yanlış" bir şey yoktur, ancak çok pahalı olması muhtemeldir, bu nedenle müşterileriniz çok mutlu olmayabilir. Bazı iyi gereksinimleri ve özellikleri öne çıkarmaya çalışarak onları kendilerinden koruyabilirsiniz, böylece daha az değişiklik gerekir.


3

Sahip olduğum en iyi benzetme onu bir ev inşa etmekle karşılaştırmak. Mimar planları hazırlar ve sonra bir tahmin yaparsa, müşteri daha sonra planı kabul eder (veya etmez). Müşteri ilave bir banyo koymak isterse iş durur, planların değişmesi gerekir, yeni bir tahmin yapılır ve müşteri kabul eder (ya da etmez).

Yazma yazılımı farklı değil. anlaşma yapıldıktan sonra (tasarım ve tahminden sonra) herhangi bir değişiklik yapılması gerekiyorsa, yeni plan yapabilmek için çalışmanın durdurulması, yeni tahminin onaylanması (veya onaylanmaması) ve daha sonra çalışma devam edecektir.

Söylediğim ya da söylemediğim her yerde proje yeni değişiklikler olmadan devam ediyor demektir. Tabii ki her zaman yeni planlar ve tahminde bulunmanın zamanı ve materyalleri vardır.


Bu zayıf bir benzetmedir. Yazılım yazıyoruz, çünkü en azından kullanıcı başına hesaplandığında bir evden çok daha kolay değişiyor. Yazılımın değiştirilmesi bir evden çok daha kolaydır, ortak yönleri olan tek şey her ikisinin de insan faaliyetleri olmasıdır.
kevin cline
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.