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.).
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.
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.