Академический Документы
Профессиональный Документы
Культура Документы
mx
Verano 2013
Objetivos de la materia
General: Que el alumno pueda ser capaz de proponer proyectos y productos de calidad mediante la aplicacin de los mtodos de la ingeniera de software. Especficos:
Que el alumno identifique las ventajas de aplicar metodologas de desarrollo de software. Que aplique ingeniera de requerimientos para obtener las especificaciones de un sistema. Que planifique formas de trabajo en equipo de desarrollo de software. Que gener documentacin bajo estndares de procesos de desarrollo y aplique herramientas de ltima generacin en el proceso de desarrollo de software.
Contenido:
1. 2. 3. 4. 5. 6. 7.
Introduccin a la ingeniera de software Gestin de proyectos Ingeniera de requerimientos Modelado del anlisis Diseo Codificacin Validacin y verificacin
Bibliografa
Ingeniera de Software. Sommerville, Ian. Pearson Educacin. 2. Ingeniera de Software, Un Enfoque Prctico. Pressman Roger S. Mc Graw Hill. 3. Ingeniera de Software. Fairley. Prentice Hall. IEEE Trans. on Software Engineering. 4. Sistemas de informacin gerencial. Laudon & Laudon. Pearson Educacin.
1.
Plataforma de trabajo
http://econtinua.cs.buap.mx/moodle/ Miscellaneous
Ingeniera de software- verano 2013- GuerreroGarca
contrasea: sommerville
Criterios de evaluacin
Criterio Quizzes Tareas y prcticas Participacin y asistencia Proyecto final TOTAL Porcentaje 30 20 15 35 100
Plan de trabajo
Inicio de curso: 27 de mayo Fin de curso: 17 de julio Horario: 9 a 11 am Entrega de proyecto final: 15, 16, 17 de julio No hay recuperacin de quizzes
Actividad 1
Selecciona un producto de programacin que hayas desarrollado en un curso anterior. Resuelve el siguiente cuestionario:
1. 2. 3. 4. 5.
Proporciona una lista de al menos tres requisitos establecidos por el profesor. Consideras que el producto que desarrollaste se apeg a los requisitos establecidos, porqu ? Cumpliste en tiempo y forma, con la fecha de entrega ? Justifica tu respuesta. El tiempo establecido de desarrollo fue suficiente.? Justifica tu respuesta. Indica al menos dos aspectos del proceso de desarrollo de tu proyecto que se podran mejorar.
1.1 Motivacin
El concepto ingeniera de software se propuso originalmente en 1968, en una conferencia realizada para discutir lo que entonces se llamaba la crisis del software.
SOLUCIN
SOLUCIN
Mitos de gestin
Los gestores con responsabilidad en el software, como los gestores en la mayora de las disciplinas, estn normalmente bajo la presin de cumplir los presupuestos, hacer que no se retrase el proyecto y mejorar la calidad. Un gestor de software se agarra frecuentemente a un mito del software, aunque tal creencia slo disminuya la presin temporal.
Mitos:
Por qu debemos cambiar nuestra forma de desarrollar software, si estamos haciendo el mismo tipo de programacin que hace 10 aos? Tenemos un libro que esta lleno de estndares y procedimientos para construir software! Nuestra gente tiene las mejores mquinas para el desarrollo! Si fallamos en la planificacin, aadimos ms programadores y adelantamos el tiempo perdido.
Mitos:
Una declaracin general de los objetivos es suficiente para comenzar a escribir los programas. Podemos dar los detalles ms adelante. Los requerimientos cambian continuamente, pero los cambios pueden acomodarse fcilmente ya que el software es flexible. Cmo afecta un cambio en las diferentes fases del desarrollo del software?
Mitos:
No hay mtodos para el anlisis, diseo y prueba que funcionen bien, simplemente me voy al terminal y comienzo a codificar. Una vez que hacemos que el programa funcione, nuestro trabajo ha terminado. Hasta que no est el programa terminado no puedo establecer su calidad. Lo nico que se entrega al terminar el proyecto es el programa funcionando. Una vez que el software se est usando, el mantenimiento es mnimo y puede manejarse sobre la base de hacerlo como se pueda.
1.2 Conceptos
Ingeniera de Software es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo operacin (funcionamiento) y mantenimiento del software: es decir, la aplicacin de ingeniera al software. [IEEE, 1993] La Ingeniera de Software es una disciplina de la ingeniera que comprende todos los aspectos de la produccin de software desde las etapas inciales de la especificacin del sistema hasta el mantenimiento de este despus que se utiliza. [Sommerville, 2004] La Ingeniera de Software es una disciplina que integra el proceso, los mtodos, y las herramientas para el desarrollo de software de computadora. [Pressman, 2005]
La ingeniera de software integra: mtodos, herramientas y procesos para el desarrollo del software bajo un enfoque de calidad.
El desarrollar software sin conocer tcnicas de ingeniera representa un enfoque artesanal de desarrollo que hoy en da sigue siendo comn. Los esfuerzos de profesionalizacin mencionados atrs (certificaciones de individuos y de empresas) buscan reducir
dividirse en actividades o fases que, en general, se ajustan al esquema mostrado en el grfico. Este esquema grfico es el ciclo de vida tpico, dado que existen gran cantidad de variantes que dependen de la organizacin, del tipo de sistema que se realizar, de los gustos de los administradores, de los tiempos, etc. Las actividades tpicas del ciclo de vida son: 1- Estudio de factibilidad. 2- Anlisis (de requerimientos). 3- Diseo 3.1- Creacin de prototipos 3.2- Implementacin 4- Validacin y prueba 5 - Operacin y mantenimiento
La Ingeniera de Software es el resultado de llevar la tradicional disciplina de las ingenieras al mundo de la construccin de sistemas de software. Es el estudio de los principios y metodologas para el desarrollo y mantenimiento de sistemas software.
Enfoque de calidad
La IS debe estar sustentada en un compromiso con la calidad (Gestin de Calidad Total, Sigma Seis, etc.) que fomente una cultura de mejora continua del proceso.
Procesos
Define un marco de trabajo que debe establecerse para la entrega efectiva, la gestin de proyectos, el contexto en el cual se aplican los mtodos tcnicos, se generan los productos del trabajo, se establecen los fundamentos, se asegura la calidad y el manejo adecuado de cambios
Mtodos:
Definen los cmo para construir el software desde el punto de vista tcnico.
Herramientas:
Tareas que componen los mtodos. Planificacin y estimacin de proyectos. Anlisis de requerimientos del software y hardware. Diseo de estructuras de datos, arquitectura de los programas. Procedimientos algortmicos. Codificacin. Pruebas y mantenimiento.
Algunas herramientas:
CASE (Ingeniera de software asistida por computadora) Microsoft Project (Planificacin). UML (Modelado). RationalRose, visio (Modelado soportan UML). Designer 2000. Erwin (Bases de datos). MAGERIT (Seguridad).
Fases Genricas de la IS
Definicin. Tareas que la componen:
Anlisis del sistema. Planificacin del Proyecto. Anlisis de requisitos. Diseo del software. Codificacin. Prueba del Software.
QU CMO TIPO
Las cuatro Ps de la IS
Algunos conceptos:
Qu es una metodologa ?. Una metodologa es aquella gua que se sigue a fin realizar las acciones propias de una investigacin. En trminos ms sencillos se trata de la gua que nos va indicando qu hacer y cmo actuar cuando se quiere obtener algn tipo de investigacin. Qu es un modelo?. Un modelo es una representacin de un objeto, sistema o idea, de forma diferente al de la entidad misma. El propsito de los modelos es ayudarnos a explicar, entender o mejorar un sistema. Un modelo de un objeto puede ser una rplica exacta de ste o una abstraccin de las propiedades dominantes del objeto. Qu es una herramienta?. Una herramienta es un objeto elaborado a fin de facilitar la realizacin de una tarea. A las aplicaciones que "ayudan en el trabajo a los humanos" se les considera herramientas de software.
Software empotrado. Reside en memoria de solo lectura y se utiliza para controlar productos y sistemas de los mercados industriales y de consumo. Software de computadoras personales. Incluye hojas de clculo, procesamiento de texto, entretenimientos, etc. Software basado en la Web. Las pginas Web buscadas por un explorador son software que incorpora instrucciones ejecutables y datos. Software de I.A. Hace uso de algoritmos no numricos para resolver problemas complejos para los que no son adecuados el clculo o el anlisis directo.
Actividades de proteccin
Modelos de procesos
El modelo de proceso o paradigma de la IS es la estrategia que comprenden mtodos, herramientas y procesos. El ingeniero de software debe seleccionar un modelo de proceso para ingeniera del software segn la naturaleza del proyecto y de la aplicacin, los mtodos, las herramientas a utilizar, y los controles y entregas que se requieren. Los diferentes paradigmas lo que intentan es ordenar las actividades en el desarrollo del software, de manera que no sean llevadas a cabo de manera catica.
1.Modelo en cascada
Ingeniera y anlisis del sistema. El software siempre forma parte de un contexto ms grande, que puede ir desde una empresa hasta un sistema. El trabajo comienza estableciendo requisitos de todos los elementos del sistema, y asignando al software algn subgrupo de estos requisitos. Anlisis de los requisitos del software. El proceso de reunin de requisitos se intensifica y se centra especialmente en el software. Dentro del proceso de anlisis es fundamental que a travs de una coleccin de requisitos funcionales y no funcionales, el desarrollador o desarrolladores del software comprendan completamente la naturaleza de los programas que deben construirse para desarrollar la aplicacin, la funcin requerida, comportamiento, rendimiento e interconexin.
Diseo. Es un proceso de muchos pasos pero que se clasifican dentro de uno mismo. En general, la actividad de diseo se refiere al establecimiento de las estructuras de datos, la arquitectura general del software, representaciones de interfaz y algoritmos. El proceso de diseo traduce requisitos en una representacin de software. Generacin de cdigo. Esta actividad consiste en traducir el diseo en una forma legible por la mquina. Pruebas. El proceso de pruebas se centra en los procesos lgicos internos del software, asegurando que todas las sentencias se han comprobado, y en los procesos externos funcionales, es decir, la realizacin de las pruebas para la deteccin de errores. Mantenimiento. El software indudablemente sufrir cambios, y habr que hacer algunas modificaciones a su funcionalidad. Es de suma importancia que el software de calidad pueda adaptarse con fines de acoplarse a los cambios de su entorno externo.
Un prototipo es una versin inicial de un sistema de software que se utiliza para demostrar los conceptos, probar las opciones de diseo y entender mejor el problema y su solucin. El prototipo es una aplicacin que funciona Los prototipos evolucionan a travs de un proceso iterativo.
Por qu se usa este Modelo? El cliente no puede especificar todos los requerimientos al principio. Existen dudas de alguna parte del sistema. Facilita un modelo al programador.
Ventajas: Modificacin del sistema en etapas tempranas de su desarrollo. El xito del uso del prototipo depende de qu tan pronto y con que frecuencia se reciba la retroalimentacin del usuario para hacer cambios y adecuarlos a las necesidades actuales. Permite al desarrollador darse cuenta de lo que requiere el cliente. Permite que el desarrollador se de cuenta como va avanzando en trabajo.
Desventajas: Administracin difcil: dicha dificultad radica en manejar el prototipo como un proyecto dentro del ciclo de desarrollo de sistemas sin perder de vista cul era su propsito. Adoptarlo como sistema final: los usuarios y profesionales de sistemas pueden considerar al prototipo como el sistema final cuando an es incompleto e inadecuado. El desarrollador y el cliente tienen poca comunicacin al principio del proceso. Surgen cambios imprevistos que retrasan el progreso del prototipo.
3. Modelo DRA
El Desarrollo Rpido de Aplicaciones (DRA) es un modelo de desarrollo de software lineal secuencial que enfatiza un ciclo de desarrollo extremadamente corto. Es una adaptacin a alta velocidad del modelo lineal secuencial, donde se puede aumentar la velocidad haciendo uso de componentes. Si se comprenden bien los requisitos y se limita el mbito del proyecto, el proceso DRA permite al equipo de desarrollo crear un sistema completamente funcional, dentro de periodos cortos de tiempo.
Modelado de gestin. El flujo de informacin entre las funciones de gestin se modela de forma que responda a las siguientes preguntas: qu informacin conduce el proceso de gestin?, qu informacin se genera?, quin la genera?, a dnde va la informacin?, quin la procesa? Modelado de datos. El flujo de informacin se refina como conjunto de objetos de datos necesarios para apoyar la empresa. Se definen las caractersticas de cada uno de los objetos y las relaciones entre estos objetos. Modelado del proceso. Los objetos de datos quedan transformados para lograr el flujo de informacin necesario para implementar una funcin de gestin. Las descripciones del proceso se crean para aadir, modificar, suprimir o recuperar un objeto de datos.
Generacin de aplicaciones. El proceso DRA trabaja para volver a utilizar componentes de programas ya existentes (cuando es posible) o a crear componentes reutilizables (cuando sea necesario). En todos los casos se utilizan herramientas para facilitar la construccin del software. Pruebas y entrega. Como el proceso DRA enfatiza la reutilizacin, ya se han comprobado muchos de los componentes de los programas. Esto reduce tiempo de pruebas. Sin embargo, se deben probar todos los componentes nuevos y se deben ejercitar todas las interfaces a fondo.
Modelos anteriores
Modelo Lineal Secuencia. Diseado para entregar un producto al final. Modelo de Construccin de Prototipos. Diseado para que los clientes interacten con los desarrolladores. Ninguno de los modelos anteriores se tiene en cuenta la naturaleza evolutiva del software. Las empresas son entes vivos que van evolucionando con el tiempo
Modelos evolutivos
Los modelos evolutivos se caracterizan porque permiten a los ingenieros del software, desarrollar de manera iterativa, nuevas versiones del software cada vez ms completas. Los modelos que componen este tipo son:
Modelo Incremental. Modelo en Espiral. Modelo en Espiral Victoria-Victoria (WINWIN). Modelo de Desarrollo Concurrente.
4. Modelo incremental
El modelo Incremental combina elementos del modelo lineal secuencial (aplicados repetidamente) con la filosofa interactiva de construccin de prototipos.
5. Modelo espiral
El Modelo en Espiral, propuesto originalmente por Boehm, es un modelo de proceso de software evolutivo que conjuga la naturaleza iterativa de construccin de prototipos con los aspectos controlados y sistemticos del modelo lineal secuencial. Ideal para realizar versiones incrementales de manera rpida. El software se desarrolla en una serie de versiones incrementales.
El modelo en espiral contiene 6 regiones de tareas: 1. Comunicacin con el cliente: las tareas requeridas para establecer comunicacin entre el desarrollador y el cliente. 2. Planificacin: las tareas requeridas para definir recursos, el tiempo y otra informacin relacionadas con el proyecto. 3. Anlisis de riesgos: las tareas requeridas para evaluar riesgos tcnicos y de gestin. 4. Ingeniera: las tareas requeridas para construir una o ms representaciones de la aplicacin. 5. Construccin y accin: las tareas requeridas para construir, probar, instalar y proporcionar soporte al usuario. 6. Evaluacin del cliente: las tareas requeridas para obtener la reaccin del cliente segn la evaluacin de las representaciones del software creadas durante la etapa de ingeniera e implementada durante la etapa de instalacin.
Desventajas: Puede resultar difcil convencer a grandes clientes de que el enfoque evolutivo es controlable. Requiere una considerable habilidad para la evaluacin del riesgo, y cuenta con esta habilidad para el xito. Si un riesgo importante no es descubierto y gestionado, indudablemente surgirn problemas.
El paradigma orientado a objetos enfatiza en la creacin de clases que encapsulan tanto los datos como los algoritmos que se utilizan para manejar los datos. Si se disean e implementan las clases correctamente, podran ser reutilizables por las diferentes aplicaciones y arquitecturas de sistemas basados en computadores.
El modelo de desarrollo basado en componentes incorpora muchas de las caractersticas del modelo en espiral. Es evolutivo por naturaleza y exige un enfoque iterativo para la creacin de software. Configura aplicaciones desde componentes preparados de software. El modelo basado en componentes conduce a la reutilizacin del software, proporcionando beneficios a los ingenieros de software.