Sprog og værktøjer
I en SAP verden er det traditionen at kunne programmere ABAP. Vi har valgt at fokusere på alle de nye muligheder der ligger i SAP NetWeaver, og derved ikke ABAP.
Det vil sige vi fokusere primært på Java Enterprise Edition (server-baserede skalerbare komponentbaserede løsninger). Men de steder det giver mening benytter vi os også af Java’s mulighed for at lave desktop- og mobiltelefon-baserede klientløsninger.
Vi benytter os i høj grad af SAP’s standardleverede løsninger, frameworks og værktøjer. Men de steder det giver mening laver vi 100% standardiserede løsninger der foruden NetWeaver også kan afvikles på andre Java-certificerede platforme. Dertil benytter vi Open Source værktøjer såsom Eclipse og Netbeans, og frameworks såsom GWT, Struts og mange andre.
Da internettet og de muligheder der ligger deri er med i alt hvad vi tænker og gør, er det også naturligt at adoptere nogle af de mere domænespecifikke sprog. Derfor benytter vi også dagligt Ruby (on Rails), PHP, Python, JavaScript, XML/XSLT, SQL og mange andre sprog.
I så høj grad det er muligt forsøger vi at levere såkaldte RIA’er – Rich Internet Applications (se ordbog).
Pragmatisme
Ved at bruge domænespecifikke sprog, værktøjer og frameworks, og kontinuerligt vurdere hvilke valg der er bedst i en given situation – og tage fornøden action hvis det viser sig at forudsætningerne har ændret sig undervejs – formår vi at levere den bedste løsning baseret på den mest passende teknologi, der giver mest muligt af så høj som kvalitet som muligt på den kortest mulige tid.
Eksempel: Vi skal lave en AJAX-baseret løsning der minder brugeren så meget som muligt om en desktop-applikation, men som skal distribueres via en browser. Den skal afvikles på en SAP NetWeaver-platform, og kun i begrænset omfang kommunikere (2-vejs) med SAP R/3.
I stedet for at vælge det mest oplagte i vores branche – nemlig Web Dynpro for Java – vælger vi at basere løsningen på Google’s GWT. Kommunikationen til R/3 sker via en RPC-service der underliggende benytter SAP Enterprise Connector til at forestå kommunikationen til R/3. Klienten er responsiv stort set som en desktopklient, og løsningen ligner noget der aldrig har været i nærheden af SAP. Derimod er løsningen sexet, super hurtig, og slutbrugerne elsker at benytte den i det daglige.
Til udvikling af denne løsning valgte vi i øvrigt ikke at benytte SAP NetWeaver Developer Studio, da den er baseret på en efterhånden gammel version af Eclipse. Derimod benyttede vi den nyeste version af Netbeans, der på daværende tidspunkt havde det – efter vores mening – bedste GWT-plugin. Da NetWeaver Development Infrastructure kun kan benyttes ved hjælp af et særligt plugin i NetWeaver Developer Studio, kan man ikke gemme og versionsstyre sin kildekode heri fra Netbeans. Derfor benyttede vi Open Source-værktøjet Git (som også benyttes af Linux, Mozilla Firefox, Ruby on Rails og meget andet). Foruden at have større penetration i form af understøttelse i mange værktøjer, har Git den fordel at det er et distribueret versionsstyringssystem. Det giver fordelen ved altid at være tilgængeligt, selv når man ikke har nogen fungerende internetforbindelse.
Løsningen blev installeret på SAP NetWeaver Application Server ved hjælp af standardiserede deploymentmetoder i Java Enterprise, og var derfor understøttet af både Netbeans og NetWeaver-miljøet.
Selvom vi er pragmatiske i vores valgt af programmeringstekniske hjælpemidler, skal det dog her nævnes at vi i langt de fleste projekter ender med at vælge SAP’s værktøjer og infrastrukturer. Men vi overvejer altid alternativerne.
Metode
Vores pragmatisme kommer ikke kun til udtryk i vores valg af tekniske værktøjer, men også måden hvorpå vi samarbejder. Og det gælder både internt og i forhold til vores kunder og samarbejdspartnere.
Uden at gå for meget i detaljer baserer vi vores udviklingsproces på en Invendium-tilpasset udgave af SCRUM, der er en meget bredt accepteret form for lean eller agile projektstyring. Selvom SCRUM udspringer af udviklingsverdenen, kan den faktisk i sin grundlæggende form benyttes på stort set alle tidsafgrænsede projekter, hvor effektivitet, leverancer og business value er vigtigere end hundredevis af A4-ark fyldt med forudsætninger, kontraktuelle bindinger, helgarderinger og beskrivelser af den løsning der måske en dag vil blive påbegyndt udviklingen af, som i sidste ende alligevel kan fortolkes og derfor misforstås.
Sagt på en anden måde: Vi vil hellere levere en levende prototype og få accept på den inden vi fortsætter, end at skrive bunkevis af sider af dokumentation og kravspecifikationer, der i sidste ende alligevel altid har det med at blive misforstået. Eller måske slet ikke læst. Levende prototyper, og fungerende små delleverancer så ofte som muligt, gør det let for os og kunden at pejle os effektivt ind på det endegyldige mål. Misforståelser bliver rettet løbende, og eftersom både vi og vores kunder altid bliver klogere undervejs, leveres der på denne måde en langt bedre løsning end hvis vi havde brugt tiden på at skrive bunkevis af kravspecifikationer i stedet.
Ydermere leveres løsningen på denne måde også hurtigere. I nogle tilfælde er et agilt udviklingsteam 5-10 gange mere effektivt end et tilsvarende team, der baserer sig på traditionelle vandfaldsbaserede projektmodeller.
Miljøer
Vores primære leveranceplatform er uden tvivl SAP NetWeaver Application Server og NetWeaver Portal.
Men mange af de ting vi laver kan umiddelbart, eller med mindre tilpasninger, installeres på andre Java-baserede Enterprise-platforme fra leverandører såsom Trifork, IBM, Sun Microsystems, BEA og Oracle. Ikke at forglemme Open Source-miljøer såsom JBoss, Glassfish og Apache.
Muligheden for at bruge miljøer fra flere leverandører gælder ikke kun på applikationsserver-niveauet, men også Portal-servere. Vi er eksperter i SAP NetWeaver Portal, men har også meget erfaring med udvikling i JSR-168 kompatible Portal-servere.
Og som sagt betragter vi også desktoppen som en platform (Windows, OSX, Linux, Solaris). Ligesom mobiltelefoner (Java ME-baserede samt iPhone).
Typer af udvikling
Vi udvikler alt fra server-side backend-baseret forretningslogik over middleware-kode til front-end kode der i sidste ende tegner en brugergrænseflade hos en slutbruger. Det kan være en webbaseret AJAX-enabled web 2.0-klient der virker i Microsoft Internet Explorer, Mozilla Firefox, Safari og Chrome, en Web Dynpro-applikation der kommunikerer med SAP R/3, en komposit-applikation der gør begge dele samtidig med at den henter data og kort fra tredjepart web services og så videre.
Vi udvikler SOAP og REST-baserede web services og portal-services. Vi udvikler portal-komponenter og portlets. Vi migrerer løsninger fra legacy-platforme til SAP NetWeaver. Vi udvikler..













