La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ingeniería del Software Avanzada

Presentaciones similares


Presentación del tema: "Ingeniería del Software Avanzada"— Transcripción de la presentación:

1 Ingeniería del Software Avanzada

2 Métricas

3 JAVANCSS (I) Con esta herramienta, vamos a obtener tres archivos con:
Clases Métodos Paquetes

4 JAVANCSS (II)

5 JAVANCSS (III) En la imagen se puede ver que el proyecto es pequeño si hablamos de código y no tenemos muchas funciones. Nos muestra 4 paquetes, de los cuales el que tiene más clases es “model”, generado automáticamente por Hibernate. Por todo esto, cabe destacar que nuestro proyecto es de complejidad más bien baja.

6 JAVANCSS: complejidad ciclomática
La escala de complejidad ciclomática que se utiliza para analizar los resultados de JAVANCSS es la siguiente: Es una medición cuantitativa de la complejidad de la lógica de un programa

7 JAVANCSS: análisis CCN
Los métodos que usamos tienen una complejidad ciclomática muy baja, prácticamente todos tienen un valor de 1. Nos indican que nuestro código es muy fácil de mantener, probar y modificar.

8 JAVANCSS: conclusiones
Con el análisis de JAVANCSS hemos podido comprobar: El paquete “model” es el más complejo, ya que tiene los “get” y “set” de comunicación con la base de datos. La clase “anuncio” es la que más atributos tiene, además de los métodos “get” y “set”. Los métodos “login” y “crear anuncio”, situados en el paquete “bean” son los que más líneas tienen, ya que son los que actualmente están en uso.

9 Findbugs Plugin de NetBeans utilizado para obtener un análisis de problemas en el código fuente, que indique vulnerabilidades, malas prácticas o código duplicado.

10

11 Findbugs: conclusiones
Como hemos podido ver en la captura anterior, tenemos 105 problemas variados en el código. Los problemas más importantes serán tratados en el siguiente Sprint.

12 CKJM Métrica de orientación a objetos. Indicadores ¿Qué indican?
Métodos ponderados por clase (MPC) (WMC) Tamaño y Complejidad de la clase Profundidad árbol de herencia (PAH) (DIT) Tamaño Número de descendientes (NDD) (NOC) Tamaño, acoplamiento, cohesión Acoplamiento entre clases (ACO) (CBO) Acoplamiento, “colaboraciones de una clase” Respuesta para una clase (RPC) (RFC) Comunicación y complejidad Carencia de cohesión en los métodos (CCM) (LCOM) Cohesión interna

13 CKJM : indicadores y resultados
MPC: Las clases que hemos creado (dao y bean) tienen valores muy bajos por lo tanto la mantenibilidad del código es muy sencilla. PAH :Todas las clases tienen un valor de 1. El tamaño del código es pequeño y nada complejo. Nuestras clases heredan pocos métodos, por lo tanto es muy fácil de mantenerlas. NDD: Todas las clases tienen un valor de 0. No tenemos ninguna clase dependiente por herencia, por lo tanto como punto negativo tenemos poca reutilización del código, mientras que como punto positivo no vamos a tener problemas en el mantenimiento.

14 CKJM: indicadores y resultados
ACO: El valor más alto es 8. El diseño del Código sigue la orientación, con división de las responsabilidades. El acoplamiento de nuestro código es bajo y las clases no son complejas. RPC: El valor máximo es 60 en la clase model.anuncio. Es un valor aceptable, pero hay que evitar que aumente, así no será una clase demasiado extensa y compleja. Un valor muy alto aumentaría el esfuerzo de pruebas y verificaciones. CCM: La clase model.anuncio presenta un valor de 1513, lo que quiere decir que es una clase muy grande y es aconsejable dividirla en varias. Mantener un numero bajo de CCM nos indica que tenemos una elevada cohesión en el código.

15 CKJM: conclusiones Según esta métrica, nuestra aplicación no tiene complejidad, porque: Tenemos una arquitectura por capas donde separamos el modelo, la vista y el controlador. No tenemos clases complejas. La mantenibilidad del código es muy sencilla. Elevada cohesión en el código y bajo acoplamiento.

16 JHAWK Es una herramienta para análisis de código, con la que se puede calcular el volumen, complejidad y relaciones entre clases y paquetes. Sólo analizamos las clases que hemos creado nosotros además de la clase “model.anuncio” del paquete “model”, que es la más problemática.

17 JHAWK: paquetes Los datos obtenidos con esta herramienta confirman los resultados arrojados por las otras herramientas. Observamos pocas clases, la complejidad ciclomática es muy baja y tenemos un buen índice de mantenibilidad.

18 JHAWK: clases Las clases presentan una complejidad ciclomática muy baja, el esfuerzo de Halstead es alto en las clases “crearAnuncio” y “managedBean”, el acoplamiento de las clases es muy bajo y el índice de mantenibilidad es muy bueno para todas. 

19 JHAWK: métodos La complejidad ciclomática es muy baja, algunos métodos que se comunican con model.anuncio tienen un esfuerzo de Halstead alto y la predicción de fallos de los métodos es razonable en todos.

20 JHAWK: paquete model, clase anuncio
En este paquete, encontramos que la clase Anuncio tiene 59 métodos, una cantidad importante, con falta de cohesión grande entre objetos, pero complejidad ciclomática baja. El mayor problema es la cantidad de métodos que contiene. 

21 JHAWK: conclusiones Al igual que con las anteriores métricas, los resultados son: Tenemos pocas clases. La complejidad ciclomática es muy baja. El código dispone de un buen índice de mantenibilidad.

22 Diagrama caso de uso

23 Diagrama actividades

24 Prototipos

25 Prototipos Web: Gliffy
Es una herramienta que nos permite realizar prototipos Web que nos ayudan a: Simular la navegación entre paginas Comprobar la usabilidad Nos permite colaborar y aportar ideas en grupo. Idea aproximada de cómo será el producto final.

26 Prototipo HomeRent

27 ¿En que nos ayudó Gliffy?
Nos dimos cuenta de problemas en el diseño. Descubrimos elementos mal colocados que dificultaban la usabilidad. Todos tenemos acceso al prototipo y pudimos aportar nuevas ideas. Nos permitió realizar pruebas y cambios en el diseño de manera fácil y rápida, si se hicieran con el producto serian muy costosas.

28 Plantilla: Facelets Facelets es un framework ligero que permite el uso de plantillas en Java Server Faces. Viene integrado en JSF. Nos permite desarrollar en XHTML y nos evitamos usar JSP, que puede producir muchos problemas al usarlo con JSF. Su simpleza maximiza la reutilización, es extensible y escalable. Nos permite trabajar de una manera fácil con distintas vistas de usuario.

29 ¿Por qué una plantilla? Para evitar duplicidad de código.
Por la mantenibilidad del código. Para no aumentar la complejidad del código innecesariamente. Por la localización de errores. Para hacer el proceso de aprendizaje de los compañeros más fácil y entendible. Por comodidad y ahorrar tiempo en el desarrollo. El tiempo de compilación es más rápido. En resumen, el uso de Facelets reduce el tiempo y esfuerzo para el desarrollo del proyecto.

30 Se aconseja que la plantilla sea colocada en el directorio “WEB-INF”
Plantilla: Facelets Se aconseja que la plantilla sea colocada en el directorio “WEB-INF”

31 Crear plantilla

32 Crear Plantilla

33 Clear plantilla

34 Clear plantilla

35 Clear plantilla

36 Clear plantilla

37 Crear plantilla

38 Requisitos Nuevos ✗ UA-3) Búsqueda sencilla de apartamentos. ✗ UA-5) Detalle de información de un apartamento. ✗ UA-10) Crear perfil de usuario. ✔ IOP-2) Mozilla Navigators X.0. ✔ Métricas ✔ Diseño Web.

39 Requisitos para terminar del Sprint 1
 PA-4) Editar un anuncio.  PA-5) Eliminar un anuncio. ✔ UA-1) Registro de usuarios en el sistema.  PA-1) Registro de propietarios en el sistema.

40 REQUISITOS QUE VAMOS A MANTENER DURANTE TODO EL PROYECTO
✔ MAN-5) Empleo de lenguajes de programación estandarizados: Java, C#, etc. ✔ MAN-6) Estructura estandarizada de la documentación. ✔ IOP-1) Internet Explorer X.0

41 FIN


Descargar ppt "Ingeniería del Software Avanzada"

Presentaciones similares


Anuncios Google