Formal UML'yi ne sıklıkla kullanıyorsunuz?


33

Sistemi sık sık tasarlamak ve açıklamak için geçici MUML (tamamlanmış modelleme dili) kullandım. UML'ye benzer ve oldukça iyi anlaşılma eğilimindedir.

Ancak, olabildiğince spesifik olana yakın, katı, resmi UML kullanımıyla ilgilenen bir ya da iki profesörüm vardı. Sıkı UML'nin iddia ettikleri kadar yaygın olmadığından şüphelendim. Öyleyse ne kadar sık ​​- ne kadar sıklıkla tüm doğru çizgi sonlarını, çokluklarını, üye tipi sembollerini vb. Kullanan tam diyagramlar çiziyorsunuz?


9
Harika soru Profesörünüzün tutumu muhtemelen üniversitede öğrenilen bazı beceriler ile “gerçek” dünyada gereken beceriler arasındaki bağlantının kesilmesinin bir belirtisidir.
Paddyslacker

@Paddy, eğitimin amacı (özellikle “profesörlerin” öğretimi yaptığı yerlerde) yalnızca gerçek dünyanın gerektirdiği becerileri kullanmak değildir.
P,

3
Prensipte haklısın @Pavel, ama konuya girmeme riski altında, amacımı netleştirmek istiyorum. Muhasebede derecesini güvenemeyen hiç kimse olduğunu sanmıyorum, ama Bilgisayar Bilimi derecesine sahip olan ve kodlayamayan insanlar var. Bu konuda Stack Overflow hakkında birkaç soru var. Haklı ya da yanlış, çoğu zaman mezun istihdam eden işverenlerin beklediği beceri seti ile mezunların kolejden haberi ne bıraktıkları arasında bir bağlantı kopukluğu vardır.
Paddyslacker

1
@paddy Computer Science! = Yazılım Mühendisliği Her ne kadar kodlayamayan çok sayıda CS notuna dikkat çekiyorum, programlama mutlaka Bilgisayar Biliminin odağı değil.
George Marian

5
@ George Marian: Efsane. Programlama ve yazılım geliştirme CS derslerinde verilmektedir. "Cs! = Se" demek, doğru öğretmemek için yarı-eşli bir bahanedir.
Steven Evers

Yanıtlar:


45

Asla.

Geçen oluşturulduğundan bu yana Heck, yıllar oldu herhangi UML. Beyaz tahtalardaki ve kağıt artıklarındaki çizgi diyagramları sayılmaz.

Aslında, tek UML sorusunu röportajlar sırasında kullandığımız kılavuzdan yeni çıkardık, çünkü hiçbirimiz cevapları gerçekten önemsemedik.


+1 Tamamen katılıyorum. Muhtemelen kendimi jinxing yapıyorum ve bir sonraki müşterim dokümantasyonda resmi UML talep edecek!
Paddyslacker

2
Bence gayri resmi UML odadaki herkes tarafından anlaşıldığı sürece, hangi sembolleri kullandığınız önemli değil.
Richard,

4
+1 Anladım. En son ne zaman herhangi bir UML kullandığımızı hatırlayamıyorum. Çok fazla zamana ihtiyaç var ve çok az iade, yatırım getirisi yok.
Walter

3
UML, kendi programlama dili olma yolunda ilerliyor gibi görünmektedir (çünkü bazı sistemlerdeki diyagramlardan crappy kod üretebilirsiniz). Evangelize olan insanlar genellikle tüm zamanlarını teoride ve uygulamada çok az harcayan mimar astronotlardır. Şahsen, kod yazmayı tercih ederim çünkü daha hızlı ve daha az sıkıcı.
Evan Plaice

1
@Evan: sorun , sistemi gerçekten üretebilecek kadar doğru bir model için gerekli olan ayrıntı miktarının sistemin karmaşıklığına yaklaşmasına neden olduğunu ve pratik yapmamasını sağlar . Elbette her zaman astronotlarınız gibi , simülatörlerinde temsil ettiği dünyadan ziyade yaşamayı tercih eden insanlar vardır .
Shog9

14

Sadece kendimin veya bir başkasının sistemi veya alt sistemi uygulamasına izin verebilmek için, hem diyagram türlerine hem de diyagramdaki bilgilerin içeriğine göre yeterli UML kullanıyorum. Ve UML'yi kullanmamın tek nedeni, her biri çok özel bir şey ifade eden yaygın olarak bilinen bir semboller dizisidir, yani belirsizlik yoktur - herhangi bir yazılım mühendisi şemaya bakabilmeli ve hakkında ne söylemeye çalıştığımı anlayabilmelidir. sistemi.


11

İronik olarak, UML'nin esnek olması gerekiyordu.

Gerçek dünyada, bunu yaparken bir bilgiçlik egzersiz olması gerekiyordu değil bir doğru yolu. Bir sistemi / süreci / fikri etkin bir şekilde iletmek ve belgelemekle ilgilidir.

Sorunuzu cevaplamak için diğerleriyle beraberim. Tamamen açık, resmi UML'yi hiç kullanmadım.


6

Kod iskeletlerinin tamamını (çoğunu) Rational Rose'dan üreten bir ürün için yaklaşık dört yıldır UML'yi çok düzenli kullandım.

Son beş yılda, çoğunlukla yerinde keşfedilen ve genelde genel fikri ortaya çıkarmak için yeterli sayıda “kutu ve ok” vardı. Bu süre zarfında UML'yi yalnızca birkaç kez resmi olarak düzeltin.


Gerçekten mi??! insanlar aslında bu özelliği kullanıyor mu?
ozz

2
"Kullanılmış". Geçmiş zaman.
FeatureCreep

4

Ancak, olabildiğince spesifik olana yakın, katı, resmi UML kullanımıyla ilgilenen bir ya da iki profesörüm vardı.

Profesörünüze, bu yaklaşımı gerçek bir sistemde en son ne zaman kullandığını sorun. Ciddi anlamda.

UML'ye gelince mümkün olduğunca resmi olmaya çalışıyorum, ancak yalnızca / mantıklı olduğunda. Spektrumun her iki tarafında bulunan kovboylar (kovboylardan gergin formalistlere kadar) bunu anlayamıyor.

Daha az katı bir yaklaşımın (şahsen kullandığınız gibi) izlenecek en iyi yaklaşım olduğu bağlamlar vardır . İyi bir örnek, gereksinimlerin küçük ve tam olarak tanımlanmadığı küçük sistemler veya değişiklikler içindir; Sorumlu grup verimli ve etkilidir; onu çıkarmak, mükemmel almaktan daha önemlidir. Yinelemeli olarak yapılır ve bazı eksiklikler kabul edilebilir.

Ya da belki de tam resmi bir modelleme aşamasına karşı konuk ağırlama ve çizim yaptığınız bir aşamadasınız. Bunlar akla gelen örneklerdir.

Diğer zamanlarda, katı bir resmi UML yaklaşımına ihtiyacınız vardır. Örneğin, sözleşmeye bağlı olarak bağlı olabilirsiniz; birden fazla takımda çok sayıda geliştiriciniz var (muhtemelen dağılmış); Projenin kapsamı yıllar içinde olabilir; çok büyük bir sistemdir (yazılım ve donanım bileşenleri dahil); başarısızlık maliyeti yüksek, vb.

Diğer zamanlarda UML'ye ek olarak / bunun yerine başka bir şey kullanmanız gerekir (petrikler, CSP veya zamansal mantık gibi gerçek matematiksel resmi modeller.) Bunun örneği, gerçek zamanlı sistemler, arızaların felaket olduğu sistemlerdir (tıbbi cihazlar) veya sözleşmeye bağlı olarak nereye bağlıysanız (.ie. ulaşım sistemleri geliştirirken Avrupa'da olduğu gibi)

Her şey koşullara ve her bir yaklaşımdan ne kazanmayı umduğumuza bağlı. Formata bağlı kalmaktan korkan bir profesör, sadece kör bir zealot olmaktır. Mühendislik dünyası siyah-beyaz, doğru / yanlış bir ikilik değildir. Bu akıllı ticaret dünyasıdır.

Rahat ve gayri resmi bir modeli, işi yapmak için etkili ve uygun bir şekilde kullanacak kadar akıllıysanız, o zaman öyle olsun. Aynı şekilde, ne zaman tanıması beklenmektedir DEĞİL gayrı yaklaşım ve / veya kullanılacak DEĞİL resmi bir birini kullanmak.

Bunu söyledikten sonra, profesörlerle kulaklarıyla oynamak zorunda. Onlara bir sınıf vermeleri için onlara bir kemik verin ve bu en sonunda onların zealot mantralarına boyun eğmek anlamına gelirse, sorun değil. Sizin için neyin işe yaradığını bilirsiniz ve umarım, gerçek dünyada ne ve nasıl kullanılacağını bilirsiniz.


3

Doktora araştırmamın bir parçası olarak, deneyimli tasarımcıların UML'yi tasarım işbirliğinde (yapay ortamlarda da olsa) nasıl kullandıklarını araştırdım.

Bulgularım, UML metaforlarının ve notasyonların ödünç alındığıydı, ancak araçların kesinliğine çok az bağlılık vardı.

Daha sonra, bazı modeller kod oluşturma amacıyla zorlu bir CASE aracı kullanıldığında, sıklıkla daha katı UML'ye dönüştürülebilir.

Elbette akademik araştırmanın uyarıları da geçerlidir :)

Kağıdın özeti ve kağıdın bağlantısı (ACM erişiminiz yoksa) .

Bunun dışında Ambler's "Agile Modeling" i tavsiye ederim.


1

Hazırda bekletilen bir ORM'nin kod oluşturması için resmi UML kullanıyoruz. Diğer birçok şey gayri resmi veya beyaz tahtadır. Bu bizim için sadece kod oluşturmada önemlidir, çünkü formalite eksikliği onu kıracaktır.


1

İçinde bulunduğunuz sektöre göre değişir. Sık sık teknik incelemeler gerektiren müşteriler için çalışıyorsanız (örn. PDR, CDR vb.) O zaman geçici gösterim sistemleri yerine bir çeşit standardizasyonu tercih ederler. Özellikle hükümet işi. Yanlış anlaşılmayı ve icat ettiğiniz gösterimin ilk 15 dakikalık açıklamasını önler.

Ayrıca, UML kullanmanız, her i'yi işaretlemeniz ve her t'yi standarda göre geçmeniz gerektiği anlamına gelmez. Sadece bir çeşit otomatik kod oluşturma / yürütme yapmak istiyorsanız. Bunu 1'den fazla proje için yapan kimseyi tanımıyorum.

Öte yandan, yalnızca şirketiniz için kendi geliştiricilerinizin bir ekibiyle çalışıyorsanız, hangi notasyonu kullandığınızı önemseyen. Bununla birlikte, doğru aracı seçerseniz o zaman gerçek bir zaman tasarrufu olabilir.

Tüm söylenenlerle, UML kullanarak tasarım yapamadan bazı endüstrilerde uğraşmakta zorlanacaksınız. Diğer endüstrilerde asla göremezsiniz.

Ayrıca, tasarımın doğru olmasını gerektiren bu endüstriler arasında bir korelasyon bulacağınızı düşünüyorum çünkü düzeltme maliyetleri UML'nin ağır kullanıcıları olarak aynıdır; tasarım düzeltmelerinin maliyetinin, dokümantasyon / kod değişikliklerinden çok daha az olduğu endüstrilere karşı UML'nin muhtemelen hiç kullanılmadığı yerler olarak değişir.

Orijinal soruya gelince. Çoğu kolej, öğrencilerini en sık işe alan şirketler için öğrencilerinin eğitimini artırma eğilimindedir. Profesör, UML'nin önemli olduğunu düşünüyorsa, o zaman okulunuzdan işe giren işletmelerin çoğunun UML kullanması beni şaşırtmaz. Bu yüzden kullanmayı öğrenmelisin.


0

UML'yi okuduğumda bunu C ++ kursumda çözdüğüm tüm problemlerde denedim. Neyse ki denediğim ilk örneklerden biri, bağlantılı bir liste tanımlamaktı.
İşe yaramadı.
Bununla birlikte, iyi bir modelleme süreci olan UML ile birleştiğinde faydalıdır. Sırf daha iyi ya da daha kötü bir standart için.
Şablon meta programlamanın tanım dilini görmek isterim. Bunun <<<>>> -land'da neler olup bittiğini anlamada çok yardımcı olacağını düşünüyorum.


0

Model Driven geliştirmeyi de denerseniz UML acı verir. Yani, UML sadece çok kullanışlı bir grafik gösterimidir ve her şey işe yaramaz. Projelerimin yapısını oluşturmak için modellemeye harcamıyorum ama her gün UML kullanıyorum. Yaptığım şey, gereksinim seviyelerinde hızlı bir şekilde temel bir usecase diyagramı çizip hemen sınıf diyagramlarına geçmek. Usecase ve sınıf diyagramları arasında gereksinim izlenebilirliği ekliyorum. Sınıf diyagramım da canlı senkronize olduğundan kod yaratıyor. Koddaki etiket, tüm modellerin Java projesine eşlenen UML modelinde kaydedilmiştir.

Uygulamamın iskeletini birkaç sınıf diyagramı ile oluşturup koda geçiyorum. Bir kez kod bitince, model ile birleştiririm. Kod ve modelin çalıştığı kod arasında bir tür yinelemedir. Bu yüzden, sınıf diyagramlarım bana daha yüksek bir soyutlama düzeyi ve kodumu verirken, kodum bana iş mantığı uygulaması (örn. Yöntemler) verir.

UML modellemesi günde 10 dakikadan az sürüyor, bu da neyi geliştirmem gerektiğini ve nasıl geliştirmem gerektiğini düşünmek için zamana ihtiyacım olduğunda yapılır.

UML harika, harika ve gerçekten kullanışlı ama model odaklı bir gelişme işe yaramaz !!


MDD'nin faydasız olduğuna katılmıyorum. Başarılı olduğu birkaç projede çalıştım. Çalışması için belli bir iş bağlamı gerektirir. Yazılım mühendisliği hakkında her durumda etkili bir şekilde uygulamak için yeterli bilgimiz yok.
luis.espinal

0

Uyguladığımız bir sistemi belgeliyorsam, tam resmi UML ile yerleştirmeye çalışırım. Ama zamanın geri kalanında, sadece fikri anlamak için gereken kadarını kullanırım. Son zamanlarda tasarladığımız sistemlere daha uygun göründüğü için kendimi UML'den daha fazla DFD kullanarak da buluyorum.


0

Aşırı derecede zaman alan görsel modelleme etkinlikleri, forum işleri, bilgisayar ortamında yetişen veya hiç düşünceli bir şekilde eğlendiren çok fazla yedekli yumuşak yetenekli şeyler konusunda katı ısrarları nedeniyle sözde birinci sınıf kolejimden (en azından geçici olarak) ayrıldım. Bir kullanıcı arayüzüne doğru, yeterince derinleşecek ve bunun için borçlanmanın derinliğine düşme düşüncesi, bir şeyi mutlak hayal kırıklığı içinde kırmak isteyecek hale getirecektir.

Giriş seviyesi ve genç seviyedeki işleri gerektiren işleri görmek için ne gördüğümü öğrenmek ve CES'in üniversitenin ABET akreditasyonu için neyin belirlediğini öğrenmek arasında seçim yapmak zorunda kaldım; bu, karar vericilerin zaman kısıtlamaları ve gerçekçi olmayan beklentilerle ilgili göze çarpan sorunlar olduğunda aptalca davranmalarına neden oldu. PERT değerlendirmesinde ortaya çıkar. Üniversite öğrettiği şeyi yapmıyor.

Bana göre, Birleşik Süreç'in çok fazla yararı var, ancak tüm modelleme dili biraz saçma olan görsel eserlerin basılması uygulamasının tamamı. Word, Workflowy, Evernote, OpenOffice ile üretilebilecek sıralı bir liste içeren veya bir kelime işlemcisinin adı gibi yinelemeli bir şekilde düzenlenmiş bir belge, Birleştirilmiş İşlem için gerekenleri mükemmel bir şekilde ispatlayabilir. Bu düz jane, sürüm kontrollü, birden fazla kullanıcı tarafından kolayca çalıştırılabilir ve eğer bir takım doğru aleti seçerse bir ekip aynı anda üzerinde çalışabilir. Bu, UML'nin orduları birleştirmek için gerekli bir mod gibi göründüğünden çok daha kolay bir şekilde yapılır.


Bu yazı okumak oldukça zordur (metin duvarı). Sakıncası var düzenleyebilir daha iyi bir şekle ing?
tatarcık

1
Evet. Metin duvarı. Yeterince adil.
JLG
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.