Yana (Framework)
# Yana (Framework)

Yana ist ein freies Webframework mit PHP, Ajax und SQL. Es ist unter Version 3 der GNU General Public License (GPL) erhältlich.

Zielgruppe sind kleine und mittlere Unternehmen (KMUs) sowie Freelancer.

## Philosophie

Das Hauptziel besteht darin, technische Konzepte aus dem Product Family Engineering, die derzeit vor allem als Insellösungen bestehen, zu formalisieren und als FOSS der Öffentlichkeit zur Verfügung zu stellen. Der Anwendungsbereich umfasst vor allem Back-Office-Anwendungen im Intranet sowie datenzentrierte PHP-Anwendungen im Internet. Das Framework erlaubt zudem eine Verwendung auf schreibgeschützten Datenträgern wie CD/DVD.

Das Yana-Framework versteht sich mehr als Entwicklungsplattform in der Tradition von Lösungen wie Eclipse und verfolgt das Plattformkonzept, das im Umfeld des Product Family Engineering entwickelt wurde. Folglich bedeutet dies, dass nicht Anwendungen, sondern Systeme und Subsysteme („Plugins“ in der Terminology des Frameworks) von Entwicklern umgesetzt werden, die jeweils isolierte Features der Anwendung implementieren. Über einen Konfigurator können diese zur Laufzeit aktiviert oder deaktiviert werden. Zusätzlich besteht eine strikte Trennung von Geschäftslogik und Präsentationsschicht im Sinne einer Model-View-Controller-Architektur.

## Rapid-Application-Development und Prototyping

Für das Rapid-Prototyping und Rapid-Application-Development bietet das Yana Framework eine Beschreibungssprache zur Modellierung von semantischen Datenbankstrukturen. Diese Modelle werden an einen Generator übergeben, der sowohl statische Skeletons und PHP-Code, als auch dynamisch zur Laufzeit Eingabeoberflächen erzeugen kann. Diese Oberflächen werden automatisch an Änderungen der Tabellenstruktur, wie sie in der XML-Datei beschrieben ist, angepasst. Eine dateibasierte Entwicklerdatenbank sorgt während der Entwurfsphase dafür, dass bei einer Änderung des XML, die Datenbank ebenfalls angepasst wird. Ein SQL-Generator erzeugt später die erforderlichen SQL-Statements für das Deployment automatisch.

Für Rich-Client Anwendungen ist zudem eine transparente Unterstützung von AJAX vorgesehen. Der Entwickler implementiert dazu die Funktionalität zunächst ohne JavaScript. Der Designer entscheidet erst beim Entwurf der Oberfläche, ob er AJAX verwenden möchte oder nicht. Das Framework entscheidet zur Laufzeit automatisch über einen URL-Parameter, ob die Antwort als Standard-HTML komplett, oder für Anfragen via AJAX nur der geänderte Inhalt als Fragment ausgeliefert wird.

## Merkmale

* Rapid-Prototyper für evolutionäre Prototypen
* für Betrieb von CD/DVD geeignet
* Unterstützung für DB-Schema in einem XML-Dialekt (Import von DBDesigner-4-Projekten möglich)
* SQL-Generatoren und Query-Builder-API
* dateibasierte Entwicklerdatenbank für Entwurfsphase
* Internationalisierung
* Templateverwaltung und Themes mit Anbindung an Smarty
* Pluginverwaltung
* Konfigurationsverwaltung
* transparente AJAX-Unterstützung
* umfangreiche Dokumentation auf Deutsch und Englisch
