Bir istemciyi kullanıcı arayüzü modellerinden bir dizi gerçek gereksinime nasıl taşıyabilirim?


17

Diyelim ki uygulamanızın görsel durumlarından oluşan 25 ekrandan oluşan bir maket. Beklenti, bunun, nihai bir uygulama olarak geliştirip orijinal paydaş veya müşteriye teslim edebileceğimizden emin olmamız için yeterli olması ve tatmin olacaklarıdır. Doğal olarak, paydaşlara, kullanıcı dostu olan UI ile ilgili kullanılan birçok soruyu tekrar soracaksınız.

Ancak, birçok kez bunun çok yeterli olmadığını gördüm, uygulamayı geliştirirken gereksinimler bir arayüzü çoğalttığımız gerçeği ile bulanıklaşıyor ve sonunda müşteri ilk göründüğü kadar mutlu değil kullanıcı arayüzünü oluşturmak için tüm bilgileri istediğimizde.

Başka ne isteyeceğinden emin değilim, spesifik olmaya ve gereksinimleri ve genel hedefin anlaşılmasını istemeye çalıştım, ama ne istediğimi bilmiyorum. Şimdi başlasam, kullanıcı arayüzüne götüren tüm bilgileri yeniden toplamak için çok zaman harcanacak ve bu aşamada müşterinin başlangıçta sahip olduğu birçok önemli neden kaybolacak.

İnsanların benim için oluşturabilecekleri uygulanabilir bir şey sorarak kullanıcı arayüzü modellerine dayalı gereksinimleri kilitleyemeyeceğimizi nasıl anlayabilirim?

Son kullanıcılar için bir uygulama geliştirme görevini düzgün bir şekilde yürütmek için ideal olarak neyle başlardınız?


Gereksinimleri nasıl istiyorsun? Sadece müşteriye / kullanıcıya gidip "Gereksinimlerim olabilir mi?" veya gereksinimleri ortaya çıkarmak, yakalamak ve doğrulamak ve doğrulamak için çeşitli tekniklerden herhangi birini kullanıyor musunuz?
Thomas Owens

2
Bunun için geliştirici olmayanlarla uğraşmak kolay değil. Ekranlar sadece bir uygulamayı tanımlamaz. Mevcut işverenim bunu anlamıyor. Çabalarım her bir ekrandan geçmeye ve her bir öğenin davranışları ve "ne olursa olsun" hakkında birçok soru sormaya yöneliyor. Bu şekilde, özellikleri izole etme ve parlaklığın altına girenleri tasarlama umudunuz var.
Rig

2
Ben çok yaygın 25 sekmeli excel dosyası spec daha iyi sanırım.
Morgan Herlocker

1
Bu sadece müşterinizin size verdiği şey olup olmadığı VEYA ekibinizdeki bir kişinin ihtiyaç yakalama girişimleri sonucunda ürettiği şey ise, sorunuzdan net değildir. Eğer ikinciyse, kuruluşunuzda oldukça derinlemesine olabilecek bir sorununuz var. Eğer eskisi ise, o zaman diğerlerinin önerdiği gibi bazı toplama tekniklerini uygulamanız gerekecektir.
Angelo

1
@Ryan, bu durumda umarım gereksinimler adam onun için tüm soruları cevaplayabilir! Belki de sadece onunla tüm gereksinimleri interaktif olarak etkileşime sokacağını umuyor? Bu iyimser senaryo.
Angelo

Yanıtlar:


19

İhtiyacınız olabilecek diğer şeyler şunlardır:

  • Kullanım Alanları veya İş Akışı açıklamaları: Bir ekranın neye benzediğini bildiğiniz için, girdinin ne kadar kötü işlendiğini biliyor musunuz? TÜM durumlarda ekranlar arasında nasıl geçiş yapılacağını biliyor musunuz? Buraya hata işleme de ekleyebilirsiniz.

  • Üst düzey sistem açıklaması: Bu 25 ekranın tüm sisteminin ne için olduğunu ve ne yaptığını açıklayan bir şey .

  • Veri modeli: Bu ekranlardan bir veri modeli çıkarmak mümkün müdür? Kullanılması gereken bir veri modeli var mı yoksa işi yapmak için kendi tasarımınızı yapmakta özgür müsünüz?

  • Teknik gereksinimler: Lisanslama veya entegrasyon nedenleriyle kullanılması gereken belirli teknolojiler mi?

  • Performans gereksinimleri: Bir arama ekranı varsa, neyin aranabileceği ve yanıtın ne kadar hızlı olması gerektiği konusunda bir beklenti var mı? Diğer eylem türleri için yanıtlar ne olacak? Bazıları eşzamansız olabilir veya olmalıdır (kullanıcı işi gönderir ve daha sonra geri gelir)?

  • Güvenlik gereksinimleri: Uygulama potansiyel olarak hassas / kişisel verileri saklıyor mu? Belirli bir uyumluluk düzeyini karşılamanız gerekiyor mu (kredi kartı ödemeleri için PCI uyumluluğu gibi)?

Ayrıca, size yardımcı olması için ihtiyaç duyabileceğiniz özel bir iş alanı bilgisi var mı? Sigorta, bankacılık, tıbbi sağlık kayıtları vb. Gibi bazı endüstriler her türlü karmaşık iş mantığına sahiptir. Bu tür projeleri, o alanı bilen bir iş analisti yardımı olmadan denememelisiniz. Ancak, genel widget'lar için yalnızca bir alışveriş sepeti / bilgi sitesi ise, böyle bir ekip üyesine ihtiyacınız olmayabilir.


1
Bilerek yaptım mı bilmiyorum ama bu liste önem sırasına göre, kullanım durumları ve yüksek düzeyde sistem açıklaması (en azından mockup ekranlarını etiketlediler mi?) İle çok önemli şeyler. Güvenlik gereksinimlerinin zorlamayı istemenin mantıklı olup olmadığını bilmiyorum. Bir geliştirici, kullanım durumlarını desteklemek için hangi güvenliğe ihtiyaç duyulduğunu daha iyi kavramış olmalı, bu yüzden kullanım durumlarından güvenlik gereksinimlerine karar vermeli ve daha sonra müşteriyi bilgilendirmelisiniz.
jhocking

10

İnsanların UI alaylarının çalışan bir program oluşturmak için yeterli olmadığını anlamalarını sağlamak için:

Bunu bir benzetme ile hallederdim. Biraz araba somunu olduğum için o yola gidiyorum.

"Arabalar hakkında hiçbir şey bilmiyormuş gibi davran. Bana bir Ferrari'nin birkaç fotoğrafını veriyorsun. Dışarıdan bir ve arabanın içinden bir çift (sürücü koltuğundan çekilmiş, böylece arabanın kontrollerini görebiliyorum). Şimdi bana sor Sana bir Ferrari yapmak için, resimlere benzeyen ve tüm kontrollere sahip bir şeyle geri geliyorum Ne yazık ki, bu kontroller hiçbir şeye bağlı değil çünkü (arabalar hakkında hiçbir şey bilmediğimden) bunların ne olduğunu bilmiyorum Tahmin bile edemiyorum çünkü otomobillerin ne yapması gerektiğini bile bilmiyorum.

"Peki bir Ferrari ne yapar?" "Kendimi bir noktadan diğerine hızlıca taşımama izin veriyor." "Tamam. Peki bu daire işi ne yapıyor?" "Oh, bu direksiyon simidi. Döndürerek, arabanın dış tarafındaki tekerleklerin hangi yönden değiştiğini değiştirebilirsin. Bu, otomobilin hangi yönde hareket ettiğini değiştirir." "Tamam, ya bu pedal hareketine ne dersin?" "Bu gaz pedalı. Motorun daha hızlı gitmesini sağlıyor, bu da arabanın daha hızlı gitmesini sağlıyor." ... birkaç dakika sonra ... "Tamam, ne tür bir motora ihtiyacı var? Biraz araştırma yaptım ve golf arabaları için ve bazı spor arabaları için motorlar buldum. Hangisini kullanmalıyım?" ... vb. ..."

O zaman benzetmeyi açıklayabilirsiniz. Geliştiricilerin ekranlarını takmak onlara ne göründüğünü değil, sadece neye benzediğini söyler. Geliştiricilerin programın hangi sorunu çözdüğünü veya nasıl kullanılacağını bilmeleri gerekir (bir arabanın ne yaptığını bilmek, otomobilin tasarımını kolaylaştırır ve işlerin ne yapılması gerektiği konusunda eğitimli tahminler almayı kolaylaştırır). Ne tür şeyleri kullanmaları beklenir (yani golf arabası motoru ve spor araba motoru) ve diğer UI olmayan gereksinimlerin neler olduğunu bilmelidir (araba hızlı gitmelidir).

İstediğim şeyler:

Genel / Üst düzey problem tanımı

Kullanım örnekleri / kullanıcı hikayeleri

Performans gereksinimleri

Gerekli teknolojiler / platform (Windows, Linux, Web)

Sinirli her şey onun cevabında


1
Harika bir benzetme için +1, ancak bunun bir müşteriyle iletişim kurmanın gerçekten en iyi yolu olduğundan emin değilim. Bunu teknik olmayan arkadaşlarıma ne yaptığımı açıklamaya yardım edeceklerini söyleyeceğim, ama bu biraz müşavir olabilir.
jhocking

@jhocking Bu benzetmeyi kullanmanın bir müşteriyle iletişim kurmanın bir yolu olmadığına tamamen katılıyorum. Alayların şirketinizde müşteriyle zaten konuşmuş olan başka birinden geldiğini varsaydım. Bunu bir istemciye iletmeniz gerekiyorsa, sadece alaycıların size neye benzediğini gösterdiğini ancak ne yaptığına dair çok az şey anlattığını açıklayın (alaydan aldığınız herhangi bir bilgi en iyi ihtimalle bir tahmindir). Ne yaptığınız hakkında size daha fazla bilgi vermeleri gerekiyor. Bunu sormanın ve iletmenin iyi bir yolunu bulmanız yeterlidir.
Becuzz

5

Geliştirme çabasının% 80'inin etkisine bir şey, saçak kullanım vakalarının% 20'sine doğru gidiyor. Ekran görüntüleri size kullanım durumları hakkında bilgi vermez, böylece aktif gelişiminizin% 80'i için karanlıkta olursunuz.

Daha fazla anlamaya çalışmanız ve müşterinin proje gereksinimlerine daha fazla dahil olmasının ne kadar önemli olduğunu bildirmeye çalışmanız iyidir, ancak bunu yapmazlarsa projeyi başarısızlık için kuruyorlar ve bu senin hatan değil.

Yazılım projelerinin çoğu başarısız olur çünkü istemci yazılım geliştirme sürecine yeterince dahil değildir. Bu yeni bir sorun değil ve yazılım projelerinin neden başarısız olduğu konusunda bir sır değil, ancak böyle durumlar nedeniyle sürekli olarak sektörde oluyor.

Bir duvarın üzerinden bir bilgi damlası atamaz ve tüm umutlarınızı ve hayallerinizi bir yazılım paketi şeklinde geri getirmeyi bekleyemezsiniz. Yazılım geliştirme bu şekilde çalışmaz. Çevik veya Şelale dükkanı olun, bir projenin başarısı veya başarısızlığı için sağlam müşteri yönü gereklidir.


2
"Bir duvarın üzerinden sadece bir bilgi damlası atamazsınız ve tüm umutlarınızı ve hayallerinizi bir yazılım paketi şeklinde geri getirmeyi bekleyemezsiniz" Bu cümleyi seviyorum ve çok çalıyorum.
HLGEM

@HLGEM, Al, senindir!
maple_shaft

4

İnsanların sormayı unuttuğu bir şey var, veri girdikten sonra ne için kullanılacak? Raporlara mı ihtiyacınız var? Bir ambalaj fişi oluşturmanız ve nakliye vb. İçin depoya göndermeniz gerekiyor mu? Yönetim kararı ve raporlaması yapmak için veriler kullanılıyorsa, bu veritabanı tasarımını değiştirebilir. Raporların karmaşıklığına bağlı olarak gelişime ciddi bir süre de ekleyebilir.

Ayrıca, olası her karar için bir yol olduğundan emin olmanız gerekir. Yani bir şey yönetim onayı gerektiriyorsa - onaylanmazsa ne yaparsınız ve onaylanırsa ne yaparsınız. X süresinde onaylanmaz veya onaylanmazsa, buna ne olur? Bir ürün seçerse ve stokta kalmazsa siparişe ne olur? Bu tür sorular.

Ayrıca, her bir alana hangi verilerin yerleştirilmesi gerektiği konusunda belirli sınırlamalar olup olmadığını bilmeniz gerekir. Gerekli değerler var mı? Onları nereden alacaksın? Nasıl güncellenecekler? Hataları nasıl ele alacağınızı bilmeniz gerekir. Veritabanının denetime sahip olması gerekip gerekmediğini veya tarihsel bir bakış açısıyla verileri yeniden oluşturabilmeniz gerekip gerekmediğini bilmeniz gerekir (bu sinir bozucu raporlara geri dönün).

Gerçekleştiğini gördüğüm bir başka şey de, uygulamaların daha sonra verilerin nasıl korunacağını göz önünde bulundurmadan yalnızca sürüme geçecek şekilde tasarlanabileceğidir. Gerekli değerler listelerini güncelleyebilmelerini sağlamak için bir yönetici sayfasına mı ihtiyacınız var? Diğer sistemlere ileri geri veri göndermeniz gerekiyor mu? İlk verileri veritabanına nasıl gireceksiniz?


3

Şahsen, müşteriyle UI tasarımlarını ve hedeflerini gözden geçirmek ve her şeyin uyumlu olduğundan emin olmak için müşteriyle yarım günlük bir toplantı yapılmasını rica ediyorum.


2

Basit başlayın. Size verilen bilgilerle, bu ekranların hiçbirinin bir şey yapmayacağını anlamalarını sağlayın . Kullanım durumları, hatalı giriş davranışı vb. Hakkında ayrıntı yok. Sadece işe yaramaz. Kör bir genellemeyi açıklamak ayrıntıları açıklamaktan daha kolaydır, çünkü bu nokta kaybolamaz. Onlara ekran modellerinin neden yeterli olmadığına dair daha karmaşık bir gerekçe vermeye çalışmak, onlara sorunu kabul etmek yerine tanımlarınızı engelleme fırsatı verir. Arka uç geliştiricinin İngilizce (veya ekranların sunulduğu herhangi bir dilde) konuşmadığını düşünmelerini isteyin. O zaman bu durumun bilgisi olmayan bir geliştiriciden ne kadar farklı olduğunu soruniş süreçlerinin. Daha sonra, biraz bilgiye sahip olan, ancak iş mantığına onlar için karar vermenin uygun olmadığına inanmaktan haklı olan daha gerçekçi bir örnek oluşturun .


2

Yazılım geliştirmemiş kişiler hangi yazılım geliştiricilerinin bilmesi gerektiğini bilmiyorlar. Gereksinim spesifikasyonları üretmeleri ve vakaları kendi başlarına kullanmaları beklenemez. Bilmeniz gereken bilgileri almak için gereksinim ortaya çıkarma tekniklerini uygulamanız gerekir. Neye ihtiyaç duyduklarını veya istediklerini belirlemek için müşteriyle (ve umarım çeşitli rollerden kullanıcıların bir örneği) birlikte çalışın. Bunun için yaygın teknikler mülakatlar ve / veya kullanıcı gözlemi, kullanım durumlarını ve kullanıcı hikayelerini belirleme ve prototiplemedir.

Belirsiz, eksik veya az anlaşılmış gereksinimleriniz olduğundan, bu örnekte yinelemeli ve artımlı geliştirme tekniklerini kullanmanızı şiddetle tavsiye ederim. Yaşam döngüsü planlamasını ele almak için Spiral Model ile birlikte çeşitli çevik metodolojilere bakın.

Bu yazılımın geliştirilmesini sağlayan iş hedefini elde ederek başlayın. Müşteri ve kullanıcılarla görüşün ve mümkünse iş yerinde izleyin. Hangi sorunu çözmeye çalıştıklarını belirlemeye çalışın. Şu anda hangi araçları kullandıklarını ve nasıl kullandıklarını görün, böylece mevcut iş yapma yöntemlerini geliştirebilirsiniz. Etki alanını ve dilini öğrenmek için bu fırsatı kullanın - yazılım geliştiricileri ve istemci / kullanıcılar aynı dili konuşursa (ve istemci / kullanıcıların yazılım açısından konuşmasını beklemezse) iletişim kurmak son derece kolaylaşacaktır.

Hedeflerin ne olduğunu anladıktan sonra, sahip olduğunuz UI tasarım modelleriyle çalışmaya başlayabilir ve çeşitli ekranların birbirine nasıl oturduğuna bağlı olarak "ters mühendis" kullanım örnekleri ve bunlardan kullanıcı hikayeleri kullanabilirsiniz. Kullanıcı hikayesi formatı muhtemelen teknik olmayan bir kitle ile başa çıkmak için iyi çalışır. As a <user type>, I want to <action> so that <reason>Aynı dili konuşan geliştiricilerin ve müşterilerin / kullanıcıların elde edilmesi açısından çalışma biçimi . Bir kez kullanıcı hikayeleri başlayabilirsiniz, ben geliştirme için bir prototipleme yaklaşım benimsemek istiyorum.

Ben prototip kullanımı ile buna yaklaşacağımı düşünüyorum. Buna ya evrimsel bir prototipleme ya da atılabilir prototipleme perspektifinden yaklaşabilirsiniz, ama önce evrimsel bir prototipleme yaklaşımını düşünürüm. En rahat olduğunuz ve onayladığınız kullanıcı hikayeleriyle başlayın ve bunları uygulamaya başlayın. Bunları uygularken, müşteriden geri bildirim alın ve yeni kullanıcı hikayeleri geliştirin, vakaları kullanın ve yanlış anlamaları çözün.

Ayrıca, bunu "özelliklerin altında bir kullanıcı arayüzü uygulamak" olarak düşünmeyin. Bunun yerine, ince dikey dilimler olarak düşünün. Tüm kullanıcı arayüzünü aynı anda uygulamayın ve ardından özellikler hakkında endişelenmeyin. Bunun yerine, özellikleri ve diğer gereksinimleri tanımlamak için kullanıcı arabirimi örneklerini kullanın ve ardından kullanıcı arabiriminden iş mantığına ve veri depolama alanına kadar dikey bir dilim uygulayın. Bunu her dikey dilim için tekrarlayın. Ayrıca, gereksinimlere ve kullanılabilirlik ilkelerine dayalı olarak kullanıcı arayüzünü geliştirmek için önerilerde bulunmaktan çekinmeyin.

Yazılım Gereksinimleri ve Yazılım Gereksinimleri Hakkında Daha Fazla Bilgi için Karl Wiegers'ın iki kitabını okumanızı tavsiye ederim . Bunların bu alandaki gereksinim mühendisliği ve en iyi uygulamalarda size yardımcı olacağını düşünüyorum.


4
Sadece prototip yaparsanız, kullanıcı arayüzünün asla cilalanmış ve bitmiş görünmesini unutmayın, ekran finsih görünüyorsa kodlama ile bittiğinizi düşüneceklerdir.
HLGEM

@HLGEM Çok doğru, çok doğru. Aslında, daha önce bu sitede bu tavsiyeyi verdiğimden eminim.
Thomas Owens

1

Bu utanç verici bir başlangıç ​​referansı, ancak Wikipedia sizin ve kullanıcıların başlaması için bir yer olabilir. Bu şeylerle ilgili bir giriş olması, onları bunun acı değil, gerçek bir sorun olduğuna ikna etmeye yardımcı olabilir.

Daha spesifik olarak, maketlerden geçtikten sonra bile uygulamanın ne yaptığından şaşkın mısınız? Öyleyse, itiraf edin ve her formun hangi verileri göstermesi gerektiği veya nereden geleceği hakkında hiçbir fikriniz olmadığını açıklamaya çalışın, diğer ekranlardan veya harici verilerden mi?

Eğer varsa bazı fikir öyle ise? Şablon listesi tek bir küresel listesi olacak seçmek için olacak "(nasıl yapılacağını biliyorum veya Kullanıcı tarafından bunlardan herhangi vardır, ya da başka bir şey olmadığını şeylerin örneklerle gelip deneyin Kullanıcı tarafından değil iki kişinin aynı anda düzenlemesine izin vermeli miyim? Başka biri düzenliyorsa UI ne göstermelidir? Bunun için bir ekran var mı? Birisi ne için kullanılan şablonlar için bir şablon kullandıktan sonra şablon düzenlenirse bu değişiklik şablonla yaptıkları şeye yayılmalı mıdır? ").

Mevcut bilgi seviyenizle birlikte, geliştirme döngüsünün geri kalanı boyunca yaklaşık 90 saniyede bir cevaplanması gereken soruların ve bir cevap alana kadar çoğu zaman çalışmaya devam edemeyeceğinizi açıkça belirtin. Amaç, bir çeşit işlemin neden bu kadar kolay olduğunu açıklığa kavuşturmak olmalıdır. Ayrıca, KG'nin aynı bilgilere ihtiyaç duyacağını da belirtin, bu yüzden hepsini yazmak daha kolay olacaktır, böylece herkes için kullanılabilir ve kimse hiçbir şeyi unutmaz.

Yazdığınız kodlardan bazılarının bir seferde birden fazla ekranı etkilediğinden bahsetmek yardımcı olabilir, bu yüzden mümkün olduğunca çok cevap alırsanız, bu kodu uygun şekilde yazmayı ve daha sonra değiştirmek zorunda kalmanızı kolaylaştırabilir.

Eğer varsa hala gereksinimleri alamayan ve gerçekten, nasıl devam edileceğini biliyorum Daha fazla bilgi (yani gereklilikler) gerekir her zaman e-postalar göndermek ve yok size açıkça bu bilgileri, devlet olmadan çalışmaya devam edemez eğer maalesef çalışmaya devam edemiyorsunuz çünkü yazmanız gereken kod sorularınızın yanıtlarına bağlı olarak çok farklı olacaktır. Şikayet etmeyin, ne yapması gerektiğini bilmeden programı yazamayacağınızı çok profesyonel bir şekilde bildirin.


0

Uygulamadaki her alan için sınırları ve aralıkları bilmeniz gerekir. Örneğin, alan telefon numarasıysa +1 ile ilgilenmenizi bekliyorlar mı? Hangi alanlar zorunludur? Kullanıcı telefon # alanına "abc" yazıyorsa uygulamanın ne yapmasını istiyorlar? 25 ekranın tümü tüm kullanıcıların devam etmesi gereken sırada mı?

Aksi takdirde, her şeyi metin alanları olarak oluşturun ve işiniz bitti! Bir kurşun balon gibi devam edecek bahis ister misin?

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.