Ontwikkeling van een applicatie voor conversie van mainframedata voor Business Intelligence-gebruikers



Vergelijkbare documenten
Uitgebreid voorstel Masterproef Informatica

Zelftest Informatica-terminologie

MA!N Rapportages en Analyses

Software Test Plan. Yannick Verschueren

Technische nota AbiFire Rapporten maken via ODBC

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Rapportage mogelijkheden. rapportage eenvoudig en simpel gemaakt. Geen tijdregistratie zonder een adequate rapportage.

Sparse columns in SQL server 2008

Net2 kaarten bedrukken

6. Het maken van een database

Technische nota AbiFire5 Rapporten maken via ODBC

1 Inleiding. 3 Handmatig... invoeren zaken basis 4 Verwerken... zaken 5 Afhandelen... van zaken. 7 Uitgebreidere... zaak opties

AFO 142 Titel Aanwinsten Geschiedenis

Software Test Plan. Yannick Verschueren

HOOFDSTUK 1 INLEIDING... 1 HOOFDSTUK 3 OP WELKE MANIER KAN IK GEGEVENS IMPORTEREN IN MS EXCEL?... 7

Uitgebreid voorstel Masterproef Informatica. Titel van het project: Rolnummerherkenning van op een kraan

Hoofdstuk 16: Grafieken en diagrammen: hoe

Deutsche Bank Global Transaction Banking. Internet Bankieren. Recente verbeteringen. Versie januari 2014

User accounts maken in een Wandy Hotspot, d.m.v. een batch.

Net2 kaarten bedrukken

SQL datadefinitietaal

Software Test Plan. PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat

Gebruikershandleiding

Software Test Document

Efficy Mobile Efficy Mobile is een nieuwe interface van Efficy voor mobiele toestellen ter intentie van gebruikers die met Efficy werken onderweg.

The Nanny Versie Informatie

Programmeren in Access met VBA

Software Design Document

Zonnepanelen Hoe krijg je de data op je website?

SHAREPOINT ONLINE (SAMEN-)WERKEN IN DE WOLKEN. - Workshop SharePoint 1

Handleiding Sonus Communicator voor Rion NL-22 - NL-32

ALL-CRM Gebruikershandleiding AC- Checker

Release notes UNIT4 Multivers Online 8.0

Software Design Document

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

AFO 139 Automatische export

The OSI Reference Model

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Technisch Ontwerp W e b s i t e W O S I

AN1034-NL Net2 kaarten bedrukken

Release Notes. Afdrukdatum: 2013/03/21

Beschrijving functioneel en technisch design van de website

Functionele Componenten

Is APEX a worthy substitute for Oracle Forms?

ProjectHeatmap. Onderzoeksrapport v Dennis Wagenaar

Documenten in en uit Apex

NHibernate als ORM oplossing

mynetpay BE - Handleiding

Trainingsomschrijving Excel 97 / 2000 / 2003 NL

Release datum: 11 juni 2012

Handleiding. Loket.nl / Import variabele gegevens

Handleiding helpdesk. Datum: Versie: 1.0 Auteur: Inge van Sark

standaarduurtarieven Europees Fonds voor Regionale Ontwikkeling VLAANDEREN Europese Unie

Inhoud. Wat is Power BI? Voorbeelden gemaakt met Power BI Beginnen met Power BI Werkruimte uitleg... 7

Van CaseTalk naar een database in SQLite studio

Opdrachtformulering (pagina 3 van 7)

Uitgebreid voorstel Masterproef Informatica. Titel van het project : Ontwikkeling van remote controlled Alert & Task Agent

Data analyse budgetbeheer. Handleiding voorbereiding dataset

Gebruikers handleiding. Lizard Configuration Manager ToolTip. Installatie. Instellen. Initieel instellen

Programmeren in Excel met VBA

15 July Betaalopdrachten web applicatie gebruikers handleiding

Nieuw in versie P&A Group

1. Introductie tot SPSS

Handleiding. BOA Server applicaties. Controleur

Elektronisch factureren

Handleiding TWYSK Risicotool. Online webapplicatie voor het vastleggen en beheren van risico-informatie

Cursus Analyse voor Web Applicaties 1. Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML

ExpressShipper. 1 Configuratiehandleiding. Documentatie ExpressShipper Page 1 of 20

Een XML SCT bestand creëren op basis van een.csv bestand in Telelink 6. Versie maart ing.be/sepa

Software Requirements Specification

Succes story. Koninklijke Zeelandia Groep BV. ECMsolutions. Zeelandia en OpenText Alchemy: Het recept voor succes.

Handleiding Access 2010

Hoofdstuk 12: Afdrukken en andere output

Les 2 Eenvoudige queries

Auteur boek: Vera Lukassen Titel boek: Excel Beginners , Serasta Uitgegeven in eigen beheer Eerste druk: mei 2013

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen:

Maximo Tips and Tricks

Technische Specificaties

Informatie & Databases

Bericht Creëren en versturen binnen Wes 4 U mail

Access Basis. 699,- excl. BTW per deelnemer Duur: Kosten: 2 dagen Max Deelnemers: 10

ALL-CRM Gebruikershandleiding AC-DataCumulator

Aan de slag met DNS Jeroen van Herwaarden, Robbert-Jan van Nugteren en Yannick Geerlings

Auteur boek: Vera Lukassen Titel boek: Word Gevorderd , Serasta Uitgegeven in eigen beheer Eerste druk: augustus 2012

Gebruikers- handleiding. Module Reporting Rekeninginformatie

HANDLEIDING OPNAME INVENTARIS

FostPack Importeren verpakkingsfiches via Excel

Microsoft Dynamics CRM 2011

Functionaliteiten 4orange Connect

Snelle referentiegids

Aan Metis Groep (MG) Van MCC Datum Betreft Release notes patch 33 - versie versie VERSIE

Quick Devis. De universele software voor het maken van offertes

Waarmaken van Leibniz s droom

VBA voor doe het Zelvers - deel 10

FiMiS User Guide for PAD Surveys

4 ASP.NET MVC. 4.1 Controllers

Systeemontwikkeling, Hoofdstuk 6, Query s, macro s en rapporten in MS Access 2010

IMPACTXRM CRM GENERAL GEBRUIKERSHANDLEIDING. IMPACTXRM NV Zuidleiestraat 12/1b 9880 Aalter 0032 (50)

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Transcriptie:

owered by TCPDF (www.tcpdf.org) Academiejaar 2012 2013 Geassocieerde faculteit Toegepaste Ingenieurswetenschappen Valentin Vaerwyckweg 1 9000 Gent Ontwikkeling van een applicatie voor conversie van mainframedata voor Business Intelligence-gebruikers Masterproef voorgedragen tot het behalen van het diploma van Master in de industriële wetenschappen: informatica Matthieu VAN LANGENHOVE Promotoren: ing. Tim DE PAUW ing. Ken WAUTERS (ArcelorMittal Gent)

Toelating tot bruikleen De auteur geeft de toelating deze masterproef voor consultatie beschikbaar te stellen en delen van de masterproef te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze masterproef. The author gives permission to make this master dissertation available for consultation and to copy parts of this master dissertation for personal use. In the case of any other use, the limitations of the copyright have to be respected, in particular with regard to the obligation to state expressly the source when quoting results from this master dissertation. Matthieu Van Langenhove 6 juni 2013 i

Woord vooraf Een masterproef maak je nooit alleen. Graag zou ik daarom mijn dank betuigen aan iedereen die mij direct of indirect heeft geholpen. Zonder hen zou dit werk nooit tot stand zijn gekomen. Vooreerst wens ik ArcelorMittal Gent te bedanken voor de mogelijkheid om deze masterproef bij hen af te leggen. Het was zeer leerrijk om als ingenieur kennis te maken met het bedrijfsleven. Verder wil ik ook Ken Wauters, mijn externe promotor bij ArcelorMittal Gent, bedanken voor het deskundig advies en zijn supervisie doorheen het hele traject. Ook een gemeend woord van dank voor Tim De Pauw, mijn interne promotor bij de Hogeschool Gent, voor het opvolgen van deze masterproef. Ik wil mijn ouders bedanken voor hun morele en financiële steun tijdens mijn studies. Tot slot wens ik ook iedereen te bedanken die mijn scriptietekst heeft nagelezen, in het bijzonder Laura Daems. Matthieu Van Langenhove Aalst, 6 juni 2013 ii

Abstract Deze masterproef betreft de optimalisatie en ontwikkeling van een softwareapplicatie voor datatransfer vanuit een IBM-mainframe en dataconversie in een Windows-omgeving. De relationele data worden vanop het mainframe overgebracht naar een Windows-omgeving waar ze geconverteerd worden tot een rapport. Dit rapport kan gaan van een HTML-pagina of Worddocument tot een Excelwerkboek en zelfs een pdf-bestand. De applicatie wordt ontworpen volgens het cascademodel. Er wordt een behoefteanalyse gedaan die de behoeftes en wensen van de eindgebruikers in kaart brengt. Deze behoeftes omzetten naar technische noden gebeurt tijdens de functionele analyse. Voor het genereren van Office-bestandsformaten wordt een externe API gebruikt; er wordt onderzocht welke API het dichtst aansluit bij de noden van de applicatie. Eenmaal de functionele eisen in kaart zijn gebracht en de meest geschikte API bekend is, wordt een architectuur ontworpen. Tot slot wordt dit geïmplementeerd volgens de Scrum-methodologie tot een proof-of-concept. Het ontwikkelde programma kan, aangestuurd vanuit batch of interactief vanop mainframe, automatisch verschillende rapporten genereren. Deze rapporten kunnen ook verstuurd worden per e-mail. Kernwoorden: softwareontwikkeling,.net, datatransfer, dataconversie, Windows, IBMmainframe, Microsoft Office, rapportgeneratie iii

Inleiding Bij het laatste masterjaar van een academische opleiding hoort naar goede gewoonte een masterproef of thesis. Ik heb gekozen voor een project bij ArcelorMittal Gent. De masterproef viel binnen het domein van Business Intelligence; een domein dat reeds enkele jaren een grote aantrekkingskracht op mij uitoefent. Toch niet zo vanzelfsprekend, want de IT-sector gaat gepaard met razendsnelle vernieuwingen en Business Intelligence behoort op dit vlak toch niet meer tot de jongste (in tegenstelling tot mobile of cloud computing), al is het zelfs vandaag nog steeds een toonaangevend onderwerp in de wereld van IT. Mijn reis begon in de zomervakantie van 2012, net na het derde en laatste bachelorjaar. Kort nadien, in september, volgde een stage van twee weken. Dit was de officiële aanzet van mijn masterproef. Nu, tien maanden later, kan ik u mijn scriptie voorstellen. Hieronder wordt een blik geworpen op de structuur en inhoud van deze scriptie. Het doel van de masterproef was het optimaliseren en ontwikkelen van een applicatie voor datatransfer en -conversie. De gegevens kunnen opgevraagd worden op mainframe en de gebruiker verwacht een rapport op een Windows-pc of -server. Naar die analogie wordt de applicatie ook Mainframe to PC (MF2PC) genoemd. In deel één, de projectdefinitie, vindt u meer uitleg over de masterproef. Naast een kadering van ArcelorMittal Gent, wordt ook het project zelf omschreven. Wat is het doel van dit project? Hoe is het project tot stand gekomen en volgens welke methodiek is de applicatie ontwikkeld? In het tweede deel, de analyse, wordt het project uitgebreid geanalyseerd. Dit deel bevat de behoefteanalyse en de functionele analyse. De behoefteanalyse gaat na waarvoor de applicatie dient en wat gebruikers ermee willen doen. Ze wordt gevolgd door de functionele analyse, die dieper ingaat op de technische vereisten van de applicatie. Onder implementatie, het derde deel van deze scriptie, wordt de architectuur en het ontwerp uit de doeken gedaan. Naast een beschrijving van deze twee onderdelen, wordt er ook uitgelegd waarom bepaalde implementatiekeuzes gemaakt werden. Er wordt nog enige aandacht gevestigd op mogelijke uitbreidingen. Met sommige van deze uitbreidingen is reeds rekening gehouden bij de implementatie, andere zijn momenteel niet mogelijk of vallen buiten het bestek van het project. Tot slot volgt niet enkel een conclusie over de applicatie, maar ook een reflectie over het gehele traject dat ik tijdens deze masterproef heb afgelegd. Het was mijn eerste contact met de bedrijfswereld als ingenieur en het heeft mij veel meer bijgebracht dan enkel programmeeren analysevaardigheden. iv

Inhoudsopgave Woord vooraf Abstract Inleiding Inhoudsopgave Lijst met afkortingen ii iii iv v viii I Projectdefinitie 1 1 Situering 2 1.1 Projectomschrijving................................ 2 1.2 Ontwikkelingsmethode............................... 3 1.3 ArcelorMittal.................................... 4 1.4 MF2PC....................................... 5 1.5 QMF......................................... 7 II Analyse 9 2 Behoefteanalyse 10 2.1 Requirements detecteren.............................. 10 2.1.1 Enquête................................... 10 2.1.2 Gebruikersprofielen............................. 11 2.1.3 Soorten gebruik............................... 13 2.1.4 Gebruikersinterface............................. 13 2.1.5 Systeemvereisten.............................. 13 2.1.6 Hardware.................................. 14 2.1.7 Betrouwbaarheid.............................. 14 2.1.8 Veiligheid.................................. 14 2.1.9 Software................................... 14 2.1.10 Huidige problemen en beperkingen.................... 15 2.2 Functionele requirements.............................. 16 2.2.1 Conversie.................................. 16 v

INHOUDSOPGAVE vi 2.2.2 Naverwerking................................ 19 2.3 Requirements valideren.............................. 19 3 Functionele analyse 23 3.1 Gegevensextractie uit QMF............................ 23 3.1.1 QMF-exportcommando.......................... 23 3.1.2 QMF-exportformaten........................... 24 3.2 Bestandsoverdracht van mainframe naar Windows............... 28 3.3 Gegevensconversie naar doelformaat....................... 28 3.3.1 Gegevensconversie............................. 29 3.3.2 Bestandscreatie............................... 30 3.3.3 Datatypeconversie............................. 30 3.4 Crosscheck met functionele requirements..................... 31 4 Evaluatie van Office-API s 33 4.1 Evaluatiecriteria.................................. 33 4.2 Productevaluatie.................................. 34 4.2.1 Producten.................................. 34 4.2.2 Bedrijfs- en productinformatie...................... 35 4.2.3 Testen van de API............................. 36 4.3 Resultaten...................................... 37 4.4 Besluit........................................ 37 4.5 Aspose........................................ 38 4.5.1 Aspose.Words................................ 38 4.5.2 Aspose.Cells................................ 39 III Implementatie 40 5 Architectuur 41 5.1 Globaal....................................... 41 5.2 Transfercomponent................................. 42 5.2.1 Technologie................................. 42 5.2.2 Input.................................... 42 5.2.3 Output................................... 43 5.2.4 Werking................................... 43 5.3 Conversiecomponent................................ 44 5.3.1 Technologie................................. 44 5.3.2 Input.................................... 44 5.3.3 Output................................... 44 5.3.4 Werking................................... 44 5.3.5 Projectbeheer................................ 45 6 Ontwerp 46 6.1 Businesslogica.................................... 46 6.1.1 Algemeen.................................. 47 6.1.2 Dataconversie................................ 48

INHOUDSOPGAVE vii 6.1.3 Bestandcreatie............................... 51 6.1.4 Naverwerking................................ 53 6.2 Hosting....................................... 54 6.2.1 Klassen en interfaces............................ 54 6.2.2 Client.................................... 56 6.2.3 Server.................................... 57 6.3 Beslissingen en patterns.............................. 58 6.3.1 Interfaces.................................. 58 6.3.2 Factory................................... 58 6.3.3 JobProcessor................................ 59 6.3.4 Jobbestand in XML............................ 59 6.3.5 Logging................................... 59 6.3.6 Exception handling............................. 59 6.3.7 Scheduler en eventlistener......................... 59 6.3.8 Asynchrone start.............................. 60 7 Uitbreidingen 61 7.1 Status van de implementatie............................ 61 7.2 Testing....................................... 62 7.3 Suggesties...................................... 62 7.3.1 Nieuw type van invoer- of uitvoerbestand................ 62 7.3.2 Templates voor Office........................... 63 7.3.3 Macroverwerking op server........................ 63 7.3.4 Macroverwerking op pc.......................... 63 7.3.5 Notificatie-e-mail.............................. 64 7.3.6 Draaitabellen in Excel........................... 64 7.4 Realisaties...................................... 64 7.4.1 Serverlaag.................................. 64 IV Bevindingen 65 8 Reflectie 66 9 Conclusie 67 Literatuurlijst 68 A Inhoud van cd-rom 73

Lijst met afkortingen API Application Programming Interface DB2 Database 2 COM Component Object Model ETL Extraction, Transformation and Load IBM International Business Machines Corporation MF2PC MainFrame to PC MSDN Microsoft Developer Network QMF Query Management Facility TFS Team Foundation Server VB6 Visual Basic 6 VB.NET Visual Basic.NET WSA Workstation Agent viii

Deel I Projectdefinitie 1

Hoofdstuk 1 Situering 1.1 Projectomschrijving Als onderdeel van zijn Business Intelligence-landschap beschikt ArcelorMittal Gent over een datawarehouse. Dit datawarehouse bevat gegevens over klanten, personeel, bestellingen, productiegegevens, etc. Analisten van verschillende afdelingen consulteren deze gegevens dagelijks via een query- en rapporteringstool. Hierna exporteren ze deze gegevens met de Mainframe to PC-tool (MF2PC) naar diverse bestandsformaten (Word, Excel, HTML, pdf, csv,... ). Dit gebeurt zowel interactief als geautomatiseerd. De huidige MF2PC-tool steunt voor de conversie op verouderde technologieën. Zo maakt de tool nog steeds gebruik van Microsoft Office Automation, en draait hij daarom op de voorgrondsessie van een server. De tool is geschreven in VB6, een programmeertaal uit het pre-.net-tijdperk. Er wordt nog gebruikgemaakt van een assembler-component. Deze dient verwijderd te worden aangezien assembler-programmeurs schaars zijn. Dergelijke verouderde technologieën bemoeilijken verdere uitbreidingen en staan evoluties in de weg. Zo zijn er onder andere compatibiliteitsproblemen met Office 2007. Er is ook nood aan uitbreidingen, bv. ondersteuning van het pdf- en XML-formaat. Deze masterproef is gericht op het onderzoeken, optimaliseren en ontwikkelen van een nieuwe transfer- en conversietool (genaamd MF2PC ) voor relationele data tussen de centrale computer (mainframe) en het Windowsplatform. Er wordt onderzocht welke commerciële (of open-source) API kan helpen voor het creëren en aanpassen van pdf-, XML-, Word 2007- en Excel 2007-bestanden vanuit het.net-framework en dit zonder Microsoft Office Automation. De productevaluatie gebeurt aan de hand van diverse criteria. De noden van de eindgebruikers worden duidelijk in kaart gebracht en beschreven. Dit gebeurt door middel van een gebruikersenquête en door persoonlijke gesprekken met de verschillende key-users. Deze resultaten bepalen de vereisten en functionaliteiten van de nieuwe MF2PCtool. Er wordt gestreefd naar een MF2PC-tool die zoveel mogelijk de huidige functionaliteiten behoudt, evenals enkele extra opties toevoegt. Enkele mogelijkheden van de huidige tool worden niet overgenomen omdat ze niet meer gebruikt worden of zeer verouderd zijn. 2

HOOFDSTUK 1. SITUERING 3 Nieuwe methodes en technieken worden geëvalueerd en op basis van voorgaand onderzoek en de reeds opgebouwde ervaring inzake intern ArcelorMittal Gent, wordt een analyse en architectuur van de toepassing uitgewerkt. De nieuwe MF2PC wordt from scratch opgebouwd omdat niet alle problemen kunnen worden weggewerkt door de huidige tool uit te breiden. Tevens is er nood aan een technologie-update. Zo dient de VB6-codebase geüpgraded te worden naar.net (C#). Verder dient het zwaartepunt van de tool te verschuiven van mainframe naar Windows-zijde en dient ook de assemblercomponent weggewerkt te worden. De huidige lay-out van de rapporten blijft wel strikt behouden. Eveneens wordt gekeken naar een meer rapportgerichte oplossing die toelaat dat de eindgebruiker de gewenste layout specifieert en er automatisch printklare documenten worden gegenereerd. Rechtstreeks afdrukken of een e-mail van gegenereerde rapporten opmaken, behoort ook tot de verwachte functies. Aan de hand van deze analyse en architectuur wordt een prototype ontwikkeld dat de eindgebruiker toelaat op een gebruiksvriendelijke, vlotte en betrouwbare manier de opgevraagde gegevens te exporteren naar de pc-werkomgeving (MS Office, HTML, XML, pdf, csv... ). De uitgewerkte oplossing wordt duidelijk gedocumenteerd. Dit prototype en de documentatie moeten de uiteindelijke implementatie ondersteunen. Deze implementatie behoort niet tot de masterproef. 1.2 Ontwikkelingsmethode Zoals eerder aangehaald ontstonden er veel tekortkomingen in de loop der tijd. De nieuwe applicatie wordt volledig vanaf nul opgebouwd om de problemen uit het verleden niet verder mee te slepen. Het programma wordt ook herschreven in een recentere programmeertaal. Er wordt getracht de aanpassingen voor de gebruikers te minimaliseren uit economisch perspectief. Aanpassing en educatie vragen tijd. Benjamin Franklin stelde ook al in 1748: Time is money [11]. Dit project is echter geen porting van de code. De functionaliteit en output blijven grotendeels dezelfde, maar onder de motorkap wordt MF2PC volledig veranderd en vernieuwd. Het proof-of-concept wordt ontworpen volgens het cascade- of watervalmodel (zie figuur 1.1). Het cascademodel bestaat uit vijf opeenvolgende fases, waarbij een fase eerst volledig dient afgewerkt te worden alvorens naar de volgende over te gaan. [12] Allereerst is er de behoefteanalyse. Vervolgens wordt de applicatie ontworpen en geïmplementeerd. Als voorlaatste fase wordt de applicatie geverifieerd en in gebruik genomen. Tot slot moet de applicatie worden onderhouden en beheerd.

HOOFDSTUK 1. SITUERING 4 Figuur 1.1: Cascademodel bij softwareontwikkeling Dit cascademodel sluit nauw aan bij de opzet van deze masterproef, waar eerst een literatuurstudie werd aanbevolen om nadien in de tweede helft over te gaan op de effectieve implementatie. De laatste stap zal echter niet aanwezig zijn in de masterproef omdat er slechts een prototype wordt ontwikkeld. De implementatie gebeurt volgens de Scrum-methodologie. Scrum is een framework voor softwareimplementatie. De implementatie van MF2PC verloopt in drie Sprints; dit zijn iteraties die ongeveer één maand duren. Elke Sprint start met een planning van wat erin zal worden verwezenlijkt. Nadien wordt bekeken hoe dit gedaan kan worden en achteraf volgt er een beoordeling die het verrichte werk vergelijkt met het vooropgestelde doel. Scrum steunt hoofdzakelijk op communicatie en samenwerking. Aangezien dit project wordt uitgevoerd door één persoon is de communicatie en samenwerking zeer beperkt. De Product Backlog geeft een oplijsting van de mogelijke features van het programma (te vinden op pagina 19). [13] 1.3 ArcelorMittal ArcelorMittal, ontstaan uit de fusie van Arcelor en Mittal Steel in 2006, is de grootste staalgroep ter wereld. Het bedrijf stelt een kwart miljoen werknemers te werk in 27 landen en produceert jaarlijks 130 miljoen ton ruwstaal. ArcelorMittal beperkt zich echter niet alleen tot de productie van staal, maar is daarnaast ook actief in de mijnindustrie. ArcelorMittal Gent, het vroegere Sidmar, is een geïntegreerd staalbedrijf aan het kanaal Gent- Terneuzen. Het herbergt elke stap van het productieproces en laat deze naadloos op elkaar aansluiten. Gecombineerd met een uitstekende ligging vormt dit de grootste troef.

HOOFDSTUK 1. SITUERING 5 ArcelorMittal Gent heeft een lange geschiedenis achter de rug. Rond 1930 kocht het Luxemburgse staalconcern Arbed een bouwgrond van 211 hectare op de rechteroever van het kanaal Gent-Terneuzen. Het idee was om hier een maritiem staalbedrijf op te richten, maar dit plan werd gedwarsboomd door de depressie van de jaren 30 en de tweede wereldoorlog. Uiteindelijk werd in 1962 de nv Sidérurgie Maritime, kortweg Sidmar, opgericht. Door de overname van het Spaanse Aceralia in 1992 groeide de Arbed Groep uit tot het derde grootste staalbedrijf ter wereld. In 2002 ontstond door de fusie van Arbed-Aceralia en het Franse Unisor het bedrijf Arcelor en werd Sidmar hierin opgenomen. De vestiging produceert jaarlijks 5 miljoen ton vlakke staalplaat, voornamelijk voor de automobielsector en de industrie (o.a. witgoed). ArcelorMittal is ook één van de grootste werkgevers uit de regio, met meer dan 5000 werknemers. De kennis en inzet van de medewerkers spelen een onmiskenbare rol om onder andere de veiligheid, kwaliteit, productiviteit en innovativiteit verder te verhogen. 1.4 MF2PC ArcelorMittal Gent is meer dan een staalproducent. Dagelijks worden er duizenden rapporten automatisch gegenereerd over klanten, productiegegevens, leveringen, bestellingen, etc. Al deze gegevens worden opgeslagen in een datawarehouse. Dit datawarehouse bevindt zich op de centrale computer, een IBM-mainframe, waarop het z/os-besturingssysteem draait. Het mainframe is beschikbaar via ISPF, een grafische shell, en via query s in DB2 QMF (Database 2 Query Management Facility) kan data opgevraagd en geëxporteerd worden. Om de connectie tussen een.net-programma en de QMFexportcommando s te leggen, wordt er gebruikgemaakt van een component in REXX. REXX is een interpretertaal speciaal ontworpen door IBM voor gebruik op een mainframe. Figuur 1.2 op pagina 6 toont een voorbeeldverloop van de MF2PC-tool. Data in QMF worden via de MF2PC-interface geëxporteerd door middel van de MF2PC-mainframecomponent. Dit levert een mainframebestand op met de geëxporteerde data in een specifiek formaat. Deze formaten komen later nog aan bod. Hierna wordt dit bestand getransfereerd onder initiatief en controle van de MF2PC-mainframecomponent vanop het mainframe naar de pc van de eindgebruiker of naar de MF2PC-applicatieserver. Op deze machine verwerkt de MF2PCworkstationcomponent of de MF2PC-servercomponent het bestand en creëert hij uiteindelijk een Excel- of Wordbestand.

HOOFDSTUK 1. SITUERING 6 Figuur 1.2: Globale werking van de MF2PC-applicatie

HOOFDSTUK 1. SITUERING 7 1.5 QMF DB2 QMF is een query- en rapporteringstool op het mainframe. Bij ArcelorMittal Gent wordt gebruikgemaakt van QMF for TSO (mainframe interface). Er bestaat ook nog QMF for CICS (mainframe), QMF for WebSphere (webinterface) en QMF for Workstation (bv. Windows). QMF for TSO, verder QMF genoemd, wordt vaak gebruikt voor: ad hoc querying, (geautomatiseerde) rapportering en (geautomatiseerde) dataverwerking via ETL. Extraction, Transformation and Load (ETL) wordt gebruikt voor dataconversie en -uitwisseling tussen twee systemen. Met een query haalt QMF de gevraagde data op uit de databank (zie figuur 1.3). De lay-out van deze data kan worden bewerkt via het form om zo een rapport, webpagina of grafiek te creëren. Figuur 1.3: Ophalen en formatteren van data in QMF [2]

HOOFDSTUK 1. SITUERING 8 Figuur 1.4: Typische run in QMF Tijdens een QMF-sessie worden volgende tijdelijke geheugenzones gebruikt: query, data en form. Deze tijdelijke geheugenzones bestaan enkel tijdens een QMF-sessie en gaan verloren als QMF verlaten wordt. Ze kunnen elk maar één object bevatten. Die objecten kunnen worden bewaard in de database, en bewaarde objecten kunnen worden teruggekopieerd in de tijdelijke geheugenzones. Een query wordt ingetikt en dan gerund (zie figuur 1.4). Dit runnen haalt de gegevens op uit de database en die worden in de data-zone geplaatst. Hierop creëert QMF een default form en dan wordt het rapport op het scherm geprojecteerd.

Deel II Analyse 9

Hoofdstuk 2 Behoefteanalyse Een requirement is een behoefte of vereiste waaraan de softwareapplicatie moet voldoen: van de functionaliteit van de applicatie tot de taal waarin het programma is geschreven. Het bepalen van deze requirements wordt de behoefteanalyse genoemd, maar is in de IT-wereld beter gekend onder zijn Engelse benaming requirements analysis. De behoefteanalyse wordt als een essentieel onderdeel van het softwareontwikkelingsproces beschouwd. Hierbij is het van groot belang de stakeholders correct te definiëren en naar hun eisen te luisteren. De behoefteanalyse bestaat uit drie fasen. Eerst worden requirements bepaald door met klanten en gebruikers te communiceren om te bepalen wat hun behoeften en vereisten zijn. Dit gebeurt tijdens de requirements elicitation, namelijk de fase waarin de vereisten worden ontlokt. Vervolgens worden alle requirements geanalyseerd op tegenstrijdigheden en onvolledigheden. Tijdens de requirements analysis worden de onduidelijkheden weggewerkt en worden sommige requirements nog verder aangevuld of gespecificeerd. Tot slot volgt de requirements validation, waarbij de verschillende requirements gevalideerd en uitvoerig gedocumenteerd worden. [14] 2.1 Requirements detecteren Normaalgezien worden alle behoeftes en vereisten vanaf nul bepaald. Aangezien er echter al een MF2PC-applicatie bestaat, is het gemakkelijker om hierop voort te bouwen en te bepalen welke functionaliteit moet worden aangepast, verwijderd of bijgevoegd. 2.1.1 Enquête Het gebruik van de huidige MF2PC werd tijdelijk gemonitord om alle stakeholders van MF2PC te ontdekken. De stakeholders evalueerden de huidige MF2PC-applicatie via een enquête. Hoe wordt MF2PC ervaren? Waarvoor wordt deze het vaakst gebruikt? Welke nieuwe features dragen interesse? De enquête bevindt zich op de bijgevoegde cd-rom. Appendix A geeft meer informatie omtrent de inhoud van de cd-rom. 10

HOOFDSTUK 2. BEHOEFTEANALYSE 11 2.1.2 Gebruikersprofielen De gebruikers van MF2PC hebben verschillende profielen en kunnen worden onderverdeeld in drie groepen. Er zijn gewone gebruikers (users), veelgebruikers (power users) en tot slot ook beheerders (administrators of admins). users De eindgebruikers gebruiken MF2PC interactief: ze klikken op een knop. Ze maken enkel gebruik van de basisinterface van MF2PC (zie figuur 2.1). power users De power users gebruiken MF2PC op twee verschillende manieren. Enerzijds is er het interactief gebruik via een uitgebreidere interface (zie figuur 2.2), anderzijds zijn er geautomatiseerde verwerkingen die via batchjobs worden uitgevoerd. Hierbij komt MF2PC volledig tot zijn recht met al zijn functionaliteit. Vaak worden er door de gebruikers procedures geschreven om de verwerking automatisch te laten verlopen. admins Een admin is verantwoordelijk voor de MF2PC-omgeving en het aanspreekpunt bij problemen of bugs. De admin kent de MF2PC-toepassing en -omgeving integraal, zowel aan mainframe- als aan Windows-zijde. Figuur 2.1: MF2PC: basispanel Uit de enquête blijkt dat elke gebruiker het basispanel (zie figuur 2.1) gebruikt. Dit gebeurt meerdere keren per dag en vooral voor export van numerieke data naar Excel. In mindere mate wordt er ook geëxporteerd naar Word en HTML.

HOOFDSTUK 2. BEHOEFTEANALYSE 12 Het uitgebreide panel (zie figuur 2.2) wordt gebruikt door een derde van de ondervraagden op dagelijkse basis. Voornaamste export betreft QMF-data of een QMF-rapport naar een Excelbestand of tekst. Er wordt ook naar Word en HTML geëxporteerd, en zelfs naar tabellen in Access, maar niet zo frequent. Er worden nog steeds rechtstreeks QMF-rapporten afgedrukt en bestaande bestanden worden interactief opgestart na een export. Figuur 2.2: MF2PC: uitgebreid panel De helft van de gebruikers heeft ook batchjobs die MF2PC in niet-interactieve modus oproepen. Hiervan worden er honderden per dag gestart. Evenveel gebruikers maken gebruik van QMF-mail. QMF-mail is een applicatie om de gegenereerde bestanden automatisch te kunnen versturen via e-mail. Deze applicatie wordt integraal geïntegreerd in de nieuwe MF2PC-tool.

HOOFDSTUK 2. BEHOEFTEANALYSE 13 2.1.3 Soorten gebruik Het gebruik van de huidige MF2PC-tool kan op verschillende manieren worden onderverdeeld. Zo is er een onderscheid te maken tussen uitvoering op een pc enerzijds, of op een applicatieserver anderzijds. Ook kan een onderscheid worden gemaakt tussen de aansturing vanuit mainframe. Dit kan interactief of via batchverwerking. Dit levert volgende mogelijkheden op: Uitvoering op pc wordt steeds interactief geïnitieerd vanop de MF2PC-panels of vanuit een QMF-procedure. Uitvoering op pc kan niet worden gestart vanuit een batchjob. Uitvoering op een MF2PC-applicatieserver kan naast interactieve aansturing via een panel of procedure ook vanuit een geplande batchverwerking worden aangestuurd. Vele MF2PC-verwerkingen gebeuren vanuit een geplande batchverwerking. 2.1.4 Gebruikersinterface De applicatie leent zich niet tot een uitgebreide grafische interface doordat de export gebeurt vanuit QMF. De opzet van de gebruikersinterface blijft behouden, enkel een paar details veranderen. Zo wordt de omschakeling voor de gebruikers vergemakkelijkt. 2.1.5 Systeemvereisten Technologie In ArcelorMittal Gent wordt voor het Windows-platform geprogrammeerd in.net. De ontwikkelaar is vrij in zijn keuze tussen C# en VB.NET, al maakt C# de laatste jaren een opmars. Er zijn ook nog veel applicaties in VB6 geschreven, zoals de huidige MF2PC-applicatie. Er wordt bij dit project geopteerd voor C# in.net, aangezien de applicatie volledig herschreven wordt. Componenten Office Automation heeft een instantie van MS Office nodig. De enige manier om Office te draaien op een server is in de beheerderssessie. De performantie laat te wensen over en ook architecturaal is dit geen correcte oplossing. Er wordt overgegaan op een volwaardige servercomponent die Office-less bestanden kan genereren. Dit betekent dat Office Automation geschrapt wordt en MF2PC niet meer in de beheerderssessie zal draaien.

HOOFDSTUK 2. BEHOEFTEANALYSE 14 2.1.6 Hardware Op een applicatieserver draait één instantie van de applicatie. Deze moet in staat zijn om alle aanvragen te verwerken. In totaal zullen er vijf applicatieservers beschikbaar zijn. De applicatieservers bezitten 3GB RAM en draaien Windows Server 2003. Er is reeds een component aanwezig die het werk evenwichtig verdeelt over de aanwezige servers. 2.1.7 Betrouwbaarheid Momenteel blijven batchjobs op het mainframe wachten tijdens het creëren van rapporten. Dit leidt vaak tot fouten. Hiervoor wenst men een extra veiligheid te voorzien. Tevens moet de betrouwbaarheid verbeterd worden zodat procedures zelden nog vastlopen. 2.1.8 Veiligheid De huidige applicatie scoort niet hoog op vlak van beveiliging. Dit komt doordat deze in een beheerderssessie draait en dus met beheerdersrechten. Dit druist in tegen de algemene beveiligingsprincipes op pc s en servers. De nieuwe MF2PC scoort beter op vlak van beveiliging doordat de applicatie niet langer in de beheerderssessie zal draaien, maar onder een andere gebruiker met specifieke rechten. 2.1.9 Software Kwaliteit De applicatie moet zeer gebruiksvriendelijk en idiot proof zijn. Foutmeldingen moeten een duidelijke oorzaak geven en het mogelijk maken om deze fout makkelijk op te sporen en indien nodig zelfs na te bootsen. Dit wordt nog verbeterd door gebruik te maken van extensieve logging. Naamgeving Er is geen standaard bij ArcelorMittal Gent wat betreft de naamgeving en terminologie. De code wordt gedocumenteerd in het Engels zodat er geen taalbeperking is ten opzichte van andere werknemers van ArcelorMittal in andere vestigingen en landen. Variabelen en methoden worden om diezelfde reden ook in het Engels gekozen. Ze volgen de PascalCasemethode, aangezien die algemeen aanvaard is in het.net-milieu. Microsoft gebruikt zelf ook PascalCasing. Bij PascalCasing bestaat de naam van de variabele of methode uit een concatenatie van woorden met een hoofdletter. [15] Bij camelcase echter is de eerste letter een kleine letter. In C-stijl worden de woorden aaneengeschakeld door een underscore.

HOOFDSTUK 2. BEHOEFTEANALYSE 15 PascalCase camelcase C-stijl ExampleVariable examplevariable example_variable Tabel 2.1: Naamgeving 2.1.10 Huidige problemen en beperkingen Office-bestandstypes MF2PC is compatibel met Office-versies tot 2003, maar kan geen Office 2007-bestanden genereren. Elke pc bij ArcelorMittal Gent beschikt over de Office 2007-suite. Samen met de Office 2007-suite introduceerde Microsoft ook de Office Open XML-bestandsformaten (OOXML). OOXML (zoals.docx of.xlsx) is een gezipt, XML-gebaseerd bestandsformaat. [16] Office 2007 is achterwaarts compatibel, maar doordat het bestand geen OOXML-indeling heeft, geeft dit een foutmelding. Dit is niet praktisch en ook niet gewenst. Een ander nadeel is dat Excel 2003 beperkt is tot 256 kolommen; hierover volgt later meer. Lengte van de kolomnamen Kolomnamen langer dan 18 karakters kunnen niet geëxporteerd worden. Dit is een historisch fenomeen doordat DB2 geen kolomnaam toeliet die langer dan 18 karakters is. Het is echter mogelijk om de naam van een kolom te vervangen door een langere naam (maximaal 30 karakters). Deze moeten ook correct geëxporteerd worden. Aantal kolommen in Excel De export naar Excel is beperkt tot 256 kolommen. De reden hiervoor is te zoeken bij Excel zelf, meer bepaald tot versie 2003. Deze versie laat slechts 256 kolommen toe. Om problemen bij het exporteren te voorkomen, werd deze limiet van maximaal 256 kolommen in de MF2PC-applicatie opgenomen. Dit vormde een probleem, aangezien bepaalde tabellen op het mainframe uit meer dan 500 kolommen bestaan. Vanaf Excel 2007 vormt dit geen probleem meer. Enkel de beperking dient uit de applicatie verwijderd te worden. Dataformaat in Excel Niet alle gegevens behouden hun formaat bij het exporteren naar Excel. Zo worden bv. soms getallen als tekst getoond. Dit probleem manifesteert zich ook bij een datum. Deze wordt ook als tekst getoond in plaats van als een datumtype.

HOOFDSTUK 2. BEHOEFTEANALYSE 16 2.2 Functionele requirements De applicatie heeft bepaalde taken te vervullen. Aangezien er voor de gebruikers weinig tot niets mag veranderen, blijven de taken van de applicatie grotendeels gelijk. Deze taken worden visueel voorgesteld in een takendiagram (zie figuur 2.3). Een takendiagram of use case diagram geeft de functionaliteit van de applicatie weer, bekeken vanuit het standpunt van de gebruikers. Figuur 2.3: Use case diagram: MF2PC 2.2.1 Conversie Het hoofddoel van MF2PC is gegevens van het mainframe naar Windows te transfereren en deze te converteren naar een gekend bestandstype. Er zijn hierbij twee soorten bestandsformaten. Enerzijds zijn er de invoerformaten, anderzijds zijn er de uitvoerbestanden. Invoerformaten De invoermogelijkheden van MF2PC blijven behouden. Volgende objecten in QMF kunnen als invoer dienen voor MF2PC: DB2-tabel / QMF-data QMF-rapport (enkel data of volledig) QMF-query QMF-procedure Mainframebestand

HOOFDSTUK 2. BEHOEFTEANALYSE 17 De exporteerbare QMF-objecten worden hier kort verduidelijkt. DB2-tabel/QMF-data Data kunnen geselecteerd worden door een query te runnen of door deze te importeren van buiten QMF. Een DB2-tabel kan als data beschouwd worden. Het enige verschil is dat data zich in de tijdelijke geheugenzone bevindt, maar dit heeft geen invloed bij het exporteren. Figuur 2.4 toont een voorbeeld van een DB2-tabel of QMF-data. ID NAME DEPT JOB YEARS SALARY COMM 10 SANDERS 20 MGR 7 18357.50 20 PERNAL 20 SALES 8 18171.25 612.45 30 MARENGHI 38 MGR 5 17506.70 40 O BRIEN 38 SALES 6 18006.00 846.55 50 HANES 15 MGR 10 20659.80 60 QUIGLEY 38 SALES 16808.30 650.25 70 ROTHMAN 15 SALES 7 16502.80 1152.00 80 JAMES 20 CLERK 13504.60 128.20 90 KOONITZ 42 SALES 6 18001.75 1386.70 100 PLOTZ 42 MGR 7 18352.80 Figuur 2.4: DB2-tabel/QMF-data: voorbeeld QMF-rapport Een rapport is een combinatie van data en form. Een rapport heeft geen tijdelijke geheugenzone, in tegenstelling tot de data en het form waaruit het is opgebouwd. Bij het runnen van een query creëert QMF een default form en dan wordt het rapport op het scherm geprojecteerd. De form wordt gebruikt om een formattering aan de data te geven. Een simpel voorbeeld is een andere volgorde aan de kolommen te geven, maar de mogelijkheden zijn veel uitgebreider dan dit. QSTAFF DUMMY TABLE HEADER DEPT JOB AVERAGE SALA 10 MGR $21151. 1 5 $21151. 1 5 15 CLERK $12383. 3 5 MGR $20659. 8 0 SALES $16502. 8 0 $16515. 3 2 ============ AVERAGE SALARY $16850. 0 6 EXAMPLE REPORT Figuur 2.5: QMF-rapport: voorbeeld

HOOFDSTUK 2. BEHOEFTEANALYSE 18 QMF-query Een query geeft aan welke gegevens uit de database moeten worden opgehaald en wordt in haar tijdelijke geheugenzone geplaatst. SELECT FROM Q. STAFF WHERE ID = 10 Figuur 2.6: QMF-query: voorbeeld QMF-procedure Een procedure is een groep van QMF-commando s die kunnen uitgevoerd worden in één enkel run-commando. Proc is de afkorting van procedure in QMF. Er zijn twee soorten procedures. De native-procedures laten enkel lineaire tekst toe. Een REXX -procedure laat condities toe. Een voorbeeld van een REXX-procedure is te zien in figuur 2.7. SET GLOBAL(BEDRIJF= A r c e l o r M i t t a l Gent ERASE MIJNTABEL RUN MIJNQUERY (FORM=MIJNFORM &&DAYS=1 RUN S. REPORT TO NOTES(ARG=(DAGELIJKS RAPPORT SAVE DATA AS MIJNTABEL RUN S. CREATE INDEX( + &&TBNAME=MIJNTABEL, + &&UNIQUE=NO, + &&KOLS=NAME+JOB+DEPT Figuur 2.7: QMF-procedure: voorbeeld Uitvoerformaten De bestandsformaten die gecreëerd kunnen worden, hebben nood aan een update. Sommige bestandsformaten krijgen een update naar een nieuwe versie. Andere oudere formaten worden verwijderd aangezien deze toch niet meer gebruikt worden. Tot slot worden er nog enkele nieuwe formaten toegevoegd. Het wordt mogelijk om volgende bestanden te genereren: Word 2007 Excel 2007 Text CSV XML HTML PDF Grafiek in Excel

HOOFDSTUK 2. BEHOEFTEANALYSE 19 2.2.2 Naverwerking E-mail Gebruikers wensen een notificatie-e-mail te ontvangen nadat MF2PC een batchverwerking heeft uitgevoerd. Deze e-mail bevat informatie over de geconverteerde bestanden, hun locaties en eventuele fouten die zich hebben voorgedaan. Een andere optie is dat het gecreëerde document rechtstreeks wordt verstuurd per e-mail als bijlage. Automatisch openen tijdens verwerking op pc De gebruiker kan aangeven of het bestand automatisch wordt geopend op zijn pc nadat MF2PC het creëerde. Dit wordt vaak gebruikt om zo het document nog verder te bewerken via een macro, die automatisch wordt gestart bij het openen van het document. Printer De gewenste gegevens kunnen rechtstreeks worden doorgestuurd naar een printer en worden afgedrukt. 2.3 Requirements valideren Alle requirements zijn vastgesteld, onderzocht en goedgekeurd. Nu dienen ze ook een prioriteit te krijgen en moet worden vastgesteld of deze in het alfa- of bèta-prototype worden vervat. Hierna volgt een oplijsting van de requirements met hun prioriteit en bijhorend prototype (zie tabel 2.2, 2.3, 2.4 en 2.5).

HOOFDSTUK 2. BEHOEFTEANALYSE 20 Tabel 2.2: Exporteren van gegevens Tabel 2.3: Functies voor Word

HOOFDSTUK 2. BEHOEFTEANALYSE 21 Tabel 2.4: Functies voor Excel

HOOFDSTUK 2. BEHOEFTEANALYSE 22 Tabel 2.5: Functies voor naverwerking

Hoofdstuk 3 Functionele analyse De functionele analyse is het resultaat van een technische studie van de functionele requirements uit de behoefteanalyse. De vertaling van deze requirements naar een technische beschrijving verduidelijkt wat technisch nodig is om de applicatie vlot te ontwikkelen. Het MF2PC-proces verloopt in drie stappen: 1. De gegevens worden vanuit QMF geëxporteerd naar een bestand op het mainframe. 2. Dit bestand wordt gekopieerd naar een Windowsomgeving. 3. Aan Windowszijde wordt het bestand bewerkt tot het doelformaat. De volgende secties verduidelijken deze drie stappen. 3.1 Gegevensextractie uit QMF De werking van QMF werd besproken in de situering. De verschillende QMF-objecten werden in de behoefteanalyse uitgelegd. Die QMF-objecten kunnen geëxporteerd worden naar een bestand op het mainframe. Hieronder wordt verduidelijkt hoe dit in zijn werk gaat. 3.1.1 QMF-exportcommando QMF-objecten worden via het exportcommando geëxporteerd naar een bestand op het mainframe in het opgegeven exportformaat. Export table/data EXPORT <table> of EXPORT <data> exporteert een tabel of data. QMF, IXF of XML zijn. Het exportformaat kan 23

HOOFDSTUK 3. FUNCTIONELE ANALYSE 24 Export query/proc Zowel een query als een procedure wordt als tekst geëxporteerd. Export report EXPORT <report> schrijft de volledige tekst van het geformatteerde rapport weg. Het exportformaat kan general format (met bijhorende metadata over de inhoud) of HTML-formaat (zonder metadata) zijn. Bij het exporteren van een rapport gaan eventuele pagebreaks verloren. Print report Bij PRINT <report> schrijft QMF de volledige tekst van het geformatteerde rapport weg, inclusief paginaopmaak. In tegenstelling tot EXPORT <report> behoudt dit commando wel de pagebreaks van het rapport. Dit wordt gebruikt om afdrukklare rapporten in Word te maken. Het commando verwacht naast de naam van de printer of opslagplaats ook de breedte (aantal karakters per lijn) en de diepte (aantal lijnen per pagina) van het rapport. Het is ook mogelijk andere QMF-objecten te printen, maar dit wordt niet gebruikt. 3.1.2 QMF-exportformaten QMF maakt een onderscheid in het exporteren van data of tabellen en het exporteren van een rapport. Een tabel of data exporteren levert een doelbestand op in het QMF-, IXF- of XML-formaat. Een rapport exporteren kan in het algemeen formaat (general format) of in HTML-formaat. QMF-formaat Het QMF-formaat bestaat uit twee delen: headerrecords en datarecords. Headerrecords beschrijven de data in de records, de datarecords bevatten de eigenlijke data. Het QMF-formaat is een gesloten formaat. Het hoofddoel is om deze geëxporteerde gegevens nadien opnieuw in QMF te importeren. XML-formaat Bij export in XML-formaat is het bestand beperkt tot 32K karakters (vanuit QMF). QMF gebruikt de z/os XML parse services en z/os Unicode conversion services bij het exporteren naar XML-formaat. Deze services moeten dan ook geconfigureerd en actief zijn op het mainframe. De data zijn geëncodeerd in UTF-8. Export naar XML-formaat is niet interessant doordat de grootte van het exportbestand gelimiteerd is. De beschikbaarheid van de vereiste services is eveneens geen zekerheid.

HOOFDSTUK 3. FUNCTIONELE ANALYSE 25 Het XML-bestand ziet er als volgt uit: <DataSet xmlns= http : / /www. ibm. com/qmf xmlns : xsi http : / /www. w3. org /2001/XMLSchema i n s t a n c e > <ResultSet > <MetaData> <S o u r c e D e s c r i p t i o n /> <ColumnsAmount>7</ColumnsAmount>... D e f i n i t i o n s f o r each column go here. </Metadata> <Data>... Data f o r each row goes here. </Data> </ResultSet > <Extensions /> </DataSet> Figuur 3.1: XML-formaat [3] IXF-formaat IXF staat voor Integrated Exchange Format. Het IXF-formaat bestaat uit verschillende records (zie figuur 3.2). De output is binair of karaktergebaseerd. Figuur 3.2: IXF-formaat [3] H-record Het headerrecord bevat 42 bytes aan algemene informatie zoals de IXF-versie, datum en tijd, etc. T-record Het tablerecord bevat tabel en data informatie, o.a. de datasource, het dataformaat (binair of karaktergebaseerd) en het aantal kolommen. C-record Het columnrecord beschrijft de karakteristieken van een kolom. Er is één record per kolom. D-record Het datarecord bevat de data van één rij in de tabel. Figuur 3.3 toont de DB2-tabel uit figuur 2.4 op pagina 17 geëxporteerd in IXF-formaat.

HOOFDSTUK 3. FUNCTIONELE ANALYSE 26 HIXF0000QMF V9R1M02013030515341700009N T18 DB2 CCI00007 C02ID NYNR50000000 000002 00 C04NAME YYNR44800000 00009000008 00 C04DEPT YYNR50000000 000023 00 C03JOB YYNR45200000 00005000030 00 C05YEARS YYNR50000000 000036 00 C06SALARY YYNR48400000 00702000043 00 C04COMM YYNR48400000 00702000053 00 D 00010 00007SANDERS 00020 MGR 00007 18357.50 D 00020 00006PERNAL 00020 SALES 00008 18171.25 00612.45 D 00030 00008MARENGHI 00038 MGR 00005 17506.70 D 00040 00007O BRIEN 00038 SALES 00006 18006.00 00846.55 D 00050 00005HANES 00015 MGR 00010 20659.80 D 00060 00007QUIGLEY 00038 SALES 16808.30 00650.25 D 00070 00007ROTHMAN 00015 SALES 00007 16502.80 01152.00 D 00080 00005JAMES 00020 CLERK 13504.60 00128.20 D 00090 00007KOONITZ 00042 SALES 00006 18001.75 01386.70 D 00100 00005PLOTZ 00042 MGR 00007 18352.80 Figuur 3.3: IXF-formaat H QMF 15 R 01 E V W E R 02 03 13/03/25 11:47 V 1001 006 PERIOD V 1002 003 016 T 1010 003 006 1013 005 1014 006 1015 006 1016 006 1017 006 1012 008 R L 000001 000003 000008 000001 BREAK1 R C 000009 000011 000015 000001 R D2 000016 000018 000029 000001 AVERAGE L 110 10100000 QSTAFF DUMMY TABLE HEADER L 110 10000000 L 110 10000000 L 170 10000000 DEPT JOB AVERAGE SALA L 170 10010000 L 180 11000000 10 MGR $21, 1 5 1. 1 5 L 151 10010000 L 151 11100000 $21, 1 5 1. 1 5 L 151 10000000 L 180 11000000 15 CLERK $12, 3 8 3. 3 5 L 180 11000000 MGR $20, 6 5 9. 8 0 L 180 11000000 SALES $16, 5 0 2. 8 0 L 151 10010000 L 151 11100000 $16, 5 1 5. 3 2 L 151 10000000 L 190 10010000 ============ L 190 11100000 AVERAGE SALARY $17, 6 7 4. 2 7 L 120 10000000 L 120 10000000 L 120 10100000 EXAMPLE REPORT E Figuur 3.4: Standaard rapportformaat

HOOFDSTUK 3. FUNCTIONELE ANALYSE 27 Standaard rapportformaat Dit is het standaardformaat bij het exporteren van een rapport. Het bevat naast de geformatteerde tekst ook bijhorende meta-informatie. Figuur 3.4 toont het rapport uit figuur 2.5 op pagina 17 geëxporteerd naar het standaard rapportformaat. HTML-formaat De export naar HTML is enkel beschikbaar voor rapporten, zowel volledige rapporten als enkel de data. Het rapport wordt in een HTML-pagina tussen <pre>-tags in het body-element geplaatst. Figuur 3.5 toont een voorbeeld van het rapport uit figuur 2.5 op pagina 17. <HTML> <HEAD> <TITLE> Report </TITLE> </HEAD> <BODY> <PRE> QSTAFF DUMMY TABLE HEADER DEPT JOB AVERAGE SALA 10 MGR $21151. 1 5 $21151. 1 5 15 CLERK $12383. 3 5 MGR $20659. 8 0 SALES $16502. 8 0 $16515. 3 2 ============ AVERAGE SALARY $16850. 0 6 </PRE> </BODY> </HTML> EXAMPLE REPORT Figuur 3.5: HTML-formaat

HOOFDSTUK 3. FUNCTIONELE ANALYSE 28 3.2 Bestandsoverdracht van mainframe naar Windows Bestanden aanmaken op het mainframe (zos) kan met het allocate-commando. Het lukt niet om bestanden van het mainframe naar een Windows-server of Windows-pc te transfereren. Hiervoor is er nood aan andere protocollen. Vanuit het mainframe kunnen bestanden worden verplaatst naar een server met ftp. Dit is een protocol om bestanden te transfereren over een TCP-gebaseerd netwerk. IBM heeft WSA (Workstation agent) ontworpen om vanuit het mainframe een connectie te maken met een Windows-pc. Deze connectie vormt een alternatief voor ftp. 3.3 Gegevensconversie naar doelformaat Nadat het bestand vanop het mainframe getransfereerd werd naar een Windowsomgeving, wordt deze door de MF2PC-Windowscomponent omgevormd tot het uiteindelijke bestandsformaat. De outputformaten zijn op te splitsen in twee grote groepen. Enerzijds zijn er de tabulaire formaten (bv. Excel, CSV), anderzijds zijn er de tekstuele formaten (Word, HTML). Bij de tabulaire formaten moet soms het datatype behouden worden, zoals bij Excel het geval is. Hier dient een datum ook na export het datumformaat te hebben in Excel. Bij export naar CSV of naar Word of HTML in tabelvorm gaat het dataformaat verloren. De opmaak van het rapport is hierbij minder van belang. Er moet voornamelijk gemakkelijk met deze gegevens kunnen worden verder gewerkt. Tekstueel Tabulair Printklaar TXT CSV Word HTML Excel Grafiek Tabel 3.1: Onderverdeling bestandsformaten Bij tekstuele formaten is er een onderscheid tussen printklare Word-documenten (of eventueel pdf) en HTML- en tekstfiles. De reden hiervoor is dat de gebruiker in een QMF FORM een specifieke paginalay-out kan meegeven. Die moet dan ook behouden worden bij export (met name de pagebreaks), zodat printen gebeurt met de exacte lay-out zoals beschreven door de gebruiker. De pagebreaks gaan verloren bij een HTML- of tekstbestand. Deze bestandstypes hebben eerder als doel makkelijk tekstuele informatie te extraheren uit QMF zonder dat hierbij de paginaschikking erg van belang is (andere formattering wordt wel behouden). De conversie wordt opgesplitst in twee fasen. De eerste fase exporteert van het mainframe naar een intermediair formaat. De tweede fase stelt de output voor van de MF2PC-toepassing, met andere woorden van het intermediair formaat naar een outputformaat (Word, Excel, HTML... ).

HOOFDSTUK 3. FUNCTIONELE ANALYSE 29 3.3.1 Gegevensconversie DB2-Tabel/QMF-data naar tabulair Exporteren van een DB2-tabel of QMF-data behoudt de gegevenstypes. Zo worden getallen als getallen opgeslagen, met hetzelfde aantal beduidende cijfers, en ook een datum blijft van het datumtype. Het gaat hier enkel om kolomheaders en gegevens. Titels, tussentitels, headers en footers komen niet voor. QMF-rapport naar tabulair De gegevenstypes worden zo goed mogelijk behouden. De gegevens kunnen horizontaal of verticaal verder opgesplitst zijn volgens bepaalde criteria, in tegenstelling tot een DB2-tabel of QMF-data. De titels, tussentitels, headers en footers blijven behouden. De nadruk ligt hier op de gegevens en niet op de lay-out van het rapport. QMF-rapport naar tekstueel Een rapport exporteren naar tekstuele gegevens behoudt de opmaak. De opmaak wordt standaard door QMF gerealiseerd door toevoegen van spaties. Er zijn geen specifieke gegevenstypes nodig en de nodige lay-outspecificaties (met uitzondering van pagebreaks) kunnen via de QMF FORM ingesteld worden. Hier worden titels, tussentitels, aangepaste kolomnamen, toegevoegde dollar- of eurotekens bij valuta etc. wel behouden. QMF-rapport naar printklaar Een rapport exporteren naar een printklaar tussenformaat behoudt de exacte opmaak van het rapport (inclusief form). Dit is de enige optie als de pagebreaks behouden moeten blijven. Er wordt ook berekend aan de hand van het aantal kolommen of de pagina portrait- of landscapegeöriënteerd is. Verder wordt eveneens de lettergrootte aangepast aan het maximaal aantal tekens die op een lijn voorkomen, en het maximaal aantal lijnen per pagina. De data wordt aan mainframe-zijde bewerkt via ICEMAN. ICEMAN is een implementatie van IBM s DFSORT -product dat gebruikt wordt voor het sorteren, samenvoegen, kopiëren en analyseren van bestanden. Zonder deze bewerking aan mainframe-zijde is het onmogelijk om de pagebreaks te exporteren naar Windowszijde. QMF-query/QMF-proc naar tekstueel Een query of procedure exporteren leidt tot enkele regels platte tekst. Dit gebeurt voornamelijk om de query of procedure extern (niet op het mainframe) op te slaan.

HOOFDSTUK 3. FUNCTIONELE ANALYSE 30 3.3.2 Bestandscreatie Tabulair naar CSV, Word/HTML(-tabel) De gegevens worden uitgeschreven naar een tabulair formaat. Hierbij wordt het gegevensformaat behouden, maar niet het gegevenstype. Het resultaat is een CSV-bestand of een Wordof HTML-bestand met een tabel. Tabulair naar Excel Alle gegevens in Excel hebben hun originele gegevenstype. Een datum wordt in Excel weergegeven als een datum, een string als tekst, een integer als getal, een geldbedrag als valuta en zo verder. Tekstueel naar tekst, Word, HTML De gegevens behouden de formattering door QMF en worden zo in een tekst-, Word- of HTML-bestand verpakt. Verdere bewerkingen op deze gegevens uitvoeren is moeilijk, maar de gegevens kunnen wel gemakkelijk afgedrukt worden. Printklaar naar Word De exacte lay-out zoals zichtbaar in QMF (inclusief pagebreaks) blijft behouden. De lettergrootte en paginaoriëntatie in Word worden aangepast naar gelang het aantal karakters per regel. Deze export levert een printklaar document op (eventueel in pdf-formaat) met de nadruk op de exacte lay-out en paginaindeling uit QMF. 3.3.3 Datatypeconversie DB2/QMF kent verschillende datatypes, net als Excel. Deze datatypes zijn niet dezelfde. Er zijn twee mogelijkheden om deze datatypes te converteren zonder kostbare informatie te verliezen: De ingelezen data worden opgeslagen als string met hierbij een indicatie van het originele datatype en bij het uitschrijven naar Excel wordt naar het juiste type gecast. De ingelezen data wordt opgeslagen in het programma met een passend datatype en bij het uitschrijven nogmaals geconverteerd naar een Excel-datatype. Hier moet er ook rekening gehouden worden met C#-datatypes. Het nadeel van de eerste mogelijkheid is meteen het voordeel van de tweede optie: er niet hoeft geknoeid te worden met de juiste syntax van strings en het casten van datatypes wordt begeleid door het.net-framework. Tabel 3.2 paart de QMF-datatypes met de bijpassende C#- en Excel-datatypes.

HOOFDSTUK 3. FUNCTIONELE ANALYSE 31 DB2/QMF C# Excel Date DateTime Date Time DateTime Time Timestamp DateTime DateTime Char String Text Varchar Long varchar Float Double Number Decimal Smallint Integer Number Integer Bigint Graphic Niet gebruikt Vargraphic Long vargraphic Binary Niet beschikaar in karaktermodus Varbinary Tabel 3.2: Datatypes DB2 C# Excel 3.4 Crosscheck met functionele requirements Er worden verschillende features geschrapt bij de overgang naar de nieuwe MF2PC-tool. Hiervoor zijn verschillende redenen: ze worden niet langer gebruikt, er zijn betere alternatieven mogelijk of het is technisch moeilijk haalbaar deze te behouden. Tabel 3.3 geeft een grafische samenvatting. De grafiek-functie uit de huidige MF2PC-tool blijft behouden, maar wordt achter de schermen wel veranderd. Momenteel werkt dit nog met ComponentOne Charts, een programma om 2D- en 3D-grafieken mee te ontwerpen. Dit wordt omgeschakeld naar Excel Charts. Excel beschikt momenteel over voldoende mogelijkheden en is algemeen aanvaard voor het opstellen van grafieken. Het exporteren van een DB2-tabel of QMF-data is niet langer mogelijk naar tekstuele vorm, d.w.z. Word of HTML (in tekst). Alhoewel de export-mogelijkheid naar Word-tekst of HTMLtekst wel in de huidige MF2PC-tool zit, is deze niet compatibel met het laatste QMF-formaat en werkt ze daarom niet. Als alternatief wordt het wel mogelijk om te exporteren naar een Word- of HTML-tabel.

HOOFDSTUK 3. FUNCTIONELE ANALYSE 32 Tabel 3.3: Crosscheck met functionele requirements: overzicht

Hoofdstuk 4 Evaluatie van Office-API s Voor de bestandsgeneratie van Office 2007-bestanden (met name Word en Excel) werd een API gezocht. Er zijn verschillende API s voor het lezen, schrijven en bewerken van Office-documenten. De API s worden vergeleken met elkaar om zo het beste product te onderscheiden. Dit onderzoek is uitgevoerd vanuit het standpunt van de MF2PC-ontwikkelaar. De gezochte API moet het creëren van Office-documenten vergemakkelijken en versnellen voor de ontwikkelaar. Er werd onderzocht welke API hierop het beste scoort. Om dit zo objectief mogelijk te laten verlopen, werden eerst criteria bepaald waarop de softwareproducten beoordeeld werden. Deze criteria kregen ook een gewicht toegekend. Dit leidt tot een meer objectieve scoring. Dit hoofdstuk is slechts een samenvatting van het onderzoek naar de meest geschikte API. Een volledige beschrijving van het onderzoek naar een Office-API is te vinden op de cd-rom (zie appendix A). 4.1 Evaluatiecriteria De component moet oproepbaar zijn vanuit het.net-framework en bijgevolg geschreven zijn in.net of COM. Hierbij worden o.a. Java-interfaces uitgesloten aangezien deze niet rechtstreeks oproepbaar zijn vanuit.net, al zou dit mogelijk zijn via wrapperklassen of proxies. Dit heeft als bijkomend voordeel dat er geen onnodig performantieverlies is, wat bv. zou optreden bij een Java-interface. De API dient up-to-date te zijn en ook goed te worden onderhouden. Regelmatig nieuwe releases en bugfixes zijn hier een goede indicatie van. Er wordt verwacht dat de API volgende bestandstypes kan genereren: Word 2007, Excel 2007 en pdf. Voor de andere bestandstypes (HTML, CSV, TXT) zijn er eenvoudigere alternatieven, zoals IO-streams. 33

HOOFDSTUK 4. EVALUATIE VAN OFFICE-API S 34 Het prijsaspect is van minder belang, maar het moet wel mogelijk zijn de oplossing uit te rollen op (web)servers. Om de leercurve zo laag mogelijk te houden, is een grote hoeveelheid aan documentatie samen met het gebruiksgemak van zeer groot belang, alsook de mogelijkheid tot support. Het aanvragen van nieuwe features is een pluspunt, maar zeker niet noodzakelijk. De API moet zeker in volgende functies voorzien: formatteren van tekst en lay-out, aanpassen van print- en pagina-instellingen, schrijven naar bestaande of nieuwe bestanden en specifiek voor Excel: ondersteunen van grafieken, draaitabellen en formules. 4.2 Productevaluatie De evaluatie gebeurt in twee iteraties. We vertrekken van een brede basis producten die op het eerste zicht voldoen aan de vereisten. Tijdens de eerste iteratie gebeurt een grove filtering op basis van de product- en bedrijfsinformatie. Nadien volgt er voor de overgebleven producten nog een tweede evaluatie. Tijdens deze tweede iteratie wordt het gebruiksgemak nagegaan en worden de specifieke mogelijkheden bepaald. 4.2.1 Producten 1. Aspose.Words [17] 2. Aspose.Cells [18] 3. Independentsoft Word.NET [19] 4. Independentsoft Spreadsheet.NET [20] 5. Gembox.Document [21] 6. Gembox.Spreadsheet [22] 7. Spire.Doc [23] 8. Spire.XLS [24] 9. Bytescout document SDK for.net [25] 10. Bytescout spreadsheet SDK for.net [26] 11. SoftArtisans OfficeWriter [27] 12. Excel package [28] 13. Word package [29] 14. SmartXLS [30] 15. ExtremeML [31] 16. Export to Excel [32] 17. OpenExcel [33] 18. SpreadsheetGear 2010 [34] 19. ComponentOne Spread.NET [35] 20. ComponentOne ActiveReports [36] 21. Open XML SDK [37] 22. Apache POI [38] 23. Docx4j [39] 24. Visual Studio Tools for Office [40]

HOOFDSTUK 4. EVALUATIE VAN OFFICE-API S 35 4.2.2 Bedrijfs- en productinformatie Op basis van de opgezochte product- en bedrijfsinformatie wordt een eerste selectie gemaakt. Verscheidene producten voldoen niet aan de vereisten. Apache POI en Docx4j vallen af aangezien deze geschreven zijn in en voor Java. Ook Visual Studio Tools for Office valt af, aangezien dit werkt met Office Automation. Daarnaast vallen ook Bytescout document SDK, Excel Package, Word Package, ExtremeML, ExportToExcel en OpenExcel af aangezien er niet genoeg informatie beschikbaar is en de meeste nog in bèta-stadium zijn of reeds meerdere jaren niet meer geüpdatet zijn. Doordat ComponentOne Spread.NET niet als hoofddoel heeft om Office-bestanden te genereren, maar dit eerder een bijkomstigheid is van het product, wordt het niet verder opgenomen in de vergelijking. De andere producten worden verder vergeleken met elkaar. Deze vergelijking gebeurt aan de hand van verschillende requirements die van belang zijn voor de eindgebruiker en dus tot de mogelijkheden van deze API moeten behoren. Aan elk van deze requirements wordt een score en gewicht toegekend om zo de API s objectief met elkaar te vergelijken. Meer informatie over deze cijfergegevens is terug te vinden op de cd-rom (zie appendix A). Uit de vergelijking blijkt: SoftArtisans OfficeWriter biedt geen geschikte developers- en distributielicentie aan. Dit is zeer belangrijk aangezien de applicatie anders niet kan uitgerold worden op de servers. Hierdoor schiet ook dit product te kort. IndependentSoft Word.NET en Spreadsheet.NET behoren niet tot de kernactiviteit van dit bedrijf. Gecombineerd met gebrekkige informatie en documentatie, leidt dit tot een ondermaatse score. Hierdoor worden deze producten niet onderworpen aan verdere testen. SmartXLS evenals SpreadsheetGear 2010 zijn enkel toegespitst op Excel-functionaliteiten. Geen van beide ondersteunt Word of heeft een soortgelijke API in hun gamma. Hierbij komt nog eens de afwezigheid van kwaliteitsvolle documentatie bij SmartXLS. Dit droeg allemaal bij tot hun matige score en door de vele andere producten die beter scoorden, vallen deze ook af. Volgende producten behaalden een goede tot zeer goede score (zoals weergegeven in figuur 4.1) en worden verder getest: Aspose.Words en Aspose.Cells Gembox.Document en Gembox.Spreadsheet Spire.Doc en Spire.XLS ComponentOne ActiveReports OpenXML SDK

HOOFDSTUK 4. EVALUATIE VAN OFFICE-API S 36 Figuur 4.1: Score per product voor Word, Excel en gemiddeld 4.2.3 Testen van de API Deze API s werden expliciet getest op volgende punten: Steilheid van de leercurve Gebruiksgemak en intuïtiviteit Makkelijk te lezen en te onderhouden code Dit gebeurde door een eenvoudig testprogramma te schrijven dat enkele bestanden inlas met data en dit nadien weer uitschreef naar een Excel-, Word- en pdf-bestand met eenvoudige opmaak van de tekst. Zowel Aspose.Words en Aspose.Cells, Gembox.Document en Gembox.Spreadsheet, als Spire.Doc en Spire.XLS, zijn zeer intuïtief in omgang. Na slechts enkele minuten kwam er een eenvoudig Excel-werkboek tevoorschijn. Ook Word-documenten waren gemakkelijk te creëren. De code is gemakkelijk te lezen, leren en gebruiken. ComponentOne ActiveReports heeft een zeer ingewikkelde API. Er zijn weinig concrete of begrijpbare voorbeelden te vinden en ook de documentatie is niet overzichtelijk. OpenXML SDK is zeer ingewikkeld. Het is niet intuïtief en moeilijk te lezen en begrijpen. Ook concrete eenvoudige voorbeelden zijn niet aanwezig. OpenXML SDK bezit weliswaar de juiste functionaliteit, maar erg gemakkelijk om hiermee te werken is het niet.