Bir yazılım parçası olan “Idiot Proofing” sürecini tanımlamanın daha güzel bir yolu nedir [kapalı]


13

Bana göre, Idiot Proofing, kullanıcının denemiş olsa bile bir yazılım parçasını kıramadığından emin olmak anlamına geliyor. Örneğin, bir değer bir metin kutusundan okunursa ve bir çifte dönüştürülürse, temeldeki yazılım aptal geçirmezse, kullanıcı çift olmayan bir değer yazdığında kırılmaz.

Geçenlerde bir geliştirme programı yazdım ve öğelerden biri "Idiot proof UI" olarak adlandırıldı. Bu yazılımı geliştirdiğim insanlar terime suçlu davrandılar, ancak bu terimin insanları nereden üzdüğünü görebiliyorum.

Bunu söylemenin güzel yolu nedir?


23
Arayın, ID-10T Prova
Jarrod Nettles

2
Lol, 1337'yi ID-10T'yi araştırırken fark ettim. beni başarısız ...
sooprise

13
Bu soru bana en sevdiğim alıntılardan birini hatırlatıyor: "Bugün programlama, daha büyük ve daha iyi aptal geçirmez programlar geliştirmeye çalışan yazılım mühendisleri ile Evren daha büyük ve daha iyi aptallar üretmeye çalışan bir yarış. Şimdiye kadar Evren kazanıyor. " ~ Zengin Aşçı
KallDrexx

3
temel mühendislik nasıl?
jk.

4
"Hiçbir şey kusursuz olamaz, çünkü aptallar çok ustaca."
M.Sameer

Yanıtlar:


27

Bir zamanlama öğesi olarak "Idiot proof UI" ekliyorsanız, daha sonra yazılımınıza kalite eklemeye çalışıyorsunuz demektir. İyi tasarlanmış herhangi bir sistem, girişlerini doğrulayacak ve kullanıcılara elbette net bir rehberlik sunacaktır, bu, zamanlamaya ayrı bir öğe olarak konan bir şey değildir (bu, kaçınılmaz crunch vurduğunda kaldırılmaya tabidir).

Alternatif olarak, ayrı bir öğe olması gerekiyorsa (bazı kuruluşların zamanlama hakkında nasıl düşündüklerini biliyorum), "Idiot proof UI", "Input Validation Library" olarak değiştirilmeli ve programın önüne taşınmalıdır.


2
+1. Aslında herhangi bir girdi doğrulaması eklemeye çalışıyorsanız, zaten çoktan kaybettiniz. Spesifikasyonda bir durma noktası olması daha iyi, "yazılım geçersiz girişleri her yerde zarif bir şekilde işlemelidir". Geçersiz girdinin tam olarak nasıl "incelikle" işleneceği, yazılımın o noktada ne yaptığına çok bağlıdır. Çok basit kullanıcı arayüzleri için (belki bir ATM düşünün), geçersiz girişleri imkansız hale getirmek bile mümkün olabilir .
CVn

14
+1. Idiot-prova yapmak bir görev değildir. Aptal geçirmez iyi tasarımın bir sonucudur.
S.Lott

4
Idiot-proofing devam eden bir süreçtir - çünkü evren her zamankinden daha ustaca aptallar üretmeye devam ediyor
Steven A. Lowe

Yanlış ve gereksiz gibi görünse de, hem arayüz tasarımcılarının hem de beta test kullanıcılarının yazılımın planlarını ve genel tasarımını bildiğini ve kendileri için mükemmel bir şekilde görünen bir şeyin aslında farkına varamayabileceğini (göz ardı edemeyeceğini) dikkate alın. tamamen ortak bir kullanıcıya şaşkınlık. "UI tasarım kararlarının test edilmesi ve hata ayıklanması" denilebilir. Giriş doğrulaması bir şeydir, kullanıcının ne girilmesi gerektiğini başka bir yerde anlaması gerekir.
SF.

Tüm yükselenler için: ... ne yaparsan yap, daima bir şeyler unutacaksın. Yazılım o kadar karmaşık ki, ilk çekimde her şeyi "mükemmel" yapan bir ekibe sahip olmak neredeyse ulaşılamaz. Bu yüzden test gerekli. Kusurları, eksiklikleri ve hatta kimsenin düşünmediği şeyleri tespit etmek. Böyle bir "aptal kanıtı UI" tam olarak gerekli olan şeydir.
dagnelies

10

Kullanıcı giriş doğrulamasının profesyonel bir terim olacağını düşünürdüm. Dahili belgelerde kullanılırsa aptal prova ile ilgili yanlış bir şey görmüyorum.


3
Beni "kullanıcı girişi doğrulaması" na getirdin. Idiot prova, nerede kullanılırsa kullanılsın profesyonel olmayan bir terimdir.
Robert Harvey

2
Ne yaparsanız yapın, yazılı olarak koymayın.
JeffO

6

Sertleşme iyi bir kelimedir. Birisi sorarsa, yazılımın ilk geçişinin genellikle ideal senaryolar için yazıldığını ve çelik aletler gibi, yazılımın gerçek müşteriler tarafından günlük zorlu kullanıma doğru "sertleştirilmesi" gerektiğini söyleyin.

Sağlamlaştırma bunun için başka bir iyi kelimedir - kodu, gerçek müşterilerin attığı zorluk türlerine karşı sağlam hale getiriyorsunuz.

Her iki kelime de havalı ve endüstriyel geliyor, kullanıcıları veya programcıları suçlamayın ve konuyu anlatın.


BTW, İşte Metrowerks'in eski maskotu Arnold, Mac programcılarının bize yardımcı olan ve ısıl işlem fırını, dövme ve örs ve küçük kızak çekiçle kodumuzu sağlamlaştırıyor ve sağlamlaştırıyor:


sertleştirme genellikle altta yatan donanımın hata toleransı veya gama ışınlarına direnç anlamına gelir ;-) sağlamlık birçok şey anlamına gelebilir
Steven A. Lowe

@Steven: Evet, evet. Ancak bu, muhtemelen teknik olmayan bir kitle ile iletişim içindir ve soru gerçekten de görevi nasıl "döndüreceği" ile ilgilidir, bu yüzden bu insanlar için lezzetli olur.
Bob Murphy

mantıklı; teknik olmayan kitleler muhtemelen 'sertleştirilmiş' dizüstü bilgisayarlar için TV reklamları görmüşlerdir. Bu yüzden, yazılımınızı 3 feet betona bırakmanın uygun olduğunu düşünecekler ;-)
Steven A. Lowe

@Steven: Evet, ve en yeni Toshiba dizüstü bilgisayar reklamını görmüşlerse, yazılımı sertleştirmek için size zaman ve kaynak vermezlerse, Zombie Apocalypse'ı getireceğini anlayacaklar. B ^)
Bob Murphy

4

Savunma Programlama

Bana öğretilen şey bu. Kendi bitlerimizi ağaçtan eritmek zorunda kaldığımızda.

PC olmak istiyorsanız, buna "öngörücü" programlama deyin.


4

Öğrenirken kurşun geçirmezlik dedik .

Yine de okuduğum diğer örtmece şeylerin çoğu da geçerli.


3

"Hataya dayanıklı" sistem veya kullanıcı arayüzü hakkında ne dersiniz?


3

"Idiot prova" her ikisinden de oluşmalıdır

  • Kullanıcı arayüzünü kullanıcı dostu olacak şekilde tasarlar ve kullanıcının programcıların beklediği şekilde veri girmesine yol açar ve

  • beklenmedik veri değerleri girerek arayüzün kırılıp kırılmayacağını belirlemek için kullanıcı arayüzünün test edilmesi.

Her iki adım da, tasarımın bir kullanıcı deneyimi uzmanı tarafından denetlendiği ve geçersiz verilerin doğru bir şekilde (uygulamanız için ne anlama geldiği için) ne anlama geldiğinden emin olmak için teslim edilen kodun bir test kullanıcısı tarafından denetlendiği geliştirme programında makul bir şekilde görünebilir.


Sorulan soruya cevap vermediniz.
Robert Harvey

@Robert - Yaptığımı düşünüyorum. "İdiot provası" demenin en güzel yolu, "idiot provası" anlamına bağlı olarak "kullanıcı dostu olma özelliğini geliştirmek için tasarımı gözden geçirin" veya "arayüzün geçersiz verileri işlediğini test edin" dir.
Justin Cave

Tamam, bu mantıklı.
Robert Harvey

2

Idiot-prova, basit giriş doğrulamasından çok daha fazlasını içerir. Tanımına böyle bir şey bile eklemezdim.

Giriş doğrulama, yasadışı / saçma değerleri ortadan kaldırmak için kullanıcı verilerini sterilize ettiğiniz ve doğruladığınız bir işlemdir. Bu, her zaman programınızın dışından gelen herhangi bir bilgi ile yapılmalıdır, böylece bariz olanı ortadan kaldırmak ve kendinizi saldırılara karşı korumak (örneğin sql enjeksiyon saldırıları).

Aptal korumanın, kullanıcının yanlışlıkla başka türlü yasal yollarla kendisine büyük zarar vermesini önlemek için bir mantık seti olduğunu düşünürdüm.

Örneğin rm, komutu reddetme rm -rf /ve varyantları kapatmanın doğrulama veya doğrulukla ilgisi yoktur. Bu tamamen geçerli bir komut. Ne yazık ki, Unix / Linux'taki tüm disklerinizdeki tüm verilerinizi silebilen ve silebilen bir komut. Bunu kanıtlamak için aptal bu komutu reddeder ve rm -rf --i-really-mean-this /etkileşimli modda, kullanıcının uyarıdan sonra olumlu bir yanıt yazmasını önerir .

Sisteme zarar veren her şey aptal geçirmez olmalıdır. Potansiyel utanmaya neden olabilecek herhangi bir şey de aday olabilir (ör. "Metninizde belirtmiş olsanız bile bu e-postayı ek olmadan göndermek istediğinizden emin misiniz?" Ve "bu e-postayı tüm şirket? ")

İdiot-prova, QA (en iyi aptal olmaya çalışıyor) ve Geliştirme (tüm bu senaryoları tahmin etmeye ve onların etrafında tasarlamaya çalışıyor) arasındaki bir işbirliğidir.

Daha kolay bir eşanlamlı olarak, "yıkıcı kod yolu analizi" veya "kritik işlemler için kullanıcı geri bildirimini etkinleştir" i önerebilir miyim. Ne derseniz deyin, tasarım sürecine mümkün olduğunca erken başlamalısınız.


1

"Akıl Sağlığı Kontrolü" oldukça sık çalışma eğilimindedir ...


3
Benim için "akıl sağlığı kontrolü", "iddia" ile aynı anlama gelir: iç durumun doğru olduğundan emin olmak. Harici giriş doğrulaması ile aynı şey değildir.
Mason Wheeler

@Mason, bunun mantıklı geçerli girdi için sistemin durumunu her noktada kontrol etmek olduğunu düşünüyorum. Örneğin, çöp girişini kontrol etmenin yanı sıra, bitiş tarihinin başlangıç ​​tarihinden sonra olduğunu kontrol etmek de bakış açınızı görüyorum ve sizinle aynı fikirdeyim.
Marlon


1

"Hata işleme" veya "giriş doğrulama", açıkladığınız şey için kullanacağım diğer terimler olabilir. Kurşun geçirmez, bazı çevrelerde kullanıldığını görebildiğim başka bir terim olurdu, çünkü burada fikir, yazılımı neredeyse her şeyi işleyecek kadar sağlam hale getirmektir. Kaya katı, burada da kullanmak isteyen birinin hayal edebileceğim başka bir argo ifade olurdu.


1

Msgstr "En kötü senaryo yazım denetimi". Çünkü, geliştiriciler olarak, hepimiz biliyoruz ki eğer yapılabilirse, o zaman yapılacaktır . Bu nedenle, yazılımınızla ilgili en kötü senaryo durumunu ele almaya hazır olmalısınız.

Güvenlik önlemleri, kullanıcıları dış siber istilalara karşı korumanın bir yolu değil, aynı zamanda kendilerine karşı da bir yöntemdir. Kusurlu kullanıcılar ile kusursuz bir dünyada yaşıyoruz.


1

Altın kaplama , son kullanıcı arayüz deneyimini herhangi bir şekilde (GUI veya diğer) geliştirmek için konuşurken kullandığım kibar (ve çok olumlu bir sondaj) terimidir .

İdiot-prova, dediğin gibi, tasarım veya iş akışı iyileştirmeleriyle birlikte bu sürecin en büyük parçasıdır (son kullanıcı geri bildirimlerini onayla).

Buradaki fikir, bu terimi çalışma ortamında özgürce kullanabilmeniz ve bunun hem yönetim hem de kullanıcılar tarafından değerli bir süreç olarak (bir kez tamamlandığında) görülebilmesidir, ancak biraz zaman alabilir (ve genellikle biraz paraya mal olur).

Bu (genellikle döngü sonu) süreçle ilgili diğer birçok terim, bu işlem gibi görünmesini sağlar:

  • kullanıcıları ima eder (genellikle yönetim ;-) aptal
  • başarmak zor
  • çok az net değeri var

Altını süreçle ilişkilendirerek (metal genellikle "maliyet" yerine "değere" eşittir), sürecin bazı yöneticilerin zihniyetlerindeki harcamadan yatırıma dönüştüğünü gördüm.

Bu açıkça yapılana kadar, bu hantal çelik parçanın henüz mücevher olmadığını açıkça belirtmek gibi. Ama bir kez kaplandığında ... o zaman değerli.


Bu terimin kitleniz için nasıl çalıştığını görüyorum. Çoğu yönetici için, altın kaplama projeden kesilen ilk şey olacaktır. Başka bir deyişle, gerekli olmayan parçalar.
Gilbert Le Blanc

Tek - "Altın kaplama" terimini, hiçbir fonksiyonel gelişme sağlamayan bir şey yaparak zaman kaybettiğiniz anlamına gelir . Vb geçerli girdileri sağlamak yapar teklif fonksiyonel iyileşme ve (benim tanımı gereği) bu nedenle altın kaplama değil.
ChrisF

detay, altın kaplamanın yazılımın iç kısımlarını iyileştirmemesidir. sadece dış görünüşünü geliştirir. Bunu, teknik olmayanlar söz konusu olduğunda, döngü sürecinin sonunun belirli bir kısmı ile ilgili olmadığı için kullanıyorum. İnsanlar altın kaplama yapıldıktan sonra güzel, kullanımı kolay ve katma değer olarak anlıyorlar. bu sadece bir yazılım değil.
moliad

Deneyimlerime göre, altın kaplama normalde gereksiz özelliklerle yüklü yazılımı , yani bloatware ile eşanlamlı olarak tanımlamak için kullanılır .
Mark Booth

Evet, biraz araştırma yaptık ve terimin bazen edebiyatta bu şekilde kullanıldığını gördüm (yorum için teşekkürler). Komik olan şey, çalıştığım birçok yerde, salak prova bu anlamda altın kaplama olarak kabul edildi (Sanırım yaptığınız işin türüne bağlı).
moliad

1

Çoğu zaman üretim süreçleriyle ilgili olarak kullanılır, ancak gerçekten iyi bir uyumun Poka-Yoke olduğunu düşünüyorum :

"[poka yo-ke]," başarısızlıktan koruma "veya" hata koruma "anlamına gelen Japonca bir terimdir

Başlangıçta baka-boyunduruğu olarak tanımlandı, ancak bu "aptal-prova" (veya "aptal-prova") anlamına geldiği için adı daha hafif poka-boyunduruğu olarak değiştirildi.

Daha geniş bir ifadeyle, terim, kullanıcı tarafından yanlış çalışmasını önlemek için bir ürün olarak tasarlanmış herhangi bir davranış şekillendirme kısıtlamasına atıfta bulunabilir. "


1

Daha büyük mağazalarda ortak bir terim de Kalite Güvencesi'dir (QA) .

Bu, serbest bırakma döngünüzde kendi özel anlamınıza göre kalıplayabileceğiniz genel, belirsiz bir terimdir.


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.