miércoles, 1 de octubre de 2014

paradigmas de la programación

paradigmas de la programación
Un paradigma de programación es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que únicamente trata de resolver uno o varios problemas claramente delimitados. Es un estilo de programación empleado. La resolución de estos problemas debe suponer consecuentemente un avance significativo en al menos un parámetro que afecte a la ingeniería de software. Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente.
El paradigma de programación que actualmente es el más usado es la orientación a objetos. El núcleo central de este paradigma es la unión de datos y procesamiento en una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto".
Tradicionalmente datos y procesamiento se han separado en áreas diferente del diseño y la implementación de software. Esto provocó que grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con la orientación a objetos y características como el encapsulado, polimorfismo o la herencia se permitió un avance significativo en el desarrollo de software a cualquier escala de producción.
Un paradigma de programación representa un enfoque particular o filosofía para diseñar soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma de abstraer los elementos involucrados en un problema, así como en los pasos que integran su solución del problema, en otras palabras, el cómputo.
La orientación a objeto parece estar ligada en sus orígenes con lenguajes como Lisp y Simula aunque el primero que acuñó el título de programación orientada a objetos fue Smalltalk.
métodos de desarrollo de software

1. Definición del Problema
En esta etapa, también conocida como Especificación de Requerimientos, se establece el problema, aclarándolo lo más posible. Es la parte más crítica de la solución. Amerita un estudio cuidadoso. Se deben identificar las teorías, fundamentos y/o principios matemáticos, físicos o de cualquier índole que permitan fundamentar satisfactoriamente el problema.
·         Se deben eliminar los aspectos poco importantes para el planteamiento del problema
·         Si el problema no está completamente definido se deben allegar la información adicional
2. Análisis
En esta etapa se deben identificar las entradas del problema, los resultados deseados o salidas y cualquier requerimiento o restricción adicional enla solución
  • Identificar qué información se proporciona (datos del problema)
  • Identificar qué resultados deben calcularse y/o desplegarse
  • Determinar la forma y las unidades en qué se deben desplegar los resultados
  • Acotar las teorías, fundamentos y/o principios necesarios haciendo los supuestos y simplificaciones necesarias
  • Identificar los tipos y estructuras de datos necesarios para los datos del problema y para los resultados
  • Identificar las funciones u operaciones necesarias para cubrir los requerimientos del problema
3. Diseño
El diseño consiste básicamente en desarrollar una lista de pasos llamados algoritmo o receta de la solución, vericicando que el problema se resuelve como se desea.
  • Es la parte más difícil del proceso de solución del problema
  • Debe verificarse que es correcto el algoritmo antes de continuar
  • Se auxilia de técnicas de diseño como pseudocódigo y diagramas de flujo.
4. Implementación
Esta etapa consiste en implementar o escribir el algoritmo como un programa de computadora en un lenguaje de programación, convirtiendo cada paso del algoritmo en instrucciones en el lenguaje de programación.
  • Se requiere el conocimiento de un lenguaje de programación particular en lo referente a su gramática, sintáxis y semántica, para ello se recomienda leer el manual del programador o su equivalente y utilizarlo como consulta siempre que sea necesario.
Una manera de iniciar el conocimiento del lenguaje de programación es interpretando programas ejemplo, ejecutarlos, observar los resultados y analizar las entradas, las salidas y los procesos de cálculo y/o flujo de información mediante instrucciones de salida que finalmente .
  • Se requiere mínimo de las siguientes herramientas:
    • Un editor de texto para escribir el código fuente como un archivo de tipo texto plano (por ejemplo notepad para guardar los archivos como html)
    • Un intérprete que procese el código fuente y lo ejecute (por ejemplo el browser que ejecuta scripts en javaScript al cargar la página web)
    • Un debugger que nos ayude a depurar los errores y a corregir el código fuente hasta lograr un programa ejecutable sin errores (por ejemplo el mismo browser que envía mensajes a encontrar errores al ejecutar nuestro programa)
  • Se deben utilizar los tipos y estructuras de datos más adecuados que permita el lenguaje de programación, teniendo especial cuidado en el uso de tipos de datos reales y los errores de redondeo que introducen y pueden alterar los resultados.
5. Verificación y Prueba
Esta etapa consiste en probar el programa completo y verificar que trabaja como se esperaba
  • Se deben probar cada una de las funciones primero por separado y luego en conjunto
  • Se debe probar el programa completo con distintos conjuntos de datos de prueba
  • En caso de que haya errores repetir el paso 4 y 5 hasta la satisfacción de los requerimientos

Metodología de desarrollo de software
se describe como el conjunto de herramientas, técnicas, procedimientos y soporte documental para el diseño de Sistemas de información.
En Ingeniería de software cuando se habla de desarrollo de software se habla de desarrollo de programas y por lo tanto se considera como una tarea de ingeniería, en el cuál se debe ejecutar una serie de fases, etapas para obtener un programa que funcione de acuerdo con métodos ya establecidos en otras disciplinas de ingeniería. Las actividades que los ingenieros de software realizan se encuentran asociadas a un proceso de software donde intervienen diferentes elementos (fases, actividades, producto, roles, agentes) que permiten la definición del software a producir (producto), el desarrollo o el diseño del software, la validación del software tanto lo interno(requerimientos específicos)como lo externo(expectativas del cliente), y la evolución del software donde se modifica para adaptarlo a los cambios.
Por otro lado, Sommerville (2002) define que “un método de ingeniería de software es un enfoque estructurado para el desarrollo de software cuyo propósito es facilitar la producción de software de alta calidad de una forma costeable”, cabe destacar que para usar este enfoque se debe manejar conceptos fundamentales tales como; procesos, métodos, tareas, procedimientos, técnicas, herramientas, productos, entre otros.
Particularmente, una metodología se basa en una combinación de los modelos de proceso genéricos para obtener como beneficio un software que soluciones un problema. Adicionalmente una metodología debería definir con precisión los artefactos, roles y actividades, junto con prácticas, técnicas recomendadas y guías de adaptación de la metodología al proyecto. Sin embargo, la complejidad del proceso de creación de software es netamente dependiente de la naturaleza del proyecto mismo, por lo que el escogimiento de la metodología estará acorde al nivel de aporte del proyecto, ya sea pequeño, mediano o de gran nivel

tecnicas y herramientas en el proceso de desarrollo de software
Un proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Dicho proceso, en términos globales. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas. Aunque un proyecto de desarrollo de software es equiparable en muchos aspectos a cualquier otro proyecto de ingeniería, en el desarrollo de software hay una serie de desafíos adicionales, relativos esencialmente a la naturaleza del producto obtenido. A continuación se explican algunas particularidades asociadas al desarrollo de software y que influyen en su proceso de construcción.
Un producto software en sí es complejo, es prácticamente inviable conseguir un 100% de confiabilidad de un programa por pequeño que sea. Existe una inmensa combinación de factores que impiden una verificación exhaustiva de las todas posibles situaciones de ejecución que se puedan presentar (entradas, valores de variables, datos almacenados, software del sistema, otras aplicaciones que intervienen, el hardware sobre el cual se ejecuta, entre otros.).
El proceso de desarrollo de software no es único. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso de desarrollo de software. A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos:
1. Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software.
2. Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación.
3. Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.
4. Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.