Який стандарт моделювання сучасних додатків до розробки?


9

Я приймаю свою першу заявку на рівні підприємства, і я хочу, щоб моя команда змоделювала всю програму ASP.NET MVC C #, перш ніж ми навіть використаємо один рядок коду.

ОНОВЛЕННЯ: Це не було метою філософської дискусії про те, коли потрібно документувати / моделювати додаток. Будь ласка, надайте відповіді лише на те, як "як" документувати / моделювати.

Правда полягає в тому, що я завжди скупився в цьому відділі, і ніколи ще ніколи не моделював програму. Який стандартний спосіб це зробити? Який тип діаграм слід використовувати та як виглядатиме документація? Посилання на зразкові діаграми та документацію високо оцінені.

Під час пошуку я можу знайти чимало речей по мережі, але я хотів дізнатися, чи існує сучасний сучасний консенсус щодо того, як це робити.

Спасибі заздалегідь!

Заключна заява

Я не здогадувався, що це така клейка тема. Дякую всім вам, що могли відмовитися від очевидних суперечок та дати корисні відповіді. Цікаво було сказати цікаву дискусію :)

Ще одне корисне посилання, яке я виявив: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519


6
Ви хочете зробити водоспад?
Етьєн де Мартель

1
@Etienne, водоспад? Якщо це якась хитра посилання, то я не отримую цього. Конструктивна критика / пропозиції оцінюється. Як щодо замість того, щоб оскаржувати марний коментар, ви додаєте свої власні коментарі, щоб допомогти мені зрозуміти проблему.

6
"Я хочу, щоб моя команда змоделювала всю програму ASP.NET MVC C #, перш ніж ми навіть натиснемо один рядок коду." Ненавиджу це говорити, але ти майже вчиняєш себе на невдачі, перш ніж навіть почати. Повна сфера юзабіліті, вимог користувачів, ремонтопридатності абсолютно непомітна, поки ви не почнете фактично писати код; якщо ви наполягаєте на великому дизайні на передній план, ви збираєтесь витратити набагато більше часу на оновлення своїх дизайнів, ніж на написання заявки. Дизайни високого рівня в порядку , але документувати всю програму? Абсолютно ні.
Джульєтта

3
@Chevex: Водоспад - це метод розробки, який передбачає безліч передових конструкцій. У співтоваристві з розробки програмного забезпечення видається цілком прийнятим, що цей метод розробки працює в кращому випадку.
квентин-зірин

1
touche @Chevex, touchche ... тихо йде
mcgrailm

Відповіді:


6

сучасний сучасний консенсус

Правда така: в даний час цього не вистачає сучасній розробці програмного забезпечення - консенсус щодо моделювання. UML, здається, є деяким найменшим загальним дільником, але насправді існує лише консенсус щодо позначень, а не про семантику. Існує десятки різних думок щодо того, як слід інтерпретувати UML для створення коду (можливо, ви можете знайти одну інтерпретацію, яка відповідає вашій команді).

З іншого боку, між тими "спритними" людьми, які говорять "не робіть офіційних моделей, краще пишіть робочий код", і тими "BDUF" (великий фронт) люди, які мислять інструменти, як " MDA "(модель, керована архітектурою) - це рішення.

Інші люди (знову) виявили потокове програмування сучасного дизайну програмного забезпечення як альтернативу UML. Прочитайте тут і тут, щоб дізнатися більше про це.


Великий Скотт! Це, безумовно, найпрекрасніша відповідь на це питання поки що. Приємний короткий огляд моделювання в галузі та місця її розташування. Дякую док! +1,21 джигаватт!

7

Я хочу, щоб моя команда змоделювала всю програму ASP.NET MVC C #, перш ніж ми навіть використаємо один рядок коду

Проблема, яку я зазвичай зустрічаю при такому підході, полягає в тому, що моє розуміння рішення завжди неповне на початку. Лише завдяки вдосконаленню в міру продовження роботи я приходжу до остаточного рішення.

Намагаючись розробити весь додаток наперед, перед будь-яким кодом (у всіх, крім найпростіших програм), як правило, безглуздо.

Ви справді вірите, що можете заздалегідь детально викласти кожен клас, метод та структуру даних?

Я просто хочу знати хороші рішення для моделювання.

Що стосується власне інструментів для виготовлення моделей, то я спробував декілька і завжди опинився в Microsoft Visio.

З усіх продуктів, які я пробував, це здається найбільш прямим вперед і, власне, стабільним (мій досвід використання інструментів моделювання полягає в тому, що вони дуже баггі). Для справедливості я моделюю дуже мало, тому прийміть цю рекомендацію із зерном солі.

EDIT: Власне, я повинен сказати, що більша частина мого моделювання робиться на блокноті, який сидить на моєму столі. Оскільки я мало моделюю, намагаюся тримати його легким та чітким. Складання схеми ручкою та папером для мене набагато ефективніше, ніж використання програмного забезпечення.

Ви можете виявити власноруч написані діаграми, корисні для формування ваших ідей, перш ніж викладати їх у програмному забезпеченні для побудови діаграм.

Який тип діаграм слід використовувати та як виглядатиме документація?

Більшість того, що я моделюю в наші дні, - це діаграми взаємодії. Знову ж таки, я не займаюся великим моделюванням - саме там, де я справді відчуваю, вправа малювання моделі допомагає зміцнити моє розуміння.


Ми можемо коригувати наше моделювання в процесі роботи. У цьому справа не в тому, я просто хочу знати хороші рішення для моделювання.

Таким чином, ви маєте намір спробувати синхронізувати свої моделі та код. Для більшості це не працює. Вони неминуче розходяться, а розбіжності спричинять проблеми. Крім того, ви будете витрачати багато часу , намагаючись
Квентін-starin

Прочитайте оновлене запитання.

@Chevex: Я додав усе, що міг, щодо вашого відредагованого питання.
квентин-зірин

@qes, моя думка полягала в тому, що ви відповідаєте на запитання, яке я не збирався задавати. Дивіться розділ "ОНОВЛЕННЯ" питання.

3

Діаграми UML - це гарне місце для початку. Існує багато простих способів зробити це за допомогою безкоштовного або платного програмного забезпечення. Одним з простих прикладів інструменту для створення UML є щось на кшталт креслення документів Google, більш вдосконаленими пакетами будуть Visio або OmniGraffle.

EDIT: Як згадують багато хто, якщо ви ходили вниз по шляху UML, це не означає, що вам доведеться повністю моделювати все, але ви можете досягти консенсусу щодо того, що ви моделюєте, і наскільки детально моделі повинні бути. Прості діаграми UML часто можуть допомогти викласти ваш код перед його написанням та усунути деякі можливі проблеми до їх виникнення.


Я чув про UML. Чи є якісь рекомендації щодо місця для початку? Будь-які хороші інструменти, які ви рекомендуєте?

@Chevex - якраз здійснив швидкий пошук у Google, і виявив це: agilemodeling.com/artifacts/classDiagram.htm Виглядає як гідна відправна точка
Бретт

@qes - Залежно від того, скільки часу / інтересу / інвестицій він має пройти такий шлях, це може бути як хорошим досвідом навчання, так і, можливо, допомогти йому зрозуміти деякі частини свого коду, перш ніж він пише його (навіть якщо його просто простий UML) ... Але я згоден, він, мабуть, повинен мати достатній час та особистий інтерес для цього.
Бретт

@qes, будь ласка, прочитайте оновлене запитання.

2
@Chevex - Ви, мабуть, хочете почати, читаючи типи діаграм і те, що вони призначені для повідомлення. UML - це мова моделювання, яка може бути дуже описовою, але також має багато нюансів. UML в горішці дуже допоміг мені ( oreilly.com/catalog/9781565924482 ). При цьому, ви можете часто обійтись з відбитими версіями повного набору діаграм. Поки люди, що створюють діаграми, і люди, що читають діаграми, домовляються про те, що вони означають.

2

Як @Brett запропонував, діаграми UML найкращі. З UML корисно мати діаграми класів та діаграми робочих потоків. Ці два покриють більшість дизайнерських потреб.

За допомогою діаграми класів ви можете моделювати членів кожного об'єкта, рівень їх безпеки тощо.

За допомогою діаграми робочого циклу ви можете моделювати, який метод викликає, який виклик, що є результатом робочого потоку та що буде винятком, який, можливо, може вискочити.


Дякую за цю відповідь. Рекомендуєте будь-які корисні інструменти? Чи підтримує візуальна студія будь-яким чином UML?

Візуальна студія надає допомогу для складання діаграми класів. Це не добре для робочого процесу. Раціональні інструменти найкращі для такого дизайну / моделювання UML. Я знайомий з раціональним програмним забезпеченням. Я чув, що раціональна троянда буде ще одним чудовим інструментом.

2

Хоча я сильно вірю у створення основних базових архітектурних креслень перед написанням коду, я вважаю, що зробити детальний малюнок всього додатка - це занадто багато роботи.

Я зазвичай створюю декілька контурних зображень у Visio, часто використовуючи будівельні блоки "блок-схеми", щоб візуалізувати, що я маю на увазі. Використання UML часто відчувається формалізованим та запрошує надто багато деталей. На кресленнях Visio показані основні складові програми програми та тип функціональності. Якщо ви використовуєте рамку MVC, то в основному це робиться лише взяттям зразка з Інтернету та його копіюванням.

Хороша ідея - зробити кілька малюнків з інших точок зору. Замість того, щоб малювати все, я часто вважаю за краще взяти одну конкретну функцію системи, а потім візуалізувати її як:

  • Використовуйте діаграму випадку (UML)
  • План-схема або плавальна смуга UML (дуже високий рівень)
  • Огляд архітектурних компонентів

Потім починаємо кодування. Під час кодування я використовую doxygen з точковою інтеграцією, щоб отримати цілі діаграми класів, успадкування тощо. Перегляд огляду, генерованого доксигеном, часто є дуже хорошим способом побачити структуру коду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.