Ingeniería de Software

 Es la rama de las Ciencias de la computación que busca principios que sirvan como guía al desarrollo de sistemas de software complejos y de gran tamaño. El desarrollo de estos sistemas requiere el esfuerzo de más de una persona lo largo de un periodo extendido de tiempo durante el cual los requisitos del sistema propuesto pueden verse alterados y el personal asignado al proyecto puede variar.

 

·      La disciplina de la ingeniería de software:

o   Capacidad de construir sistemas a partir de componentes genéricos prefabricados.

§  Los componentes de un software son diseñados para un dominio específico y para una aplicación específica.

o   Falta de técnicas cuantitativas, denominadas métricas, para medir las propiedades del software.

§  La complejidad del software es difícil de medir.

§  Tiempo entre fallos no es una buena métrica.

o   Dependencia y errores en el software:

§  La sociedad depende de sistemas de computadoras y software.

§  La economía, la salud pública, el gobierno, las fuerzas de seguridad, el transporte y la defensa dependen de sistemas de software.

§  Los errores en el software provocan grandes desastres.

§  Los sistemas fallan por tres razones:

·      
No redundancy

·      Hacking

·      Human error

 

 

 

 

 

 

 

 

o   Mejorando la calidad del software:

§  CASE: ingeniería de software asistida por computadora.

§  Sistemas de planificación de proyectos

§  Sistemas de gestión de proyectos

§  Herramientas de documentación 

§  Sistemas de prototipado y simulación 

§  Sistemas de programación 


o   El ciclo de vida del software

§  Una vez que el software ha sido desarrollado, entra en un ciclo de utilización y mantenimiento, un ciclo que continúa durante el resto de la vida útil de ese software.

§  En el caso del software el mantenimiento consiste en correcciones y actualizaciones.

§  Independientemente de porqué pase a mantenimiento, el proceso requiere que una persona estudie el programa subyacente y su documentación hasta entender el programa o al menos la parte pertinente del mismo.

§  En algunos casos es mejor desarrollar un nuevo sistema de cero.

 

o   Fase del desarrollo tradicional

§  Análisis del requisito: especificar qué servicios proporcionará el sistema, identificar las condiciones y definir cómo interactuará el exterior con el sistema.

§  Diseño: crear un plan para la construcción de ese sistema propuesto. El diseño consiste en tratar de desarrollar una solución para un problema. El resultado de la fase de diseño es una descripción detallada de la estructura del sistema software que puede convertirse en programa.

§  Implementación: implica la escritura de los programas, la creación de archivos de datos y el desarrollo de bases de datos. El analista de software se especializa en las etapas de análisis y diseño; el programador se especializa en la implementación.

§  Pruebas: proceso de depurar los programas y confirmar que el producto software final es compatible con las especificaciones de requisitos.

 

o   Metodologías de ingeniería de software:

§  Modelo cascada: proceso estrictamente secuencial.

§  Modelo incremental: el software se construye en incrementos, siendo el primer sistema una versión simplificada del producto final.

§  Modelo iterativo: se basa en el concepto de refinar cada versión. Se añaden características de forma incremental.

§  Proceso unificado racional: paradigma de desarrollo que redefine los pasos de la fase de desarrollo del ciclo de vida del software y proporciona directrices para llevar a cabo esos pasos. 

§  Prototipado:

o   Evolutivo: se construyen y evalúan versiones incompletas hacia el sistema final.

o   Descartable: se descartan prototipos a favor de una nueva implementación del diseño final.

o   Rápido: se construye rápidamente un ejemplo simple del sistema propuesto. Esto se hace durante las etapas iniciales del desarrollo. El objetivo no es una versión funcional del producto sino conseguir una herramienta de demostración que puede utilizarse para aclarar requerimientos. 

§  Desarrollo de código fuente abierto: un único autor escribe una versión final del software y publica código fuente y su documentación en Internet. Desde allí puede ser descargado y modificado por otros usuarios sin ningún costo.

§  Métodos Ágiles:  implementación rápida y temprana basada en el concepto incremental, una adecuada capacidad de respuesta a las variaciones en los requisitos y un menor énfasis en la rigurosidad del análisis de requisitos y en el diseño.

Comentarios

Entradas populares de este blog

10 Datos curiosos sobre el internet

¿Sabes qué hay adentro de tu computadora?

Fintech, Criptomonedas y Blockchain