Sei sulla pagina 1di 2

Soluzione alla prova scritta di Ingegneria del software

IV appello Camerino, 30 maggio 2011


Primo esercizio [7 punti] fact A { all s : Segmento | no (s.x1 = s.x2 and no s.y1 = s.y2)} fact B { all s : Segmento | one p : Segmento | (s.x1 = p.x1 and s.y1 = p.y1) or (s.x1 = p.x2 and s.y1 = p.y2) or (s.x2 = p.x1 and s.y2 = p.y1) or (s.x2 = p.x2 and s.y2 = p.y2) } fact C {disj all s, p : Segmento | no (s.x1 = p.x1 and s.y1 = p.y1 and s.x2 = p.x2 and s.y2 = p.y2) or no (s.x1 = p.x2 and s.y1 = p.y2 and s.x2 = p.x2 and s.y2 = p.y1) } Il fatto D richiesto incluso nel fatto B Secondo esercizio [7 punti] context Elenco inv: self.associati < self.tipo * 100 context Cliente::associa(e : Elenco) pre: Elenco::AllIstance() -> includes(e) pre: self.appartiene -> excludes(e) post: e.associati = e.associati@pre + 1 Terzo esercizio [7 punti] Per il costruttore Data(int g, int m, int a) throws Exception i casi di test validi e invalidi per g sono 9, per m sono 9, per a sono 5 quindi in totale sono 405 Per loperazione int DC() i casi di test validi considerando oggetti Data validi sono per giorno sono 5, per mese sono 5, per anno sono 3 quindi in totale 75

Quarto esercizio [7 punti] contex Adapter::write(f : file, s : String) pre: s.size() + self.n_out < 80 post: out = s post: n_out = 0 Quinto esercizio [7 punti] Serbatoio

B startB A startA

Lavorati

Possono essere inserite altre due piazze busyA e busyB e due transizioni f inishA e f inishB che tengano conto del tempo di lavorazione delle macchine. In questo caso le piazze A e B che fanno da semaforo sono connesse da un usso che proviene da f inishB e f inishA e le piazze busyA e busyB sono poste tra startA , startB e f inishA e f inishB . Entrambe le transizioni f inishA e f inishB hanno un usso duscita verso Serbatoio

Potrebbero piacerti anche