37
Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea güero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, Jo UNC - Facultad de Ciencias Exactas, Físicas y Naturales. Julio 2012 - v 1.0.0

Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Embed Size (px)

Citation preview

Page 1: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Trabajo PrácticoIngeniería De SW

Sistema de Defensa antiaérea

Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José

UNC - Facultad de Ciencias Exactas, Físicas y Naturales. Julio 2012 - v 1.0.0

Page 2: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

PLAN DE MANEJO DE LAS CONFIGURACIONES

Page 3: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Control de Versiones: Subversion

CI – Items bajo configuración:

Directorios

Archivos

Page 4: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Clientes gráficos utilizados:

RabbitVCS SVN

Tortoise SVN

Repositorio:

Google Project Hosting

Page 5: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Esquema de directorios

Directorio Propósito del Directorio

trunk Rama principal del programa.

tags Etiquetas para ciertas versiones del proyecto. Ej Releases

branches Ramas derivadas de la principal para los desarrolladores.

documentos Alojamiento para los documentos del proyecto: CMP, SRS, informeFinal, etc

wiki Subiremos recursos e información que nos ayude a desarrollar el proyecto.

Page 6: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

ESQUEMAS DE RAMAS UTILIZADOS

UCM Lean and Lazy

Para los Documentos Para el Código

Page 7: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de
Page 8: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

REQUERIMIENTOS

Page 9: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagramas de Casos de Usos

Radar

Determina posicion de J et

J et

Bateria lanzamisil

Informa disponibilidad

Unidad de control

Dispara Misil

Misil

Suministra Trayectoria

Page 10: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagramas de Casos de Usos

Unidad de Control

Calcula Trayectoria del J et

Determina que bateria dispara

Solicita posicion de jet

Proporciona Infomarcion a la bateria

Brinda Informacion al Display

Bateria

Radar

Display

Señal de Disparo

Page 11: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Bateria Misil

Crea misil

Misil

Enemigo

Genera jet

jet

Misil

Define su trayectoria

Page 12: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagramas de Secuencia

Unidad de Control Radar

1 : Pedir Informacion()

2 : Devuelve informacion()

Page 13: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

: Unidad de Control : Radar

Socket Servidor Socket Cliente SE1.2.1

1 : Solicita Scan()2 : Scan()

3 : Scan()

4 : Lista Objetos detectados()5 : Lista Objetos detectados()

6 : Lista Objetos detectados()

7 : solicita posicion de 1 jet()8 : solicita posicion de 1 jet()

9 : getjetposicion()

10 : jetposicion()11 : entrega posicion()

12 : entrga posicion()

13 : solicita posicion del mismo jet()14 : solicita posicion del mismo jet()

15 : getjetposicion()

16 : jetposicion()17 : entrega posicion()18 : entrega posicion()

19 : Calcula trayectoria()

Page 14: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Altsd

: Unidad de Control

Bateria de Misil Misil

1 : Calcula distancias a la baterias()

2 : Pide disponibilidad mas cercana()

3 : Disponibilidad()

4 : Pide disponibilidad siguente()

5 : Disponibilidad()

SE1.2.2

6 : Trayectoria de Misil()7 : Crea y Brinda puntos trayctorial()

8 : Señal de Disparo()

9 : Dispara Misi()

10 : Misil Disparado()

Page 15: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

: Radar

socketservidor socketcliente

: J et

1 : miposicion()2 : miposicion()3 : miposicion()

4 : getposicion()5 : getposicion()

6 : getposicion()

7 : posicion()8 : posicion()

9 : posicion()

SE2.1

Revisar y hacer con metodo observer

Page 16: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

: Radar

Socket Servidor Socket Cliente

: Misil

1 : cambiaPosicion()

2 : update()3 : update()

4 : update()

5 : getPosicion()6 : getPosicion()

7 : getPosicion()

Page 17: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagrama de Actividades

Detectar J etDetecto

No

Calcula Trayectoria de J et

Si

ingresa a zona protegia

Dispara Misil

Informa posicion

Deribo

NO

Señal de disparo

Cambia trayectoria

Si

No

GeneraJet

<<Sistema>>Deteccion

AsignaBateria por Cercania

si

disponibilidad

SiNo

Destruye Misil y J et

<<Sistema>>Derribo

<<Sistema>>Enemigo

<<Sistema>>Administrador

Page 18: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Matriz de TrazabilidadRequerimiento Diagramas RequerimientoUsuario Casos de Uso Secuencia SistemaUR1.1 CU1.1 SE1.1 SR1.1UR1.2 CU1.2 SE1.2.1 SR1.2 SR1.3UR1.3 CU1.2 SE1.2.2 SR1.4 SR1.5UR1.4 SR1.15UR1.5 CU1.2 SE1.2.3 SR1.6 SR1.16 SR1.17UR1.6 SR1.7 SR1.8UR1.7 SR1.9UR1.8 SR1.10UR1.9 SR1.11UR1.10 CU1.2 SE1.2.2 SR1.12UR1.11 CU1.2 SE1.2.2 SR1.13UR1.12 SR1.14UR2.1 CU2.1 SE2.1 revisar UR2.2 SR2.2UR2.3 SR2.3UR2.4 SR2.4UR2.5 CU4.3 SR2.5UR2.6 SE1.2.1 SR2.6UR2.7 SR2.7UR2.8 CU1.2 SE1.2.1 SR2.6UR2.9 SR2.1UR3.1 CU3.2 SE1.2.2 SR3.1UR3.2 CU3.2 SE1.2.2 SR3.2UR3.3 SR3.3UR3.4 SR3.5UR3.5 CU3.2 SE1.2.2 SR3.6UR3.6 SR3.4UR4.1 CU3.2 SE1.2.2 SR4.1 - SR4.2UR4.2 UR4.3 UR4.4 CU4.4 SR4.3 - SR4.4 - SR4.5UR4.5 SR4.6UR4.6 SR4.7UR4.7 SR4.8UR4.8 SR4.9UR4.9 SR4.10UR5.1 CU5.1 SE5.1 SR5.1 - SR5.2UR5.2 SR5.3UR5.3 SR5.4UR5.4 SR5.4UR5.5 SR5.5UR5.6 SR5.2UR5.7 SR5.6UR5.8 SR5.7UR5.9 SR5.2UR6.1 SR6.1 … SR6.6UR7.1 SR7.1UR7.2 SR7.5UR7.3 SR7.2 - SR7.3 - SR7.4UR7.4 SR7.1UR8.1 SR5.6

Page 19: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

ARQUITECTURA

Page 20: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

El patrón de arquitectura a utilizar es el de control - centralizado - Modelo del Administrador, para la simulación. También se implementó una arquitectura cliente/servidor ya que tenemos varios componentes como ser: el radar, la unidad de control y los objetos voladores que utilizan un protocolo de comunicación entre ellos.

Page 21: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagrama de Despliegue

Radar

Unidad de Control

Bateria de Misil

Misil

Router

TCP

TCP

Display

TCP

Page 22: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagrama de Componentes

Sistema de Disparo

Sistema de Detección

Sistema Enemigo

Radar

Unidad de Control

MisilBateria de Misiles

Enemigo Jet

Unidad Administracion

Socket

Display

Page 23: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagrama de Contexto

Sistema de Aerodefensa

Jet Enemigo

Misil

Avión Civil

J et Amigo

Detecta Posición y Destruye

Detecta Posición

Detecta Posición

Detecta Posición

Page 24: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

DISEÑO E IMPLEMENTACIÓN

Page 25: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Patrones de Diseño Utilizados

Singleton: Es un patrón simple, cuyo objetivo es garantizar que determi-nadas clases solo puedan ser instanciadas una sola vez. Observer: Su objetivo es definir una dependencia uno-a-muchos entre objetos, de tal forma que cuando el objeto cambie de estado, todos sus objetos dependientes sean notificados automáticamente. Se trata de desacoplar la clase de los objetos clientes del objeto, aumentando la modu-laridad del lenguaje, creando las mínimas dependencias y evitando bucles de actualización.

Page 26: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagrama de Clases

Radar

+tiemporetardo+posicion+reloj+ip

+scan()+getJ etPosicion()+getPosicion()+currentTime()+moveMissile()

UnidadDeControl

+ip+listabateria+tamañozonarestringida+reloj

+Instance(): UnidadDeControl+calcularTrayectoriaJ et()+listaPrioridadBaterias()+seleccionBateria()+identificaAmenaza()+shot()

Misil

+colatrayectoria+colavelocidad

+misil()+setTrayectoria()

Bateria

+posicion+identificacion+ip+reloj+tiemporetardo

+disponibilidad(): boolean+shotMisil()+bateria()+crearMisil()

Enemigo

+Instance(): Enemigo+random()+crearJ et()+velAleatoria()+posicionAleatoria()

jet

+jet()

SujetoVolador

+identificacion+ip+velocidad+posicion+reloj

+descomponeVelocidad()+destruir()+calcularTrayectoria()

Subject

+Attach(o: Observer)+Detach(o: Observer)+Notify()

Observer

+Update()

+subject

Display

+mostrarJ et()+mostrarAmenaza()+mostrarDespedidaJ et()+mostrarDisparo()+mostrarDerribo()+mostrarDestrccion()

-instance

ServerSocket

+ServerSocket()+accept()+bind()+getLocalPort()+close()

Socket

+soket()+connect()+getInetAddress()+getInputStream()+getOutputStream()+setKeepAlive()+steSoLinger()+setTcpNoDelay()+setTrafficClass()

-instance

UnidaddeAdministracion

+Instance(): UnidaddeAdministracion+detectarColision()+detectasalidadejet()+creacionEntorno()

-instance

Page 27: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Diagrama de Paquetes

Sistema de Deteccion

Sistema de Derribo

Sistema Enemigo

Radar

+tiemporetardo+posicion+reloj+ip

+scan()+getJ etPosicion()+getPosicion()+currentTime()+moveMissile()

UnidadDeControl

+ip+listabateria+tamañozonarestringida+reloj

+Instance(): UnidadDeControl+calcularTrayectoriaJ et()+listaPrioridadBaterias()+seleccionBateria()+identificaAmenaza()+shot()

Misil

+colatrayectoria+colavelocidad

+misil()+setTrayectoria()

Bateria

+posicion+identificacion+ip+reloj+tiemporetardo

+disponibilidad(): boolean+shotMisil()+bateria()+crearMisil()

Enemigo

+Instance(): Enemigo+random()+crearJ et()+velAleatoria()+posicionAleatoria()

jet

+jet()

SujetoVolador

+identificacion+ip+velocidad+posicion+reloj

+descomponeVelocidad()+destruir()+calcularTrayectoria()

Subject

+Attach(o: Observer)+Detach(o: Observer)+Notify()

Observer

+Update()

+subject

Display

+mostrarJ et()+mostrarAmenaza()+mostrarDespedidaJ et()+mostrarDisparo()+mostrarDerribo()+mostrarDestrccion()

-instance

ServerSocket

+ServerSocket()+accept()+bind()+getLocalPort()+close()

Socket

+soket()+connect()+getInetAddress()+getInputStream()+getOutputStream()+setKeepAlive()+steSoLinger()+setTcpNoDelay()+setTrafficClass()

-instance

UnidaddeAdministracion

+Instance(): UnidaddeAdministracion+detectarColision()+detectasalidadejet()+creacionEntorno()

-instance

Entorno

SubjectObserverDisplaySujetoVoladorUnidadDeAdministracion

SocketServerSocket

Page 28: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

PRUEBAS DE SW

Page 29: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

JUnit en Eclipse

Page 30: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

TDD – Desarrollo guiado por pruebas

Selecciono un requerimiento: Se elige de una lista el requerimiento que se cree que nos dará mayor conocimiento del problema y que a la vez sea fácilmente implementable.

Escribir una prueba: Se comienza escribiendo una prueba para el requisito.

Verificar que la prueba falla: Si la prueba no falla es porque el requerimiento ya estaba implementado o porque la prueba es errónea.

Escribir la implementación: Escribir el código más sencillo que haga que la prueba funcione.

Ejecutar las pruebas automatizadas: Verificar si todo el conjunto de pruebas funciona correctamente.

Actualización de Requerimientos: Modificamos, agregamos o quitamos requerimientos basado en el análisis de la implementación y el resultado de las pruebas.

Page 31: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Matriz de TrazabilidadRequerimiento Diagramas Requerimiento PruebaUsuario Casos de Uso Secuencia Sistema Unitaria SistemaUNFR1 TS3UNFR2 TS1UR1.1 CU1.1 SE1.1 SR1.1 UR1.2 CU1.2 SE1.2.1 SR1.2 - SR1.3 TU1.1 UR1.3 CU1.2 SE1.2.2 SR1.4 - SR1.5 TU1.3 - TU1.4 UR1.4 SR1.15 UR1.5 CU1.2 SE1.2.3 SR1.6 - SR16 - SR17 UR1.6 SR1.7 - SR1.8 TU1.1 - TU1.4 UR1.7 SR1.9 UR1.8 SR1.10 UR1.9 SR1.11 UR1.10 CU1.2 SE1.2.2 SR1.12 UR1.11 CU1.2 SE1.2.2 SR1.13 TU1.3 - TU1.5 UR1.12 SR1.14 UR2.1 CU2.1 SE2.1 revisar TU2.1 - TU2.2 UR2.2 SR2.2 UR2.3 SR2.3 UR2.4 SR2.4 UR2.5 CU4.3 SR2.5 TU2.3 UR2.6 SE1.2.1 SR2.6 UR2.7 SR2.7 UR2.8 CU1.2 SE1.2.1 SR2.6 UR2.9 SR2.1 UR3.1 CU3.2 SE1.2.2 SR3.1 TU3.2 - TU3.3 UR3.2 CU3.2 SE1.2.2 SR3.2 TU3.1 UR3.3 SR3.3 UR3.4 SR3.5 UR3.5 CU3.2 SE1.2.2 SR3.6 TU3.2 - TU3.3 UR3.6 SR3.4

UR4.1 CU3.2 SE1.2.2 SR4.1 - SR4.2TU4.1 - TU3.2 TU5.3

UR4.2 TU3.2 UR4.3 UR4.4 CU4.4 SR4.3 - SR4.4 - SR4.5 TU4.1 - TU5.1 UR4.5 SR4.6 UR4.6 SR4.7 TU5.2 UR4.7 SR4.8 UR4.8 SR4.9 UR4.9 SR4.10 UR5.1 CU5.1 SE5.1 SR5.1 - SR5.2 UR5.2 SR5.3 TU5.3 UR5.3 SR5.4 UR5.4 SR5.4 UR5.5 SR5.5 TU5.5 UR5.6 SR5.2 UR5.7 SR5.6 UR5.8 SR5.7 UR5.9 SR5.2 UR6.1 SR6.1 hasta SR6.6 UR7.1 SR7.1 TU7.1 UR7.2 SR7.5 TU7.1 UR7.3 SR7.2 - SR7.3 - SR7.4 UR7.4 SR7.1 UR8.1 SR5.6 TU8.1 - TU8.2

Page 32: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

ESTIMACIONES

Page 33: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

PROMEDIO DE TAMAÑO (T2) = 1859 líneas de código

PERT (En cantidad líneas de código)Optimista Más Probable Pesimista

1000 2000 3000

INTERMEDIARIOS (En cantidad líneas de código)Componentes

Nombre Cantidad Prom. LOCs/Comp. LOCs Clases Simples 5 50 250Clases Promedio 1 100 100Clases Complejas 2 300 600Interfaces 3 200 600

PERT:

PERT = (OPT+4*MPROB+PES)/6TOTAL PERT = 2167 líneas de código

INTERMEDIARIOS:

TOTAL INTERMEDIARIOS = 1550 líneas de código

Tamaño LOCs

Page 34: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Esfuerzo Personas Mes

Datos Históricos Tamaño (T1) Esfuerzo (E1) Duración (D1)Simulación del Tráfico de Internet (AED) 1400 3 3

LOCs PMs Meses

ANALOGÍA SIMPLE:

E2 = (T2*E1)/T1 TOTAL ANALOGÍA SIMPLE (E2) = 4 Personas Mes

ECUACIONES SIMPLES:Watson Felix: Esfuerzo [PMs] = 5.2 * Tamaño [KLOC] ^ 0.91TOTAL ECUACIONES SIMPLES = 9 Personas Mes

PROMEDIO DE ESFUERZO (E2) = 7 Personas Mes

Page 35: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Duración Meses

ANALOGÍA SIMPLE:D2 = D1 (E2/E1) ^ (1/3) TOTAL ANALOGÍA SIMPLE (D2) = 4 Meses

ECUACIONES SIMPLES:Regla de McConnell: Duración [M] = 3 * E2 ^ (1/3)TOTAL ECUACIONES SIMPLES = 6 Meses

PROMEDIO DE DURACIÓN (D2) = 5 Meses

Page 36: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de

Datos Históricos

Tarea Duración Personas Esfuerzo (Phs) ParticipantesManejo de las Configuraciones 5 hs 4 20 Agüero - Aguilera - Bustos - Sureda

Requerimientos 28 hs 4 112 Agüero - Aguilera - Bustos - SuredaArquitectura 14 hs 2 28 Aguilera - Sureda

Diseño e Implementación 14 hs 2 28 Agüero - BustosPruebas Unitarias y de Sistema 5hs 2 10 Agüero - BustosEstimaciones y Datos Históricos 3hs 2 6 Aguilera - Sureda

TOTAL ESFUERZO = 204 Personas Horas

Page 37: Trabajo Práctico Ingeniería De SW Sistema de Defensa antiaérea Agüero, Mariano - Aguilera, German - Bustos, Maximiliano - Sureda, José UNC - Facultad de