Code Monkey home page Code Monkey logo

project-documentation's Introduction

Documentazione del progetto

Documentazione per il progetto del corso di Ingegneria del Software Orientata ai Servizi chiamato "ACMESky", presso l'Università di Bologna, A.A. 2020/2021.

Roadmap

  • Quali sono i ruoli e i loro compiti (sommariamente).
  • Le interfacce dei servizi vengono fuori dalla modellazione della coreografia, individuando i vari ruoli, che descriva il funzionamento del sistema.
  • Realizzata la coreografia, proiettarla sui vari ruoli e discutere le proprietà di connectedness della coreografia e, se serve, migliorarla.
  • Realizzare, a partire dalla coreografia, dei diagrammi BPMN poco precisi ma chiari dal punto di vista della documentazione. Questi verranno poi maggiormente dettagliati per l'implementazione di quelli da usare nel BPMS Camunda.
  • Descrivere le interazioni fra i servizi mediante diagramma UML e profilo TinySOA, descrivendo quindi le interfacce dei vari ruoli.
  • Realizzare, a partire dai diagrammi BPMN semplificati i processi di ACMESky e farli diventare eseguibili dal BPMS Camunda. Questi processi contattano e sono contattabili da opportuni servizi esterni.
  • Una volta individuati i servizi e le loro interfacce (anche usando OpenAPI o altri strumenti di documentazione delle interfacce di servizi), articolare più in dettaglio il loro funzionamento e scegliere le tecnologie più adeguate per la loro implementazione.

project-documentation's People

Contributors

jjocram avatar tommasoazz avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

tommasoazz

project-documentation's Issues

Struttura relazione

Definire la struttura della relazione man mano che si procede con il progetto

Diagrammi BPMN delle coreografie

I processi di ACMESky devono essere ben dettagliati, mentre i ruoli esterni possono essere modellati come collapsed pools. Anche le successive implementazioni non serve che siano ben dettagliate ma solo nel dettaglio che serve per far funzionare la coreografia.

Documentare sezione su UML con profilo TinySOA

Da documentare non a basso livello: non sappiamo infatti né gli input né gli output.
Raccontare più o meno come vengono contattati le varie interfacce e come vengono sfruttate le capability per realizzare i processi di business.
Quindi di fatto si può prendere spunto dalla sezione BPMN, ma andando un po' più in dettaglio perché si sta comunque avendo a che fare con metodi.

Assunzioni per semplificare il progetto

Assunzioni che vengono fatte per tenere il progetto semplice:

  • Le offerte che vengono presentate agli utenti sono solo relative a una sola compagnia aerea, cioè l'utente acquisterà una coppia di voli DIRETTI, della stessa compagnia, sia per l'andata che per il ritorno
  • l'acquisto dell'offerta presso la compagnia aerea non può generare errori (infatti nel BPMN non sono considerati), anche perché quando viene inviata l'offerta all'utente e partono le 24h entro cui può accettarla i voli sono bloccati per lui
  • l'acquisto del transfer da casa ad aeroporto e viceversa non può dare errori, ovvero la compagnia di trasporto sarà sempre disponibile per l'ora, il luogo e la data richiesta dall'utente
  • una volta che l'utente inizia il processo di acquisto offerta il codice viene bloccato (ovvero se due utenti hanno lo stesso codice, il secondo non può utilizzarlo) fino a che il processo di acquisto fallisce (e allora viene ripristinato il codice e il secondo utente può usarlo)
  • i voli sono tutti diretti
  • i dati di pagamento dell'utente vengono sottoposti a type-checking e il codice della carta di credito viene verificato attraverso la Formula di Luhn
  • le RESTful API ritornano solo codici 200 se è andato tutto bene, 400 per dichiarare errori sintattici (dati errati nella richiesta) e semantici (dati corretti nella richiesta ma non sensati, e.g. codice di carta di credito non esistente o importo errato)
  • il servizio di calcolo delle distanze geografiche ritorna il valore della distanza secondo la Formula di Haversine, che calcola la distanza di due punti sulla superficie di una sfera e, essendo invece la terra un geoide, non è completamente corretto.
  • nel processo di Acquisto Offerta da parte degli utenti, dopo che ACMESky ha richiesto al Payment Provider di far pagare l'utente e l'utente ha pagato, il Payment Provider sa già quale endpoint di ACMESky contattare per mandare l'esito del pagamento (può benissimo essere stato fatto al momento in cui ACMESky si è registrato al payment provider). L'alternativa sarebbe mettere lo stesso endpoint nella richiesta POST /payments/request di Payment Provider.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.