За яких обставин блок-схеми все ще є цінним і корисним інструментом?


14

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

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

Чи є інші випадки використання для блок-схем, які я просто не помітив?

Відповіді:


17

Абсолютно.

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

  • Менше "о, лайно", тому що я продумав весь алгоритм
  • Вимиває будь-який потенційний стукіт проблем, які можуть виникнути в іншій частині системи
  • Дозволяє мені легко пройти когось іншого за алгоритмом

Два різних випадки, коли я їх фактично використовую, це:

  • Алгоритми низького рівня. Я маю на увазі дуже специфічне рішення дуже конкретної проблеми. Як правило, я передаю їх одноліткам перед впровадженням.
  • Потік користувачів. Я не тільки можу це використати, щоб пройти повз однолітків, але я також використаю це, щоб пояснити (дуже нетехнічним чином) потік експерту з юзабіліті.

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


@Cape Cod Gunny: вам можуть здатися діаграми дизайну діалогів набагато кориснішими (рання форма діаграми діяльності)
Стівен А. Лоу

1
@Cape Cod Gunny: Microsoft SketchFlow також може зацікавити.
Йорг W Міттаг

12

Ніколи

Блок-схеми, особливо як це було застосовано 25 років тому, - були замінені набагато більш виразними методами діагностування (див. Діаграми дій, Діаграми послідовності, Державні графіки та ін.).

Власні дослідження IBM показали, що використання блок-схем не впливало на якість проектування або впровадження системи (хоча вони були надзвичайно корисними для спілкування з користувачами та іншими розробниками) [точна довідка недоступна, але вона цитується в методиках діаграми Джеймса Мартіна для аналітиків та програмістів ].


3
Заміна - це суворе слово, у нас зараз просто більше варіантів. Виразніше не завжди краще. Мої клієнти хочуть знати, що робить програмне забезпечення, і вони не хочуть витрачати час на вивчення UML. Я не можу їх звинуватити.
maple_shaft

2
@Steven: +1, але діаграми потоку давно минули 25 років тому. Коли я вступив до Карнегі-Меллона у 1975 році, програмування досліджень у КМУ проводилось в Інтернеті в ALGOL, SAIL, PASCAL, LISP, Simula, C та інших мовах високого рівня, здебільшого використовуючи EMACS. Ніхто не переймався діаграмами потоку. Ми просто написали трохи коду, випробували його, виправили, потім ще трохи написали.
Кевін Клайн

5
@Demian: поля та стрілки - це справді все, що вам потрібно ;-)
Стівен А. Лоу

1
@Steven Low та Steven Jeuris: вибачте, ви обидва на 100% правильні. "Замінити" - це звичайний правопис.
кевін клайн

1
@Steven Jeuris: так би і я; Я добре виглядав, але нічого не знайшов. Я досить впевнений, що моя пам’ять є правильною щодо того, де я її читаю, але, на жаль, на даний момент усі мої довідники запаковані в сховище (переїзд). Дослідження залишилось у мене на увазі, оскільки воно було проведено IBM власними силами за допомогою власного шаблону блок-схеми!
Стівен А. Лоу

7

Я не малював класичну схему руху з мого першого класу програмування в 1976 році, і ще не бачив, щоб хтось створив її з початку 80-х. Діаграми потоків були корисні для передачі логіки програми, коли код був мовою асемблера. До кінця 1960-х програмісти з мовної збірки використовували псевдо-код. При програмуванні на сучасних мовах OO ні діаграми потоку, ні псевдо-код не мають значення. Ви також можете добре написати код високого рівня мовою реалізації.

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


5

Я постійно використовую блок-схеми з кількох причин:

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

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

  3. Вони універсальні. Мало хто за межами програмної інженерії знає і розуміє діаграми UML, де діаграми блок-схеми набагато більше впізнавані користувачами та бізнес-аналітиками. Я намагаюся донести до клієнта складні випадки використання, і вони іноді намагаються зрозуміти, я малюю їм блок-схему, і вони розуміють, чому нарешті розуміють усі нюанси, які роблять МНОГО БОЛЬШІ складними, ніж вони думали.


4
+1 Для блок-схем, розпізнаваних користувачами та BA. Який інструмент схеми блок-схеми ви використовуєте?
Майкл Райлі - AKA Gunny

4
Діаграми потоків взагалі не представляють собою випадки використання. Якщо ви хочете співвіднести діаграму потоку з діаграмою UML, це буде більше схоже на діаграму послідовностей, діаграму зв'язку або діаграму активності. Насправді діаграми діяльності призначені для відображення робочих процесів. На мій погляд, діаграми діяльності UML кращі, ніж блок-схема, - це те, що використовувані символи та термінологія є стандартизованими, що дозволяє кожному (хто це знає) легко читати, не шукаючи значення символів.
Томас Оуенс

@Thomas, Різні штрихи ... Ви праві, хоча діаграми діяльності є більш виразними, але вони вимагають більше вкладу, знань про UML та дорогоцінного дорогоцінного часу, якого у мене просто немає, коли клієнту потрібна схема ЗАРАЗ ЗАРАЗ !!! Я можу згорнути швидку та брудну блок-схему. Користувачеві реальна схема використання UML повідомляє їм здоровий глузд. Схема руху потрапляє до м'яса речовини.
maple_shaft

2
@Cape, я просто використовую Visio. Це, звичайно, не найкращий інструмент, але ви знаєте, що вони кажуть: Люди вибирають знайоме комфортне пекло над незнайомим чужим небом.
maple_shaft

@Maple - спасибі Мене роздуває, бо я вважав, що блок-схеми вже не актуальні. Я відчуваю себе страусом ;-)
Майкл Райлі - AKA Gunny

3

Блок-схеми корисні, коли справи потрібно робити в певному порядку. Де вони справді світять мені в думці, показує, де приймаються рішення, і переконайтесь, що кожне можливе рішення має шлях. Це запобігає створенню програм, де потрібне схвалення mamager, але немає можливості з цим впоратися, якщо менеджер (який затверджує 98% часу) каже "ні". Вони нагадують нам, що найпоширеніший шлях - це не єдиний шлях. Я вважаю їх корисними в розмові з користувачами про вимоги, оскільки часто вони розкажуть вам лише про найпоширеніший шлях.


1

Діаграми потоків можуть бути корисні для зворотної інженерії дуже погано структурованого коду. Особливо, якщо він має готос. На щастя, останнім часом я не бачив багато гот-скриптованого коду.

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


0

Діаграма діяльності та діаграма UML корисна для показу низької та середньої складності процесу чи алгоритму.

Вони дуже добре спілкуються з діловими користувачами щодо правил бізнесу.

Існує варіант у формі BPMN 2.0, що дуже корисно в моделюванні бізнес-процесів.

Деякі інструменти BPMN можуть генерувати запущені веб-програми із графіків.

Так, так, блок-схеми все ще мають місце, але їх потрібно використовувати розумно.


-2

Я не програміст. Я технік апаратної інженерії.

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

Чи не варто ретельно планувати будь-які гідні зусилля? У апаратній царині ми починаємо з вимоги доктора клієнта, потім виписуємо документ із специфікацією обладнання, потім розгортаємо схематичне, потім малюємо макет плати, потім придумуємо монтажну документацію. Ми не просто починаємо захоплювати деталі і паяти їх разом, коли придумуємо ідеї зробити кінцевий продукт.

Я не бачу, наскільки ефективний код можна записати в програму 15 КБ або 15 МБ без великої попередньої роботи перед початком фактичного кодування.


1
Дуже багато людей вважають аналогії між апаратним та програмним забезпеченням не обов'язково актуальними. Цикли дизайну-коду-тестування в програмному забезпеченні значно швидше в програмному забезпеченні. Так звані спритні методи спочатку складуть тест, після чого напишіть код, щоб пройти тест. <br/> 15 К досить невеликий, тому може бути вбудоване програмне забезпечення, яке може бути "дуже заплановано", щоб забезпечити відповідність його специфікаціям. <br/> Програмне забезпечення Space Shuttle було написане з використанням прийомів, які ви відстоюєте.
Нік Кейлі

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