В основі всього – дані

Пол У Хомер

Ми, розробники, спочатку сприймаємо програмне забезпечення як систему команд, функційіалгорітмов Таке «командно-орієнтоване» уявлення допомагає нам освоїти побудова ПО, але воно ж починає заважати, коли ми намагаємося створювати більш масштабні системи

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

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

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

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

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

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

З точки зору дизайну критичним питанням для більшості систем є отримання правильних даних у потрібний час Всі ті перетворення, які застосовуються до даних з цього моменту, потрібні, щоб забезпечити їх доступність, реалізацію функціональності і збереження результатів Більшості систем для нормальної роботи не потрібна висока внутрішня складність – вони просто повинні накопичувати все більші і великі обсяги даних Користувач бачить передусім функціональність, але ядро ​​кожної системи утворюють дані

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

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

*

*