Керуйтеся невизначеністю

Кевлін Хенні

Зіткнувшись з альтернативними варіантами, люди зазвичай вважають, що найважливіше – зробити правильний вибір У проектуванні (програмних продуктів або будь-якому іншому) це не так Наявність альтернативи – ознака того, що необхідно проаналізувати невизначеність в дизайні системи Використовуйте невизначеність як визначальний фактор для виявлення тих місць, де можна відкласти перехід до деталей або застосувати розбиття і абстракцію, щоб знизити важливість проектувальних рішень Якщо ви жорстко «прошиє» в системі перше ж рішення, яке прийшло вам в голову, воно, швидше за все, надалі звяже вам руки В результаті випадкові рішення почнуть відігравати важливу роль, а гнучкість програмного продукту знизиться

Одне з найпростіших і конструктивних визначень архітектури дав Граді Буч (Grady Booch): «Будь-яка архітектура є результатом проектування, але не будь-яке проектування спрямоване на створення архітектури Архітектура служить поданням важливих проектувальних рішень, що формують систему, причому важливість тут визначається вартістю змін » Звідси випливає, що ефективною є та архітектура, яка в загальному випадку знижує важливість рішень, прийнятих в ході проектування Неефективна архітектура цю важливість збільшує

Якщо проектувальне рішення може повести по одному з двох шляхів, архітектор повинен відступити на крок Замість того щоб вибирати між варіантами А і Б, він повинен подумати над іншим питанням: «Як спроектувати рішення, щоб знизити важливість вибору між А і Б » У цій ситуації цікавий не вибір між А і Б, а сам факт існування цього вибору (а також те, що правильний вибір необовязково очевидний або незмінний)

Іноді архітектору доводиться ходити колами, перш ніж його осяє і він розпізнає виниклу дихотомію Ви стоїте біля дошки, обговорюючи (вельми енергійно) різні варіанти з колегою Ви задумливо бурмочете «М-м-м» і «Е-е-е» над кодом, нескінченно перебираючи можливі реалізації Коли нова вимога або уточнення існуючої вимоги ставить під сумнів розумність поточної реалізації, перед вами невизначеність Як реагувати на неї Подумайте, як за допомогою поділу або інкапсуляції ізолювати прийняте рішення від коду, який в кінцевому підсумку залежить від цього рішення Альтернативою цьому часто стає невиразний код, який, немов нервує людина на співбесіді, бурмоче щось незрозуміле і намагається компенсувати невпевненість безліччю припущень і загальних фраз А якщо вибір робиться з твердою, але необгрунтованою впевненістю, то проект на повній швидкості і без оглядки згортає на невірний шлях

Часто виникає спокуса прийняти «рішення задля вирішення» У таких ситуаціях вам допоможе опціонне мислення1 Якщо існує невизначеність щодо різних шляхів, за якими може піти розробка системи, прийміть рішення не приймати рішення Відкладіть конкретне рішення до того моменту, коли його можна буде прийняти більш відповідально на підставі реальних знань, але не дуже надовго, щоб не потрапити в ситуацію, коли ці знання вже марні

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

Біографія автора наведена на стор 51

Опційне мислення (options thinking) – підхід до оцінки ефективності проектів з точки зору концепції реальних опціонів (див http://ruwikipedia Org / wiki / Реальний _опціон), що представляє собою пошук додаткових можливостей, що не враховуються при традиційному аналізі Опційне мислення застосовно до широкого спектру проектів: злиття і поглинання, банківське кредитування, інноваційні проекти і т п – Примеч ред

Джерело: Форд Н, Найгард М, де Ора Б, 97 етюдів для архітекторів програмних систем – Пер з англ – СПб: Сим-вол-Плюс, 2010 – 224 с, Мул

Схожі статті:


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

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*