Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Capítulo 1 - La ingeniería del software, Apuntes de Informática

Asignatura: Metodologia del software, Profesor: Tona Mozota, Carrera: Enginyeria tècnica en informàtica de sistemes, Universidad: URL

Tipo: Apuntes

Antes del 2010

Subido el 11/12/2008

beldar-3
beldar-3 🇪🇸

3 documentos

1 / 24

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Capítulo: 1 LA INGENIERÍA DEL SOFTWARE
1
Capítulo 1
La Ingeniería del Software
El contenido de este documento es sólo una tabla de contenidos con la relación de imágenes y
direcciones de internet vistas o recomendadas en el curso. Se recomienda estudiar los temas
directamente de las fuentes citadas en la bibiografía.
María Antonia Mozota
Departamento de Informática
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Vista previa parcial del texto

¡Descarga Capítulo 1 - La ingeniería del software y más Apuntes en PDF de Informática solo en Docsity!

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

Capítulo 1

La Ingeniería del Software

El contenido de este documento es sólo una tabla de contenidos con la relación de imágenes y direcciones de internet vistas o recomendadas en el curso. Se recomienda estudiar los temas directamente de las fuentes citadas en la bibiografía.

María Antonia Mozota

Departamento de Informática

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

La Ingeniería del Software

  • 1 LA INGENIERÍA DEL SOFTWARE Tabla de contenidos
    • 1.1 La ingeniería del software
      • 1.1.1 ¿Qué es software?
      • 1.1.2 ¿Qué es ingeniería de software?
      • 1.1.3 Proceso del software
    • 1.2 Modelos de procesos de software
      • 1.2.1 Modelo cascada
      • 1.2.2 Evolutivos
        • 1.2.2.1 Espiral
        • 1.2.2.2 Incremental
        • 1.2.2.3 Prototipados
      • 1.2.3 Modelos especializados
        • 1.2.3.1 Basado en componentes
        • 1.2.3.2 Modelo de métodos formales
      • 1.2.4 Comparación entre modelos
    • 1.3 Metodologías
      • 1.3.1 Definición
      • 1.3.2 Generaciones de metodologías (cronológicamente)
      • 1.3.3 Cronología
      • 1.3.4 Proceso unificado de Rational (RUP)
    • 1.4 Herramientas
      • 1.4.1 Definición de CASE
      • 1.4.2 Clasificaciones............................................................................................................
      • 1.4.3 Beneficios del uso CASE
      • 1.4.4 Algunos productos
  • Bibliografía

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

principal: interacción con el hardware

ƒ Software de Inteligencia Artificial. Algoritmo para la resolución de problemas complejos

1.1.2 ¿Qué es ingeniería de software?

[Sommerville6ed] 1.1.2 , pág. 6

Definición

Es una disciplina de la ingeniería que comprende todos los aspetos de la producción de software desde las etapas de la especificación del sistema hasta el mantenimiento posterior.

Disciplina de la ingeniería : Los ingenieros hacen que las cosas funcionen, aplicando teorías, métodos y herramientas a conveniencia. También tienen en cuenta restricciones financieras y organizacionales.

Todos los aspectos de la producción de software : No sólo se trata de procesos técnicos sino también se trata de actividades como gestionar proyectos, desarrollar herramientas, métodos y teorías de apoyo a la producción del software.

Los roles de los actores implicados en el software

Hay dos grupos de agentes implicados: ¾ Clientes y usuarios Cliente : Quien paga el proyecto de software Usuario : Quien finalmente usará el software creado ¾ Equipo de desarrollo Jefe de proyectos : Gestiona los recursos asignados a los proyectos, elige tecnológías y arquitecturas. Es quien suele hacer la primera reunión con el cliente. Analista : Recoge e interpreta los requerimientos, analiza el problema ( analista ) Diseñador: Diseña las soluciones ( diseñador ). A veces hay especialista en diseño de IU. Programador : Implementa (programa) los diseños siguiendo las directrices de los analistas Probador : Se encarga de verificar que el producto generado cumpla con las especificaciones recogidas. Documentador

Ingeniería del software vs Informática. El papel del ingeniero

La ciencia de la computación se refiere a las teorías y métodos subyacentes a las computadoras y los sistemas de software. Mientras que la ingeniería de software se refiere a los problemas prácticos de producir software.

Objetivos de la Ingeniería del Software [Sommerville6ed] 1.1.10 pág. 12

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

[Pressman] 1.2.1 pág. 34)

9 Calidad (producto que cumple objetivos) ƒ Mantenibilidad : Han de poder hacerse cambios según las necesidades del cliente , el entorno de los negocios actuales es cambiante. ƒ Confiabilidad : Fiable y seguro. No deben causar pérdidas económicas sus fallos ƒ Eficiencia : No malgastar recursos del sistema (memoria, procesador, ...) ƒ Usabilidad : Debe ser usable sin esfuerzos , interfaz adecuada y adecuada documentación 9 Bajo coste 9 A tiempo

Algunos datos: Del año 99 de IBM y otras fuentes: en el 55% de los proyectos es + del coste esperado en el 68% de los proyectos es + del tiempo esperado

1.1.3 Proceso del software

Un proceso del software es un conjunto de actividades y resultados asociados que producen un producto de software.

Estas actividades, a muy grandes rasgos, se repiten de diferente forma en la práctica totalidad de los procesos. Se aplicarán con diferente émfasis y profundidad, orientadas a diferentes perspectivas y repetidas un diferente número de veces ... pero básicamente encontraremos siempre las mismas actividades:

  • Comunicación : Iniciación + requerimientos
  • Planificación : Estimación de tiempo y recursos + Scheduling
  • Modelado : Análisis + Diseño
  • Construcción : Desarrollo + Pruebas + Documentación
  • Despliegue : Instalación + Adiestramiento/Formación
  • Mantenimiento : Errores no corregidos + Adaptación a cambios de entorno + Nuevas características

[ODorcherty] cap 5

Requerimientos

Requirements capture is about discovering what we’re going to achieve with our new piece of software and has two aspects. Business modeling involves understanding the context in which our software will operate – if we don’t understand the context, we have little chance of producing something to enhance that context. The sort of question we ask during the business modeling phase is ‘How does a customer purchase a television from this shop?’

System requirements modeling (or functional specification ) means deciding what capabilities the new software will have and writing down those capabilities. We need to be clear about what our software will do and what it won’t do, so that the development doesn’t veer

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

To understand why, consider buying a new house and spending vast amounts of time and money refurbishing it from top to bottom. It’s unlikely that you would want to whack the structures and fixtures with a sledgehammer to see if they’re durable, ask passing strangers whether they think that you have good taste or pretend to be a burglar to see if you can break in. These are exactly the kinds of things that we need to be doing during software testing. (It helps if members of the test team have a cruel streak.)

Despliegue

In the deployment phase, we’re concerned with getting the hardware and software to the end users, along with manuals and training materials. This may be a complex process, involving a gradual, planned transition from the old way of working to the new. The sort of task we carry out during the deployment phase is ‘Run the program setup.exe on each server machine fand follow the instructions that appear’.

Mantenimiento

When our system is deployed, it has only just been born. A long life stretches before it, during which it has to stand up to everyday use – this is where the real testing happens. The sort of problem we discover during the maintenance phase is ‘When the log-on window opens, it still contains the last password entered.’

As software developers, we’re normally interested in maintenance because of the faults (bugs) that are found in our software. We must find the faults and remove them as quickly as possible, rolling out fixed versions of the software to keep the end users happy. As well as faults, our users may discover deficiencies (things that the system should do but doesn’t) and extra requirements (things that would improve the system). From the business point of view, we would hope to .x and improve our software over time to maintain competitive advantage.

Otras actividades (fuera del alcance de la asignatura) 9 Seguimiento y control del proyecto : permite que se evalúe el proceso comparándolo con el plan original 9 Gestión del riesgo : evalúa los riesgos que pudieran afectar los resultados del proyecto o la calidad del mismo. Riesgos de proyecto (incremento de costes, personal,...), riesgos técnicos, riesgos del negocio (de gestión, de presupuesto, de estrategia, ...) 9 Aseguramiento de la calidad del sofware 9 Gestión de la configuración : control de versiones, ... 9 ...

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

1.2 Modelos de procesos de software

Modelo de procesos (ciclo de vida) de software : Es una descripción de un proceso del software que se presenta desde una perspectiva particular. Son simplificaciones, abstracciones de un proceso real. Incluyen actividades que son parte de los procesos y productos del software y el papel de la gente involucrada en la ingeniería del software. Se trata de algo teórico, abstracto.

No trataremos una clasificación exhaustiva de los modelos pues existen diferentes criterios para clasificarlos.

1.2.1 Modelo cascada

Cascada o “ Waterfall , publicado por primera vez por Winston Royce el 1970. Es el modelo de ciclo de vida clásico.

Motivación

ƒ Fue de los primeros en aparecer: Primera necesidad = disponer de un modelo ƒ Nace a partir del modelo secuencial lineal del desarrollo de hardware ƒ Hacía falta un modelo simple que fuera comprendido por los clientes, que presentara una visión muy clara de cómo se va a suceder la secuencia de actividades

Características

Separar el proceso en unas etapas básicas claramente definidas, cada una de las cuales debe completarse antes de comenzar la siguiente.

Etapas:

1 Comunicación Inicio del proyecto Recopilación de requisitos ƒ qué datos se manejarán, ƒ cuál es la función que el software desempeñará, ƒ cuáles son las interficies requeridas ƒ y qué rendimiento se espera obtener

Estos requisitos deben de documentarse y deben ser revisados por el cliente.

2 Planificación Estimación Itinerario Seguimiento

3 Modelado Análisis Diseño

Se traducen los requerimientos en una representación del software de manera que se pueda conocer la arquitectura, la funcionalidad y la calidad del mismo antes de comenzar la

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

1.2.2 Evolutivos

Se trata de desarrollar el software de forma que algunas de las actividades típicas se repitan en sucesivas iteraciones. Cada una de estas iteraciones tiene un producto resultante que cada vez más se acerca al producto requerido por el cliente.

Esto además permite obtener resultados antes del final del proceso.

1.2.2.1 Espiral

[Sommerville7ªEd.] 4.2.2 pág. 68

Modelo en espiral , propuesto por Boehm en 1988.

Motivación

Toma en consideración explícitamente el riesgo (a diferencia de los otros modelos). Esta es una actividad importante en la administración del proyecto. El estudio de la gestión de riesgos está fuera del alcance de esta asignatura.

Características

El ciclo de desarrollo se representa como una espiral, en lugar de una serie de actividades sucesivas con retrospectiva de una actividad a otra. Cada ciclo de la espiral representa una fase del proceso del software.

Fuente: [Sommerville 7ªEd.]

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

El ciclo de vida inicia con la definición de los objetivos. De acuerdo a las restricciones se determinan distintas alternativas. Se identifican los riesgos al sopesar los objetivos contra las alternativas. Se evalúan los riesgos con actividades como análisis detallado, simulación, prototipos, etc. Se desarrolla un poco el sistema. Se planifica la siguiente fase.

Cada ciclo de la espiral se divide en cuatro sectores:

  1. Definición de objetivos: Se definen los objetivos. Se definen las restricciones del proceso y del producto. Se realiza un diseño detallado del plan administrativo. Se identifican los riesgos y se elaboran estrategias alternativas dependiendo de estos.
  2. Evaluación y reducción de riesgos : Se realiza un análisis detallado de cada riesgo identificado. Pueden desarrollarse prototipos para disminuir el riesgo de requisitos dudosos. Se llevan a cabo los pasos para reducir los riesgos.
  3. Desarrollo y validación : Se escoge el modelo de desarrollo después de la evaluación del riesgo. El modelo que se utilizará (cascada, sistemas formales, evolutivo, etc.) depende del riesgo identificado para esa fase.
  4. Planificación : Se determina si continuar con otro ciclo. Se planifica la siguiente fase del proyecto.

Ventajas 9 Incluye el análisis de riesgos durante todo el proceso 9 Útil para proyectos grandes. 9 Permite usar el prototipado en todas las etapas de la evolución para reducir el riesgo. 9 El cliente “ve” evolucionar el proyecto 9 Mantiene el enfoque sistemático de los pasos sugeridos por el lineal secuencial, pero lo incorpora dentro de un marco iterativo más real. 9 El mantenimiento se trata al mismo nivel que el desarrollo (en una espiral mas)

Inconvenientes

9 Difícil de convencer a los clientes de que es controlable. 9 Requiere mucha habilidad para el análisis de riesgos y de esta habilidad depende su éxito. 9 No ha sido utilizado tanto como el lineal secuencial (cascada) o el de prototipos.

1.2.2.2 Incremental

[Sommerville6ed], 3.2. [Pressman5ed], 2.7.1 , pág. 23

Modelo incrementa l, formulado por primera vez por Mills el 1980.

Motivación

ƒ El modelo en cascada requiere el conocimiento completo de los requerimientos. ƒ Si se producen cambios durante el desarrollo hay que rehacer la captura de requerimientos, el diseño y la implementación. ƒ El cliente no tiene una idea de cómo será el sistema hasta que no esté acabado.

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

Desventajas 9 Los incrementos no pueden ser demasiado grandes (no més de 20.000 líneas de código) 9 Cada nuevo incremento debe ser integrado sin afectar a los previos 9 Diseño y desarrollo paralelos de los diferente módulos deben de ser coherentes entre sí 9 Proyecto poco controlable, por falta de visión como un todo 9 No hay especificación completa hasta el final y hay proyectos (gobierno) cuyas especificaciones deben de estar completamente en el contrato inicial

Una de las metodologías que actualmente está más de moda es “ Extreme Programming ” (Beck,

  1. , que utiliza una evolución del modelo incremental en el que las entregas tienen incrementos de funcionalidades muy pequeños.

1.2.2.3 Prototipados

[Pressman 6Ed] 3.4.1 pág. 83

[Bennet] 3.2.2 pág. 54

Motivación

El cliente puede tener una definición general del sistema pero no identificar todos los requisitos detalladamente. La construcción de prototipos se usa para la definición y refinamiento de requisitos.

En las aplicaciones que requieren mucha interacción con el usuario, la construcción de prototipos puede ayudar a que el cliente se haga una idea del sistema final ayudando a detectar deficiencias o errores en la especificación.

En las aplicaciones que requieren el uso de tecnologías o algoritmos o herramientas nuevas para el equipo, la construcción de prototipos ayuda a la formación del equipo, a la prueba de la eficiencia de los algoritmos, etc.

Características

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

fuente: ….

ƒ Recolectar junto al cliente los requisitos ƒ Se hace un diseño rápido. El diseño se focaliza en lo que “ve” el cliente (normalmente interfaz y salidas) ƒ Se construye/desarrolla rápido el prototipo ƒ Uso de herramientas especializadas ƒ Uso de fragmentos(componentes) ya existentes ƒ Uso de generadores de informes, gestores de ventanas (cualquier Visual …) ƒ Es evaluado por el cliente/usuario. El feedback se usa para refinar los requerimientos y construir un nuevo prototipo y así sucesivamente hasta que los requisitos quedan totalmente especificados ƒ Se desarrolla el producto final

El prototipo obtenido puede ser usado como “the first system” pero no necesariamente. De hecho podría haberse construido con una herramienta (lenguaje) diferente a la que se usará para el desarrollo real. Los prototipos construidos pueden ser: descartables o evolutivos/reaprovechables.

Descartable:

  • Usado para refinar los requisitos del sistema.
  • No tiene porque incluir todos los requisitos (sólo aquellos que no se comprenden/conocen bien).
  • Tiene un período de vida corto y no necesitan mantenimiento ya que se descartan.
  • No importa la calidad y eficiencia.

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

1.2.4 Comparación entre modelos

Fuente: www.dsic.upv.es/asignaturas/facultad/lsi/doc/IntroduccionProcesoSW.doc

1.3 Metodologías

1.3.1 Definición

Metodología ( [Bennet] y otros ) = una estrategia para el desarrollo de software (por ejemplo, la orientación a objetos)

un modelo de proceso (por ejemplo espiral incremental)

un conjunto de técnicas y notaciones (por ejemplo UML)

guías para la gestión/dirección del proyecto

políticas y procedimientos para garantizar la calidad del software

un conjunto de métricas

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

herramientas

…….

1.3.2 Generaciones de metodologías (cronológicamente)

ƒ Metodologías basadas en desarrollo estructurado

Análisis y diseño estructurado, programación estructurada, uso de diagramas de flujo orientado a funcionalidades

Los métodos estructurados comenzaron a desarrollarse a fines de los 70’s con la Programación Estructurada, luego a mediados de los 70’s aparecieron técnicas para el Diseño (por ejemplo: el diagrama de Estructura) primero y posteriormente para el Análisis (por ejemplo: Diagramas de Flujo de Datos). Estas metodologías son particularmente apropiadas en proyectos que utilizan para la implementación lenguajes de 3ra y 4ta generación.

Ejemplos de metodologías estructuradas de ámbito gubernamental: MERISE (Francia), MÉTRICA (España), SSADM (Reino Unido). Ejemplos de propuestas de métodos estructurados en el ámbito académico: Gane & Sarson, Ward & Mellor, Yourdon & DeMarco e Information Engineering.

ƒ Metodologías basadas en orientación a objetos

Análisis y diseño orientado a objetos, programación OO, modelo de objetos, modelo dinámico, modelo funcional

Su historia va unida a la evolución de los lenguajes de programación orientada a objeto, los más representativos: a fines de los 60’s SIMULA, a fines de los 70’s Smalltalk-80, la primera versión de C++ por Bjarne Stroustrup en 1981 y actualmente Java o C# de Microsoft. A fines de los 80’s comenzaron a consolidarse algunos métodos Orientadas a Objeto.

En 1995 Booch y Rumbaugh proponen el Método Unificado con la ambiciosa idea de conseguir una unificación de sus métodos y notaciones, que posteriormente se reorienta a un objetivo más modesto, para dar lugar al Unified Modeling Language (UML), la notación OO más popular en la actualidad.

Algunos métodos OO con notaciones predecesoras de UML son: OOAD (Booch), OOSE (Jacobson), Coad & Yourdon, Shaler & Mellor y OMT (Rumbaugh).

Algunas metodologías orientadas a objetos que utilizan la notación UML son: Rational Unified Process (RUP), OPEN, MÉTRICA (que también soporta la notación estructurada), …

ƒ Metodologías ágiles [Sommerville 7ªEd] 17.1 p

Basadas en los principios definidos por el Manifiesto of Agil Software Development (http://agileManifiesto.org) en 2001

El descontento con los enfoques “pesados” condujo en los años 90 a proponer nuevas metodologías

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

Por ejemplo, Andersen Consulting (ahora Accenture) usa METHOD-

1.3.4 Proceso unificado de Rational (RUP)

[IBM TP026B]

El RUP es un refinamiento detallado del proceso unificado definido por Jacobson, Booch y Rumbaugh (los tres amigos) en 1999. Proviene por lo tanto de:

o OMT o Booch o OOSE

Los orígenes de RUP se remontan al modelo espiral original de Barry Boehm. Ken Hartman, uno de los contribuidores claves de RUP colaboró con Boehm en la investigación. En 1995 Rational Software compró una compañia sueca llamada Objectory AB, fundada por Ivar Jacobson (OOSE), famoso por haber incorporado los casos de uso a los métodos de desarrollo orientados a objetos. El Rational Unified Process fue el resultado de una convergencia de Rational Approach y Objectory (el proceso de la empresa Objectory AB). El primer resultado de esta fusión fue el Rational Objectory Process, la primera versión de RUP, fue puesta en el mercado en 1998, siendo el arquitecto en jefe Philippe Kruchten.

Características principales:

9 Modelo iterativo e incremental

9 Uso de tecnologías de objetos ƒ Análisis y diseño orientado a objetos ƒ Programación orientada a objetos

9 Dirigido por casos de uso

9 Centrado en la arquitectura

9 Soporta al estándar del OMG: UML (Lenguaje Unificado de Modelado)

Los elementos del RUP son:

Actividades , Son los procesos que se llegan a determinar en cada iteración.

Trabajadores , Vienen a ser las personas o entes involucrados en cada proceso.

Artefactos , Un artefacto puede ser un documento, un modelo, o un elemento de modelo.

Una particularidad de esta metodología es que, en cada ciclo de iteración, se hace exigente el uso de artefactos, siendo por este motivo, una de las metodologías más importantes para alcanzar un grado de certificación en el desarrollo del software.

Capítulo: 1 LA INGENIERÍA DEL SOFTWARE

1.4 Herramientas

[Sommerville 7ed] (pag 79 a 83) [Sommerville 6ed] (pag 63 a 69)

1.4.1 Definición de CASE

La tecnología CASE (Computer-aided Software Engineering/Ingeniería del Software asistida por Ordenador) proporciona ayuda al proceso del software automatizando algunas de sus actividades, así como porporcionando información acerca del software en desarrollo.

Algunos ejemplos de la actividades que pueden automatizarse son:

  1. El desarrollo de modelos gráficos como parte de la especificación de requerimientos o del diseño de software.
  2. La generación de interfaces de usuario a partir de la descripción gráfica de la interfaz que es elaborada de forma interactiva por el usuario
  3. La depuración de programas por medio de la provisión de la información proporcionada por los programas en ejecución
  4. ...

1.4.2 Clasificaciones

Clasificación funcional

Fuente: [Sommerville 7ªEd.]