CCA (Common Component Architecture) – środowisko pozwalające na uruchamianie i łączenie w większe, bardziej funkcjonalne, programów z poszczególnych komponentów w celu wykonywania złożonych obliczeń naukowych.
Architektura CCA
Komponenty mogą być dostarczane niezależnie. Definiuje się także sposoby współdziałania poszczególnych części (komponentów), które mogą znajdować się w systemie lokalnym, równoległym czy rozproszonym między zdalnym systemem obliczeniowym. Architektura powinna mieć możliwość rozwoju oraz wykorzystywać oprogramowanie na licencji Open Source.
Komponenty
Komponenty to samodzielne jednostki obliczeniowe (fragmenty oprogramowania), w których szczegóły implementacyjne nie są udostępniane użytkownikom. Dzięki tej zasadzie poszczególne komponenty mogą być tworzone za pomocą innych narzędzi. Komponenty mogą komunikować się ze światem zewnętrznym za pomocą interfejsów w których stosuje się model budowania aplikacji typu „Plug and play”, do których mogą być podłączone inne komponenty lub dane wejściowe. Interfejs jest prostym opisem, który zawiera informacji dotyczące wywołania poszczególnych usług.
Standardy budowy komponentów, takie jak Object Management Group, Common Object Request Broker Architecture, DCOM, Microsoft Component Object Model, czy Enterprise JavaBeans (EJB), definiują prawa i obowiązki komponentów, sposób przygotowania interfejsów, framework, czyli środowisko w którym uruchamiane są komponenty oraz prawa i obowiązki środowiska uruchomieniowego.
Standardy te różnią się pod względem wydajności działania, wymaganiom stawianym komponentom oraz platformy programowej, na której mogą być uruchamiane.
Właściwości CCA
- dodawane, modyfikowane lub rozwijane pojedynczych modułów nie wpływa destabilizująco na pozostałe elementy programu,
- możliwość aktualizacji pojedynczych komponentów, bez konieczności wymiany całej aplikacji,
- zmiany wprowadzone wewnątrz komponentu nie muszą mieć wpływu na sposób jego interakcji z otoczeniem
- użytkownik przy instalacji aplikacji może sam wybrać komponenty które będą mu potrzebne,
- zwiększenie produktywności kodu poprzez technikę wielokrotnego wykorzystania jego fragmentów w innych niezależnych projektach
- możliwość składania dowolnych projektów z istniejących już komponentów