Você está na página 1de 7

Dpto.

: Ingeniería de Sistemas Informáticos y Telemáticos


Área: Lenguajes y Sistemas Informáticos
Definición y características del
software
• Software: (1) instrucciones de ordenador que
cuando se ejecutan cumplen una función y
Estructuras de Datos y de la tienen un comportamiento deseados, (2)
Información estructuras de datos que facilitan a los
programadores la adecuada manipulación de la
Desarrollo de Software información, y (3) documentos que describen la
operación y el uso de los programas.
• Características del software:
 El software se desarrolla, no se fabrica en
sentido estricto.
Héctor Sánchez Santamaría (sasah@unex.es)  El software no se estropea.
 La mayoría del software se construye a medida.
José Manuel García Alonso (jgaralo@unex.es)
1 2

Propiedades de los sistemas de


La complejidad del software
software simples o artesanales
• Suelen estar construidos y mantenidos por una
sola persona (software artesanal)
 No suelen pasar de 1000000 de líneas de
código, aunque el número de líneas no sea la
mejor medida de la complejidad del software
• Ciclo de vida corto
• Pueden construirse aplicaciones alternativas en
un periodo razonable de tiempo
• No necesitan grandes esfuerzos en análisis y
diseño

3 4
Propiedades de los sistemas
Crisis del software
software complejos
• También se denomina software de dimensión • Son los sucesivos fracasos de las distintas
industrial metodologías para dominar la complejidad del
software, lo que implica el retraso en la entrega
• Es muy difícil o imposible que un desarrollador
de los proyectos de software, las desviaciones
individual pueda comprender todas las
por exceso de los presupuestos fijados y la
sutilidades de su diseño
baja calidad del producto final respecto a los
• La complejidad es una propiedad esencial de requisitos del cliente (poco fiables y difíciles de
estos sistemas, que puede dominarse, pero no mantener) (Booch 94)
eliminarse
• Ejemplo: Sistema de reservas, anulaciones y
venta de billetes aéreos para un conjunto de
compañías aéreas que se pueda utilizar en
cualquier lugar del mundo
5 6

Crisis del software Crisis del software

• Conferencia OTAN sobre Ingeniería del • Un proyecto desarrollado de forma


Software (1968) indisciplinada (utilizando técnicas para software
“unidesarrollador”) tiene muchas posibilidades
de fracasar

7 8
¿Qué es la ingeniería del ¿Qué es la ingeniería del
software? software?
«El establecimiento y uso de principios de ingeniería «Ingeniería es la aplicación sistemática de conocimiento
robustos, orientados a obtener económicamente software científico en la creación y construcción de soluciones, que
que sea fiable y funcione eficientemente sobre máquinas satisfacen una buena relación efectividad/precio, de
reales» (Bauer, 1972) problemas prácticos al servicio de la humanidad. La
ingeniería del software es la forma de ingeniería que aplica
los principios de las ciencias de la computación y las
«La disciplina tecnológica y de gestión que concierne a la matemáticas en la obtención de soluciones de los
producción y el mantenimiento sistemático de productos problemas del software que satisfacen una buena relación
software desarrollados y modificados dentro de unos plazos efectividad/precio.»
estipulados y costes estimados.» (Fairley, 1985)
SEI Report on Undergraduate Software Engineering
Education, 1990.
«Es la aplicación de un enfoque sistemático, disciplinado y
cuantificable al desarrollo, operación y mantenimiento del
software; es decir, la aplicación de la ingeniería al software»
(IEEE Std 610-1990)
9 10

Ingeniería del software Calidad del software

• Objetivo principal: Producir software de calidad • Factores que determinan la calidad del
software
 Externos. Detectados por el usuario de producto.
“La calidad del software es el grado con el que un sistema,
 Internos. Detectados sólo por los
componente o proceso cumple los requerimientos
especificados y las necesidades o expectativas del cliente o desarrolladores.
usuario”. (IEEE, Std. 610-1990).

“Concordancia del software producido con los


requerimientos explícitamente establecidos, con los
estándares de desarrollo prefijados y con los requerimientos
implícitos no establecidos formalmente, que desea el
usuario” (Pressman, 1998)

11 12
Factores que determinan la Factores que determinan la
calidad del software calidad del software
• Se pueden clasificar en dos grandes grupos • Características operativas
(Pressman, 1998):  Corrección (¿Hace lo que se le pide?)
 Factores que pueden ser medidos directamente  Fiabilidad (¿Lo hace de forma fiable todo el
 Factores que solo pueden ser medidos tiempo?)
indirectamente  Eficiencia (¿Qué recursos hardware y software
necesito?)
• Se centran en tres aspectos importantes de un
producto software (McCall, 1977):  Integridad (¿Puedo controlar su uso?)
 Facilidad de uso (¿Es fácil y cómodo de
 Operaciones del producto: Características
manejar?)
operativas
 Revisión del producto: Capacidad de soportar los
cambios
 Transición del producto: Adaptabilidad a nuevos
entornos
13 14

Factores que determinan la


Proceso de desarrollo software
calidad del software
• Capacidad para soportar cambios • Conjunto de actividades, métodos y prácticas
 Facilidad de mantenimiento (¿Puedo localizar utilizados en la producción y evolución de
los fallos?) software.
 Flexibilidad (¿Puedo añadir nuevas opciones?) • Puede incluir
 Facilidad de prueba (¿Puedo probar todas las  Un modelo de ciclo de vida
opciones?) • Divide el desarrollo en fases y prescribe las actividades
que deben realizarse en cada fase
• Adaptabilidad a nuevos entornos
• Proporciona criterios para determinar cuándo cada fase
 Portabilidad (¿Podré usarlo en otra máquina?) de desarrollo ha terminado
 Reusabilidad (¿Podré utilizar alguna parte del • Define los deliverables/artefactos/productos de cada fase
software en otra aplicación?)  Consideración de herramientas y equipamiento
 Interoperabilidad (¿Podrá comunicarse con otras  Consideración de personal y de su organización
aplicaciones o sistemas informáticos?  Restricciones sobre las actividades, los artefactos, las
herramientas, el personal, etc.
15 16
¿Qué es un ciclo de vida de Ciclo de vida en Cascada
software? (Watefall life cycle)
• El periodo de tiempo que comienza cuando se concibe Análisis y
Definición de los Es el modelo clásico de
un software y concluye cuando el producto ya no está Requerimientos
disponible para su uso. ciclo de vida de software
(las etapas, y sus nombres,
Diseño de la
• El ciclo de vida del software típicamente incluye una fase Arquitectura del pueden variar).
de requisitos, una fase de diseño, una fase de pruebas, sistema
una fase de instalación y aceptación, una fase de
operación y mantenimiento, y, en ocasiones, una fase de Diseño Detallado
retirada.
• Un modelo de ciclo de vida es una abstracción particular Implementación
que representa un ciclo de vida de software. Un modelo
de ciclo de vida se denomina con frecuencia un ciclo de
Integración y
vida de desarrollo software (SDLC, siglas inglesas). Verificación

Instalación,
IEEE Standard Glossary of Soft. Eng. Terminology Operación y
17
Mantenimiento 18

Definiciones Ciclo de vida tipo «V» Instalación,


Operación y
Mantenimiento
• Requerimientos: “¿Qué hace el producto?”
Análisis y
 Expresado sin ambigüedad y de forma verificable Definición de los
Plan de pruebas Prueba de
de aceptación aceptación
• Arquitectura: “¿Cómo está hecho?” (descripto en el nivel de Requerimientos
abstracción más alto)
 Ej.: Diagrama de bloques; flujo de datos entre estos Diseño de la Plan de Prueba de
Arquitectura del pruebas de integración
• Diseño Detallado: “¿Cómo está hecho?” (descripto en un nivel sistema integración
de abstracción intermedio)
 Ej.: Especificación de las interfases; descripción detallada de la
Plan de
operación Diseño Detallado pruebas para Testeo de cada
cada unidad unidad (unit test)
• Implementación: “¿Cómo está hecho?” (descripto en nivel de
abstracción bajo) En cada etapa de
 Ej.: Código; esquemático; dibujo del circuito impreso Implementación de diseño se crea un
cada unidad plan de pruebas,
• Integración de módulos diseñados separadamente
que es el que guía la
 Ej.: Hardware y software En un modelo “V”, la verificación
se desglosa en etapas de nivel de etapa de validación
• Verificación: “¿Funciona como debe?” abstracción creciente. que le corresponde.
19 20
Ciclo de vida iterativo o Desarrollo Ágil (Agile) de
incremental Software
• En cada iteración se crea un “prototipo”, cuya • Paradigma sobre cómo conviene organizar la
complejidad crece con cada ciclo construcción de software
• Basado en un ciclo de desarrollo iterativo
• Comparado con Cascada y V, consigue  Builds frecuentes, con valor para el usuario, que
colabora activamente
• Flexibilidad ante cambios de • Focalizado en la adaptabilidad
requerimientos = más valor  Aceptar cambios en los requerimientos, incluso sobre
para el usuario. el final del proceso
• Corrección más temprana de  …y en las personas que integran el equipo
• Comunicación, auto-organización, motivación, trabajo
errores = menor costo.
en equipo
• Mejores métricas de progreso • Especialmente útil en equipos que no son muy grandes
del proyecto = más control • Las metodologías ágiles más populares son:
(ej., se puede modificar el  Scrum
plan en función del ritmo de  Programación Extrema (Extreme Programming o XP)
avance logrado) = menor
riesgo. 21 22

Desarrollo Ágil (Agile) de Programación orientada a


Software objetos
• Aparece a finales de los 60, pero es
a principios de los 80 cuando con el
lenguaje Smalltalk comienza un
interés claro hacia este paradigma
• La programación orientada a objetos
es el paradigma de programación y
análisis y diseño de aplicaciones
claramente dominante en la
actualidad
• Hoy prácticamente no se concibe un
lenguaje de programación sin
características de orientación a
23
objetos: Eiffel, C++, Java, C#, etc. 24
Programación orientada a Programación orientada a
objetos objetos
• Las ventajas del paradigma OO son múltiples: • El desarrollo siguiendo el enfoque orientado a objetos es
 Es intuitiva, describe un problema en términos similares a un proceso integral que incluye métodos específicos de
los que utiliza la mente humana análisis y diseño, notación gráfica (UML) y lenguajes de
 Permite construir soluciones más seguras y con un programación orientados a objetos
mantenimiento más sencillo
• Las soluciones obtenidas durante la fase de análisis y
 Fomenta la reutilización y el trabajo en equipo.
diseño no son específicas para ningún lenguaje de
Escalabilidad de las aplicaciones
programación orientado a objetos
• Las características principales del paradigma OO:
 Incorpora los conceptos de abstracción, ocultación de
información y encapsulación heredados de los tipos de
datos abstractos
 Incorpora mecanismos específicos y extremadamente
poderosos como son la herencia, el polimorfismo y la
ligadura dinámica
 Admite de manera muy natural en algunos lenguajes el
soporte de genericidad (patrones) y la definición de
operadores. 25 26

Referencias

• [Bauer 1972] F.L. Bauer. Software Engineering.


Information Processing 71., 1972
• [Fairley, 1985] R. Fairley. Software Engineering
Concepts. New York: McGraw-Hill, 1985.
• [McCall 1977] James McCall (Editor). Factors in
Software Quality. Technical Report, General
Electric, 1977.
• [Pressman 1998] R. S. Pressman. Ingeniería
del software. Un enfoque práctico. 4ª Edición.
McGrawHill (1998)

27

Você também pode gostar