miércoles, 7 de diciembre de 2011

MODELO EN V

MODELO EN V

Introducción

Que pasaría, si en la construcción de nuestra casa, nosotros como obreros, empezásemos a colocar ladrillos, allí donde nos pareciese correcto, pues que si no lo pensamos dos veces, quizás después tengamos que tirar algunas paredes, para meter la bañera.
Esto es lo que pasa con la programación, al ser algo abstracto, no tangible, no le damos demasiada importancia y empezamos a escribir código, sabiendo donde queremos llegar, pero sin saber con certeza cual camino elegir.
De aquí la importancia de los modelos o metodologías de programación.

Concepto Modelo en V

El “modelo en V” se desarrolló para terminar con algunos de los problemas que se detectaron utilizando el enfoque de cascada tradicional.
Uno de estos problemas, era que los defectos estaban siendo encontrados demasiado tarde en el ciclo de vida, ya que las pruebas no se introducían hasta el final del proyecto.
El “modelo en V” dice que las pruebas necesitan empezarse lo más pronto posible en el ciclo de vida.


En definitiva, el “modelo en V” es un modelo que demuestra cómo las actividades de prueba (verificación y validación) se pueden integrar en cada fase del ciclo de vida.
En los niveles del 1 al 4, para cada fase del desarrollo, existe una fase paralela de verificación o validación. Esta estructura obedece al principio de que para cada fase del desarrollo debe existir un resultado verificable.
En la misma estructura se advierte también que la proximidad entre una fase del desarrollo y su fase de verificación correspondiente va decreciendo a medida que aumenta el nivel dentro de la V. La longitud de esta separación intenta ser proporcional a la distancia en el tiempo entre una fase y su homóloga de verificación.

  • El nivel 1 está orientado al “cliente”. El inicio del proyecto y el fin del proyecto constituyen los dos extremos del ciclo. Se compone del análisis de requisitos y especificaciones, se traduce en un documento de requisitos y especificaciones.
  • El nivel 2 se dedica a las características de funcionamiento del software. Podemos decir que el software es un lienzo en blanco, y sabiendo lo que el cliente quiere, nosotros como programadores delimitamos los contornos, hacemos un esbozo de la interfaz del software y comprobamos con el cliente que vamos por buen camino, se traduce en un documento de análisis funcional.
  • El nivel 3 define los componentes hardware y software del sistema final, a cuyo conjunto se denomina arquitectura del sistema. Siguiendo el símil, podríamos decir que una vez tenemos, el esbozo del dibujo, elegiremos nuestras herramientas para pintar: tipo de pintura, grosor del pincel, colores que usaremos.
  • El nivel 4 es la fase de implementación, en la que se desarrollan los elementos unitarios o módulos del programa. Una vez tenemos clara la idea del cliente, el esbozo y las herramientas adecuadas podemos empezar a codificar el código.

Cascada VS Modelo en V

Comparando con el modelo en cascada, las etapas individualmente son las mismas. Sin embargo hay una gran diferencia. En vez de ir para abajo de una forma lineal las fases del proceso vuelven hacia arriba tras la fase de codificación, formando una V, ya que para cada una de las fases de diseño se ha encontrado un homólogo en las fases de pruebas. Las cuales, no deben dejarse para el final, tras la codificación.

Ventajas e Inconvenientes

Ventajas:
- Simplicidad y sencillez, fácil de utilizar
- Ya que las pruebas son paralelas al desarrollo.
- Fácil y rápida detección de fallos.
- Alta probabilidad de éxito. Poco riesgo.
- Involucra al cliente/usuario en el desarrollo
- Rígido y robusto, bueno para pequeños proyectos, y desarrolladores con poca experiencia.
Inconvenientes:
- Rígido, al igual que el de cascada, no apto para grandes proyectos.
- El alto numero de pruebas, pueden ser costosas (dinero y tiempo), para su eficacia.
- El cliente, puede que no especifique bien sus requisitos. Cambios de idea o necesidades.
- El cliente, no recibe nada que funcione hasta el final de proyecto. No hay prototipos.

¿En que casos se utiliza?
Es un sistema flexible y robusto a la vez, apto para pequeños proyectos tanto individuales como de equipo (2-5 personas).
También es muy sencillo, útil para nuevos desarrolladores con poca experiencia en el uso de metodologías.

Referencias:
Links Interesantes:

sábado, 3 de diciembre de 2011

DISEÑO DE SISTEMAS

El diseño del sistema es la estrategia  para resolver problemas y construir una solución.
Éste incluye decisiones acerca de la organización del sistema en subsistemas, la asignación de subsistemas a componentes hardware y software, y decisiones fundamentales conceptuales y de política que son las que constituyen un marco de trabajo para el diseño detallado.
La organización global del sistema es lo que se denomina la arquitectura del sistema. Existe un cierto número de estilos frecuentes de arquitectura, cada uno de los cuales es adecuado para ciertas clases de aplicaciones.

El diseño de sistemas es la primera fase de diseño en la cual se selecciona la aproximación básica para resolver el problema. Durante el diseño del sistema, se decide la estructura y el estilo global.
El diseñador desglosa el problema en subsistemas, de tal manera que sea posible realizar más trabajo por parte de varios diseñadores que trabajarán independientemente en distintos subsistemas.
El diseñador de sistemas debe tomar las siguientes decisiones:

- Organizar el sistema en subsistemas
- Identificar la concurrencia inherente al problema
- Asignar los subsistemas a los procesadores y tareas
- Seleccionar una aproximación para la administración de almacenes de datos
- Manejar el acceso a recursos globales
- Seleccionar la implementación de control en software
- Manejar las condiciones de contorno
- Establecer la compensación de prioridades

Según "Microsoft 1997", el diseño de software se realiza a tres niveles:

Conceptual, Lógico y Físico

Diseño Conceptual
El diseño conceptual se considera como un análisis de actividades y consiste en la solución de negocios para el usuario y se expresa con los casos de uso. Identificar los usuarios y sus roles

Diseño Lógico

El diseño lógico traduce los escenarios de uso creados en el diseño conceptual en un conjunto de objetos de negocio y sus servicios. El diseño lógico se convierte en parte en la especificación funcional que se usa en el diseño físico. El diseño lógico es independiente de la tecnología

Diseño físico

El diseño físico traduce el diseño lógico en una solución implementable y costo-efectiva o económica.

Herramienta utilizadas para el diseño y modelado visual :

  • Heramientas de ingenieria de software,  Aquí podemos encontrar información sobre las herramientas líderes que  implementan la ingeniería de software, desde el modelado de sistemas con UML hasta el proceso unificado que tiene que ver con la administración de proyectos.
  • SourceForge.net, Es una base de datos de proyectos de software de código abierto u open source software.

Fase de diseño : 


Introducción al ciclo de vida del software:


El ciclo de vida nos indica las actividades a realizar, y en qué orden, para construir un Sistema de Información. Una metodología indica cómo avanzar en la construcción del sistema, es decir, las técnicas a seguir.
Según la Norma ISO 12207-1, las actividades a realizar durante el ciclo de vida del software se agrupan en cinco procesos procesos principales del ciclo de vida


resultan útiles a las personas que inician un desarrollo en , explotación , mantenimiento del software. Estas personas son los compradores, los proveedores, el personal de desarrollo, los usuarios y el personal encargado del mantenimiento del software.


Antes de llegar a los procesos de ciclo de vida de software hay otros procesos que se plantean como:

  1. Proceso de adquisición: Contiene las actividades y tareas que el comprador, realiza para adquirir un sistema o un producto software. Aquí están incluidos la preparación y publicación de una solicitud de ofertas, la selección del proveedor del software y la correspondiente gestión de los procesos desde la adquisición hasta la aceptación del producto.

  2. Proceso de suministro: actividades que el proveedor realiza. Comienzan con la preparación de una propuesta para responder a una petición de oferta de un comprador o con la firma de un contrato con el comprador para proporcionarle un producto software. Trata, asimismo, de la identificación de los procedimientos y de los recursos necesarios para gestionar y garantizar el éxito del proyecto, incluyendo el desarrollo de los planes del proyecto y la ejecución de dichos planes hasta la entrega del producto software al comprador.

  3. Proceso de desarrollo: Contiene las actividades de análisis de requisitos, diseño, codificación, integración, pruebas e instalación y aceptación.


Proceso que se sigue desde el planteamiento de un problema,hasta que se tiene una solución instalada en el ordenador y lista para su ejecución denominado CICLO DE VIDA DEL SOFTWARE. Se compone de varias fases agrupadas en dos bloques:


*Analisis y Diseño
*Implementacion y Explotación

a) Entender el problema. En la primera fase del ciclo de vida del software, se lista las tareas que el software debe desarrollar, en esta fase se estudian sus causas y efectos.



b) Diseñar el programa. En la fase de diseño, el objetivo es conocer las relaciones entre los módulos del programa, y garantizar que se cumplen cabalmente los requerimientos solicitados de una manera eficiente, lógica y completa

en la etapa de Codificación y pruebas unitarias: Se desarrollan y documentan los componentes en la etapa de diseño

  1. Codificar el programa. Durante la fase de codificación, el programa se escribe en un lenguaje de programación. Hay muchos lenguajes de programación, cada uno de ellos es especialista en algún tipo de problemas.

    Por ejemplo, FORTRAN es especialista en cálculos numéricos, mientras que LISP es especialista en problemas de inteligencia artificial y procesamiento simbólico.

    El código del programa debe desarrollar la tarea solicitada, y debe ser legible de modo que otros programadores lo puedan mantener. Los programas se escriben usualmente en módulos separados, cada módulo desarrolla alguna tarea específica y debe funcionar independientemente y en relación con el resto del programa.

Hay que decir que el modelo de organización en cascada , tiene la posibilidad de hacer Iteraciones, lo que quiero decir si hay que hacer alguna modificacion se podran hacer haciendo los cambios necesarios en la Codificacion y se tendran que hacer de nuevo pruebas se tiene que regresar de nuevo a una de las etapas anteriores al mantenimiento hay que recorrer de nuevo las etapas.



La codificacion consiste en el diseño de la solucion al problema planteado en forma de Algoritmo.



Un algoritmo es una secuencia de pasos que se han de realizar para resolver un determinado problema. Son un conjunto ordenado y finito de operaciones que permiten encontrar la solucion de un problema.

*Ordenado:

Orden de ejecucion del algoritmo,si cambiamos el orden este no tendria sentido y seguro que daria algun error.

*Finito:
El algoritmo tiene que tener un principio de ejecucion y un final tiene que acabar.

Un algoritmo no esta escrito en ningun lenguaje de programacion, sino en una serie de lenguajes normalizados,como por ejemplo organigramas,ordinogramas,diagramas de flujo y pseudocodigo.



En esta fase se transcribe el algoritmo resultante de la fase anterior a un lenguaje de programación en concreto. Es una tarea totalmente mecanica. El resultado se le denomina programa. Un programa sabemos que es una secuencia lógica de acciones (instrucciones) que manipulan un conjunto de objetos(datos) para obtener unos resultados(solución del problema).En esta definición han intervenido 2 elementos:



Datos e Instrucciones : Esto hace referencia ha la programación estructurada



Programa= Algoritmos+Estructuras de Datos



Ejemplos

Realizar un Algoritmo que nos indique si una clase de alumnas y alumnos es numerosa o no,y posteriormente que calcule el porcentaje de chicas y chicos que hay(se considera numerosa si hay mas de 40 alumnos en total)



Solucion: Los pasos a seguir son los siguientes:
  1. Conseguir datos sobre el numero de chicos

  2. Conseguir datos sobre el numero de chicas

  3. Calcular el total

  4. según el total de alumnos informar si la clase es numerosa o no

  5. Calcular el % de chicos y chicas

  6. Imprimir el resultado



El resultado del algoritmo es el siguiente:

ALGORITMO Analisis_Clase

Var

Entero numero_chicos=0;

Entero numero_chicas=0;

Entero Total=0;

Decimal Porcentaje_chicos=0.0;

Decimal Porcentaje_chicas=0.0;

INICIO

LEER(numero_chicos);

LEER(numero_chicas);

Total=numero_chicos+numero_chicas;

SI(Total>40) Entonces

ESCRIBIR(“Clase numerosa);

SINO

ESCRIBIR(“clase normal);

FIN SI;

Porcentaje_chicos=(numero_chicos*100)/Total;

Porcentaje_chicas=(numero_chicas*100)/Total;

ESCRIBIR(Porcentaje_Chicos);

ESCRIBIR(Porcentaje_Chicas);

FIN ALGORITMO

Tenemos que tener en cuenta que ciertas cosas que suponemos ya lo sabra hacer el ordenador:

  1. Obtener Datos

  2. Operar Aritmeticamente

  3. Almacenar valores intermedios

  4. Comparar Valores

  5. Hacer distintos caminos de accion según las diversas acciones

  6. Mostrar los resultados


Probar el programa. Durante la fase de pruebas, el programa se ejecuta y se revisa. Las tareas deben ejecutarse sin errores en los resultados y también sin errores fatales. Se realizan diversas pruebas:



  1. Pruebas de Unidad (funcionamiento de modulos individualmente (modulo,clase,aplicacion,metodo);

  2. Pruebas de Integracion (ensamblaje de los modulos)

  3. Pruebas de Regresion (Se realizara cada vez que se haga un cambio o mejora necesariamente hay que comprobar que el resto de componentes no esten perjudicados por el cambio realizado)

  4. Pruebas de Validacion y Aceptacion (si el sistema cumple con el funcionamiento esperado)

  5. Pruebas de Integracion del Sistema (Comprobacion de todos los componentes)

e) Mantener el programa. Durante la fase de mantenimiento, de determina cualquier error y deficiencia en el programa, y se realizan cualquier acción para resolverla, mientras se preserva la integridad del programa. El uso de notas de diseño, código bien documentado y variables entendibles, pueden ayudar al mantenimiento futuro del programa


links http://es.wikipedia.org/wiki/Software



Documentacion de libros principios informaticos MaGrauHill

rafa