Ingenieria de software (conceptos básicos)
-
Upload
yaskelly-yedra -
Category
Software
-
view
831 -
download
0
Transcript of Ingenieria de software (conceptos básicos)
-
Prof. Yaskelly Yedra I-2012
Unidad I. Conceptos Bsicos
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Ingeniera del SW: rea de la Ciencia de laComputacin, que ofrece Mtodos yTcnicas para DS, estudia el conjunto deactividades relacionadas con el ciclo dedesarrollo de SW, en particular se enfoca enSW de Calidad.
Que es la IS ?
-
Que es la IS ?
La aplicacin de un enfoque sistemtico,disciplinado y cuantificable del desarrollo,la operacin y el mantenimiento delsoftware; esto es, la aplicacin de laingeniera al software.IEEE Std 610-1990
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Requisitos Diseo Construccin Pruebas Mantenimiento Gestin de la Configuracin Gestin de la Ingeniera Soft. Procesos Herramientas y Mtodos Calidad
reas de conocimiento
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Metodologa orientado a objeto de desarrollo de software
Modelos, Mtodos, Tcnicas y Herramientas de desarrollo de software.
Sistemas de reescritura. Interacin Humano - Computador Patrones de diseo Programacin orientada a aspectos
Lneas de investigacin
-
Componentes y reutilizacin de software Construccin de compiladores Mtricas de IS Desarrollo de aplicaciones basadas en Internet Arquitectura de software Calidad de software Inteligencia artificial aplicada Ingeniera orientada a modelos
OtrasIngeniera orientada a aspectosIngeniera orientada a componentes
Lneas de investigacin
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Ingeniera de Computadores Ciencia de la Computacin Gestin Matemticas Gestin de Proyectos Gestin de la Calidad Ergonoma del Software Ingeniera de Sistemas Sistemas de Informacin
Disciplinas relacionadas
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Hardware: mainframes, cintas magnticas. Costos altos
Lenguajes: ensambladores, Fortran Primeros compiladores (segunda mitad) Interfaces: Bach.
-
Desarrollo de software = desarrollo de programas
Actividad individual Desarrollador = usuario Aplicaciones con distribucin reducida Resolver problemas cientficos y de ingeniera
...codificar y depurar...
-
Hardware: mainframes comerciales, almacenamiento en discos magnticos, minicomputadores. Costos altos
Programacin orientada a funcin Sistemas operativos multiprogramacin Lenguajes: Cobol, PL/I, Simula 67 Interfaces: Bach.
-
Actividad de grupo Desarrollo de software para mercadeo Resolver problemas complejos en diferentes
dominios, adems de cientficos y de ingeniera
Programacin orientada a funcin.
-
Hardware: mainframes, minicomputadores, microcomputadores, surgen los PC
Lenguajes: COBOL, PL/I, Pascal, Prolog Mtodos: programacin
estructurada,refinamiento paso a paso, semnticas formales
Computacin distribuida, Interfaces basadas en Lenguajes de Comando.
-
Desarrollo de la tecnologa Actividad de grupo Desarrollo de software para mercadeo Diversidad del dominio de aplicaciones Programacin orientada a mdulos Modelo de cascada .
-
19
Hardware: computadores personales, primeras estaciones de trabajo, redes locales
Lenguajes: C, Ada Paradigma de
programacin: programacin estructurada, modular, tipos de datos abstractos
Herramientas interactivas, interfaces grficas (GUI)
Hardware: Aumento considerable de la venta y uso de computadores personales, estaciones de trabajo, redes locales y globales, Internet, arquitecturas avanzadas
Lenguajes: C++, Standard ML Paradigma de
programacin: irrumpe la programacin OO
Computacin cliente-servidor
-
El usuario se incorpora al proceso de desarrollo de software
Relevancia de las interfaces de usuario Aumento exponencial del nmero y tipo de
usuarios Demanda creciente de aplicaciones Resolver problemas en todos los dominios Inicio de las aplicaciones basadas en la
tecnologa Internet .
-
Hardware: masificacin del uso de los computadores personales, arquitecturas paralelas, multimedia
Redes de computadoras (LAN, WAN..) Lenguajes: Orientados a objetos, paralelos,
visuales, de scripting (Java, VisualC++, HTML,..) Paradigma de programacin: OO, patrones y
framework Crecimiento de Internet y el Web .
-
Los productos se insertan en la globalizacin El ciberespacio introduce nuevos tipos de
aplicaciones: comercio electrnico, educacin a distancia,...
Ambientes colaborativos El Web como infraestructura de las
aplicaciones corporativas (Intranets) .
-
Hardware: dispositivos moviles, computacin ubicua
Redes de computadoras (inalambricas..) Paradigma de programacin: modelos
basados en componentes Crecimiento de Internet y la Web .
-
Programacin orientada a aspectos Ingenieria orientada a modelos Arquitecturas orientadas a modelos
-
un poco de historia primeras dcadas:
desarrollar el hardware reducir costes de procesamiento y almacenamiento
dcada de los ochenta: desarrollo de la microelectrnica mayor potencia de clculo y reduccin de costes
objetivo actual: mejorar la calidad de las soluciones software.
Orientacinpor lotes Distribucinlimitada Software a medida
Multiusuario Tiempo real Bases de datos Software como producto Mayores gastos de mantenimiento
Sistemas distribuidos Inteligencia Artificial Hardware de bajocoste Impacto en el consumo Redes area localy global Gran demanda
Potentes sistemasde sobremesa Tecnologa de objetos Sistemas expertos Redes neuronales Cliente/servidor Tecnologas deInternet.
1959 - 1965 1965 - 1975 1975 - 1989 1989 -
AUMENTAN los problemas del desarrollo de software: Subexplotacin del potencial del hardware Incapacidad de atender a la demanda Incapacidad de mantener el software existente
Resumen
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Crecimiento de la demanda de nuevos productos
Incumplimiento en los tiempos de entrega de los productos de software
Incumplimiento de los presupuestos asignados a los proyectos
Falta de mtodos para la produccin de software complejo
Desde la dcada 70
-
Dificultad y altos costos para el mantenimiento del software existente
Carencia de buenas especificaciones de requisitos
Los requisitos no son estables El mercado cambia - constantemente. La tecnologa cambia Las metas de los usuarios cambian
Desde la dcada 70
-
CostosTiempo de desarrollo
Redes de ComputadoresTecnologas
Emergentes
Masificacin y variedad de losmicrocomputadores y accesorios Interfaces de usuario.
Software libre
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Los principios forman la base de mtodos, tcnicas, metodologas y herramientas
Seis principios que pueden ser usados en todas las fases del desarrollo de software
Modularidad es el principio clave quesoporta el diseo del software
-
Principles
Methodologies
principios
mtodos y tcnicas
metodologas
herramientas
herramientas
metodologas
y tcnicas
mtodos
principios
Methodologies
Principles
-
1. Rigor y formalidad2. Abstraccin3. Modularidad4. Anticipacin al cambio5. Generalidad6. Incrementalidad.
Principios aplica al proceso y al producto
GHEZZI, C., JAZAYERI, M., MANDRIOLI, D. "Fundamentals of Software Engineering". Prentice-Hall International Editions. 2da ed. Nov. 2002
-
Significa ...seguir procesos sistemticos y verificables en el proceso de desarrollo de software
IMPLICACIONES:
La formalidad es la base de automatizacin de procesos
Principio esencial para obtener productos reusables
-
Producto Analisis matemtico de correctitud de
programas Test sistemtico y rigurosoProceso Rigurosa documentacin ayuda a la gestin
del proyecto y asegura los tiempos de respuesta
-
Significa...Aplicar un proceso mental o intelectual que permite identificar lo relevante e ignorar los detalles
IMPLICACIONES: percepcin del qu/ cmo (la separacin de
intereses ) percepcin del todo/ partes (modularidad)
-
Cuando los requisitos son analizados se produce un modelo de la aplicacionpropuesta
El modelo puede ser una descripcinformal o informal
Es posible razonar acerca del sistemarazonando acerca del modelo
-
En procesos Cuando realizamos estimacin de costos
solo tomamos en cuenta algunos factores
En producto Los tipos de datos abstractos
-
Un sistema complejo puede ser dividido en piezas ms simples llamadas mdulos
Un sistema que est conformado pormdulos se dice que es modular
-
permite: descomponer en partes un sistema complejo
(descomposicin) componer el sistema a partir de sus partes
(composicin)
Comprender el sistema y las partes (comprensin)
-
Problema
Subprob. 4Subprob. 2Subprob. 1 Subprob. 3
solucin. 4solucin. 2Solucin. 1 solucin. 3
Solucin
-
Significa:La capacidad de prever cmo y dnde pueden ocurrir los cambios
La aplicacin de este principio es altamente apreciado en la etapa de mantenimiento
Es un principio relevante para el desarrollo de componentes reusables
-
Habilidad para soportar la evolucin del software requiere anticipar posiblescambios
Es la base para el software evolutivo
-
Significa:buscar la solucin ms amplia (que englobe los casos especficos)
Busca la solucin ms amplia para problemas especficos
La solucin general puede ser menos eficiente o ms costosa
Principio importante para desarrollar productos reusables.
-
Significa:Construccin del producto por aproximaciones sucesivas y/o por componentes (partes)
Desarrollo de prototipos para los componentes crticos
til para desarrollo de aplicaciones no precisas, donde no estn bien definidos los requisitos.
-
Ejemplos
Liberar subconjuntos de un sistemamuy tempranamente para encontar el feedback del usuario, y luego agregarincrementalmente nuevascaractersticas
Liberar un primer prototipo e incrementalmente ir transformando el prototipo en el producto.
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Mediante un proceso .... Soportado por un mtodo riguroso,
sistemtico basado en principios reconocidos con actividades que se estructuren de
acuerdo a un modelo facilitado por el uso de herramientas.
-
El software es construido para cumplir ciertas funcionalidades y satisfacer ciertas cualidades
El proceso de construccin de software debe tambin cumplir ciertas cualidades.
Cualidades de software son a menudo referidas como requisitos no funcionales(en realidad es un subconjunto de este tipode requisitos).
-
Internas vs. externas Externas visibles al usuario Internas concernientes a los desarrolladores
Producto vs. procesos Nuestro objetivo es desarrollar productos de
software El proceso se refiere a como lo hacemos
Cualidades internas afectan las cualidadesexternas
La calidad del proceso afecta la calidad del producto.
-
Cules son las caractersticas que deseamos al elaborar un software?
-
Centro ISYS. Esc. Computacin. UCV/2005 53
Caractersticas de Calidad de software (Normas ISO 9126) :
-
Caractersticas (ISO 9126)
Subcaractersticas
Funcionalidad Adecuacidad (Suitability), exactitud/precisin ( Accurateness), Interoperabilidad, (Conformidad Compliance )Seguridad
Confiabilidad Madurez, Tolerancia a Falla, Recuperabilidad
Usabilidad comprensibilidad (Understandability ), aprendizaje (Learnability ), Operabilidad
Eficiencia Rendimiento en tiempo, rendimiento de Recurso.
Mantenibilidad Analizabilidad, Modificabilidad, Estabilidad, Testability (Prueba)
Portabilidad Adaptabilidad, Instalabilidad, Conformidad a estndares, Reemplazabilidad/Substituibilidad
-
Correcto
Confiable
Robusto
Se comporta acorde a su especificacin
Se comporta de acuerdo a lo esperado por el usuario
Se comporta razonablemente an en cirscunstancias no contempladas (tolerante a fallas).
-
construcciones correctas si ellas satisfacen las especificaciones
en un movimiento ssmico unas colapsan (no son robustas)
otras construcciones sufren pequeos daos tolerables o previsibles (son confiables).
-
Software es correcto si satisface lasespecificaciones de requisitos funcionales (asumiendo que las especificaciones ...)
Si las especificaciones son formales la correctitud puede ser probada
-
Informalmente, el usuario confa en el producto Si las especificaciones son correctas, todo
software correcto es confiable. Pero no a la inversa (en la practica, pueden haber especificaciones incorrectas....)
ISO 9127: Confiabilidad: se refiere a la capacidad de un SW de mantenerse operativo bajo las condiciones establecidas por un perodo de tiempo.
-
Productos (o componentes) son usados (probablemente, con pequeos cambios) para construir otros productos
Reuso de partes estandar miden la madurez de una ingeniera
Tambien aplica a procesos.
-
Reusable
Componentes reusables: Libreras cientficas Libreras para el desarrollo de
interfaces (MFC de Windows) Patrones Especificaciones Clases.
-
factor clave para determinar la madurez de cualquier industria
....la IS debe an evolucionar para alcanzar su madurez como una disciplina de ingeniera..
....en el futuro
las aplicacionessern construdas ensamblando componentes..
-
El software puede correr en diferentes plataformas de hardware o ambientes de software
se refiere a la habilidad del sw de ser transferido de un ambiente a otro.
Es una cualidad relevante cuando se introducen nuevas plataformas
Es tambien relevante, cuando el software se baja de ambientes de redes heterogneos.
-
Interoperable Puede coexistir y cooperar con otros sistemas
de software Las herramientas de ambientes integrados son
interoperables
-
Se mide mediante tcnicas clsicas:
complejidad de algoritmos evaluacin de la eficiencia
(monitoreo, simulacin,..).
Software Eficiente:Usa los recursos computacionales econmicamente (memoria, tiempo de .
. procesamiento, comunicacin..)
-
Usabilidad es una cualidad del software que tiene mltiples componentes y tradicionalmente es asociado con: Aprendizaje Eficiencia Memorizacin Baja rata de errores Satisfaccin
Qu es Usabilidad ?
ISO 9127 Usabilidad: se refiere al esfuerzo requerido por un conjunto de usuarios para el uso del sw
-
Usabilidad
Usable
La usabilidad de un producto de software est determinada por la satisfaccin del usuario al utilizar el producto
Fundamentalmente relacionada con las caractersticas de la interfaz de usuario
Diversas cualidades inciden en la usabilidad (eficiencia, confiablidad,...).
-
Mantenibilidad: facilidad de mantenimiento
Mantenimiento: cambios despues de la liberacin del producto
Los costos de mantenimiento exceden el 69% del costo total del software
-
Tipos de Mantenimiento
Correctivo(remocin de errores)
Adaptativo(cambios para adecuarlos a modificaciones de su ambiente)
Perfectivo(cambios para mejorar la calidad -satisfacer nuevos requisitos, aumentar la eficiencia, modificar funcionalidades, etc)
-
Facilidad de comprender el software Es una cualidad muy importante, para
realizar modificaciones de programa. Esta cualidad incide en la mantenibilidad
-
Al equipo de desarrollo le interesa que el software sea comprensible, portable, mantenible, verificable ...
Al usuario le interesa que el software sea fcil de usar, confiable, robusto...
-
Contenido1. Definicin de la Ingeniera de Software2. reas de conocimiento3. Lneas de investigacin en IS4. Disciplinas relacionadas5. Evolucin de la Ingeniera de Software6. Problemtica del desarrollo de software7. Principios en la IS8. Software de calidad9. Actividades en proceso de DS
-
Actividades en el proceso de desarrollo de software
Para desarrollar un producto de software se realizan diversas actividades que se estructuran y relacionan de acuerdo a un modelo y se desarrollan siguiendo un mtodo.
Los modelos encadenan las diversasactividades
-
se relacionan conformando :
se desarrollan aplicando :
El mtodo se fundamenta en:
El mtodo puede ser soportado por:
principio(s) - mtodo(s) - herramienta(s) - modelo(s)
un modelo
un mtodo
principios
herramientas
Actividades en el proceso de desarrollo de software
-
Acerca de las actividades
Utiliza y produce artefactos
Se relacionan e interactan de diferentes maneras conformando distintos procesos de desarrollo de software (modelos)
De acuerdo al modelo una actividad puede jugar un rol preponderante o incluso pudiera no existir.
-
Acerca de las actividades La ingeniera de requisitos es el proceso que
lleva a la especificacin del software
Los procesos de diseo e implementacin transforman la especificacin en un programa ejecutable
La validacin involucra chequear que el sistema cumple su especificacin y las expectativas del usuario
La evolucin concierne con la modificacin del sistema despus que est en uso
swebok
-
Actividades usuales
-
Relaciones entre las actividades
Actividades:Encadenamiento Rol
Granularidad
Modelo de desarrollo de
software
Anlisis de requisitos
Prototipaje
Especificacin
Implementacin
Mtodo 1 Mtodo nUn ejemplo
-
Actividades Modelos -Procesos
El modelo de desarrollo de software indica como se relacionan las actividades
Los procesos de desarrollo de software indican como se realizan las actividades para producir y evolucionar un sistema del software
-
Actividades Modelos - Procesos
Cmo encadenar las actividades del proceso de desarrollo de software?
Modelos (ciclo de vida)
Ej.: Modelo de la cascada, UP....
Cmo realizar las actividades del proceso de desarrollo de software?
Mtodos
Ej.: Orientado a objeto,
Cules principios se aplican en el proceso de desarrollo de software?
Ej.: Incrementable, iterativo,...
-
CONCEPTOS GENERALESCICLO DE VIDA: Conjunto de etapas que se han de llevar a cabo para crear, explotar y mantener un Sistema Informtico.
METODOS: Son las normativas que marcan las directrices que se han de seguir para llevar a cabo una tarea. Responde a la pregunta QU.
TECNICAS: Es un modo de representacin para la solucin de un problema concreto. Responde a la pregunta CMO.
METODOLOGIA: Es un conjunto coherente de mtodos y tcnicas que cubren ms de una etapa del ciclo de vida.
HERRAMIENTAS: Proporcionan un soporte automtico o semi-automtico para el proceso y para los mtodos.
INGENIERA DE SOFTWARENmero de diapositiva 2Nmero de diapositiva 3Nmero de diapositiva 4Nmero de diapositiva 5Nmero de diapositiva 6Nmero de diapositiva 7Nmero de diapositiva 8Nmero de diapositiva 9Nmero de diapositiva 10Nmero de diapositiva 11Nmero de diapositiva 12Contexto : dcada 50Evolucin de la IS (dcada 50)Contexto : dcada 60Evolucin de la IS (dcada 60) Contexto : dcada 70Evolucin de la IS (dcada 70) Evolucin: dcada de los 80primera mitad segunda mitadEvolucin de la IS (dcada 80)Contexto : dcada 90Evolucin de la IS (dcada 90)Contexto : nuevo milenioEvolucin de la IS (nuevo milenio)Nmero de diapositiva 25Nmero de diapositiva 26Problemtica del DSProblemtica del DSFactores que influyen en los cambios en ISNmero de diapositiva 30Principios en la ISUna representacin visualPrincipios en la ISPrincipios: Rigor y FormalidadEjemplos:Principios: AbstraccinAbstraccin produce modelosEjemplosPrincipios. ModularidadPrincipios: ModularidadDescomposicin- anlisis -Anticipacin al cambioAnticipacin al cambioGeneralidadIncrementalidadIncrementalidadNmero de diapositiva 47Cmo obtener software de calidad?Software de calidadSoftware de calidadClasificacin de cualidadesSoftware de calidadNmero de diapositiva 53Nmero de diapositiva 54Confiabilidad, correctitud y robustezConfiabilidad, correctitud y robustezCorrectitudConfiabilidadReusabilidadReusabilidadReusabilidad PortabilidadInteroperabilidadNmero de diapositiva 64UsabilidadNmero de diapositiva 66Mantenibilidad (Maintainability)Nmero de diapositiva 68Comprensibilidad (Understandability)Importancia de las cualidadesNmero de diapositiva 71Nmero de diapositiva 72Nmero de diapositiva 73Nmero de diapositiva 74Nmero de diapositiva 75Nmero de diapositiva 76Nmero de diapositiva 77Nmero de diapositiva 78Nmero de diapositiva 79Nmero de diapositiva 80