Geliştirme öncesinde modern uygulamaların modellenmesi için standart nedir?


9

Kurumsal düzeydeki ilk uygulamamı alıyorum ve ekibimin bir kod satırına bile dokunmadan önce tüm ASP.NET MVC C # uygulamasını modellemesini istiyorum.

GÜNCELLEME: Bu, bir başvurunun ne zaman belgeleneceği / modelleneceği hakkında felsefi bir tartışma olarak tasarlanmamıştır. Lütfen yalnızca dokümantasyon / modelleme için "nasıl" yanıtları verin.

Gerçek şu ki, bu departmanda her zaman eksik kaldım ve daha önce hiç bir uygulamayı modellenmemiştim. Bunu yapmanın standart yolu nedir? Ne tür diyagramlar kullanılmalı ve belgeler neye benziyor? Örnek diyagramlara ve belgelere bağlantılar takdir edilmektedir.

Arama yaparken net etrafında birçok şey bulabilirim ama bunu nasıl yapacağım konusunda güncel bir modern fikir birliği olup olmadığını görmek istedim.

Şimdiden teşekkürler!

Kapanış Bildirimi

Bunun bu kadar yapışkan bir konu olduğuna dair hiçbir fikrim yoktu. Açık tartışmaları bir kenara bırakan ve faydalı cevaplar verebilen hepinize teşekkür ederim. Az söylemek ilginç bir tartışma oldu :)

Keşfettiğim bir başka yararlı bağlantı şudur: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519


6
Şelale mi yapmak istiyorsun?
Etienne de Martel

1
@Etienne, şelale? Bu bir çeşit sinsi referans ise, onu almıyorum. Yapıcı eleştiri / öneriler takdir edilmektedir. Yararsız bir yorumu yükseltmek yerine, sorunu anlamama yardımcı olmak için kendi yorumlarınızı eklersiniz.

6
"Ekibimin bir kod satırına bile dokunmadan önce tüm ASP.NET MVC C # uygulamasını modellemesini istiyorum." Bunu söylemekten nefret ediyorum, ama başlamadan önce neredeyse kendini başarısızlığa adamışsın . Kullanılabilirlik, kullanıcı gereksinimleri ve bakımın tam kapsamı, aslında kod yazmaya başlayana kadar tamamen görünmezdir; önde büyük bir tasarımda ısrar ediyorsanız, tasarımlarınızı güncellemek için başvurunuzu yazmaktan çok daha fazla zaman harcayacaksınız. Üst düzey tasarımlar iyi , ancak tüm uygulama belgeleniyor mu? Kesinlikle hayır.
Juliet

3
@Chevex: Şelale, çok sayıda ön tasarım içeren bir geliştirme yöntemidir. Yazılım geliştirme topluluğunda, bu geliştirme yönteminin en iyi sonucu vermediği kabul edilmektedir.
quentin-starin

1
touche @Chevex, touche ... sessizce yürüyor
mcgrailm

Yanıtlar:


6

mevcut modern bir fikir birliği

Gerçek şu ki: şu anda, modern yazılım geliştirmenin eksik olduğu bir şey - modelleme konusunda bir fikir birliği. UML bir tür en küçük ortak bölen gibi görünüyor, ancak gerçekte anlambilim hakkında değil, yalnızca gösterim hakkında fikir birliği var. Kod oluşturmak için UML'nin nasıl yorumlanması gerektiğine dair düzinelerce farklı görüş vardır (belki ekibiniz için uygun bir yorum bulabilirsiniz).

Öte yandan, "resmi modeller yapma, daha iyi çalışma kodu yazma" diyen "çevik" insanlar ile "" büyük ön tasarım) " MDA "(model güdümlü mimari) çözümdür.

Diğer insanlar UML için alternatif olarak modern yazılım tasarımı için akış tabanlı programlamayı keşfettiler. Bununla ilgili daha fazla bilgi edinmek için burayı ve burada okuyun .


Harika Scott! Bu şu ana kadar bu sorunun en mükemmel yanıtı. Endüstride ve bulunduğu yerde modellemeye güzel bir özlü bakış. Teşekkürler doktor! +1,21 jiggawatt!

7

Ekibimin, hatta bir kod satırına dokunmadan önce tüm ASP.NET MVC C # uygulamasını modellemesini istiyorum

Genelde böyle bir yaklaşımla bulduğum sorun, çözüm hakkındaki anlayışımın başlangıçta her zaman eksik olmasıdır. İş ilerledikçe, son bir çözüme ulaşmam sadece arıtma yoluyla olur.

Herhangi bir koddan önce (tüm uygulamaların en basitleri hariç) tüm uygulamayı önde tasarlamaya çalışmak genellikle saçmadır.

Her sınıfı, yöntemi ve veri yapısını önceden ayrıntılı olarak düzenleyebileceğinizi gerçekten düşünüyor musunuz?

Sadece bazı iyi modelleme çözümlerini bilmek istiyorum.

Model yapmak için gerçek araçlara gelince, birkaçını denedim ve her zaman Microsoft Visio'ya geri döndüm.

Denediğim tüm ürünler arasında en basit ve aslında istikrarlı görünüyor (modelleme araçlarıyla ilgili deneyimim çok buggy olmaları ). Adil olmak gerekirse, çok az modelleme yapıyorum, bu yüzden bu tavsiyeyi bir tuz tanesi ile alın.

DÜZENLEME: Aslında, modellememin çoğunun masamın üzerinde oturan bir not defterinde yapıldığını söylemeliyim. Çünkü çok az modelleme yapıyorum, onu hafif tutmaya ve noktaya getirmeye çalışıyorum. Kalem ve kağıtla diyagram çizmek benim için yazılım kullanmaktan çok daha verimli.

Elle yazılmış diyagramları, bir diyagram yazılımına yerleştirmeden önce fikirlerinizi oluşturmak için faydalı bulabilirsiniz.

Ne tür diyagramlar kullanılmalı ve belgeler neye benziyor?

Bugünlerde modellediğim şeylerin çoğu etkileşim diyagramları. Yine, çok fazla modelleme yapmıyorum - sadece modeli çizme egzersizinin gerçekten hissettiğim yerde anlayışımı sağlamlaştırmaya yardımcı oluyor.


Modellememizi gittikçe ayarlayabiliriz. Zaten mesele bu değil, sadece bazı iyi modelleme çözümleri bilmek istiyorum.

Böylece modellerinizi ve kodunuzu senkronize tutmaya çalışıyorsunuz. Bu çoğu için işe yaramaz. Kaçınılmaz olarak ayrılırlar ve tutarsızlıklar sorunlara neden olur. Artı denemek için büyük miktarda zaman harcayacaksınız
quentin-starin

Lütfen güncellenmiş soruyu okuyun.

@Chevex: Düzenlenen sorunuzla ilgili elimden gelen her şeyi ekledim.
quentin-starin

@qes, demek istediğim, sormak istemediğim bir soruya cevap veriyorsunuz. Sorunun "GÜNCELLEME" bölümüne bakın.

3

UML diyagramları başlamak için iyi bir yerdir, bunu ücretsiz veya ücretli yazılımlarla yapmanın birçok kolay yolu vardır. Bir UML yapmak için basit bir araç örneği, google dokümanlar çizimleri gibi bir şeydir, daha gelişmiş paketler Visio veya OmniGraffle olacaktır.

DÜZENLEME: Birçokları tarafından belirtildiği gibi, UML yoluna inecek olsaydınız, bu her şeyi tam olarak modellemeniz gerektiği anlamına gelmez, ancak modellediğiniz şey ve modellerin ne kadar ayrıntılı olması gerektiği konusunda fikir birliğine varabilirsiniz. olmak. Basit UML diyagramları genellikle kodunuzu yazmadan önce düzenlemenize ve bazı olası sorunları ortaya çıkmadan temizlemenize yardımcı olabilir.


UML'yi duydum. Başlamak için bir yer için öneriniz var mı? Tavsiye ettiğiniz iyi araçlar var mı?

@Chevex - hızlı bir google araması yaptı ve bunu buldu: agilemodeling.com/artifacts/classDiagram.htm İyi bir başlangıç ​​noktası gibi görünüyor
Brett

@qes - Böyle bir yolda ilerlemek için ne kadar zaman / ilgi / yatırım olduğuna bağlı olarak, hem iyi bir öğrenme deneyimi olabilir hem de yazmadan önce kodunun bazı kısımlarını anlamasına yardımcı olabilir ( sadece basit bir UML) ... Ama katılıyorum, muhtemelen bunu yapmak için yeterli zamana ve kişisel ilgiye sahip olmalı.
Brett

@ qes, lütfen güncellenmiş soruyu okuyun.

2
@Chevex - Büyük olasılıkla şema türleri ve neyin iletişim kurması gerektiği hakkında biraz okuma yaparak başlamak istersiniz. UML, çok açıklayıcı olabilen, aynı zamanda birçok nüansı olan bir modelleme dilidir. Özetle UML bana biraz yardımcı oldu ( oreilly.com/catalog/9781565924482 ). Bu genellikle tam diyagram setinin ayrıştırılmış sürümleri ile alabilirsiniz. Diyagramları oluşturan insanlar ve diyagramları okuyan insanlar ne anlama geldiklerine katılıyorlar.

2

@Brett'in önerdiği gibi, UML diyagramları en iyisidir. UML ile Sınıf diyagramlarına ve iş akış diyagramlarına sahip olmak iyidir. Bu ikisi tasarım ihtiyaçlarının çoğunu karşılayacaktır.

Sınıf diyagramı ile her bir varlığın üyelerini, güvenlik seviyelerini vb.

İş akış şeması ile hangi yöntemi çağıracağını, iş akışının sonucunun ne olduğunu ve ortaya çıkabilecek istisnaların ne olacağını modelleyebilirsiniz.


Bu cevap için teşekkürler. Yararlı araçlar tavsiye ediyor musunuz? Visual Studio UML'yi herhangi bir şekilde destekliyor mu?

Visual studio bir sınıf diyagramı yapmak için yardım sağlar. İş akışı için iyi değil. Rasyonel araçlar, bu tür UML tasarım / modelleme için en iyisidir. Rasyonel yazılım modelleyici aşina olduğum şeydir. Rasyonel gülün başka bir harika araç olacağını duydum.

2

Kod yazmadan önce bazı temel mimari çizimleri yapmaya kesinlikle inanırken, tüm uygulamanın ayrıntılı bir çiziminin çok fazla iş olduğunu düşünüyorum.

Genellikle ne demek istediğimi görselleştirmek için "akış şeması" yapı taşlarını kullanarak Visio'da birkaç anahat resmi oluştururum. UML kullanmak genellikle resmileştirilir ve çok fazla ayrıntıya davet eder. Visio çizimleri, uygulamanın temel yapı taşlarını ve hangi işlevlerin nereye gittiğini gösterir. MVC çerçevesini kullanıyorsanız, çoğunlukla web'den bir örnek alarak ve kopyalayarak yapılırsınız.

İyi bir fikir, diğer bakış açılarından birkaç çizim yapmaktır. Her şeyi çizmek yerine, genellikle sistemin belirli bir işlevini almayı ve sonra şu şekilde görselleştirmeyi tercih ederim:

  • Kullanım senaryosu diyagramı (UML)
  • Akış şeması veya UML Yüzme şeridi (çok yüksek seviye)
  • Mimari bileşenlere genel bakış.

Sonra kodlamaya başlarız. Kodlama yaparken, uç sınıf entegrasyonu ile kalsiyum sınıf diyagramları, kalıtım vb. Almak için doxygen kullanıyorum.

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.