Eindproject informatica Software Engineering
Software engineering Managen van grotere softwareprojecten Onstaan uit noodzaak: betrouwbare software Grote projecten gestructureerd aanpakken Heel precies specificeren: Wat gaat er precies gemaakt worden (eisen) Wie gaat wat precies doen (taakverdeling en planning) Wat is er precies gedaan (documentatie en verantwoording)
Eindproject Informatica Ontwikkelen van een groot informaticaproduct in teamverband Doorlopen van een volledige ontwerpcyclus volgens het waterval model Eindproduct belangrijk, maar projectmanagement en proces zeker ook. Weging: Product: +- 65% Proces en documentatie: +- 35% Grofweg vergelijkbaar: profielwerkstuk
Groepjes Groepjes van 3 Verschillende rollen (vaak meerdere rollen per persoon of meerdere personen per rol): Projectleider (verplicht!) Programmeur Grafisch ontwerper Gamedesigner (game) Leveldesigner (game) Databaseontwerper (php) Tester ...
Watervalmodel Verschillende fasen. Elke fase levert een mijlpaalproduct Fasen lopen in elkaar over Analyse Ontwerp Implementatie Acceptatietest Documentatie/oplevering
Analyse Vaststellen eisen (indien van toepassing: in overleg met opdrachtgever) Maken projectplan (startdocument) Taakverdeling Tijdsplanning Beknopte beschrijving van de projectinhoud
Ontwerpdocument Dit is een vervolg op je startdocument, met een stuk meer diepgang: Specificeer precies alle onderdelen van je project/product Gebruik zo concreet mogelijke beschrijvingen en getallen Dit document moet de kwaliteit van het eindproduct meetbaar maken Het document maakt onderscheid in WAT en HOE WAT ga je precies maken HOE ga je dat voor elkaar krijgen
Ontwerp: Functionele Eisen Welke functionaliteit heeft het product? - Wat kan het? - Wie is de doelgroep? - Welke handelingen kan de gebruiker verrichten en wat is dan het resultaat? - Wat voor input en output is er mogelijk? - Welke onderdelen bevat het? - Hoe ziet het eruit? (welke schermen, knoppen en layouts zijn er?) - Welke systeemeisen zitten er aan? - … De dingen die je hier beschrijft, komen later terug in je acceptatietest: Voldoet het eindproduct aan alle eisen en bevat het de beloofde functionaliteit?
Ontwerp: Functionele Eisen Beschrijf HOE je aan je eisen en onderdelen gaat voldoen: Bedenk verschillende oplossingen voor de deelprobelemen Laat zien wat je hebt overwogen en onderbouw je definitieve keuze Maak een (schematische) opzet van de structuur van de programmacode. Objecten / functies Schermlayouts Webpagina’s Databaseontwerp Te maken afbeeldingen, achtergronden en animaties Te gebruiken geluidsfragmenten en fonts. …
Implementatie Schrijven van code en ontwerp grafische elementen Nauwkeurig volgen van het ontwerp
Acceptatietest Tussentijds test je natuurlijk steeds, maar een acceptatietest heeft een andere functie Acceptatietest: voldoet het product aan de gestelde eisen? Maak uitgebreide lijst testcases Verkeerde invoer Uit het scherm lopen Pagina bekijken zonder ingelogd te zijn. … Als het kan: verhelp bugs nog Onverholpen bugs en verschillen met originele ontwerp moet je toelichten
Documentatie Projectverslag Alle mijlpaaldocumenten Projectverloop (evaluatie van verloop en samenwerking) Logboek! Tijdverantwoording naar Wt Oplossing evt. onenigheid in groepjes Handleiding (in geval van klant)
Deadlines 1. Startdocument: di 19 december 2. Volledig ontwerp: 28 januari 3. Eindprocduct: 10 april (inclusief documentatie en accepatietest) Laatste deadline is nog onder licht voorbehoud i.v.m. SE cijfercontrole.
Technische beperkingen Voordat we de mogelijkheden bespreken: eerst even dit: De benodigde tools en hard- en software zijn erg afhankelijk van je onderwerpkeuze. Houd dat in je achterhoofd! Er kan van aardig wat op de school PC’s, maar zeker niet alles: 3D engines? Eigen hardware aanleveren/meenemen Speciale tools nodig? portable versies of eigen hardware Wt heeft wat random hardware beschikbaar in overleg
Keuze Voor het project kun je o.a. kiezen uit: Simulatie of Gamedesign Dynamische website met Php/MySQL/Javascript/etc. Bouwen van een nuttige Android of iOS app Electrotechniek: Arduino of Raspberry Pi From NAND to Tetris (Fundamentele informatica) Eventueel eigen idee (in overleg met Wt uiteraard) ±13 weken -> ± 32 lessen Lessen + thuiswerk = 60 SLU per persoon SE valentie 6 (= 3x een normale PO)
Gamedesign / Simulatie Bouw een game of liever nog een interessante simulatie Kies een geschikte programmeertaal/omgeving: (Python/Pygame, UDK/Unity (3D), Webgame met Javascript …) Denk eens aan: Evolutieprogrammeren (zie bijvoorbeeld: Boxcar2D) Simulatie (met Netlogo of Processing kun je toffe dingen doen) Schrijf een AI of andere MOD voor een bestaande game ...
Php / Mysql ( / JavaScript / jQUERY / … ) Dynamische website gekoppeld aan SQL database Volledig “met de hand” te bouwen. Zelf php taal leren Denk aan bijv: Forum Rating/reviewsite Browsergame …
App ontwikkeling Ontwerpen van een nuttige Android of iOS app iOS (Objective C) vereist Apple hard- en software: zelf regelen! Android (Java) vereist pc met adminrechten: zelf regelen Testdevices: zelf regelen Denk aan: Game of grafische simulatie (libgdx is tof voor android) Handige app voor gebruik in school (open dag bijvoorbeeld) ...
Electrotechniek: Arduino of Raspberry Pi Combinatie van “programmeren en solderen” Arduino’s en Raspberry Pi’s + basis componenten beschikbaar Denk aan: Robotica (bouw je eigen drone die Pokémon kan vangen?) Domotica (automatiseer je huis / kamer) Random coole projecten ter inspiratie
From nand to tetris Fundamentele informatica. Niveau: 1e jaar universiteit (Harvard) Bouw een (virtuele) computer vanaf de grond af op en programmeer een tetris game ervoor Logische poorten -> Hardware -> Machinetaal -> Hogere programmeertaal -> Operating system -> Software Uitdaging voor de echte Informatica held -> (een 10 mee te halen) Zelfstudie!
Digitaal Kunstwerk Kunst en informatica zijn ook een toffe combinatie en bieden veel ruimte voor creativiteit: Computeranimatie (Blender) voor het SGDB Filmgala Interactief kunstwerk voor in de aula met sensoren waar je interactie mee kunt hebben Visualisatie van muziek Duik eens in wat ideeën
Eigen idee Eigen ideeën voor de invulling zijn welkom Informatica gerelateerd Qua diepgang en omvang vergelijkbaar met andere keuzes. Zelfde ontwerpcyclus Zelfstandigheid vereist: Wt heeft niet overal verstand van…
Start project Brainstorm en oriëntatie (Wt brainstormt graag met je mee) Definitieve groepjes maken Projecttype en onderwerp kiezen (probeer dingen uit!) Experimenteren met gekozen onderwerp Opstellen startdocument voor 19 december