Як інженери, ми всі "проектуємо" артефакти (будівлі, програми, схеми, молекули ...). Це діяльність (design-the-verb), яка дає певний результат (design-the-noun).
Я думаю, що ми всі згодні з тим, що іменник design - це інша сутність, ніж сам артефакт.
Ключовою діяльністю в бізнесі програмного забезпечення (дійсно, у будь-якому бізнесі, в якому необхідно покращити отриманий артефакт продукту) є розуміння "дизайну (іменника)". Однак ми, як спільнота, здаємося в повній мірі повними невдачами при його записі, про що свідчить кількість зусиль, які люди докладають до перекриття фактів про свою кодову базу. Попросіть когось показати вам дизайн їх коду і побачити, що ви отримаєте.
Я думаю, що дизайн для програмного забезпечення такий:
- Явна специфікація того, що програмне забезпечення повинно робити та наскільки добре воно працює
- Явна версія коду (ця частина проста, у кожного є)
- Пояснення, як кожна частина коду служить для досягнення специфікації (наприклад, співвідношення між фрагментами специфікації та фрагментами коду)
- Обгрунтування , чому цей код так , як це (наприклад, чому конкретний вибір , а не інший)
Що НЕ є дизайном, це особливий погляд на код. Наприклад [не вибирати конкретно] Діаграми UML не є конструкціями. Скоріше, це властивості, які ви можете отримати з коду, або, можливо, властивості, які ви хочете отримати з коду. Але, як правило, ви не можете отримати код з UML.
Чому після 50+ років створення програмного забезпечення, чому ми не маємо регулярних способів висловити це? (Не соромтеся суперечити мені явними прикладами!)
Навіть якщо ми це робимо, більша частина спільноти здається настільки зосередженою на отриманні "коду", що іменник дизайну все одно втрачається. (ІМХО, поки дизайн не стане метою інженерії, з артефактом, вилученим з дизайну, ми не збираємося обійти це питання).
Що ви бачили як засоби для запису конструкцій (у тому сенсі, як я це описав)? Явні посилання на документи будуть добре. Чому, на вашу думку, конкретні та загальні засоби не досягли успіху? Як ми можемо це змінити?
[У мене є власні ідеї, які чітко формулюють прикріплену точку зору, але мене цікавлять відповіді інших людей ... і важко реалізувати мою схему [[і, можливо, це справжня проблема: -]]]
EDIT 2011/1/3: Один рядок відповідей натякає на те, що "документація" (імовірно текстова, зокрема неформальна) може бути адекватною. Я думаю, я повинен уточнити, що я не вірю в це. Інструменти CASE з'явилися на сцені, починаючи з 80-х, але ранні інструменти здебільшого просто захоплювали пікселі для діаграм всього, що ви намалювали; Хоча інструменти, мабуть, були комерційно успішними, вони справді не були дуже корисними. Ключовим розумінням було те, що якщо додаткові "дизайнерські" артефакти формально не інтерпретуються, ви не зможете отримати будь-яку серйозну допомогу інструменту. Вважаю, те саме розуміння стосується будь-якої довготривалої корисної форми захоплення дизайну: якщо вона не має формальної структури, вона не матиме реального використання. Текстові документи майже не піддаються цьому тестуванню.