sesion 1.pptx

48
Ingeniería de software M. C. Ana Luisa Ballinas Hernández Maestría en Administración de Tecnologías de la Información

Upload: ana-luisa-ballinas-hernandez

Post on 31-Aug-2015

219 views

Category:

Documents


4 download

TRANSCRIPT

Presentacin de PowerPoint

Ingeniera de softwareM. C. Ana Luisa Ballinas Hernndez

Maestra en Administracin de Tecnologas de la Informacin Agenda del daPresentacin de los participantes.Expectativas.Presentacin del programa.Acuerdos.

Exposicin terica y prctica del profesorPrcticas de los alumnos1/02/2014Ingeniera de Software Orientada a Objetos2PresentacinAna Luisa Ballinas Hernndez

Maestra y Licenciatura en Ciencias de la Computacin (Facultad de Ciencias de la Computacin, BUAP, Mxico)

Contacto: [email protected] del curso: isuvp.blogspot.mx

1/02/2014Ingeniera de Software Orientada a Objetos3Contenido del cursoObjetivo general: Aplicar la metodologa de anlisis y diseo de software en el marco del paradigma de la orientacin a objetos, elementos de ingeniera inversa, modelo cliente servidor, reutilizacin de software y desarrollo basado en componentes para definir las posibles soluciones a problemas concretos de las organizaciones.1/02/2014Ingeniera de Software Orientada a Objetos4Evaluacin Prcticas40%Proyectos50%Tareas 10% Total:100%1/02/2014Ingeniera de Software Orientada a Objetos5Bibliografa KIMMEL, Paul. Manual de UML. McGraw Hill Interamericana, Mxico, 2006.MARTIN, Rober C. UML para programadores Java. Prentice Hall, Espaa, 2004.PRESSMAN, Roger. Ingeniera del software. (5 Ed) McGraw Hill, Espaa, 2002.SCHACH, Stephen R. Anlisis y diseo orientado a objetos: con UML y el proceso unificado. McGraw Hill Interamericana, Mxico, 2005.SOMMERVILLE, Ian. Ingeniera del software. (8 Ed.) Pearson/Addison-Wesley, Espaa, 2005.1/02/2014Ingeniera de Software Orientada a Objetos6Forma de trabajoEl profesor expondr aspectos tericos y prcticos de la materia.

El profesor dejar lecturas en casa y debates en el aula

El alumno desarrollar un proyecto de ingeniera de software siguiendo la metodologa adecuada que sea de relevancia y novedoso1/02/2014Ingeniera de Software Orientada a Objetos7Presentacin del programaConceptos bsicos.El software como producto y mercanca.El proceso de desarrollo de software.Proyectos de software.Mtricas de proyectos.Planificacin y mantenimiento.Sistemas de software.Modelado, anlisis y diseo.

1/02/2014Ingeniera de Software Orientada a Objetos82. Anlisis y diseo orientado a objetosConceptos de OO.Identificacin de elementos en un modelo OO.Anlisis OO.Anlisis de dominio.Componentes genricos.El proceso de AOO.Diseo OO.El proceso de diseo del sistema OO.Patrones de diseo.Programacin OO.Pruebas AOO y DOO.Estrategias de prueba.Diseo de casos de prueba.Mtodos de prueba de clases e interclases.Mtricas OO.Desarrollo de un sistema OO.1/02/2014Ingeniera de Software Orientada a Objetos93. Desarrollo basado en componentes ISBC.Conceptos bsicos.Ingeniera del dominio.Desarrollo basado en componentes.Clasificacin y recuperacin de componentes.Costos de la ISBC.Desarrollo de un sistema basado en componentes.1/02/2014Ingeniera de Software Orientada a Objetos10Modelo cliente/servidor (C/S).El modelo CS y sistemas distribuidos.Arquitectura en capas.Protocolos.Comercio electrnico.Diseo de sistemas distribuidos.Ingeniera de seguridad.Componentes para sistemas CS.Diseo de sistemas CS.Pruebas en sistemas CS.Desarrollo de un sistema CS.5. Ingeniera sobre el Web1/02/2014Ingeniera de Software Orientada a Objetos11Atributos de aplicaciones basadas en Web.El proceso de ingeniera Web (IWeb).Formulacin y anlisis de sistemas basados en Web.Diseo de aplicaciones basadas en Web.Gestin de proyectos y sistemas Web.Desarrollo de un sistema Web.ReingenieraReingeniera de procesos.Reingeniera de software.Ingeniera inversa.Reestructuracin.Ingeniera directa.1/02/2014Ingeniera de Software Orientada a Objetos12Preguntas generadoras Por qu es tan difcil desarrollar software? Qu problema tengo que resolver? Qu hace el sistema? Cmo lo hace el sistema? El sistema hace lo que tiene que hacer?1/02/2014Ingeniera de Software Orientada a Objetos13El producto software (EOG tema2)14Definicin de software.Conjunto de informacin:capaz de producir en las maquinas el comportamiento deseado, de forma eficaz y eficiente, que los usuarios puedan utilizar el sistema de forma eficiente.Al que los desarrolladores puedan dar mantenimiento de forma eficaz y eficiente.

Evaluacin, Organizacin y Gestin de Proyectos.2. El producto software14Caractersticas del SoftwareEs inmaterial e invisible

El comprador lo puede evaluar cuando ya ha sido construido.

El Software se desarrolla, no se fabrica.

Es complejo.

Es excesivamente maleable.

Es un elemento lgico no fsicoEl software tiene varias caractersticas: es intangible, se evala hasta que est concluido, es complejo y maleable.Los sistemas actuales estn formados por miles de funciones con interfaces complejas entre ellas, por lo que su desarrollo es complejo.Todo el mundo exige que se realicen cambios sobre el Software como respuesta a pequeos cambios del entorno, por lo que es maleable.15El software como producto y mercancaEl valor del software: de elemento aadido a principal elemento de coste

El desarrollo del software:

La crisis del software: problemas que aparecen en el desarrollo del software al desarrollar, mantener y atender la demanda de nuevas aplicaciones:Por qu se tarda tanto? (y casi siempre ms de lo previsto)Por qu la productividad es tan baja?Por qu cuesta tanto el software?Por qu siempre quedan errores sin localizar?

Desde el punto de vista del desarrollador el software se puede ver como un producto de venta y desde el punto de vista del cliente se puede ver como mercanca de su empresa. Por lo tanto al desarrollar software debemos calcular su valor en costo monetario el cual est en funcin de los recursos materiales utilizar, del personal como analistas, arquitectos de software, programadores, testers, administradores de proyecto, entre otros y del nmero de horas que trabajaran en desarrollar el software. Sin embargo no todo es tan lineal, al desarrollar software siempre se van presentan factores que impiden que el software se desarrolle exitosamente, por ello decimos que existe una crisis del software y nos podemos plantear la siguiente problemtica. Por qu se tarda tanto? (y casi siempre ms de lo previsto)Por qu la productividad es tan baja?Por qu cuesta tanto el software?Por qu siempre quedan errores sin localizar?Una buena planeacin del proyecto de software puede ayudar a reducir esta problemtica.16Software vs Sistema1/02/2014Ingeniera de Software Orientada a Objetos17Conjunto de programas y procedimientos necesarios para hacer posible la realizacin de una tarea especfica, en contraste a los componentes fsicos del sistema.Un sistema de informacin es un conjunto de elementos que interactan entre s con el fin de apoyar las actividades de una empresa o negocio.

El producto software (EOG tema2)18Clasificacin segn la utilizacin del software:De Gestin.Produccin y control de procesos.Robtica.De ingeniera y Cientfico.Ofimtico.de Formacin y divulgacin.Domtico.Ocio y Juegos.Evaluacin, Organizacin y Gestin de Proyectos.2. El producto software18El producto software (EOG tema2)19La importancia del Software.Nuestra sociedad depende en gran medida de la informtica.

Ejemplos de sistemas son: el sistema para el control de semforos de una ciudad,medios de transporte areo, los bancos,los sistemas de produccin (fabricas), hospitales, etc.. Evaluacin, Organizacin y Gestin de Proyectos.2. El producto software19El producto software (EOG tema2)20RETO: Adems aun queda mucho por hacer. Empresas, de todo tipo, plantean nuevos problemas a ser resueltos.Problemas inabordables hace unos aos por el coste de las computadoras,

La ciencia sigue evolucionando, con lo que problemas mas sofisticados pueden ser abordadosEvaluacin, Organizacin y Gestin de Proyectos.2. El producto software20El producto software (EOG tema2)21Porque es difcil desarrollar Software?

Lo cierto es que muchos proyectos de desarrollo de software fracasan

Ejemplo:Una estadstica realizada sobre 8 proyectos de Software Estadounidenses.Caractersticas del Software.Aplicaciones del Software.Evaluacin, Organizacin y Gestin de Proyectos.2. El producto software21El producto software (EOG tema2)22Estadstica realizada sobre 8 proyectos de Software Estadounidenses.

Evaluacin, Organizacin y Gestin de Proyectos.2. El producto software22El producto software (EOG tema2)23TiempoIndice de fallosDefectos fabricacinEstropeadoObsolescenciaCurva de fallos del Hardware.Evaluacin, Organizacin y Gestin de Proyectos.2. El producto software23Segn PressmanEl producto software (EOG tema2)24Curva ideal de fallos del Software.TiempoIndice de fallosDefectos fabricacinMismo nivel hasta obsoletoObsolescenciaEvaluacin, Organizacin y Gestin de Proyectos.2. El producto software24El producto software (EOG tema2)25Curva real de fallos del Software.TiempoIndice de fallosDefectos fabricacinCurva idealCambioCambioCambioCurva realObsolescenciaEvaluacin, Organizacin y Gestin de Proyectos.2. El producto software25Ingeniera de softwareLa ingeniera del software es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable para el desarrollo, operacin y mantenimiento del software.

La Ingeniera de software representa la principal herramienta de trabajo de los desarrolladores de software. Consiste en una metodologa compuesta por un conjunto de etapas que se realizan para dar vida a una aplicacin de software. Cada etapa se integra por un conjunto de acciones encaminadas para obtener productos especficos, como: especificaciones, diagramas, formatos, cdigo, pruebas y documentos diversos.Si no se sigue una metodologa en el desarrollo de software, no se garantiza su xito y obtendramos resultados errneos siguiendo un proceso como: lo que pidi el usuario, lo que entendi el analista, lo que se desarroll y lo que al final se entreg.26Cmo se construye una casa?

Construida eficientemente y en un tiempo razonable por un equipo de trabajo.Requiere: Modelado Proceso bien definido Herramientas sofisticadasLo mismo para construir softwareConsideremos el ejemplo de construir una casa. La casa debe ser construida de forma eficiente y en un tiempo razonable incluyendo un modelado (los planos), un proceso bien definido (asignacin de tareas a realizar y asignacin de recursos humanos y materiales) as como las herramientas a utilizar para su construccin (maquinaria). 271/02/2014Ingeniera de Software Orientada a Objetos28

Modelo de la ingeniera de softwareLa Ing. SW se divide en: desarrollo de SW, gestin de proyectos, mtricas del SW y mantenimiento del SW. El desarrollo de software consiste en una serie de pasos a seguir de acuerdo a la seleccin de un modelo de ciclo de vida del desarrollo de software. La gestin de proyectos consiste en la planeacin y gestin de un proyecto de software que incluye las tareas detalladas que nos llevarn a la realizacin completa del proyecto, la estimacin del tiempo y de los costos del mismo. Las mtricas evalan la calidad del software final y el mantenimiento apoya la mejora constante del software a travs de sus etapas de correccin de errores y de modificaciones. A lo largo de esta presentacin se explicar a detalle cada parte del modelo de ingeniera.29Modelos del ciclo de vida del softwareEtapas generales del desarrollo de software:

Las etapas principales del desarrollo de software son: el anlisis, diseo, codificacin y pruebas. El anlisis de requisitos es un proceso de descubrimiento de las necesidades de software, de refinamiento de las tareas solicitadas, del modelado y de las especificaciones de requerimientos de software. Es decir, se obtienen las funcionalidades del software traduciendo las necesidades del usuario en trminos de software.El diseo consiste en obtener los componentes del sistema a nivel tcnico, en general describe elcmose construir una aplicacin de softwareLa implementacin es la programacin de un diseo en cdigo. Est relacionada a los lenguajes de programacin utilizados.En la ltima etapa se comprueba que el software realice correctamente las tareas indicadas en la especificacin del problema. Una tcnica es probar por separado cada mdulo del software, y luego probarlo de forma integral, para as llegar al objetivo

Existen varios modelos para el desarrollo de software y la eleccin de alguno de ellos depende de las necesidades de requerimiento y de la naturaleza propia de software a desarrollar. Entre los ms importantes se encuentran: el modelo en cascada, en V, iterativo, en espiral y el de ciclo de vida de prototipos.30Modelo en cascadaEs puramente secuencial.

El modelo en cascada es un proceso de desarrollo secuencial, en el que el desarrollo se ve fluyendo hacia abajo (como una cascada) sobre las fases que componen el ciclo de vida. Aunque ha sido muy criticado la industria, sigue siendo el paradigma ms seguido a da de hoy. 31Modelo en VLa parte izquierda de la v representa la descomposicin de los requisitos y la creacin de las especificaciones del sistema. El lado derecho de la v representa la integracin de partes y su verificacin. V significa Validacin y Verificacin.

Modelo en V El modelo en v se desarroll para terminar con algunos de los problemas que se vieron utilizando el enfoque de cascada tradicional. Los defectos estaban siendo encontrados demasiado tarde en el ciclo de vida, ya que las pruebas no se introducan hasta el final del proyecto. El modelo en v dice que las pruebas necesitan empezarse lo ms pronto posible en el ciclo de vida. 32Modelo iterativoConsiste en la iteracin de varios ciclos de vida en cascada.

Consiste en la iteracin de varios ciclos de vida en cascada. Este modelo se suele utilizar en proyectos en los que los requisitos no estn claros por parte del usuario, por lo que se hace necesaria la creacin de distintos prototipos para presentarlos y conseguir la conformidad del cliente. 33Modelo en espiralEl proceso empieza en la posicin central. Desde all se mueve en el sentido de las agujas del reloj.

Para cada ciclo habr cuatro actividades: 1. Determinar o fijar objetivos: Fijar los productos definidos a obtener: requerimientos, especificacin, manual de usuario as como las restricciones. Identificar riesgos del proyecto y estrategias para evitarlos. 2. Anlisis del riesgo: Estudiar todos los riesgos potenciales y se seleccionan una o varias alternativas propuestas para reducir o eliminar los riesgos 3. Desarrollar, verificar y validar (probar): Tareas de la actividad propia y de prueba. Anlisis de alternativas e identificacin de resolucin de riesgos. Dependiendo del resultado de la evaluacin de riesgos, se elige un modelo para el desarrollo, que puede ser cualquiera de los otros existentes, como formal, evolutivo, cascada, etc. As, por ejemplo, si los riesgos de la interfaz de usuario son dominantes, un modelo de desarrollo apropiado podra ser la construccin de prototipos evolutivos. 4. Planificar: Revisar todo lo que se ha llevado a cabo, evalundolo y decidiendo si se continua con las fases siguientes y planificando la prxima actividad. Se necesita tener suficiente experiencia y habilidad para detectar y catalogar correctamente riesgos. El proceso empieza en la posicin central. Desde all se mueve en el sentido de las agujas del reloj. 34Modelo ciclo de vida de prototiposLa iteracin ocurre cuando el prototipo se pone a punto para satisfacer las necesidades del cliente, permitiendo al mismo tiempo que el desarrollador comprenda mejor lo que se necesita hacer.

El paradigma de construccin de prototipos comienza con la recoleccin de requisitos. El desarrollador y el cliente encuentran y definen los objetivos globales para el software, identifican los requisitos conocidos y las reas del esquema en donde es obligatoria ms definicin. Entonces aparece un diseo rpido. 35Actividad 1.Recoleccin de datosActividad:Elabora un cuestionario para hacer una entrevista con un cliente.Revisar el PDF de planeacin de proyecto1/02/2014Ingeniera de Software Orientada a Objetos36Ver video sobre metodologas giles1/02/2014Ingeniera de Software Orientada a Objetos37Metodologas XP

1/02/2014Ingeniera de Software Orientada a Objetos38Scrum

1/02/2014Ingeniera de Software Orientada a Objetos39Planificacin de un proyecto de softwareHacer estimaciones considerando el mejor y peor caso.

La planeacin efectiva depende de:La planeacin detallada de su avance,La anticipacin de problemasLas soluciones anticipadas.

Uno de los primeros pasos que damos cuando nos enfrentamos a un nuevoproyectoes la fase de planificacin en la que dividimos el proyecto en fases y tareas a las que asignamos fechas lmite y, claro est, definamos las dependencias entre tareas.Debe haber un administrador del proyecto que es el responsable de la planeacin desde la definicin de requisitos hasta la entrega del sistema terminado.La planeacin efectiva de un proyecto de software depende de la planeacin detallada de su avance, anticipando problemas y preparando con anticipacin soluciones.

40Estimacin del proyectoEsfuerzo humanoRecursos materialesDuracinCostos

Cuando se planifica un proyecto de software ste tiene que obtener estimaciones de esfuerzo humano requerido, de la duracin cronolgica del proyecto y del costo. Pero en muchos de los casos las estimaciones se hacen valindose de la experiencia pasada como nica gua.

41Diagrama de Gantt

Analiza la siguiente presentacin sobre la planeacin de proyectos de softwarehttp://prezi.com/ubzodpdy5yth/?utm_campaign=share&utm_medium=copyEl diagrama de GanttEs una herramienta grfica que muestra el tiempo de dedicacin previsto para diferentes tareas o actividades a lo largo de un tiempo total determinado y las relaciones o dependencias entre tareas.42SmartSheetSitio oficial: www.smartsheet.com

Manual de Smartsheet: https://www.youtube.com/watch?v=JyWvYvNGgNI#t=136

SmartSheet es un servicio en la nube orientado a lagestin de proyectoscon el que podremos trabajar con los colaboradores que forman parte de nuestro equipo de proyecto para realizar el seguimiento de la ejecucin de ste, asignar recursos y, claro est, como paso previo definir la planificacin del proyecto. Analiza el video del manual de smartsheet ya que lo necesitars para la siguiente actividad.

43Anlisis de caso: HotelEl dueo de un hotel le pide a usted desarrollar un programa para consultar sobre las habitaciones disponibles y reservar habitaciones de su hotel.El hotel posee tres tipos de habitaciones: simple, doble y matrimonial, y dos tipos de clientes: habituales y espordicos. Una reservacin almacena datos del cliente, de la habitacin reservada, la fecha de comienzo y el nmero de das que ser ocupada la habitacin.El recepcionista del hotel debe poder hacer la siguientes operaciones:Obtener un listado de las habitaciones disponible de acuerdo a su tipoPreguntar por el precio de una habitacin de acuerdo a su tipoPreguntar por el descuento ofrecido a los clientes habitualesPreguntar por el precio total para un cliente dado, especificando su numero de ID, tipo de habitacin y nmero de noches.Reservar una habitacin especificando el nmero de la habitacin, id y nombre del cliente.Eliminar una reserva especificando el nmero de la habitacinEl administrador puede usar el programa para:Cambiar el precio de una habitacin de acuerdo a su tipoCambiar el valor del descuento ofrecido a los clientes habitualesCalcular las ganancias que tendrn en un mes especificado (considere que todos los meses tienen treinta das).El hotel posee informacin sobre cuales clientes son habituales. Esta estructura puede manejarla con un diccionario, cuya clave sea el nmero de ID y como significado tenga los datos personales del cliente.El diseo a desarrollar debe facilitar la extensibilidad de nuevos tipos de habitacin o clientes y a su vez permitir agregar nuevas consultas.Actividad 2: Actividad individualRealiza la planeacin del proyecto de caso anterior (el hotel) en SmartSheet.Elije la metodologa gil que mejor se adapte al problema en cuestin. Define la lista de tareas a realizar, los recursos a utilizar y calcula el tiempo total del proyecto. Incluye las tareas de la tabla de la diapositiva 28 y detallarlas ms.Adems debe incluir el diagrama de Gantt y la estimacin del tiempo del proyecto.Mtricas de proyectosAseguramiento y control de calidad

Modelos de abilidad

Modelos y evaluacin de ejecucin

Modelos y medidas de productividad

Las mtricas nos ayudan a entender tanto el proceso tcnico que se utiliza para desarrollar un producto, como el propio producto. El proceso para intentar mejorarlo y el producto para intentar aumentar su calidad.46Tipos de mtricasTipos de mtricasMTRICAS DEL SOFTWARE.Estn relacionadas con el desarrollo del software como funcionalidad, complejidad y eficiencia.MTRICAS TCNICAS: Se centran en las caractersticas de software por ejemplo: la complejidad lgica, el grado de modularidad. Mide la estructura del sistema, el cmo esta hecho.MTRICAS DE CALIDAD: Proporcionan una indicacin de cmo se ajusta el software a los requisitos implcitos y explcitos del cliente. Es decir cmo voy a medir para que mi sistema se adapte a los requisitos que me pide el cliente.MTRICAS DE PRODUCTIVIDAD. Se centran en el rendimiento del proceso de la ingeniera del software. Es decir que tan productivo va a ser el software que voy a disear.MTRICAS ORIENTADAS A LA PERSONA. Proporcionan medidas de informacin sobre la forma la gente que desarrolla el software de y sobre todo el punto de vista humano de la efectividad de las herramientas y mtodos.MTRICAS ORIENTADAS AL TAMAO. Sirve para saber en que tiempo voy a terminar el software y cuantas personas voy a necesitar. Son medidas directas al software y el proceso por el cual se desarrolla, si una organizacin de software mantiene registros sencillos, se puede crear una tabla de datos orientados al tamao.

47Tarea Analiza el siguiente video acerca de las mtricas del software y contesta el siguiente cuestionario.

Explica qu son las mtricas de softwareMenciona y describe 3 factores importantes a considerarse para evaluar un software de calidadEn qu consiste el modelo Mc Call?De la tabla de calidad-precio lista 2 factores que sean costosos y 2 que no lo sean en el aseguramiento de la calidad del software

Subir cuestionario contestado a Drive.