miércoles, 16 de diciembre de 2009

Análisis de requisitos

Ahora que ya están definidos los requisitos, es un buen momento para empezar a definir de forma más formal que es lo que hará o mejor dicho que es lo que queremos que haga la aplicación a partir de esos requisitos informales de modo que lo siguiente que hay que hacer es tomar cada uno de los requisitos y explicarlos de un modo más técnico y teniendo en cuenta con que arquitectura se va ha contar.

En este primer punto ya sabemos que se necesita un PC que cuente por lo menos con un ratón (con rueda como ya se verá después) y un teclado (aunque esto parezca una obviedad es importante comentarlo). Pero ahora bien, como debe ser ese equipo, ya que otro de los requisitos ya descritos es que se hará una reproducción de varios sonidos en tiempo real por lo que sin duda esos sonidos tendrán que estar cargados en memoria y además habrá que contar con un procesador que sea capaz de mezclar estos sonidos casi a la vez que se reproducen. Sin duda es algo difícil de calcular ya que en este caso dependerá del SO, de las librerías que usemos, del interfaz que se cree, etc. por lo que en un primer lugar lo mejor sería ver que requisitos tienen algunas aplicaciones similares y establecer este como el requisito para un equipo en el que funcionará la aplicación. En este caso se utilizará como modelo la aplicación Linux MultiMedia Studio cuyos requisitos son un procesador a 1GHz y al menos 512 MB de RAM siendo estos valores los que límiten los recursos de los que se dispone para hacer funcionar la aplicación.

A continuación hay que centrarse en los requisitos más funcionales de la aplicación si bien ya se explican casi por ellos mismos a partirde la especificación de requisitos hay que redefinirlos de forma más precisa de cada uno de los puntos:
    • El principal objetivo que se quiere desarrollar es la reproducción y mezcla de varios sonidos (intrumentos) así como la aplicaciṕon de efectos sobre estos (en principio solo el cambio de intensidad) al detectarse la pulsación del teclado (de aquí ya se podrían sacar esquemas pero me estoy conteniendo :P).

    • El control de la intensidad debe realizarse en tiempo real al combinar controles de ratón y teclado. Es decir, al girar la rueda del ratón hacia un lado mientras se mantiene pulsada una tecla se bajará la intensidad del sonido asociado y si se gira al lado contrario pues al contrario.

    • La relación entre cada tecla y su sonido debe ser configurable por el usuario.

    • Además el usuario puede añadir nuevas fuentes de sonido y asociarlo a una determinado caracter de teclado para su reproducción así como eliminar los que ya han sido cargados previamente o editarlos cambiando su fuente de sonido por ejemplo.

    • Los instrumentos que debe ser capaz de reporducir la aplicación por defecto (es decir propios de la aplicación) son los de bombo, caja (redoble, claqueta, caja), toms, tom suelo, platillos, hit hat y ride. Este requisito por suerte ya está cubierto.

    • Y, aunque esto ya se debería haber comentado con anterioridad, el interfaz de la aplicación debe ser capaz de ejecutarse en Windows, y en los diferentes entornos de escritorio de Linux, por lo que tendrá que ser compatible con X11.



En resumen, para que la aplicación sea válida a los objetivos iniciales que se han propuesto anteriormente, el desarrollo debe cumplir tanto los aspectos funcionales mencionados como ser capaz de cumplir estos aspectos en la arquitectura indicada por lo que se deberá realizar el resto de las decisiones teniendo todos estos puntos en cuenta.

martes, 8 de diciembre de 2009

Especificación de requisitos

De las opciones ya propuestas en el braistorimng he decido que para una primera versión de la aplicación que más o menos además ya será utilizable cuente con los siguientes puntos ya desarrollados:

  • Reproducción de los sonidos de bombo, caja (redoble, claqueta, caja), toms, tom suelo, platillos, hit hat y ride. Es decir, desarrollar la principal funcionalidad de DrumSim que es la sintesis de instrumentos de percusión en tiempo real en coordinación con las pulsaciones del teclado.
  • Control individual de intensidad de cada uno de los instrumentos cargados en tiempo real a través de la combinación de ratón y teclado.
  • Adición de nuevos instrumentos lo que permitirá aumentar la capacidad de la aplicación a través de nuevas funtes de sonidos de instrumentos de percusión u otros efectos de sonido.
  • Configuración y manejo de los instrumentos cargados que permitirá borrar y editar sus características.

Con todo esto ya se debe de tener una pequeña idea de que es lo que se quiere conseguir pero queda mucho trabajo por hacer en los que habrá que definir los detalles de la aplicación.

domingo, 6 de diciembre de 2009

Metodología

La idea del desarrollo de la aplicación es que avance poco a poco, es decir incluyendo tan solo unas cuantas funcionalidades en cada versión de las que se han propuesto en el brainstorming (asignando a cada tarea su prioridad) por lo que el proceso de desarrollo de la aplicación se basará en la selección de las funcionalidades a desarrollar o lo que es lo mismo una especificación de requisitos, seguido del análisis de cada una de estas funcionalidades, su diseño, su integración en la aplicación ya desarrollada o con las librerías disponibles y finalmente su codificación y publicación.

Una de las metodologías que permite desarrollar de una forma ciclica y ágil es Extreme Programing, una metodología que permite justamente lo que se pretenede que es realizar el proceso completo de análisis-diseño, codificación, etc. a partir de la epecificación de requisitos (que además en cualquier momento pueden cambiar) para cada fase del desarrollo. Finalemente una vez se hayan abordado los aspectos formales de cada una de las versiónes se procederá su codificación, si bién XP tiene un gran enfásis en el desarrollo de un código de calidad gracias a métodos como la Programación por parejas, pruebas unitarias y otras recomendaciones a seguir al escribir que se tratarán de seguir en esta fase.

Aquí os dejo un par de enlasces por si quereís más información:


jueves, 3 de diciembre de 2009

Forja


Ya está lista la forja del proyecto en RedIRIS dónde se irá publicando la documentación, el código y los paquetes de instalación de la aplicación. Para acceder a la página con el resumen del proyecto os dejo este enlace aquí. Además desde allí podeis acceder a los foros, la lista de correo, repositorio de código y otros servicios que serán muy utiles a la hora de trabjar.