LocalBank Prosjektbeskrivelse



Like dokumenter
C# (.Net) EE1212 Objektorientert programmering

Master Data Management

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Læringsplattform for IT-fag basert på HTML5 utviklet i CakePhp

Småteknisk Cantor Controller installasjon

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Forprosjektrapport. Presentasjon. Sammendrag. Tittel Informasjonsplatform for NorgesGruppen

Bruk av egendefinert kode i SAS Data Integration Studio

Svarskjema for kurset 'Databaser' - evalueringsrunde 2 - Antall svar på eval: 13

Installasjon enbruker

PowerOffice Server Service

Technical Integration Architecture Teknisk integrasjonsarkitektur

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

En enkel lærerveiledning

Dokumentasjon av XML strukturer for ByggSøk

IN2000. Gjennomgang av tekniske oppgaver på prøveeksamen. Erlend Stenlund og Steffen Almås + innspill fra Gaute Berge

Velkommen som ny bruker av Uni Økonomi!

Software Development Plan. Software Development Plan. Forum / Nettverkssamfunn Team 2

Hvordan lage en hjemmeside

Vedlegg Brukertester INNHOLDFORTEGNELSE

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

WP-WATCHER WORDPRESS SIKKERHET

Enbruker-installasjon

SuperOffice hurtigstart guide

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Objektorientert programmering med Java ISBN

Testrapport Prosjekt nr Det Norske Veritas

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

Forord Dette er brukerdokumentasjonen skrevet i forbindelse med hovedprosjekt ved Høgskolen i Oslo våren 2010.

Milestone Systems XProtect Smart Client 7.0b BRUKERMANUAL

Datamodellering og databaser SQL, del 2

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Oppgradering av Handyman til ny versjon

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

- analyse og implementasjon

GJENNOMGANG UKESOPPGAVER 9 TESTING

Læringsmål for forelesningen

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

2. Beskrivelse av mulige prosjektoppgaver

En liten oppskrift på hvordan jeg installert og fikk Xastir til å virke sånn at jeg ble synlig i APRS verden.

Velkomment til å installere BAS21

Løsningsforslag Test 2

Produksjonssettingsrapport

Oppgradering av Handyman til siste tilgjengelige versjon

!!!!!!!!!!!! !!!!!!!!!!! WP-WATCHER WORDPRESS SIKKERHET

Rapport Oblig 08 - Flash galleri og banner.

Programvareutvikling (store systemer)

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Test 2 OOP. - Prøveeksamen

Installasjon og oppgradering av Advisor

Din verktøykasse for anbud og prosjekt

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

INF120: Oblig 3. Yngve Mardal Moe

Læreplan i informasjonsteknologi - programfag i studiespesialiserende utdanningsprogram

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

Kravspesifikasjon. Aker Surveillance. Gruppe 26 Hovedprosjekt ved Høgskolen i Oslo og Akershus. Oslo,

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Opus Dental 7.1 Oppdateringsveiledning

Test Beskrivelse Resultat Innhenting CBIS Programmet mottar data fra CBIS OK, men kun. Innhenting Tellus Programmet mottar data fra Tellus OK

Installasjonsdokument

Entobutikk 2.PRODUKTRAPPORT VÅR 2011

Qt Jambi E t R ammeverks His torie

PG 4200 Algoritmer og datastrukturer Innlevering 2

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Eksamen i IBE102 Webutvikling Våren 2017.

KOM I GANG MED WORDPRESS En enkel guide for å hjelpe deg gjennom det grunnleggende i Wordpress

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Jon Hammeren Nilsson, Anders Emil Rønning, Lars Grini og Erling Fjelstad

HiOA TDK. Ingeniørfag data. DATS1600 Programutvikling. Eva Hadler Vihovde. Prosjektoppgaven Prosessdokumentasjon - Alternativ 1

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

Versjonsbrev. for Extensor05 versjon 1.16

Elsmart Brukerveiledning Nettmelding for Installatører

Hvordan setteopp en wordpress site med wampserver. Lokal site på din pc.

1. Introduksjon. Glis 13/02/2018

Testdokumentasjon. Gruppe 9

1 Guide til flerbrukerinstallasjon av e-lector

Veileder til levering og godkjenning av rapporteringsdata til DBH-F

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

Stikkord: Java EE, EJB, JSF, JPA, SWT, klient/tjener, Glassfish server, Application Client.

Effektiv Systemadministrasjon

Eksamen i fag TDT4140 Systemutvikling. 6. juni, 2006 kl

Kravspesifikasjon MetaView

TESTRAPPORT FORORD INNHOLD INNLEDNING TEST AV SYSTEMET Databasen og SQL spørringer... 93

Installasjonsveiledning Visma Avendo, versjon 5.2

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

1 Kodegenerering fra Tau Suiten

Testrapport. Studentevalueringssystem

Mangelen på Internett adresser.

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

Installasjonsveiledning

KTN1 - Design av forbindelsesorientert protokoll

GC4AXWG [WHERE DO YOU WANT TO GO TODAY?] av thomfre. En introduksjon til Wherigo og Wherigo-cacher

OBLIG 2 WEBUTVIKLING

TDT4105 Informasjonsteknologi, grunnkurs

HTML5. Skjemaer på nettsider. Skjemaer med. Informasjonsteknologi 1 og 2. Gløer Olav Langslet Sandvika VGS

INF Algoritmer og datastrukturer

Testrapport. Aker Surveillance. Gruppe 26. Hovedprosjekt ved Høgskolen i Oslo og Akershus. Oslo, Public 2013 Aker Solutions Page 1 of 5

Transkript:

LocalBank Prosjektbeskrivelse INNHOLD MÅL... 2 STRUKTUR... 2 IMPLEMENTASJON AV ILOCALBANKREPOSITORY... 3 GUI... 4 EXCEPTION... 4 KODE... 4 NOEN KLASSER OG SPESIELLE EMNER SOM DE VISER... 5 KLASSE DIAGRAMMER... 6

MÅL Målet med mitt prosjekt har vært å utvikle kode som en trening i grunnleggende emner og ferdigheter innen C#. Dette bygger på de forutsettinger som faglærer, Øivind Øhra, la til grunn for leveranse tidlig i kurset. Det var ikke meningen at prosjektet skulle være systemutvikling der kreativitet, ide og programmets nytteverdi var sentralt, men at fokuset skulle være på å demonstrere sentrale emner i pensum. Det ble også lagt vekt på "Industrial Programming". Et av mine mål med prosjektet har derfor vært å bruke mye tid på dette som et verktøy for læring. Har brukt "Code Analysis" i Visual Studio jevnlig. Kravet som ble gitt var at vår kode skulle oppfylle "Microsoft Recommended Rules + Naming". Koden som nå leveres oppfyller dette kravet. Prøvde også å bruke "Microsoft All Rules", men dette gav ofte svært mange advarsler, og jeg syntes heller ikke at alle regler var like aktuelle for mitt prosjekt, men jeg har alikevel lært mye ved å gjøre oppslag på de advarslene som kom. En analyse av Code Metrics viser også at koden der oppfyller krav som ble gitt. En annen viktig målsetting for meg har vært å etterstrebe gjenbruk av kode. Dette har fått konsekvenser både i forhold til enkeltklasser, men også ved bruk av pattern og overordnet strukturen på løsningen. STRUKTUR Figuren under viser overordnet struktur. View og Controller blir ivaretatt av klassen MainForm som forholder seg til ILocalBankRepository. Klasser som implementerer ILocalBankRepository bestemmer selv hvordan data skal lagres, hva slags lagringsmedium som brukes og hvordan data hentes ut fra lager. Dette gir et tydelig skille mellom presentasjon og data.

IMPLEMENTASJON AV ILOCALBANKREPOSITORY Har gjort to forskjellige klasser som begge implementerer ILocalBankRepository. For å vise begge implementasjonene av Repository har jeg laget to setup-filer av den endelige løsningen slik at begge to kan prøves ut i praksis. Den ene, BinarySerializeRepository, bruker både binær serialisering og vanlige tekstfiler som data lager. Har i den sammenheng laget en static klasse, SerializeObject, som kan lagre objekter som binærfil og leser tilbake (se figur under). På grunn av gjenbruk er denne gjort generisk. BinarySerializeRepository benytter seg også av LINQ med Lambda uttrykk. Ved installasjon legges filene i brukerens mappe for programdata som betyr at bare den aktuelle brukeren har tilgang til disse. Dette hadde selvfølgelige ikke vært egnet for en reel bank applikasjon, men i tråd med overordnede mål for prosjektet. Den andre klassen (se fig. under), DatabaseConnectedRepository, benytter seg av database som lager, og forholder seg til klassen, DataLayer (i egen dll), som pakker inn en tilkobling til en database og utfører logikken knyttet til insert, update, select mm. Dette er gjort så generelt som mulig slik at DataLayer forholder seg til et tilkoblings navn som igjen gir tilkoblings strengen definert i applikasjonens konfigurasjonsfil (app.config). Den bruker en DbProviderFactory, som på bakgrunn av den aktuelle strengen etablerer tilkobling til riktig database. På denne måten kan DataLayer brukes med forskjellige typer databaser. Ved utviklingen av systemet brukte jeg to databaser, en med skolens MS Sql server på donau, og den andre med SQLEXPRESS lokalt på egen pc. DataLayer er også gjort IDisposable, slik at tilkoblingen til databasen kan kastes så fort den ikke lenger trengs, dvs. ved bruk av using. Etableringen av DataLayer gjør også at denne kan benyttes av andre applikasjoner som vil benytter seg av samme databasen. Alle parametere og return typer er derfor gjort generelle, og er uavhengig av datamodellen som er knyttet til dette spesielle prosjektet. Hadde plan om også å implementere DatabaseDisconnectedRepository som skulle bruke DataSet og data adapter(dbdataadapter) for å laste alle nødvendige data fra databasen og inn i data tabeller (DataTable). All midlertidige oppdateringer kunne da vært lagret til DataSet i minnet, og ved utlogging og lukking av programmet kunne jeg igjen brukt data adapter for å lagre de nye dataene til databasen. Fordelen med en slik løsningen er at det ikke er nødvendig med mange tilkoblinger til databasen. Fikk dessverre ikke tid til dette.

GUI Har ikke lagt vesentlig vekt på å utvikle/designe et bra grafisk bruker grensesnitt. Grafisk design er ikke min sterke side, og ville derfor heller bruke tid på de andre delene av prosjektet. Har allikevel prøvd å få noen av flaggene på plass, som ble nevnt av faglærer innledningsvis i kurset. Det grafiske grensesnittet er først og fremst for å kunne vise hvordan koden ellers fungerer. Den har tabbene Login, Sign Up, Payment, History og Admin. Payment og history er aktuelt for en kunde som er innlogget i banken, mens Admin er for ansatte i banken. Dette betyr at alle som er logget inn får tilgang til alle tabbene. Det at dette er gjort slik er også en følge av de overordnede mål, men vil også gjøre det enklere å teste hvordan de ulike delene fungerer. Har lagt vekt på å sikre innputt fra brukere, både ved å bruke kontrollere med filter, der dette er naturlig og ved å validere med hjelp av System.Windows.Forms.ErrorProvider. EXCEPTION Controller i MainForm tar imot alle mulige unntak som måtte komme ved å bruke catch(exception ex) Da denne forholder seg til interfacet ILocalBankRepository kan den ikke vite hva slags unntak som kan komme, da dette ville ha forutsatt kjennskap til implementasjon. Controler koden i MainForm er slik laget helt uavhengig av hvordan ILocalBankRepository er implementert. Alle annen kode (Library code), har metoder som kaster forskjellige former for unntak. Et unntak fra denne regelen er gjort i klassen DatabaseConnectedRepository som benytter seg av LocalBankDataLayer. Der er det gjort slik at DatabaseConnectedRepository fanger alle unntak som måtte komme når LocalBankDataLayer brukes. Disse unntakene er alle relaterte til transaksjon med en database. De fanges opp og så kaster metodene DatabaseTransactionException videre, der det sendes med en beskrivelse og en referanse til det indre unntaket som opprinnelig var årsaken. Vurderte også alternativt ikke fange opp unntak i denne klassen, men bare la alt bli kastet automatisk videre, men synes at den nåværende løsningen gjør det lettere å finne frem og debugge når unntak oppstår. Er allikevel noe usikker på hvordan dette forholder seg til " best practices". Har også vurdert logging av unntak. Dette er ikke en nødvendighet, men hadde vært en fordel ved debugging. Har ikke fått tid til å implementere dette. KODE Bortsett fra klassen ValidateEmail der innholdet i sin helhet er hentet fra MS sine hjelpesider, er all annen kode gjort selv. Koden som leveres vurderes å være velskrevet og godt dokumentert med xmltags. Dette kurset forutsatte levering av et individuelt prosjekt. Det er fordeler og ulemper med dette. Fordelen er mindre "byråkrati" og at den enkelte kan lettere utnytte tiden effektivt. Ulempen er at jeg ikke har kunnet dele koden og drøftinger underveis mere detaljert med en gruppe. Det kan være lett å se seg blind på egne løsninger, og feil kunne lettere vært oppdaget i en gruppe sammenheng. Vil allikevel si meg godt fornøyd med det resultatet som foreligger, og at jeg har nådd de målene som ble satt for prosjektet.

NOEN KLASSER OG SPESIELLE EMNER SOM DE VISER Klasse (r) Person, Customer, GoldCustomer, Employee Position, TypeOfBankAccount, StorageFormat mfl. Emner Arv, Implementering av IComparable og IComparable<Person> Operator overloading Enum DatabaseTransactionException, CannotSaveException, PasswordSizeException Egne unntaks klasser som arver Exception HashCode Bruk av SHA512CryptoServiceProvider og beregne hash kode. SerializeObject ILocalBankRepository Generic, Serialisering av objekter i binary og xml- format. Interface LocalBankDataLayer Sql med parametere (SqlParameter), object initializer, TransactionScoup, Implementering av IDisposable, ConnectionString og data provider factory BinarySerializeRepository ValidateEmail Lese fra vanlig tekstfil, Behandle filer med FileInfo, Hash tabell med Dictionary, LINQ med lamda uttrykk som også gjør bruk av operatorene som er overloada i Person, Sette riktig path ved bruk av Environment.GetFolderPath og Path.Combine Validere email med regulær uttrykk. MainForm Validere med hjelp av System.Windows.Forms.ErrorProvider, Bruk av kontrollere med filter, Events and delegates (automatisk definert i MainForm.Designer.cs)

KLASSE DIAGRAMMER FKSoft.Education.BankingDataModel

FKSoft.Education.Utilities FKSoft.Education.DataLayer

FKSoft.Education.Repository

FKSoft.Education.LocalBankView