¿Cómo inicia un desarrollo? (Abstracción y Encapsulación)

¿Cómo inicia un desarrollo?

Antes de preguntarnos como, deberemos de preguntarnos el porqué?; cualquier cosa que se codifique tiene que tener un fin y un objetivo, sino de otra manera nadie lo va utilizar

Normalmente el motivo se asocia a una o varias necesidades, de ahí empezaremos a desprender todas las actividades que realizaremos para poder cubrir de manera satisfactoria dichas necesidades.

Si al comenzar un desarrollo no has ubicado los motivos y las necesidades que pretendes cubrir es mejor indagar un poco, lo suficiente para establecer un objetivo claro.

De las primeras preguntas que se tienen que hacer son:

  1. ¿Quién lo va a utilizar?
  2. ¿Qué es lo que actualmente le hace falta?
  3. ¿Dónde se va utilizar?
  4. ¿Qué es lo que más utiliza o utilizará?
  5. ¿Quién es el que tiene el poder de decisión? normalmente será quien paga!

Plantearnos estas pregunta nos lleva a determinar una visión a alto nivel de lo que probablemente será el sistema.

Si se detectan que hay varios motivos o necesidades de alto nivel, hay que empezar aplicar unos de los principales conceptos de la programación orientada a objetos, que es la "Encapsulación".

La aplicación correcta de este concepto puede ayudar a establecer límites funcionales y entender el sistema en cuestión
si detectamos que el sistema es una composición de varios, tendremos que crear un mapa (roadmap) que nos de 
visibilidad sobre la prioridades que se tienen entre ellos y poder resolverlo en base las prioridades

La encapsulación es un concepto que podemos utilizar a diferentes niveles de abstracción y apoyándose en la técnica de Colaboración y Responsabilidad (CRC http://c2.com/doc/oopsla89/paper.html) podemos facilitar el trabajo de todo el equipo.

Ahora bien una vez ubicado los objetivos de alto nivel hay que empezar una descomposición funcional (continuando a un nivel de abstracción de negocio) Apoyándonos en los expertos del dominio, y siempre apuntalando las necesidades hacia el objetivo inicial.

Nota: nosotros como programadores no somos expertos en todo y por lo tanto no deberíamos 
de progamar en base a nuestra lógica o conocimiento del negocio, esta práctica
es muy común en los desarrollos y muchas veces el primer factor de fracaso en los sistemas.
 
  - Hay que ponernos en contacto con los expertos del dominio y obtener los requerimientos -

Cualquier funcionalidad que no se alinee al objetivo está sujeta a discusión y a validación por parte del patrocinador o en su defecto a un análisis de costo/beneficio, para saber si se integra o no la funcionalidad.

El inicio de todo proyecto comienza por establecer un grupo de requerimientos funcionales a alto nivel (Abstracción), estos requerimientos serán revisados y complementados con las características de servicio esperado, para entrar en un análisis y establecer la propuesta de solución (sistema de Software)

Esta actividad normalmente realizada por el Rol de Business Analyst (BA) apoyándose en los expertos de desarrollo (Arquitectos o Líderes técnicos)

se recomienda que antes de entrar a las sesiones con los expertos de negocio, se haga una pre-investigación de problema del dominio y conozcan un poco del negocio así como de sus modismos y lenguaje que se utiliza.

Dejar evidencia del alcance y tener un mecanismo de aprobación
 es muy recomendable para evitar los malos entendimientos entre las partes.

hasta el momento solo estoy mencionando el primer paso toda vía hay bastante camino que recorrer.

Tiempos estimados en base a mí experiencia.

  1. Proyecto simple (proyecto apro de 600 hrs) de 1 a 2 días
  2. Proyecto Medio (proyecto apro de 1500 hrs) de 3 a 5 días
  3. Proyecto Complejo (proyecto apro de 1500 a 5000 hrs) de 5 a 10 días

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Israel-69

Abstracción

Según la wiki es: Abstracción (informática), el énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?".
http://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica)

Es uno de los primeros conceptos que todo programador de Java debe de dominar
A nivel de negocio la abstracción permite enfocarte en el objetivo y eliminar el detalle del mismo, solo así podrás lograr entender la composición
del sistema en términos de funciones, servicios o características.

Este concepto que para algunos les parece muy difuso, técnico o complejo, es una actividad que el ser humano hacer de manera intuitiva toda su vida
solo que no le ponemos la atención, ni la conocemos con ese nombre.

El Paradigma de objetos tiene como fin eliminar la brecha entre el entendimiento humano y la manera de programar, desde mi punto de vista cuando has podido ver en tú entorno que convives con objetos y que los conceptos como Abstracción y encapsulación están en todos lados, es cuando puedes entender que tan simple puede ser la implementación de un sistema.

El reto esta en poder evidenciarlo y transmitirlo de manera correcta y efectiva al equipo de trabajo.