1.4 Métodos, especificaciones y modelos

1.4 Métodos, especificaciones y modelos

Las actividades que tienen lugar y los artefactos que se crean en la ingeniería de software tienen una serie de prescripciones, es decir están sujetos a normas que dictan como deben hacerse. Estas normas provienen de la necesidad de crear conocimiento o de hacer pruebas de una manera determinada o bien de experiencias y hasta de la intuición o el sentido común de una persona o un grupo. Sin importar de donde vengan, es claro que la activad de ingeniería está sujeta a ciertas prescripciones; el termino método es uno de los más utilizados para referirse a ellas. Los métodos imponen estructura a la actividad de ingeniería de software con el objetivo de hacerlas más sistemáticas y finalmente más exitosas.

Definición: Un método en sentido general es la especificación de una secuencia de acciones orientadas a un propósito determinado. En el área de la ingeniería de software los métodos determinan el orden y la forma de llevar a cabo las actividades.

El termino metodología hace referencia al estudio de los métodos, aunque también pueden utilizarse para hacer referencia a un conjunto coherente de métodos.

Definición: Metodología se define como un conjunto de métodos coherentes y relacionados por principios comunes. En sentido general se define como la ciencia del método o el estudio de los métodos de una disciplina o actividad.

En la ingeniería de software se habla de metodologías estructuradas o metodologías orientadas a objetos haciendo referencia a términos que originan el desarrollo de un software.

Definición: Una especificación es una descripción detallada y precisa de algo que existe o de una cierta situación presente o futura. En la ingeniería del software una especificación del software que se desea construir da lugar a especificaciones ejecutables denominadas programas de computadora.

Las especificaciones como elemento de información, es una parte fundamental de toda disciplina de ingeniería. Para elaborarlas se emplean lenguajes o notaciones de diferente tipo. En muchas ocasiones se utiliza el lenguaje natural para crear lo que se denomina algoritmo esto por la finalidad de crear o simular una comunicación entre el programador y los objetos a desarrollar. Por ello hay lenguajes visuales que permiten o que emplean diagramas e iconos para facilitar la comunicación. También existen lenguajes formales en los que se utiliza notación matemática para alcanzar un grado mayor de precisión y eliminar errores.

Procesos y ciclos de vida

El termino actividad proporciona una descripción muy general de lo que se hace en ingeniería de software. Aunque finalmente todo se reduce a actividades, métodos y modelos para desarrollar y ejecutar un software que permita una experiencia al programador. Un concepto muy utilizado es el llamado ciclo de vida de un software, el cual trata del periodo de tiempo, que comienza cuando se desarrolla un software y se ejecuta por primera vez y termina cuando el producto deja de usarse.

Definición: El ciclo de vida de un producto o proyecto es la evolución del mismo desde el momento de su concepción hasta el momento de que deja de usarse, y puede describirse en función de las actividades que se realizan dentro de él. El ciclo de vida de un software también abarca su evolución y mantenimiento.

Debe quedar claro que en estos casos no se está haciendo referencia al ciclo de vida de in software determinado, sino a una especificación de las que deben ser las fases o el curso general de la ingeniería del software. En realidad, sería más conveniente emplear un modelo de ciclo de vida de software que se amolde o que cumpla con las características de las actividades a realizar.

Un término relacionado también con un software es el llamado proceso que se puede entender como una secuencia de pasos a cabo para un propósito específico o también una secuencia de actividades que comparten un propósito.

Definición: Un proceso dentro de la ingeniería del software es un conjunto coherente de políticas, estructuras organizativas, tecnologías, procedimientos y artefactos que se necesitan para desarrollar, implementar y mantener un producto llamado software.

En realidad, puede afirmarse que un modelo de proceso es equivalente a una metodología en términos de ingeniería de software. Es por ello que los modelos de ciclo de vida no son otra cosa que modelos de procesos pues un modelo de ciclo de vida describe las fases fundamentales o los pasos a seguir para la solución de un problema.

Es importante resaltar que no existe un único proceso correcto para la ingeniería de software, pero si un cierto número de procesos concretos.

Con lo anterior se ha situado a la ingeniería del software como parte de las disciplinas de la ingeniería, resaltando aquellos aspectos que tiene su origen en el desarrollo de software.

La disciplina como ya se ha mencionado puede verse como un conjunto de actividades de propósito específico, que proporciona como resultado un artefacto. Estas actividades no se desarrollan de manera casual, sino que siguen ciertos métodos que describen la forma de hacer las cosas más efectivas según las circunstancias particulares de cada situación en la que nos encontremos. Pero además de todo esto se estudia los fundamentos de carácter científico de la ingeniería de software que hacen de ella una ciencia.

Análisis de la ingeniería de software

La crisis del software no es un evento histórico concreto, sino un fenómeno asociado la disciplina en sí misma. Dicho fenómeno se identificó en la década de los 60s, pero persiste en nuestros días.

La ingeniería de software es una disciplina que estudia como desarrollar software de manera metódica de acuerdo a ciertas restricciones. En este sentido, el conocimiento sobre como optimizar el rendimiento de un sistema informático es útil, pero no es el aspecto central de la disciplina.

El uso de técnicas formales en ingeniería de software s útil especialmente en casos en los que se refiere a una alta fiabilidad del diseño. No obstante, los métodos matemáticos son conocimiento y técnicas auxiliares a la ingeniería de software.

Si se presupone que el software es un producto inherente o complejo, no puede existir un método que elimine totalmente el esfuerzo necesario para tratar cierta complejidad. Posiblemente aparecerían técnicas novedosas que proporcionen resultados mejores, pero la complejidad inherente al software seguiría haciendo de la ingeniería de software una actividad con características especiales.

Los roles profesionales en una organización de desarrollo de software es un aspecto de la ingeniería del software no solamente en los aspectos técnicos del desarrollo sino también a los organizativos.

Esencialmente una métrica es la interpretación de una o varias mediciones de un cito atributo de software (producto) o delas actividades de ingeniería de software (proceso). Esa interpretación habitualmente se basa en estudios estadísticos que relacionan las medidas con el atributo observado.

Por otra parte, la sistematicidad, disciplina y cuantificación son las tres características fundamentales de la ingeniería de software.

Se puede decir que un método es la forma de realizar una actividad de ingeniería de software de manera sistemática y siguiendo pasos establecidos, mientras que un proceso se aplica a todo el ciclo del software o al conjunto de actividades del mismo, esto sería la diferencia entre un método y un proceso.

Se puede considerar que el registro de las horas de trabajo en cada módulo de los programadores en un proyecto es un artefacto de ingeniería de software ya que es un producto tangible de una actividad. Además, ese tipo de información es útil para la ingeniería por varios motivos por ejemplo para medir cuantitativamente el esfuerzo con el fin de conocer más sobre la productividad de las organizaciones.

El tamaño del software es importante en el contexto de ingeniería de software como medición de la complejidad y el esfuerzo de desarrollo. El tamaño en bites de los ficheros no es una medida que interese ya que depende mucho del estilo de codificación y también de la cantidad de comentarios, por ejemplo, la cuenta de las líneas de código, consideradas simplemente como líneas de un fichero fuente disminuye el costo de un software. La cuenta de las sentencias es más significativa ya que es una medida independiente de los comentarios y la longitud de los indicadores.

El proceso de software personal (PSP) es una definición de proceso de ingeniería de software orientada a un uso individual, que se utiliza en ocasiones para aprender conceptos de procesos de software. Una de las guías que proporciona es la de desarrollo.

Entradas necesarias para el desarrollo de un software:

  • Relación de requisitos.
  • Resumen del plan del proyecto con el tiempo planificado de desarrollo.
  • Cuadernos de registro del tiempo y de defectos.
  • Estándar de tipo de defectos.

Actividades del diseño de software.

  • Revisar los requisitos y realizar un diseño que los cumpla.
  • Registrar el tiempo en el cuaderno de registro del tiempo.
  • Implementar el diseño.
  • Registrar en el diario del registro de defectos cualquier defecto de requisitos o diseño encontrado.
  • Registrar el tiempo en el cuaderno de registro del tiempo.

Actividades de compilación del software

  • Compilar el programa hasta que esté libre de errores.
  • Corregir todos los defectos encontrados.
  • Registrar los defectos en el cuaderno de registro de defectos.
  • Registrar el tiempo en el cuaderno de registros del tiempo.

Actividades de prueba de software

  • Probar hasta que los casos de prueba de diseño funcionen sin error.
  • Corregir todos los defectos encontrados.
  • Registrar los defectos y los tiempos en el cuaderno de defectos y tiempos.

Criterios de salida

  • Un programa completamente probado.
  • El cuaderno de registro de defectos completo.
  • El cuaderno de registro de tiempos completo.

El registro de defectos es una política de control útil para el seguimiento de estado del código. Las pruebas son un artefacto, aunque no se especifican como salida ya que son un elemento de uso interno en el tipo de actividad descrito.

ESTE SITIO FUE CONSTRUIDO USANDO