Planificacion

UNA-PUNO

Evaluacion

UNA-PUNO

Proyectos

UNA-PUNO

De

UNA-PUNO

Sistemas

UNA-PUNO

domingo, 15 de marzo de 2015

Lineas de codigo

·

Métricas de Tamaño


Todos los programas comparten un atributo, independientemente del lenguaje, área de aplicación, método de diseño usado, calidad de su documentación, etc. Todos ellos tienen un tamaño.

El tamaño es importante, pues es fácil calcularlo después de finalizado el programa; es el factor más importante para muchos modelos, y la productividad normalmente se basa en mediciones de tamaño (más adelante se verá que esto último no es muy razonable). Las mediciones de tamaño más importantes son las líneas de código, el número de tokens, y el número de funciones.



Líneas de Código (lines of code o LOC)

Una definición aceptable de línea de código, pero no standard, es la siguiente:
"...toda línea de un programa que no es un comentario, o línea en blanco, independientemente del número de instrucciones o fragmentos de instrucciones en ella. Esto incluye específicamente las líneas de encabezamiento de un programa, declaraciones, e instrucciones ejecutables y no ejecutables."

La siguiente figura presenta un programa con 14 líneas de código (LOC=14)

Una subrutina FORTRAN que ordena un arreglo en orden ascendente



El principal problema asociado a la métrica líneas de código es que no todas las líneas son equivalentes en su dificultad de codificación. La siguiente métrica toma esto en cuenta.

Número de Tokens

Un programa computacional es un conjunto de tokens(unidades clasificables como operandos u operadores). Las cuatro métricas básicas asociadas son:

h1 = número de operadores únicos

h2 = número de operandos únicos

N1 = número total de operadores

N2 = número total de operandos

N = N1+ N2= largo (es el tamaño del programa)

En términos generales, cualquier símbolo o palabra reservada que especifica una acción se considera un operador, mientras un símbolo usado para representar datos es considerado un operando. La mayoría de los símbolos de puntuación son considerados operadores. Variables, constantes y labels se consideran operandos.
Operadores son los símbolos matemáticos ( +, -, /, etc. ), nombres de comandos
(while, for, read), símbolos especiales ( :=, ( ), [ ], { }, etc. ) y nombres de funciones
especiales (EOF, EOL).
La tabla siguiente muestra la contabilización de tokens para el programa de
la sección anterior (subrutina SORT)

Un análisis de tokens de la subrutina SORT

Las reglas para la contabilización dependen del lenguaje, y las ambigüedades ocurren con frecuencia. Por ejemplo, el operador “-” puede significar en Pascal dos cosas distintas: un operador unario (negación) o un operador binario (sustracción). ¿Se cuenta como uno o dos operadores únicos? ¿o
como dos ocurrencias del mismo operador? Otras medición es el vocabulario: h = h1 + h2

Una familia de métricas conocida como la Ciencia del Software (o Software Science) fue propuesta por M. Halstead en 1977, y se basa en los métricas de tokens básicas enunciadas anteriormente. Dicha familia de métricas se discute más adelante.



sábado, 14 de marzo de 2015

Puntos de funcion

Métricas de Puntos de Función

¿Que son  los puntos de función?




Es una métrica que permite traducir en un número el tamaño de la funcionalidad que brinda un producto de software desde el punto de vista del usuario, a través de una suma ponderada de las características del producto.

Componentes:
  • EI : Procesos en los que se introducen datos y que suponen la actualización de cualquier archivo interno.
  • EO: Procesos en los que se envía datos al exterior de la aplicación.
  • EQ: Procesos consistentes en la combinación de una entrada y una salida, en el que la entrada no produce ningún cambio en ningún archivo y la salida no contiene información derivada.
  • ILF: Grupos de datos relacionados entre sí internos al sistema.
  • EIF: Grupos de datos que se mantienen externamente

Objetivos:
  • Medir lo que el usuario pide y lo que el usuario recibe.
  • Medir independientemente de la tecnología utilizada en la implantación del sistema.
  • Proporcionar una métrica del tamaño.
  • Proporcionar un medio para la estimación del software.
  • Proporcionar un factor de normalización para la comparación de distintos software.
Una vez presentado el método, su autor realizó mejoras sobre el modelo inicial y ha publicado diferentes versiones del mismo. En 1986, Allan Albrecht funda el Grupo Internacional de Usuarios de Puntos de Función (en inglés International Function Point User Group – IFPUG). Esta organización se encarga de la difusión del método y de la publicación de manuales de uso y documentos de cómo sacar provecho del mismo.

Los Puntos de Función fueron diseñados originariamente para ser aplicados a sistemas de información de gestión, es por ello que se puso énfasis en la dimensión de datos, excluyendo las dimensiones funcionales y de control. Su aplicación no era del todo adecuada para sistemas de ingeniería y embebidos, pero con el correr del tiempo, se fueron subsanando estos inconvenientes. 


COSMIC FFP: a finales de 1998, un grupo de expertos en métricas de software, establecieron el Common Software Measurement International Consortium (COSMIC FFP). La iniciativa de COSMIC, ha sido básicamente la de dar respuesta a proveedores y a clientes de servicios de desarrollo de software, principalmente en aquellos contratos de terceros donde no había reglas claras acerca del valor de este tipo de servicio. En tal sentido COSMIC apunta a satisfacer tanto a proveedores de software que deben traducir los requerimientos del cliente en un tamaño del software como un paso clave en la estimación de los costos del proyecto, como a los clientes que quieren conocer ese tamaño recibido como un componente importante para la medición del rendimiento del proveedor. El método se puede aplicar a dominios de software de gestión, tiempo real e híbridos. (Ver figura 1.)


Figura 1: Evolución de los métodos de estimación basados en FP.



Existen herramientas automáticas de estimación que implementan técnicas de descomposición o modelos empíricos y están provistas de entornos gráficos, interfaz interactiva y uso estandarizado que hacen de ellas una buena opción. Además permiten describir características de la organización (experiencia, entorno, etc.) y el software a desarrollar para que a partir de estos datos, sea posible obtener estimaciones de costo, tiempo y esfuerzo.  (Ver tabla 1.)

Tabla 1: Ejemplo de herramientas automáticas de estimación


Calculo de los puntos de función:
La técnica de medición del tamaño en punto-función consiste en asignar una cantidad de "puntos" a una aplicación informática según la complejidad de los datos que maneja y de los procesos que realiza sobre ellos, siempre tratando de considerarlo desde el punto de vista del usuario. (Ver figura 2.)
Figura 2: Calculo de puntos de función.



Para calcular puntos de función, se utiliza la relación siguiente:
FP = cuenta-total x [ 0,65 + 0,01 x Σ (Fi ) ]

Donde cuenta-total es la suma de todas las entradas obtenidas de la figura 2. Fi donde i puede ser de uno hasta 14 los valores de ajuste de complejidad basados en las respuestas a las siguientes preguntas:

  1. ¿Requiere el sistema copias de seguridad y de recuperación fiables?
  2. ¿Se requiere comunicación de datos?
  3. ¿Existen funciones de procesamiento distribuido?
  4. ¿Es crítico el rendimiento?
  5. ¿Se ejecutaría el sistema en un entorno operativo existente y fuertemente utilizado?
  6. ¿Requiere el sistema entrada de datos interactiva?
  7. ¿Requiere la entrada de datos interactiva que las transacciones de entrada se lleven a cabo sobre múltiples pantallas u operaciones?
  8. ¿Se actualizan los archivos maestros de forma interactiva?
  9. ¿Son complejas las entradas, las salidas, los archivos o las peticiones?
  10. ¿Es complejo el procesamiento interno?
  11. ¿Se ha diseñado el código para ser re utilizable?
  12. ¿Están incluidas en el diseño la conversión y la instalación?
  13. ¿Se ha diseñado el sistema para soportar múltiples instalaciones en diferentes organizaciones?
  14. ¿Se ha diseñado la aplicación para facilitar los cambios y para ser fácilmente utilizada por el usuario?
Cada una de las preguntas anteriores es respondida usando una escala con rangos desde 0 (no importante o aplicable) hasta 5 (absolutamente esencial).



Los valores constantes de la ecuación (1) y los factores de peso que se aplican a las cuentas de los dominios de información se determinan empíricamente. Una vez que se han calculado los puntos de función, se utilizan de forma análoga a las líneas de código como forma de normalizar las medidas de productividad, calidad y otros atributos del software.

Una vez calculado los puntos de función se usan de forma analógica a las líneas de código como medida de la productividad, calidad y otros productos del software.

Productividad = PF / persona-mes

Calidad = Errores / PF

Costo = Dólares / PF

Documentación = Pags. Doc / PF



El proceso de cálculo y obtención de puntos de función y su posible transformación a líneas de código se esquematiza en la figura: (Ver figura 3.) [Elsydania Lopez Guerra]


Figura 3: Proceso de calculo de punto de función y transformación a lineas de código.







El uso de puntos función para ayudar a estimar el costo de proyectos, la programación y el esfuerzo

La estimación exitosa usando puntos función se basa en varias técnicas de estimación: Top-Down, Analogía y Consejo de Expertos. La estimación Top-Down es una técnica de estimación que calcula el programa entero, costo y esfuerzo usando parámetros amplios. Los parámetros amplios y las comparaciones están basados en datos históricos usando técnicas estimativas de Analogía. El Consejo de Expertos se obtiene de expertos con experiencia en proyectos similares o experiencia en el uso de puntos función.

La comparación de proyectos con otros similares es una actividad crítica para lograr una estimación exitosa. Cuando se evalúan proyectos similares, se debe considerar lo siguiente:
Tipo de plataforma de hardware - Mainframe, Cliente-Servidor, PC
Tipo de lenguaje - COBOL, C, C++, JAVA.
Tipo de proyecto - Software del Sistema, Software intermedio, Software de aplicación
Tipo de sistema operativo: MVS, Windows, Unix

Una vez que los proyectos han sido determinados, obtener los siguientes datos:
Medida histórica de entrega (horas por punto función) de proyectos similares
Programas históricos (duración de programas por punto función) de proyectos similares
Costos históricos (dólares por punto función)

Una vez que el tamaño del proyecto se ha determinado en puntos función, el estimado de horas, costo y programa se puede calcular. Los cálculos se deben hacer con datos de proyectos similares como se describió anteriormente.

PF = cuenta-total x [ 0,65 + 0,01 x Σ (Fi ) ]

Ejemplo:



Supongamos que se quiere desarrollar un proyecto transaccional que operará en plataforma web y su tamaño es medio.



¿ El esfuerzo requerido, tiempo de desarrollo, personal utilizado en el proyecto ?








Utilizando un prototipo se llena la tabla asociada a los factores de Peso.
PF = [Σfactores funcionales de peso] * [0.65 + (0.01 * Σfactores de costo)]
Aplicando la formula se tiene:
PF = [513] * [0,65 + (0,01 * 14,91)]
PF= 409,9383

Luego se procede a aplicar la formula de Conversión a LOC: 
Como ya se dijo anteriormente, el lenguaje a utilizar es JAVA.



Entonces se tiene que
LOC = PF * Correlación
LOC = 409,9383 * 46
LOC =18857,1618 (Líneas de Código)
KLOC = 18857,1618 / 1000
KLOC = 19 (Kilo o miles de línea de código)


E = a(KLOC)b 

D = c(E)d 

P = E/D 
C = P *Salario 



Como ya se había dicho, el proyecto es de mediano tamaño. 
Entonces se tiene:

Esfuerzo (E) = 3,0*( 19)1,12 = 81,15 meses/hombre 

Duración (D)= 2,5*(81,15)0,35 = 11,64 meses 

Personal (P)= 81,15 / 11,64 = 6,97 personas 




Tareas

Estudio de Viabilidad

Definición:

1.-Podemos definir un estudio de viabilidad como aquel análisis y evaluación de información procedente de varios ámbitos, que nos permitirán conocer si una nueva empresa o idea en un negocio podrá ser económica y comercialmente rentable. En función del concepto sobre el que se realice el estudio, el contenido variará sustancialmente, pero siempre existirán unos pilares esenciales sobre los que tendremos que basar nuestra búsqueda y análisis de información en el estudio de viabilidad. 





2.-El primer pilar es la viabilidad económica-financiera del proyecto. Es decir, si la idea podrá reportar beneficios reales, que puedan compensar los costes no solo operativos, sino también de puesta en marcha, ya que si se trata de una gran infraestructura pero luego los beneficios son escasos, no merecería la pena. Algunos puntos a tener en cuenta son: 

  • Análisis de la procedencia de los fondos que usaremos para poner en marcha el proyecto. 
  • Determinar dónde serán invertidos todos esos fondos de forma individual. 
  • Elaboración de una prospección de ingresos y gastos de la actividad en los años futuros, mínimo 3 o 5 años. 
  • Estimar cuál sería el rendimiento de todo el capital invertido, también de 3 a 5 años. 
  • Conocer cuál es el punto muerto o mínimo de ventas que tendríamos que tener para superar los costes y comenzar a tener beneficios. 





3.-Con el análisis de la viabilidad operacional determinaremos si el personal que posee o poseerá la empresa sera capaz de asumir de forma adecuada sus obligaciones. Aquí analizaremos: 

  • Que la capacitación y formación de los empleados es suficiente a las necesidades del proyecto. 
  • La carga de trabajo de los empleados será suficiente para que puedan realizar sus labores sin problema, pudiendo compaginar vida laboral y familiar. 
  • Disponemos de la infraestructura adecuada para realizar la actividad que pretendemos. 
  • Cumplimos con los requisitos y trámites legales impuestos por las entidades públicas. 



4.-Otro punto importante es la viabilidad del mercado, un área esencial en el que determinaremos si realmente nuestra idea puede desarrollarse en el mercado al que pretendemos enfocarla. Tendremos en cuenta: 
  • Si existe realmente una cantidad potencial de clientes y demanda la cual puede cubrir los costes mínimos del proyecto. 
  • Que exista una necesidad en el mercado de conseguir aquello que pretendemos ofrecer, satisfaciendo así la necesidad de los clientes. 
  • Cuánta cuota de mercado podemos obtener y cuál sería por tanto la cantidad potencial de ventas, datos que colaborarían con el análisis económico. 
  • Determinar a qué área y sector del mercado enfocaremos nuestra actividad. 


5.-Por último, analizaremos la viabilidad conceptual de la idea de negocio. Aquí trataremos de forma crítica y realista las posibilidades reales de que realmente pueda funcionar. Para ello: 

  • Podremos ayudarnos del análisis DAFO, ya que este toma partidas muy similares a las que tenemos que analizar en este apartado, como pueden ser las oportunidades que podemos aprovechar o las amenazas que podemos encontrar en el mercado de nuestro alrededor. 
  • Determinaremos que el tiempo, a corto y largo plazo, en el que se realizarán las operaciones son suficientes y no nos extenderemos más de lo necesario. 
    • Analizaremos el conjunto de los tres apartados anteriores y la idea en concreto, para realizar un análisis critico y llegar a una conclusión al respecto.


    Entregables

    Entregables del sistema de viabilidad

    Definición de sistema.- Del latín systema, un sistema es módulo ordenado de elementos que se encuentran interrelacionados y que interactúan entre sí. El concepto se utiliza 
    tanto para definir a un conjunto de conceptos como a objetos reales dotados de organización Un sistema conceptual o ideal es un conjunto organizado de definiciones, símbolos y otros instrumentos del pensamiento (como las matemáticas, la notación musical y la lógica formal).

    Un sistema real, en cambio, es una entidad material formada por componentes organizados que interactúan de forma en que las propiedades del conjunto no pueden deducirse por completo de las propiedades de la partes (denominadas propiedades emergentes).



    Descripción breve del sistema propuesto

    Ejemplo:

    Sistema actual
    • Los usuarios generan la siguiente información, para que el sistema cumpla sus objetivos:
    • El estudiante presenta el carnet actualizado y firma la planilla.
    • El estudiante solicita un turno para usar un equipo.
    • El docente suministra sus datos (Aula, Asignatura), y firma la planilla.
    • El docente solicita turno para utilizar una sala mediante correo electrónico enviado al responsable de las salas.
    • La coordinación de programas informáticos suministra la programación académica para programar las aulas al inicio del período académico.



    Procedimiento
    • Asigna aulas a los docentes de acuerdo con la programación académica suministrada por la Coordinación de Programas Informáticos.
    • Asigna equipos de cómputo a los estudiantes que los solicitan.
    • Genera informes para la toma de decisiones.
    Sistema Propuesto

    Se pretende construir un Sistema de Información que administre la asignación de turnos y reserva de las salas de cómputo, para la prestación del servicio a los estudiantes, docentes y empleados, cuando lo requieran para sus consultas virtuales y actividades académicas.

    El sistema brindara no solo comodidad a los docentes, empleados y estudiantes, sino también al administrador, el cual, puede facilitar las estadísticas de dichas Salas. De igual manera el sistema contara con un manejo de registro para la información con respecto a las reservas para así poder ver las salas que están ofertadas.