Está en la página 1de 82

Ingeniera de Software

Cdigo de Curso: CY440 Versin: 4.2

Descripcin del Curso


El propsito de este curso es proporcionar al estudiante

una visin general sobre los diferentes conceptos relacionados al diseo y desarrollo de software.
El alcance del curso es proporcionar una comprensin

bsica de los conceptos relacionados a la ingeniera de software y sus metodologas.

Audiencia
Estudiantes,

profesionales y desarrolladores que desean conocer acerca de los fundamentos de los principios de ingeniera de software y sus metodologas.

Pre-requisitos
Conocimientos de programacin Experiencia codificando aplicaciones usando uno o ms

lenguajes de programacin.

Objetivos del Curso


Definir qu es la ingeniera de software y explicar su importancia Presentar los diferentes modelos de proceso de software Definir el concepto de requerimientos del software

Enumerar las requerimientos

actividades

de

anlisis

de

Describir las funciones y componentes de una SRS Definir las diferentes actividades para llevar a cabo el anlisis de riesgo

Objetivos del Curso2


Discutir el planeamiento y cronograma de un proyecto de software Describir los trminos de control de calidad aseguramiento de calidad, en el contexto del software Presentar los diferentes niveles de prueba Explicar los mtodos involucrados en el proceso de prueba unitaria Establecer los enfoques involucrados en la prueba de integracin Presentar los deferentes componentes de la prueba del sistema y

Resumen
Se present un una visin global de los objetivos del

curso y la agenda
Empecemos

Volumen 1: Fundamentos de Anlisis y Diseo

Unidad 1: Fundamentos de Ingeniera de Software

Objetivos de Aprendizaje
Explicar el software como un producto y proceso Definir la ingeniera de software y explicar su importancia Discutir las ventajas y desventajas de diversos modelos de proceso de software Discutir acerca de los Modelos Evolutivos y Secuenciales

Introduccin
La ingeniera de software provee metodologas y tcnicas que ayudan a desarrollar sistemas de software a tiempo La ingeniera de software asegura que el desarrollador cumpla con las expectativas de calidad y presupuesto Las metodologas de la ingeniera de software fomentan un enfoque sistemtico a lo largo del ciclo de vida del software

Caractersticas del Software


Utilizable

Confiable

Portable

Robusto

Caractersticas del Software

Evolutivo

Reutilizable
Eficiente

Mantenible

Tipos de Aplicaciones de Software


Sistema

Tiempo Real

Incorporadas

Tipos de Aplicaciones de Software

Negocio

Ingeniera y Cientficas

Computadoras Personales e Individuales

Proceso de Software
El conjunto de tareas, que tienen que ser realizadas para generar un producto de software de alta calidad.

Es el proceso que se sigue para construir el producto de software desde la concepcin de una idea, hasta la entrega y el retiro final del sistema.

PROCESO
ACTIVIDAD 1 ACTIVIDAD n

TAREA 1

TAREA X

TAREA 1

Caractersticas del Proceso de Software


Comprensin Facilidad de Soporte Facilidad de Adaptacin

Visibilidad

Caractersticas del Proceso de Software

Confiabilidad

Facilidad de Aceptacin

Facilidad de Verificacin

Robustez Facilidad de Mantenimiento

Rapidez

Fases del Proceso de Desarrollo de Software


Fase de Definicin:
- Ingeniera de informacin - Planeamiento del proyecto de Software - Anlisis de requerimientos

Fase de Desarrollo:
- Diseo de Software - Codificacin - Prueba

Fase de Mantenimiento

Categoras de Modelos de Procesos de Software


Modelo Secuencial Lineal
Modelo de Creacin de un Prototipo Modelo Evolutivo Modelo de Mtodos Formales Sistema Ensamblado de Componentes Reutilizables

Modelo Secuencial Lineal

Modelo de Cascada
Ingeniera de Sistema

Anlisis de Requerimientos

Diseo

Codificacin

Prueba

Mantenimiento

Modelo de Cascada
Ventajas:

Modelo Secuencial Lineal

Posibilita un orden mximo en el proceso de implementacin


Proporcin una plantilla estructurada para la ingeniera de software

Desventajas:
El cliente debe proporcionar todos los requerimientos de una sola vez Es difcil para los usuarios anticipar si el sistema final va a satisfacer sus requerimientos Cualquier cambio que se haga durante la implementacin puede causar confusin.

La versin de trabajo puede verse slo en una etapa posterior.

Modelo Secuencial Lineal

Modelo de Desarrollo Rpido de Aplicacin


Modelar el Negocio Uso de 4GT y componentes reutilizables

Equipo 1

Especificaciones Parciales

Diseo

Codificacin

Pruebas

Lanzamiento

Equipo 2

Especificaciones Parciales

Diseo

Codificacin

Pruebas

Lanzamiento

Equipo 3

Especificaciones Parciales

Diseo

Codificacin

Pruebas

Lanzamiento

Equipo 4

Especificaciones Parciales

Diseo

Codificacin

Pruebas

Lanzamiento

Perodo Corto de Tiempo

Modelo de Creacin de un Prototipo


Obtener Requerimientos

Diseo Rpido

Refinar Requerimientos

Prototipo

Evaluar Prototipo

Lanzamiento e Ingeniera

Modelo de Creacin de un Prototipo


Ventajas: Ocurre un desarrollo rpido sin detalles de la entrada y salida Los clientes pueden ver muy pronto la salida de alguna forma Hay la oportunidad de modificar los requerimientos tempranamente en el proceso de desarrollo Desventajas: El cliente puede tomar el prototipo como el producto final. Puede resultar que el proceso de desarrollo del producto tome mucho tiempo Los desarrolladores no estn seguros de qu hacer con el prototipo

Modelo Incremental
Estudio del Sistema y Anlisis de Requerimientos
Anlisis Parcial
Diseo Restringido Codificacin Pruebas

Modelos Evolutivos

Lanzamiento del 1er incremento

Retroalimentacin

Ingeniera de Sistemas e Informacin

Anlisis Incremental

Diseo Incremental

Codificacin

Pruebas

Lanzamiento del 2do incremento

Retroalimentacin

Anlisis Incremental

Diseo Incremental

Codificacin

Pruebas

Lanzamiento del 3er incremento

Retroalimentacin de todos los Usuarios Anlisis Incremental

Retroalimentacin del Incremento Anterior Diseo Incremental Codificacin Lanzamiento incremento final Fin del lanzamient o del producto Inicio del mantenimiento

Pruebas

Inicio del proyecto

Modelo Espiral
Planificacin del Proyecto Anlisis de Riesgo

Modelos Evolutivos

Comunicacin con el Cliente

Ingeniera del Software

Codificacin, Prueba y Lanzamiento Evaluacin y Retroalimentaci n del Cliente

Modelo Espiral
Ventajas:

Modelos Evolutivos

Las ltimas iteraciones tienen ms probabilidad de tener una versin final rpidamente Este modelo se puede usar an despus de que el software es entregado Usa el prototipo como un mecanismo de reduccin de riesgo

Desventajas:
Demanda una experiencia considerable de valoracin del riesgo por parte del cliente Los clientes son generalmente aprensivos de si el enfoque evolutivo puede ser controlado o no.

Modelo de Ensamblado de Componentes


Considerar el diseo e identificar los componentes que pueden ser reutilizados
Seleccionar los componentes requeridos de la librera o repositorio

Retocar los componentes seleccionados de ser necesario


Construir componentes adicionales para ayudar a realizar el diseo en la etapa de la iteracin Ensamblar los componentes para ayudar a la entrega del producto en la etapa de iteracin Adicionar los nuevos componentes creados en la librera o repositorio

Completar la iteracin actual del componente ensamblador

Tcnicas de Cuarta Generacin (4GTs)


Involucran las caractersticas del software en un alto nivel de abstraccin Diversas herramientas se utilizan para generar el cdigo fuente

Se denominan tambin 'generadores de aplicaciones


Existen varios entornos de desarrollo de software que soportan 4GT

Resumen
Se explic el software como un producto y un proceso
Se defini qu es la ingeniera de software y explicar su importancia

Se discutieron las ventajas y desventajas de los diversos modelos de procesamiento de software


Se presentaron los Modelos Evolutivos

Se discutieron las Tcnicas de Cuarta Generacin

Unidad 2:
Especificacin de los Requerimientos de Software

Objetivos de Aprendizaje
Discutir la naturaleza y la importancia de los requerimientos Definir los requerimientos de software y el trmino SRS Describir las actividades del anlisis de requerimientos

Describir el proceso del anlisis de requerimientos


Describir las funciones y componentes de una SRS Discutir los diferentes atributos de una SRS bien redactada

Requerimientos del Software


Requerimiento es una condicin o capacidad requerida por un usuario para resolver un problema o para alcanzar un objetivo
La fase de requerimientos inicia cuando:
- Un problema existe y quizs requiere una solucin basada en software - Hay un alcance para crear un software basado en una idea

Anlisis del Problema y Descripcin del Producto


El anlisis del problema busca una comprensin completa del problema y comprende:
- Tormenta de ideas - Dirigir entrevistas con los involucrados con el sistema - Obtener informacin de las personas familiarizadas con el entorno del sistema

La descripcin del producto, describe la conducta externa del software en un documento

Pasos de la Ingeniera de Requerimientos

Administracin de Requerimientos Validacin de Requerimientos

Modelado de Sistema
Especificacin de Requerimientos Negociacin de Requerimientos Refinamiento de Requerimientos Anlisis de Requerimientos Levantamiento de Requerimientos

Levantamiento de Requerimientos
Proceso de recibir un conjunto de requerimientos de:
- el cliente - el usuario - la gerencia

Las preguntas a responder en este proceso son:


Cules son los objetivos del sistema o producto? Qu debe ser alcanzado por el producto o sistema?

Cmo ayuda el sistema o producto en las necesidades del negocio?


Cmo se usar el sistema o producto en el da a da?

Problemas en el Levantamiento de Requerimientos


Lmites del Sistema Indefinidos

Problema de Alcance

Detalles Innecesarios

Mala apreciacin del entorno de trabajo

Problemas en el Levantamiento de Requerimientos

Problema de Volatilidad

Problema de Comprensin
Mala comunicacin Clientes Inseguros de sus Necesidades Pobre Dominio del Conocimiento Cambia en el Tiempo Nmero de Requerimientos Requerimientos Volatiles en s Mismos

Anlisis de Requerimientos
Los requerimientos se analizan para ser categorizados y organizados.

Como una gua se tienen preguntas tales como:


1. Cada requerimiento es consistente? 2. Existen suficientes detalles para cada uno de los requerimientos? 3. Hay un alcance bien definido que proporciona un lmite a cada requerimiento?

4. Est el conjunto de todos los requerimientos completo y libre de ambigedad?

Especificacin de Requerimientos
Una Especificacin de Requerimiento puede involucrar uno de los siguientes:
Documento escrito Modelo grfico Modelo formal (base matemtica) Casos de uso Prototipos

Modelado el Sistema
Modelar el sistema es un paso recomendado para lograr un buen entendimiento del sistema Para sistemas que estn siendo abordados por primera vez, se recomienda que sean modelados Modelar el sistema es un anlisis ms profundo del mismo

Validacin de Requerimientos

No-ambigedad

Consistencia

Aspectos que Aseguran la Validacin de Requerimientos


Correspondencia a ciertos estndares

Completitud

Administracin de Requerimientos
Trata de un conjunto de actividades conectadas con el control, identificacin y rastreo de requerimientos durante la implementacin Se ocupa de los cambios en los requerimientos

Se estudia tambin bajo el tpico de Administracin de la Configuracin

Aplicaciones del SRS


Una SRS (Especificacin de Requerimientos de Software) es un documento que contiene una descripcin completa de la conducta externa de un producto
La SRS la escribe la organizacin de desarrollo, su propsito es: Proporcionar medios de comunicacin entre clientes, usuarios, analistas y diseadores Constituir una base para las actividades de prueba y verificacin del sistema

Controlar la evolucin del sistema

Contenido de la SRS
Una SRS debe incluir una descripcin concisa, de la totalidad de la interfaz externa del sistema con su ambiente, incluyendo otros software, puertos de comunicacin , hardware y usuarios

Incluye dos tipos de requerimientos:


De comportamiento De no comportamiento

Atributos de un SRS de Alta Calidad


No Ambigua Verificable Correcta

Rastreable

Atributos de un SRS de Alta Calidad

Consistente

Integra Comentada
Facilidad de Modificacin

Comprensible

Resumen
Se discuti la requerimientos naturaleza e importancia de los

Se definieron los requerimientos de software y el trmino SRS


Se describieron las actividades para el anlisis de los requerimientos Se describi el proceso de anlisis de requerimientos Se describieron las funciones y componentes de una SRS Se explicaron los diferentes atributos de una SRS bien redactada

Unidad 4: Diseo de Software

Objetivos de Aprendizaje
Explicar brevemente el proceso de diseo
Explicar los enfoques top-down y bottom-up Discutir los principios y objetivos del diseo Discutir los conceptos de cohesin y acoplamiento

Introduccin
El diseo de software busca planear una solucin para un problema especificado en la SRS
Es el primer paso para avanzar del dominio del problema al dominio de la solucin Es la primera de tres actividades tcnicas en el proceso de ingeniera de software Comienza poco tiempo despus del anlisis y la especificacin de requerimientos

Resultados del Proceso de Diseo


Diseo de datos
Diseo arquitectnico

Diseo de interfaz
Diseo de componentes

Caractersticas de un Buen Diseo


El diseo debe implementar todos los requerimientos de la SRS

Para los desarrolladores y testers debe ser fcil entender el diseo


El diseo debe cubrir todos los aspectos de implementacin del software (funcional, comportamiento y flujo de datos)

Enfoques de Diseo Top-Down y Bottom-Up


Top Down (De arriba hacia abajo):
- Enfoque orientado en niveles, comienza con una descripcin de alto nivel - Refina su visin paso a paso

- El sistema se fragmenta en mdulos ms pequeos y de ms bajo nivel

Bottom Up (De abajo hacia arriba):


- Enfoque que identifica un conjunto bsico de mdulos y sus interrelaciones - El beneficio principal es permitir la evaluacin de sub-mdulos durante el desarrollo

Conceptos Bsicos de Diseo

Abstraccin

Refinamiento

Conceptos Bsicos de Diseo

Modularidad

Abstraccin
Es el proceso mediante el cual el diseador se concentra

slo en aquellos aspectos que son relevantes, e ignora los detalles irrelevantes
Los niveles ms altos de abstraccin esconden los

detalles que no son importantes en ese nivel


Los niveles ms bajo revelan mayores detalles En los niveles ms bajo de abstraccin, una solucin se

presenta de tal manera que puede ser implementada directamente

Refinamiento
Es bsicamente una forma de elaboracin El refinamiento ayuda al diseador a revelar detalles

de bajo nivel a medida que progresa su diseo de niveles simple a complejos

Modularidad
El software puede ser dividido en componentes

individuales llamados mdulos.


Dividir un programa en muchos mdulos diferentes lo

simplifica

Arquitectura del Software


Diferentes modelos para representar la arquitectura del software:
Modelos estructurales
Modelos de marcos de trabajo Modelos dinmicos Modelos de proceso Modelos funcionales

Diseo Modular
El diseo modular es una de las metodologas de diseo ms usadas La implementacin del diseo modular ayuda a:

Reducir la complejidad en el proceso de diseo

A ejecutar el cambio
Permitir una implementacin ms sencilla

Tipos de Mdulos
Mdulo secuencial

Modulo incremental
Mdulo paralelo

Independencia Funcional
Desarrollar mdulos con funciones singulares

Desarrollar mdulos que no tengan una tendencia hacia una interaccin extra con otros mdulos
En el software cada mdulo se debe ocupar de una sub-funcin especfica de requerimientos La interfaz de cada mdulo debe verse simple, desde otras partes del la estructura del programa

Cohesin
Es la propiedad por la cual las cosas que son similares

se mantienen juntas
Un mdulo se considera completamente cohesivo slo si realiza una nica funcin o tarea

Se debe aspirar un alto grado de cohesin


Bajos niveles de cohesin son contraproducentes para

propsitos de diseo

Acoplamiento
El acoplamiento es la medida de interconexin entre diferentes mdulos dentro de una estructura de software
Depende de:
- La complejidad de la interfaz entre dos mdulos diferentes - La manera en que se hace una referencia al mdulo - La manera en que los datos se pasan a travs de la interfaz

Resumen
Se explic el proceso de diseo en pocas palabras Se explicaron los enfoques top-down y bottom-up Se discutieron los principios y objetivos del diseo Se discutieron los conceptos cruciales de cohesin y acoplamiento

Unidad 5: Planeamiento del Software

Objetivos de Aprendizaje
Describir los diferentes pasos que tiene el planeamiento de un proyecto Discutir las diferentes actividades que abarca el anlisis de riesgos

Explicar la administracin del riesgo


Discutir el planeamiento y cronograma de un proyecto de software Describir el planeamiento organizacional

Introduccin
La administracin de un proyecto tiene tres fases:

Planeamiento Monitoreo y control

Anlisis de culminacin

El planeamiento del proyecto es la responsabilidad ms grande de la administracin del proyecto

Para desarrollar un plan para desarrollar software, los objetivos de un proyecto deben ser cumplidos exitosamente y eficientemente

Planeamiento de un Proyecto

Planeamiento Organizacional Reingeniera Decisiones de adquisicin Cronograma Anlisis de Riesgo Estimacin

Administracin del Riesgo

Anlisis del Riesgo

Identificacin del Riesgo

Administracin del Riesgo

Evaluacin del Riesgo

Proyeccin del Riesgo

Anlisis de Riesgo
Riesgo se refiere a las posibilidades que pudieran afectar el costo, la calidad o el cronograma de un desarrollo de software Factores como el mtodo de implementacin u operacin de un programa/aplicacin, el tipo de herramientas usadas, el nmero de personal involucrado, etc.

Identificacin del Riesgo


Los riesgos se agrupan generalmente bajo varias categoras como: Riesgos de proyecto Riesgos tcnicos Riesgos de negocio

Proyeccin del Riesgo


Medir la probabilidad de ocurrencia del riesgo
Listar el conjunto de problemas que se necesita manejar si el riesgo ocurre

Hacer un estimado del impacto del riesgo en el proyecto en cuestin


Evaluar el nivel de confiabilidad con el cual se ha proyectado el riesgo

Evaluacin del Riesgo


Definir niveles de referencia de riesgo para un proyecto Construir una relacin entre los factores individuales, versus riesgo, probabilidad de riesgo, e impacto de riesgo y niveles de referencia individuales Tener un conjunto de puntos de quiebre que definir la regin de culminacin Entender la manera en la que las combinaciones de riesgos afectarn un nivel de referencia

Administracin y Monitoreo de Riesgos

Identificacin del Riesgo

Anlisis del Riesgo

Planificacin del Riesgo

Monitoreo del Riesgo

Lista de Riesgos potenciales

Lista de Riesgos con prioridades

Plan de contingencia y prevencin del Riesgo

Evaluacin del Riesgo

Cronograma del Proyecto de Software


El cronograma de un proyecto de software puede hacerse de dos maneras
La fecha lmite para la publicacin del producto / programa ya

ha sido fijada y la compaa desarrolladora tiene que distribuir

el esfuerzo en un espacio de tiempo especfico


Los perodos de tiempo aproximado han sido dados, pero la

compaa desarrolladora fija la fecha de finalizacin

La certeza en el cronograma algunas veces juega un rol ms


importante que la certeza en los costos

Relacin Trabajo-Personas
A medida que el tamao del proyecto se incrementa, ms se necesitar ms personas para alcanzar el resultado final en un periodo de tiempo dado Si el proyecto esta retrasado, incrementar el nmero de programadores seguramente acelerar el proceso Incrementar en el nmero de desarrolladores tambin incrementar los canales de comunicacin dentro del sistema, y por lo tanto incrementa la complejidad de los procesos de comunicacin

Paralelismo y Definicin de Tareas


Los proyectos de desarrollo de software son usualmente tomados en paralelo cuando ms de una persona est involucrada en el proceso de desarrollo La base para tareas paralelas es el especificacin y la revisin resultante requerimientos anlisis, de los

Una vez que los requerimientos han sido identificados y revisados, las actividades de diseo y planeamiento de pruebas se llevan en paralelo

Distribucin de Esfuerzo
El esfuerzo de distribucin de un proyecto est dirigido slo por las caractersticas de ese proyecto particular Generalmente el anlisis de requerimiento constituye slo un 10 a 25 % del esfuerzo del proyecto El esfuerzo del planeamiento del proyecto es usualmente slo 2 a 3 % del total de esfuerzo del proyecto El esfuerzo gastado en prototipo o anlisis usualmente se incrementa en proporcin directa al tamao y complejidad del proyecto

Diferentes Modelos para Cronogramas


Los dos mtodos ms comnmente usados para los cronogramas de desarrollo de software son:
Evaluacin Mtodo

del Programa y Tcnica de Revisin (PERT)

de la Ruta Crtica (CPM)

Decisiones de Adquisicin
El software puede ser comprado o licenciado El software puede ser comprado y luego personalizado a las necesidades El software puede ser tambin hecho a la medida dando el desarrollo a un contratista externo

Re-ingeniera
Ciertas aplicaciones de software pueden haber sido desarrolladas con un diseo en particular Las diferentes adiciones y actividades de mantenimiento podran haber afectado el diseo original

Tales aplicaciones son difciles y costosas de mantener


Es posible redisear tal sistema de software y desarrollarlo de nuevo

Plan del proyecto del software


Estimacin del costo Cronogramas e hitos Plan del personal Aseguramiento de la calidad de software

Plan de la administracin de configuracin


Plan de monitoreo del proyecto Administracin del riesgo

Administracin de Configuracin
Documentar las caractersticas funcionales y fsicas de los elementos de configuracin

Controlar los cambios y documentacin relacionada

Guardar y reportar la informacin requerida para la administracin efectiva de elementos de configuracin

Auditar elementos para verificar la conformidad con las especificaciones, diagramas, documentos de control de interfaces y requerimientos contractuales

Elementos de la Administracin de la Configuracin

Identificacin

Control

Administracin de Configuracin

Ahorro de Costos

Verificacin

Ventajas de la Administracin de la Configuracin


Implementar un buen proceso y sistema de SCM, usado correctamente ahorrar dinero
Muchas compaas adoptan prcticas de SCM porque desean poder controlar y dirigir el proceso complejo lo mejor que pueden Los gastos incluyen gastos en eliminar errores, rediseo, correcciones

Resumen
Se describieron los diferentes pasos que tiene el planeamiento de un proyecto

Se discuti acerca de las diferentes actividades que abarca el anlisis de riesgos


Se explic la administracin del riesgo

Se discuti acerca del planeamiento y cronograma de un proyecto de software


Se describi el planeamiento organizacional Se explic la administracin de la configuracin

También podría gustarte