Aprendiendo a desarrollar software

En este blog estaremos tratando múltiples temas sobre el desarrollo de software desde el nivel básico hasta experto.

domingo, 18 de septiembre de 2022

 Como este Blog está dedicado al desarrollo de software comenzaremos por saber: 


¿Qué es el software?


Después de analizar cientos de definiciones que encontramos en internet, libros, revistas y más. Les puedo concluir que el software son los programas, sistemas operativos o aplicaciones que le dan vida a nuestros diferentes dispositivos como celulares, PC, tabletas, etc. Ya que sin estos nuestros dispositivos serian simples accesorios.

sábado, 17 de septiembre de 2022

 Mis primeros pasos:

Muchas personas creen que desarrollar software es tener una idea en mente, sentarse a escribir código y que este valla creciendo conforme vallan saliendo nuevos requerimientos. Lo cual desde mi punto de vista es erróneo. Esto derivado de que desarrollar software considerando procesos y tiempos que se necesitan para administrarlo son factores que no todos los desarrolladores están dispuestos a invertir en los proyectos. Pero si en verdad lo que deseamos es tener un buen software funcional y de calidad, este debe cumplir con un proceso de desarrollo que garantice su funcionalidad.

¿Cuál es el proceso que involucra la creación de un software?

Existen múltiples procesos para el desarrollo de software, los cuales cuentan con ventajas y desventajas, diferentes enfoques y características. Pero entre todos estos podemos encuentrar uno en específico para cada proyecto que desarrollemos.

Etapas generales de desarrollo de software:

El proceso de desarrollo consta de diferentes etapas o actividades, para esto existen múltiples modelos los cuales proponen su propio estilo con sus actividades, pero podemos decir que todos comparten ciertas etapas del desarrollo de software:

1. Especificación: Se definen todos los requerimientos, tanto funcionales como no funcionales, además de especificar cuales son las restricciones de operación que tendrá el software.

2. Diseño e implementación: Se diseña y codifica el software considerando la información que se recabo en la etapa anterior.

3. Validación: Se muestra al cliente el software para su aprobación y puesta en marcha.

4. Mantenimiento: Durante esta etapa se realizan ajustes y actualizaciones al software.

Estas son las etapas generales durante el desarrollo de software y que muchos quieren evitar poniendo en riesgo la funcionalidad del producto final.

viernes, 16 de septiembre de 2022

 Modelos de proceso de desarrollo de software

Para la construcción de software de manera formal, existen múltiples modelos o procesos que se pueden utilizar como base para desarrollar software y que estos se realizan en base a una serie de actividades que van desde la visión que tiene el cliente en el proyecto, hasta la entrega de este.

Estos modelos establecen un orden o secuencias de cómo se deben de ejecutar cada una de las acciones o actividades que sugieren para el desarrollo de software. Como se menciona anteriormente cada proyecto que se realiza es diferente de otro, lo que lo hace único y no existe un modelo que pueda aplicarse a la perfección a todos los proyectos. Por esta razón existen múltiples modelos de desarrollo de los cuales uno de todos ellos, se debe adaptar a tu proyecto. Considerando cada uno de los modelos podríamos decir que estos se describen como marcos del proceso, lo que nos indica que no se detallan las actividades, sino que dependen de la selección de mejores prácticas de desarrollo que cada empresa u organización utilice para cada etapa del proceso.

Así como las actividades, cada proceso debe contener:

Productos: existen múltiples productos los cuales son el resultado de ejecutar cada proceso, por ejemplo, los diagramas del modelado de requerimientos, que se obtuvieron durante la etapa del análisis.

Roles: Son representados por las personas que participan en el proyecto según su responsabilidad.

Condiciones: son declaraciones que restringen de alguna manera ciertas actividades que tengan relación con el proceso o con el producto, estas deben ser claras y quedar listadas desde un inicio. Por ejemplo que solo se va a cumplir con los primeros requerimientos establecidos al inicio del proyecto, si llegasen a surgir más requerimientos estos deberán esperar a que se culmine el proyecto para retomarlos.

jueves, 15 de septiembre de 2022

miércoles, 14 de septiembre de 2022

 Modelo cascada

Comenzaremos con uno de los modelos más antiguos en el desarrollo de software, el cual ha servido como base para el nacimiento de otros modelos. Este modelo propone la construcción de software a través de cinco faces secuenciales de manera simple, cada una de sus fases contiene una serie de actividades para el logro de sus objetivos. Su representación es de manera escalonada y cada fase depende de la meta lograda en la fase anterior, las flechas de regreso representan la retroalimentación a cada fase.



Dentro de cada etapa se considera lo siguiente:

  1. Análisis: en esta fase los analistas y el cliente definen de manera detallada y por escrito, todos los requerimientos del sistema tanto funcionales como no funcionales.
  2. Diseño: a partir del análisis echo anteriormente se diseña la estructura de datos, la base o bases de datos en caso de requerir, las interfaces con las que se va a interactuar y los procedimientos que darán solución a los requerimientos del cliente.
  3. Codificación: Una vez que se completaron las fases anteriores se procede a la codificación para la generación del software.
  4. Pruebas: en esta etapa se realza la revisión del código para comprobar su funcionamiento, verificar que no tenga errores y que este realice lo esperado, considerando los requerimientos y diseño de etapas anteriores.
  5. Mantenimiento: esta etapa se realiza una vez se haya entregado el software al cliente, ya que la función de esta etapa es asegurar que el sistema siga funcionando, además de dar seguimiento a mejoras y nuevos requerimientos del software.

Como todo software tiene ventajas y desventajas

Ventajas:

  • Es uno de los modelos mas conocidos ya que fue unos de los primeros.
  • Es fácil de aprender, lo que permite que se pueda trabajar con personal inexperto en el en el modelo.
  • La calidad con la que se entrega el software es alta.
  • Gracias a su sencillez del modelo se pueden planear las actividades del ciclo completo.

Desventajas:

  • Cuando se trabajan con proyectos reales desafortunadamente no siempre se sigue el orden que propone este modelo, ya que al existir cambios estos llegan a producir confusiones entre el equipo del proyecto, esto derivado de la poca interacción que propone el modelo.
  • El modelo pide que se expongan todos los requerimientos al inicio del proyecto, lo cual para el cliente es algo difícil ya que en muchas ocasiones no se exponen todos los requerimientos o surgen nuevos.
  • El realizar cambios al proyecto una vez avanzado es más costoso y difícil.
  • En este modelo no se puede pasar de una etapa a otra sin antes haber concluido la anterior de manera correcta. Lo que puede ocasionar retrasos en las etapas siguientes.

martes, 13 de septiembre de 2022

 Modelo de construcción de prototipos

Este modelo tiene la finalidad de identificar los requerimientos del software, facilitar al equipo de desarrollo el entender los requerimientos del cliente, además de ayudar al cliente a detallar mas claramente las necesidades que tiene al respecto de la construcción del software.

Para realizar un prototipo existen múltiples maneras, solo se tiene que considerar cual es la naturaleza del proyecto y entre ellas tenemos:

  1. Considerando un borrador de la historia, tal como fue contado por el cliente por ejemplo una pagina de registro, una pagina de inicio de sesión, en la página principal un menú con X cantidad de opciones. Para realizar esta actividad debemos hacer uso de una herramienta que nos facilite el control ya sea en papel o un software en el que nos apoyemos.
  2. Implementación de un modelo de una función en específico. Por ejemplo se pueden implementar formularios sin muchos detalles de diseño, lo mínimo que sirva para simular el funcionamiento del diseño. Con esto el equipo de desarrollo entenderá cual es el requerimiento y solo faltaría pulirlo.   

Uno de los objetivos de estos prototipos es servir como apoyo para la especificación de requerimientos, pero por la premura con la que se realizan no es aconsejable que se utilicen como primera versión del sistema, ya que por la premura la calidad puede ser baja y por lo tanto no es lo que el cliente necesita.

Podemos ver su representación de la siguiente manera:

Como se pude observar en el diagrama este proceso al igual que el anterior cuenta con etapas las cuales se describen brevemente. Como primera parte tenemos la flecha la cual indica el comienzo y comenzamos con la recolección de requisitos.

  1. Recolección de requisitos: en esta etapa el cliente y el o los analistas definen la especificación de los requerimientos.
  2. Deseño rápido: en esta etapa el analista realiza el diseño del prototipo.
  3. Construcción del prototipo: la construcción del prototipo se realiza en cualquier herramienta de nuestra preferencia.
  4. Evaluación del prototipo: en esta etapa se revisa el prototipo y se generan observaciones, las personas de hacer esta revisión son el cliente y el usuario.
  5. Refinamiento del prototipo: las observaciones realizadas en la etapa anterior sirven para mejorar el prototipo, el cual es nuevamente construido regresando a la etapa dos.
  6. Producto final: este llega a su fin una vez que se concluyeron todas las observaciones que tenían el cliente y el usuario, además de que el prototipo debe ser claro para todo el equipo de desarrollo.

 

Ventajas:

  • No se modifica el flujo del ciclo de vida.
  • La posibilidad de satisfacción del cliente es mayor.
  • Gracias a su implementación se pueden reducir costos.
  • Aumenta su posibilidad de éxito.
  • Su implementación exige disponer de herramientas adecuadas.

 

Desventajas:

  • El cliente puede confundirse con las versiones al tomarlas como finales.
  • Puede llegar a ser cansado para el cliente la revisión de tantas versiones.
  • Se requiere compromiso por ambas partes para culminar el producto.
  • No se cuenta con un calendario de desarrollo, por lo que se desconoce el tiempo que tomara concluirlo.
  • Si el producto no se concluye el costo puede ser elevado.
  • Los desarrolladores pueden caer en la tentación de utilizar un prototipo o alguna de sus partes sacrificando la calidad del producto.

lunes, 12 de septiembre de 2022

 Modelo incremental

Este modelo combina elementos del modelo cascada con el modelo de construcción de prototipos. Para este caso cada secuencia en cascada produce un incremento dentro del proyecto. Cuando utilizamos este modelo en nuestro proyecto el primer incremento por lo regular se convierte en el núcleo de nuestro proyecto. El plan para seguir de este proceso es la modificación del producto central a fin de cumplir mejor las necesidades del cliente, la entrega de funcionalidades y las características adicionales solicitadas. El objetivo de este modelo es repetir los incrementos hasta que se elabore el producto por completo.


Después de observar el diagrama y considerando que es una mezcla de los dos modelos anteriores, las fases que maneja y lo que se realiza dentro de estas es muy similar por esta razón no se explican una a una.

Ventajas:

  • Se adapta mejor a pequeños sistemas.
  • Al momento de detectar errores solo se descarta la última iteración.
  • Gracias a sus iteraciones es fácil determinar si los requerimientos planteados para los niveles posteriores son correctos.

Desventajas:

  • Se puede concluir que todos los requerimientos has sido definidos desde un inicio.
  • Es un proceso que requiere de experiencia para la definición de incrementos, con el fin de distribuir las tareas de manera proporcional.
  • Se corre el riesgo de que el desarrollo se prolongue, por la cantidad de incrementos que se requieran.

domingo, 11 de septiembre de 2022

Modelo en espiral

Este tipo de modelo es de proceso evolutivo, acompañado por la naturaleza interactiva de construcción de prototipos con aspectos del modelo cascada, que sabemos que son controlados y sistematizados. Cuenta con el potencial para el desarrollo rápido de versiones incrementales del software. Dentro de este proceso se puede tener que las primeras iteraciones incrementales, se podrían realizar en un modelo de papel o un prototipo. Mientras en las ultimas iteraciones se producen versiones cada vez más complejas.

En este proceso se cuenta con un nuevo elemento que es el análisis de riesgo, y en el se definen entre 3 y 6 regiones de tareas.

 
 

Fases o regiones del modelo espiral:

 

Comunicación con el cliente: etapa donde le cliente y el analista establecen las políticas para la comunicación. 

Planificación: se determinan tiempos, objetivos, restricciones, y de más del proyecto. 

Análisis de riesgos: identificación y gestión del riesgo o riesgos. 

Ingeniería: desarrollo y verificación del producto del siguiente nivel. 

Construcción y adaptación: actividades para desarrollar, realizar pruebas, instalación y mantenimiento al software. 

Evaluación del cliente: validación del cliente hasta su aprobación y liberación.

 

Ventajas:

  • No es necesario contar con todos los requerimientos al inicio del proyecto.
  • Es evolutivo, lo que permite al cliente ir definiendo sus requerimientos con el paso del tiempo durante el desarrollo.
  • Se pueden construir prototipos para disminuir riesgos del proyecto.
  • Los requerimientos se evalúan con cada iteración.
  • Se representa de mejor manera un proceso de desarrollo real.

Desventajas:

  • Por su estructura y forma de trabajo el proyecto se podría considerar interminable.
  • Es complejo.
  • Se requiere de la participación del cliente de manera continua.