Компонентне програмування

Споріднені методології

Об' єктно - орієнтований аналіз, дизайн і проектування.

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

Об' єктно - орієнтоване проектування полягає в описі структури та поведінки проектованої системи, тобто, фактично, у відповіді на два основних питання:

· З яких частин складається система.

· У чому полягає відповідальність кожної з частин.

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

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

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

Компонентне програмування - наступний етап розвитку ТОП; прототип-й клас- орієнтоване програмування - різні підходи до створення програми, які можуть комбінуватися, що мають свої переваги і недоліки.

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