Чітко визначені завдання вирішуються якісно

Сем Гардінер

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

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

• Внутрішня звязність: фрагмент є концептуально цільними, тобто всі його завдання, дані і функціональні можливості повязані один з одним

• Ізольованість: фрагменти концептуально нормалізовані, тобто практично не перекриваються один з одним

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

Наприклад, реляційна СУБД має дуже хорошу кордон Вона працює практично з будь-якими даними, які можуть бути перетворені в потік байтів, забезпечуючи структурування, пошук і вибірку цих даних Все просто

Тут цікаво те, що рішення чітко певної задачі незмінно Можливо, через пять років до нього буде прироблений веб-інтерфейс, а через пятдесят – телепатичний, але ядро ​​системи змінювати не знадобиться Система стабільна, бо чітко визначена розвязувана з її допомогою завдання

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

Стабільність задачі дозволяє вам створити систему зі стабільним дизайном стабільність дизайну дозволяє створювати додатки найвищої якості

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

Джерело: Форд Н, Найгард М, де Ора Б, 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>

*

*