Metodología de ingeniería del software
En principio comenzaré por decir que la metodología, dentro de la ingeniería de software se encarga de elaborar estrategias de desarrollo de software que promuevan prácticas adoptativas en vez de predictivas; centradas en las personas o los equipos, orientadas hacia la funcionalidad y la entrega, de comunicación intensiva y que requieren implicación directa del cliente.
Ya mencionado a lo que se refiere con metodología del software a continuación remencionan algunas:
Estrategias metodológicas
-Clase magistral, para los temas correspondientes a fundamentación teórica.
-Ejercicios desarrollados en clase, para comprensión y aplicación de los temas.
-Lecturas de elementos teóricos que permitan la crítica y generen la duda acerca de las formas de evaluación.
Estrategias evaluativas
-A través de tareas de aplicación y medición de algoritmos.
-Elaboración de casos de medición para un modelo desarrollado.
-Aplicación de los aspectos de calidad (ISO), para la dar fiabilidad en el productoterminado.
-Consultas de elementos adicionales y algoritmos de alto desempeño para cubrir aspectos necesarios en la calidad del software.
En conclusión podemos decir que las metodologías de desarrollo de software son un conjunto de procedimientos, técnicas y ayudas a la documentación para el desarrollo de productos software. Las técnicas indican cómo debe ser realizada una actividad técnica determinada identificada en la metodología. Combina el empleo de unos modelos o representaciones gráficas junto con el empleo de unos procedimientos detallados. Se debe tener en consideración que una técnica determinada puede ser utilizada en una o más actividades de la metodología de desarrollo de software. Además se debe tener mucho cuidado cuando se quiere cambiar una técnica por otra.
Ciclo de vida de software
El ciclo de vida de un sistema de información es un enfoque por fases del análisis y diseño que sostiene que los sistemas son desarrollados de mejor manera mediante el uso de un ciclo especifico de actividades del analista y del usuario.
En otras palabras ciclo de vida del software se le llama al conjunto de las fases empleadas para la realización del mismo.
Elementos de un ciclo de vida
Un ciclo de vida para un proyecto se compone de fases sucesivas compuestas por tareas planificables de manera que lo que conceptualmente se considera una misma fase se pueda ejecutar más de una vez a lo largo de un proyecto, recibiendo en cada pasada de ejecución aportaciones de los resultados intermedios que se van produciendo (realimentación).
A continuación se presenta los distintos elementos que integran un ciclo de vida:
Fases: Una fase es un conjunto de actividades relacionadas con un objetivo en el desarrollo del proyecto. Se construye agrupando tareas (actividades elementales) que pueden compartir un tramo determinado del tiempo de vida de un proyecto.
Cuanto más grande y complejo sea un proyecto, mayor detalle se necesitará en la definición de las fases para que el contenido de cada una siga siendo manejable.
De esta forma, cada fase de un proyecto puede considerarse un “micro-proyecto” en sí mismo, compuesto por un conjunto de micro-fases.
Otro motivo para descomponer una fase en subfases menores puede ser el interés de separar partes temporales del proyecto, requiriendo distintos procesos de gestión.
Cada fase viene definida por un conjunto de elementos observables externamente, como son las actividades con las que se relaciona, los datos de entrada (resultados de la fase anterior, documentos o productos requeridos para la fase, experiencias de proyectos anteriores), los datos de salida (resultados a utilizar por la fase posterior, experiencia acumulada, pruebas o resultados efectuados) y la estructura interna de la fase.
Entregables: Son los productos intermedios que generan las fases. Pueden ser materiales (componentes, equipos) o inmateriales (documentos, software). Los entregables permiten evaluar la marcha del proyecto mediante comprobaciones de su adecuación o no a los requisitos funcionales y de condiciones de realización previamente establecidos. Cada una de estas evaluaciones puede servir, además, para la toma de decisiones a lo largo del desarrollo del proyecto.
Dentro de cada fase general de un modelo de ciclo de vida, se pueden establecer una serie de objetivos y tareas que lo caracterizan.
Fase de definición (¿qué hacer?)
o Estudio de viabilidad.
o Conocer los requisitos que debe satisfacer el sistema (funciones y limitaciones de contexto).
o Asegurar que los requisitos son alcanzables.
o Formalizar el acuerdo con los usuarios.
o Realizar una planificación detallada.
Fase de diseño (¿cómo hacerlo? Soluciones en coste, tiempo y calidad)
o Identificar soluciones tecnológicas para cada una de las funciones del sistema.
o Asignar recursos materiales para cada una de las funciones.
o Proponer (identificar y seleccionar) subcontratas.
o Establecer métodos de validación del diseño.
o Ajustar las especificaciones del producto.
Fase de construcción
o Generar el producto o servicio pretendido con el proyecto.
o Integrar los elementos subcontratados o adquiridos externamente.
o Validar que el producto obtenido satisface los requisitos de diseño previamente definidos y realizar, si es necesario, los ajustes necesarios en dicho diseño para corregir posibles lagunas, errores o inconsistencias.
Fase de mantenimiento y operación
o Operación: asegurar que el uso del proyecto es el pretendido.
o Mantenimiento (nos referimos a un mantenimiento no habitual, es decir, aquel que no se limita a reparar averías o desgastes habituales -este es el caso del mantenimiento en productos software, ya que en un programa no cabe hablar de averías o de desgaste)
Programación Extrema
La Programación Extrema es una de las llamadas Metodologías Ágiles de desarrollo de software más exitosas de los tiempos recientes.
En un equipo de programación extrema hay una división fundamental entre los roles del cliente y el programador. El Cliente es dueño del “qué se obtiene” y el programador es dueño del “cuánto cuesta”.
El Cliente decide:
-Alcance lo que el sistema debe hacer.
-Prioridad qué es lo más importante.
-Composición de las entregas qué debe estar en la entrega para que sea útil.
-Fechas de las entregas para cuándo se necesitan las entregas.
El Programador decide:
-Tiempo estimado para agregar una característica.
-Consecuencias técnicas, el Programador explica las consecuencias de las decisiones técnicas, pero el Cliente es quien toma la decisión.
-El proceso, cómo trabajará el equipo.
-Cronograma detallado dentro de la iteración.
PSP Este proceso está basado en la revisión de cada etapa del ciclo de desarrollo de software, de esta manera se logra incorporar disciplina en el proyecto.
TSP Este proceso se enfoca en la administración estructural de un grupo, así como los requerimientos del producto a desarrollar, basándose en las mejores y más actuales prácticas de la industria.
RUP Este proceso diseñado por La Rational Software Corporation describe como desarrollar software efectivamente usando técnicas comerciales empleando únicamente los procesos necesarios.
SCRUMEs una metodología ágil para el desarrollo de software enfocándose fuertemente en la parte del control empírico de procesos de software en lugar de los procesos ya definidos.
UML Es el lenguaje de modelado de sistemas de software más conocido en la actualidad; aún cuando todavía no es un estándar oficial, está apoyado en gran manera por la OMG (Object Management Group), industria de cómputo que promueve la interoperabilidad orientada a objetos entro los entornos de computacionales.
¿Qué es software?
Software: también conocido como programático y aplicación informática- es la parte lógica del ordenador, esto es, el conjunto de programas que puede ejecutar el hardware para la realización de las tareas de computación a las que se destina. Es el conjunto de instrucciones que permite la utilización del equipo.