GUI ile başlayan bir uygulama oluşturmak faydalı olabilir mi?


17

Uygulama tasarımı ve geliştirmedeki eğilim "cesaret" ile başlıyor gibi görünüyor: alan adı, sonra veri erişimi, sonra altyapı, vb. Acaba ilk olarak GUI'yi oluşturmak faydalı olabilir mi?

Benim mantığım, en azından bir prototip GUI oluşturarak, sahnelerin arkasında ne olması gerektiği hakkında daha iyi bir fikir sahibi olmanız ve böylece etki alanında ve destek kodunda çalışmaya başlamak için daha iyi bir konumda olmanızdır.

Destekleyici kod henüz yazılmamışsa, GUI katmanının gerçekten yapacağı çok fazla şey olmayacağı için bu uygulama ile ilgili bir sorun görebilirsiniz. Belki de sahte nesneler veya ıskarta sınıfları oluşturmak (birim testinde bir şekilde yapılır), GUI'yi başlangıçta oluşturmak için yeterli bir temel sağlayacaktır.

Bu gerçek bir proje için uygulanabilir bir fikir olabilir mi? Belki kısaltma istikrarına GDD (GUI Driven Development) ekleyebiliriz ...


4
Bu Hızlı Uygulama Geliştirme.
James Love

Yine de bir GUI yazmak faydalı mı? Bir mobil uygulama, bir web uygulaması veya görüntüleri gösteren herhangi bir uygulama için olmadığı sürece buna ihtiyaç duymuyorum.
rightfold

Yanıtlar:


27

Hızlı GUI prototipleri oluşturmak iyi bir fikirdir ve birçok projede kullanıldığını duydum. Erken geri bildirim gerçekten değerlidir. Ancak, tehlikeleri vardır:

  • prototip kodunu daha fazla kullanmak ve üzerinde son uygulamayı oluşturmak çok caziptir, bu da çok kötü uzun vadeli sonuçlara yol açabilir (bu aslında üzerinde çalıştığım projelerden birinde oldu ve sonuçlandı var olmayan bir mimariye ve bizim için birçok bakım baş ağrısına sahip "çalışan" bir ürün)
  • ortalama kullanıcı için, GUI uygulama . Böylece güzel görünümlü bir GUI gördükten sonra, gerçek çalışmanın çoğunun yapıldığına inanma eğilimindedirler, bu yüzden uzun süre sürükleyerek "kalan az çalışma" ile çok üzülebilirler: - /

Bu riskleri azaltmak için aktif tartışma ve muhtemelen kullanıcılarınızın ve / veya yöneticilerinizin eğitimi gerekir.


1
Pragmatik Programcı prototip bölümünü kapsar ve evet, tamamen haklısınız. Prototip tek kullanımlık koddur;)
Oscar Mederos

6
"Ortalama kullanıcı için GUI uygulama". Bunu sadece bu gözlem için 100 kez tekrar ediyorum.
PSU

@Oscar, referans için teşekkürler, pratikte bunu tartıştıklarını unuttum. Gerçekten de okumanız tavsiye edilir.
Péter Török

@ user13645, benim olduğunu iddia etmiyorum - aslında yorumunuzu yazarken Joel tarafından yazılmış orijinal blog yazısı bağlantısını ekledim :-)
Péter Török

2
bu yüzden balsamiq.com gibi GUI prototipleme araçları ortaya çıktı. GUI'nin nasıl görüneceğini gösterebilir ve müşteriden erken geri bildirim alabilirsiniz. Öte yandan, araç tarafından oluşturulan GUI'nin tamamen farklı bir sanatı vardır (biraz elle çizilmiş gibi), böylece müşteri bunun ürünün nihai görünümü olmayacağını doğrudan anlar. Ve aynı tasarım için ürün için başlangıç ​​kodu olarak kullanılamaz.
Tobias Langner

5

Bununla ilgili gördüğüm sorun, hedefin tamamen geri kalmış olduğu.

"Benim mantığım, en azından bir prototip GUI oluşturarak, sahnelerin arkasında ne olması gerektiği hakkında daha iyi bir fikir edinmeniz ve böylece etki alanında ve destek kodunda çalışmaya başlamak için daha iyi bir konumda olmanızdır."

Bence bu, bir iş katmanına bakmanın yanlış yolu ve kötü, genişletilemez bir tasarım bulmak için BÜYÜK bir yoldur. Verileri tamamen ifade etmek için iyi tasarlanmış bir veri katmanı herhangi bir kullanıcı arayüzünde kullanılabilir. Belirli bir kullanıcı arayüzünün ihtiyaçları için çalışmak üzere tasarlanmış bir veri katmanı, başka bir şeye uyarlanamayabilir, hatta bu kullanıcı arayüzüne küçük çaplı eklemeler bile olmayabilir.

Bahsettiğiniz şekilde tasarlanan sistemlerle ilgili deneyim, beni bu metodolojiyi kullanan çoğu tasarımın kısa ömürlü ve / veya aşırı karmaşık olduğu sonucuna götürmesine neden oluyor. Ayrıca, kullanıcı arayüzü ile veri katmanı arasında asla orada bulunmaması gereken bir bağlantı oluşturma eğilimindedirler.

Veri katmanının ve kullanıcı arayüzü katmanının bağımsızlığı teşvik edilmelidir. Bu nedenle, veri katmanını belirli bir kullanıcı arayüzünü hedeflemek yerine tüm verileri temsil edecek şekilde oluşturmak uzun vadede daha iyi çalışır.

Bir prototip oluşturmak, gereksinimlerin toplanması ve anlaşılması için iyi olabilir, ancak daha sonra atılmalıdır. Gerçek üründeki prototip kodundan hiçbir şey kullanmayın.


5

@ Péter'in GUI prototipleri oluşturmanın iyi bir fikir olduğunu öne sürmek gerektiğini düşünüyorum. Kullanıcı deneyimini geriye dönük bir şekilde sunmanın potansiyel tuzaklarına, yani ontolojilere, önce mimariye ve altyapıya ve en son kullanıcı deneyimine odaklanmanın olası tuzaklarını desteklemek istiyorum:

  • Geliştirme zaman çizelgesinin sonuna kadar ittiğiniz kullanıcı, veriler ve uygulamanızın kullanım şekli hakkındaki tahminlerinizi geçersiz kılar.
  • Zamanından önce geliştirdiğiniz özenli tasarımlarınız, sonunda çok az veya hiç kullanımı olmayan, kendi kendini işleyen makineler olduklarını kanıtlıyor.
  • Uygulamanız, kötü kullanıcı deneyimleri sunmanın norm haline geldiği bir duruma getirilebilir.

Bağırsakları yaparsınız ve sonra kullanıcı varsayımlarınızdan çıkanları alırken, kullanıcının ihtiyaç duyduğu şeylerle ilgilenmeli ve bağırsakları buna göre inşa etmelisiniz. İnsanlar neden bunu başka bir yolla yapmak için başvururlar, basitçe kullanıcının etkileşimde bulunduğu sunumun, uygulamanın davranışları doğal olarak patladığı andan itibaren, sistemin asla tamamen keşfedilmeyen veya en çok kendini hissettiren en karmaşık kısmı olmasıdır. neden / ne / kimin için inşa ettiklerini düşünmekten kaçınmak için bir şeyler inşa etmekten kendileri mutluyuz. Yapısal olarak sağlam büyük bir yapı inşa etmek çocuk oyuncağı, herkesin fonksiyonel (ve estetik) ihtiyaçlarını karşılamak için en zor kısımdır.

Her craptastic deneyimi için,, kötü collocated bilgiyi akış ilginç, bariz işlevsellik sadece düz yanlış olan şeyleri, "sadece hangi deha ile geldi sormak yalvardım ettik her örnekleri yoksun olduğunu göz ardı ihmal edildiği ya da o?" Yalan bir şey kullanıcıyı geliştirme çabalarının ön cephesi olarak ifşa etti.


3

Genel olarak, model görünümden önce geliştirilmelidir. Uygulamanızın mantıksal temelini oluşturduktan sonra, bu modelin bir veya daha fazla görünümünü oluşturabilirsiniz (örneğin, verileri tabloda veya grafikte görüntüleyebilirsiniz). Genellikle, model GUI'den daha önemlidir. Bu özellikle GUI'nin genellikle standart bir şekilde yapıldığı kurumsal gelişim için geçerlidir.

Ancak, bazen GUI gerçekten uygulamanın en önemli parçasıdır. Bazen verilere yeni ve özel bir şekilde bakmak istersiniz - ve oradan alırsınız ve sonra modeli geliştirirsiniz. Örneğin, CashCurve , noktanın GUI'de olduğu böyle bir uygulamadır, veri modelinin kendisi ise herkesin birkaç dakika içinde modelleyebileceği standart sıkıcı şeylerdir. (Feragatname: CashCurve ile bağlantılı değilim, sadece çok memnun bir kullanıcı.)

Bu, web hizmetleri veya diğer API'ları tasarlamak için de geçerlidir - yalnızca " önce sözleşme " tasarımı olarak bilinir .

Yani, her şeye gelince, önce neyin tasarlanacağına dair bir kural yoktur; bazen model, bazen GUI. Başparmak kuralı olarak, "önce en önemli kısmı tasarla" ile giderdim.

İlk olarak GUI tasarlanırken dikkat edilmesi gereken uyarılar vardır, çünkü bu kullanıcı muhtemelen sadece GUI prototipi var olduğunda uygulamanın tam olmaktan uzak olduğunu anlamakta sorun yaşayacaktır, ancak diğer cevaplar bunu oldukça iyi karşılamıştır, bu yüzden detaylara girmeyeceğim.


3

Özellikle çevik bir geliştirme ortamında uygulama tasarımına yaklaşmanın son derece iyi bir yolu olduğunu düşünüyorum. Üzerinde çalıştığım başarılı projelerin çoğu, sonunda gerçek olan haline gelen bir prototiple başladı.

GUI'nin sisteme açılan pencere olduğunu anlamalısınız (örn. Veritabanı, dosya sistemi, vb.). Proje gereksinimlerinin bir slush yığını kadar belirsiz olduğu bir durumda, arka uçtan başlayarak doğru bir çözüm elde etmek için cehennemde bir umudunuz olmayacaktır. Neredeyse her zaman, iyi niyetli arka uç geliştirici, kullanıcı etkileşimleriyle hiçbir ilgisi olmayan bir grup API geliştirir.

GUI'ye başlayarak, müşteri ne istediği hakkında daha iyi bir fikir edinir. Bu aşama ilerledikçe, GUI'nin (alay ve taslakları kullanarak) geliştirilmesi bir etki alanı modelini doğurur. Bu etki alanı modeli daha sonra arka uca aktarılabilir ve arka uç geliştiricileri, kalıcılığı ve işlemsel mantığı geliştirmeye başlayabilir.

Ve neden prototipi atmak istersiniz? Kibrit çöplerinden yapılmış stadyumlarla uğraşmıyoruz. Sadece lanet şeyi iyi bir şeye geri çevir.


1

GUI'ye bakan kişi sadece bir kabuk olduğunu ve kelimenin tam anlamıyla düğmeler ve işlemlerin işe yaramadığını anlarsa bana hiç de kötü gelmiyor (yeni NotImplementedException ();;)).

Eğer bir MVC tarzı mimari kullanmaya devam ederseniz, "Görünüm" bu tür hiçbir şey tanımlamıyor gibi gelecekteki herhangi bir bakım veya inşaat sorunları öngörmüyorum. "Kontrolörler" ve "Model", daha sonra ölçeklenebilirlik / tasarım ihtiyaçları vb. İçin ihtiyaç duyduğunuz tüm altyapılarla gelebilir.

Yönetim gelince, 3 porsiyon ile büyük bir pasta grafik çizin, "M", "V" ve "C" olarak etiketleyin. V'ye yaklaşık% 20 verin ve turtanın geri kalanının "TBC" olduğunu açıklayın;).


0

Herhangi bir makul boyutta sistemde, perde arkasında olması gereken şey GUI'nin neye benzediğiyle gevşek bir şekilde ilişkilidir. GUI size gereksinimlerin yalnızca bir kısmını verecektir. Genellikle GUI'si olmayan birçok bileşen vardır.

Sistem geliştirildikten sonra ek arayüzler (yeni GUI'ler dahil) gerekebilir. Bunun için iş gereksinimlerini anlamak ve uygulamak çok önemlidir.

GUI ve diğer Girdi ve Çıktı mekanizmalarının tasarlanmasının yardımcı olabileceği yerler modeli doğrulamaktadır. Asla çıktı alınmayan özellikler gerekli olmayabilir. (Bunları saklamak için nedenler olabilir, ancak büyük olasılıkla denetim veya düzenleyici gereksinimleri olacaktır.)

Diğerlerinin de belirttiği gibi, çalışan bir GUI'ye sahip olduğunuzda, birçok müşteri bitmiş olduğunuzu düşünecektir. Ancak, arkasında hiçbir altyapınız olmayabilir. Kağıt prototipler, GUI'nin düzenini ve içeriğini doğrulamak için iyi bir seçenek olabilir.

Geliştirme sonrasında arayüzü ayarlamanız gerekebileceğini göz ardı etmeyin. Beş adımlı bir ödeme işlemi için başarısız bir ödeme arabirimi değiştirme raporu duydum. Çok daha basit bir arayüz, kullanıcılara uygun güvenlik hissi vermedi ve çok daha düşük tamamlanma oranına sahipti. Hız Darbeleri Dinle : Pazarlamada Büyülü Madde .

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.