Fundamentos de la Ingeniería      de Software
¿Qué es la Ingeniería de Software? Una actividad de modelado.  Los ingenieros de software manejan la complejidad mediate el modelado enfocándose en los detalles importantes. Una actividad para la solución de problemas     Se usan modelos para buscar una solución aceptable. Con frecuencia los ingenieros de software tienen que apoyarse en métodos empíricos para evaluar  los  beneficios de alternativas diferentes.
Una actividad dirigida por la fundamentación    La información de la fundamentación permite que los ingenieros de software comprendan las implicaciones de un cambio cuando revisan una decisión. Para cada una de estas actividades los ingenieros de software tienen que trabajar bajo restricciones de personal tiempo y presupuesto. Los cambios pueden suceder en cualquier momento.
Fallas de la Ingeniería de Software En algunos casos los desarrolladores no anticipan situaciones que ocurren rara vez o no anticipan que el usuario haga mal uso del sistema. En otros casos las fallas del sistema resultan por fallas de administración(entrega tardía y con presupuesto excedido, entrega a tiempo de un sistema  incorrecto, complejidad innecesaria)
Los proyectos de desarrollo de software están sujetos a cambios constantes.  Los requerimientos son complejos y necesitan ser actualizados cuando se descubren errores.
Ingeniería de Software:    Conceptos Participantes Son quienes están involucrados en el desarrollo de un sistema de software. Desde el cliente, quien ordena y paga el sistema, los desarrolladores quienes lo construyen y el gerente del proyecto hasta los usuarios finales. Papel Conjunto de tareas que se asignan a un participante. Un mismo participante puede cumplir varios papeles.
Sistemas y modelos Sistema  se refiere a la realidad subyacente ,  modelo  es cualquier abstracción de la realidad. Productos de Trabajo Es un artefacto que se produce durante el desarrollo, como un documento o fragmento de software para los demás desarrolladores o para el cliente. Ejemplo: Un proyecto de desarrollo es un  sistema  que puede ser modelado. La candelarización del proyecto , su presupuesto y su tiempo de entrega son  modelos  del proyecto de desarrollo.
Actividades, tareas y recursos Una  actividad  son las tareas que se realizan con un fin específico, por ejemplo, la obtención de requerimientos. Una  tarea  representa una unidad atómica de trabajo que puede ser administrada. Las tareas dan como resultado productos de trabajo. Los  recursos  son bienes utilizados para realizar el trabajo. Los recursos incluyen tiempo, equipo y mano de obra.
Objetivos, requerimientos y restricciones Los  objetivos  definen los atributos del sistema que son importantes. Un  requerimiento funcional  es un área de funcionabilidad que debe soportar el sistema, un  requerimiento no funcional  es una  restricción  sobre la operación del sistema.
Notaciones, métodos y metodologías Una  notación  es un conjunto de reglas gráficas o textuales para representar un modelo. Un  método  es un  técnica repetible para la resolución de un problema específico. Una  metodología  es una colección de métodos para la resolución de una clase de problemas. Las metodologías de desarrollo de software decomponen el proceso en actividades: análisis, diseño del sistema y diseño del objeto.
Actividades de desarrollo de Ingeniería de Software   Obtención de requerimientos - El cliente y los desarrolladores definen el propósito del sistema. El resultado es describir el sistema en términos de actores y  casos de uso. - Los actores representan las entidades externas que interactúan con el sistema. Los casos de uso son secuencias de eventos generales que describen todas las acciones posibles entre el actor y el sistema
Análisis - Se produce un modelo del sistema que sea correcto, completo, consistente, claro, realista y verificable. - Los desarrolladores transforman los casos de uso en un modelo de objeto que describa por completo el sistema - De este modo se descubren las inconsistencias en el modelo de casos de uso. El resultado del análisis es un modelo de objeto comentado con atributos, operaciones y asociaciones.
Diseño del Sistema - Se definen los objetivos de diseño del proyecto y se descompone el sistema en subsistemas más pequeños que puedan realizar los equipos individuales. -  Se seleccionan estrategias para la construcción del sistema como la plataforma de hardware y software. El resultado del diseño es una descripción clara de cada una de las estrategias, una descomposición en subsistemas y un diagrama de organización que representa el mapeo del hardware y software del sistema.
Diseño de Objetos Se definen los objetos personalizados para cubrir el hueco entre el modelo de análisis y la plataforma de hardware y software definida durante el diseño del sistema. El resultado de la actividad de diseño de objetos es un modelo de objetos detallado, comentado con restricciones y descripciones precisas para cada elemento.
Implementación Se traduce el modelo de objetos en código fuente. Esto incluye la implementación de los atributos y métodos de cada objeto y la integración de todos los objetos de forma tal que funcionen como un solo sistema
Personal y sus Roles
Propietarios del Sistema - Son los responsables de fijar el presupuesto - Definir los plazos necesarios para el desarrollo - Decidir el tiempo de mantenimiento y último término de  validez del sistema.
Líder del Proyecto - Responsable de crear un plan para el Desarrollo de    Proyecto de Software. - Crear un cronograma de actividades para el proyecto - Calcular el costo de desarrollo del producto de software - Supervisar el avance del proyecto dentro de los tiempos  y costos estimados. - Realizar ajustes a la programación.
Analistas de requerimientos - Interactúan con el cliente para conocer sus necesidades - Con ayuda del cliente desglosan las necesidades en  requerimientos separados. - Determinan la existencia de relaciones entre los  requerimientos del sistema. - Administrar los cambios de requerimientos. - Analizar y controlar el impacto provocado por los  cambios de requerimientos
Diseñadores - Describen la estrategia de cómo debe funcionar el  sistema. - Establecer la arquitectura de software que se desarrollará - Modelar visualmente el sistema para aumentar la  comprensión del software que se desarrollará. - Definir lineamientos de calidad para el software. - Establecer lineamientos a seguir para la elaboración de  la documentación.
Programadores - Escriben las líneas de código o piezas de programación  que implementan lo que los requerimientos especifican. - Modificar piezas de software existentes - Documentar las piezas de programación a fin de facilitar  su mantenimiento y reutilización - Realizar pruebas sobre las piezas de programación  generadas
Probadores - Desarrollan el plan de pruebas para la evaluación de  software: - Objetivos - Riesgos - Requerimientos del ambiente - Planean las pruebas - Establecer condiciones de la prueba - Definir los resultados esperados - Preparar las pruebas - Desarrollar guiones de las pruebas - Crear archivos de pruebas
Entrenadores - Enseñan a los usuarios como se utiliza el    sistema. Equipo de mantenimiento - Corrigen defectos sobre el software - Desarrollan nuevas funcionalidades - Ajustan el software según los cambios del negocio. - Se aseguran de que el software brinde el nivel de  servicios esperado por los usuarios.
Las asignaciones del personal a las tareas depende de la dimensión del proyecto. Una vez se ha decidido acerca de los roles de los miembros del proyecto se debe decidir que tipo de gente se necesita en cada rol.

Clase

  • 1.
    Fundamentos de laIngeniería de Software
  • 2.
    ¿Qué es laIngeniería de Software? Una actividad de modelado. Los ingenieros de software manejan la complejidad mediate el modelado enfocándose en los detalles importantes. Una actividad para la solución de problemas Se usan modelos para buscar una solución aceptable. Con frecuencia los ingenieros de software tienen que apoyarse en métodos empíricos para evaluar los beneficios de alternativas diferentes.
  • 3.
    Una actividad dirigidapor la fundamentación La información de la fundamentación permite que los ingenieros de software comprendan las implicaciones de un cambio cuando revisan una decisión. Para cada una de estas actividades los ingenieros de software tienen que trabajar bajo restricciones de personal tiempo y presupuesto. Los cambios pueden suceder en cualquier momento.
  • 4.
    Fallas de laIngeniería de Software En algunos casos los desarrolladores no anticipan situaciones que ocurren rara vez o no anticipan que el usuario haga mal uso del sistema. En otros casos las fallas del sistema resultan por fallas de administración(entrega tardía y con presupuesto excedido, entrega a tiempo de un sistema incorrecto, complejidad innecesaria)
  • 5.
    Los proyectos dedesarrollo de software están sujetos a cambios constantes. Los requerimientos son complejos y necesitan ser actualizados cuando se descubren errores.
  • 6.
    Ingeniería de Software: Conceptos Participantes Son quienes están involucrados en el desarrollo de un sistema de software. Desde el cliente, quien ordena y paga el sistema, los desarrolladores quienes lo construyen y el gerente del proyecto hasta los usuarios finales. Papel Conjunto de tareas que se asignan a un participante. Un mismo participante puede cumplir varios papeles.
  • 7.
    Sistemas y modelosSistema se refiere a la realidad subyacente , modelo es cualquier abstracción de la realidad. Productos de Trabajo Es un artefacto que se produce durante el desarrollo, como un documento o fragmento de software para los demás desarrolladores o para el cliente. Ejemplo: Un proyecto de desarrollo es un sistema que puede ser modelado. La candelarización del proyecto , su presupuesto y su tiempo de entrega son modelos del proyecto de desarrollo.
  • 8.
    Actividades, tareas yrecursos Una actividad son las tareas que se realizan con un fin específico, por ejemplo, la obtención de requerimientos. Una tarea representa una unidad atómica de trabajo que puede ser administrada. Las tareas dan como resultado productos de trabajo. Los recursos son bienes utilizados para realizar el trabajo. Los recursos incluyen tiempo, equipo y mano de obra.
  • 9.
    Objetivos, requerimientos yrestricciones Los objetivos definen los atributos del sistema que son importantes. Un requerimiento funcional es un área de funcionabilidad que debe soportar el sistema, un requerimiento no funcional es una restricción sobre la operación del sistema.
  • 10.
    Notaciones, métodos ymetodologías Una notación es un conjunto de reglas gráficas o textuales para representar un modelo. Un método es un técnica repetible para la resolución de un problema específico. Una metodología es una colección de métodos para la resolución de una clase de problemas. Las metodologías de desarrollo de software decomponen el proceso en actividades: análisis, diseño del sistema y diseño del objeto.
  • 11.
    Actividades de desarrollode Ingeniería de Software Obtención de requerimientos - El cliente y los desarrolladores definen el propósito del sistema. El resultado es describir el sistema en términos de actores y casos de uso. - Los actores representan las entidades externas que interactúan con el sistema. Los casos de uso son secuencias de eventos generales que describen todas las acciones posibles entre el actor y el sistema
  • 12.
    Análisis - Seproduce un modelo del sistema que sea correcto, completo, consistente, claro, realista y verificable. - Los desarrolladores transforman los casos de uso en un modelo de objeto que describa por completo el sistema - De este modo se descubren las inconsistencias en el modelo de casos de uso. El resultado del análisis es un modelo de objeto comentado con atributos, operaciones y asociaciones.
  • 13.
    Diseño del Sistema- Se definen los objetivos de diseño del proyecto y se descompone el sistema en subsistemas más pequeños que puedan realizar los equipos individuales. - Se seleccionan estrategias para la construcción del sistema como la plataforma de hardware y software. El resultado del diseño es una descripción clara de cada una de las estrategias, una descomposición en subsistemas y un diagrama de organización que representa el mapeo del hardware y software del sistema.
  • 14.
    Diseño de ObjetosSe definen los objetos personalizados para cubrir el hueco entre el modelo de análisis y la plataforma de hardware y software definida durante el diseño del sistema. El resultado de la actividad de diseño de objetos es un modelo de objetos detallado, comentado con restricciones y descripciones precisas para cada elemento.
  • 15.
    Implementación Se traduceel modelo de objetos en código fuente. Esto incluye la implementación de los atributos y métodos de cada objeto y la integración de todos los objetos de forma tal que funcionen como un solo sistema
  • 16.
  • 17.
    Propietarios del Sistema- Son los responsables de fijar el presupuesto - Definir los plazos necesarios para el desarrollo - Decidir el tiempo de mantenimiento y último término de validez del sistema.
  • 18.
    Líder del Proyecto- Responsable de crear un plan para el Desarrollo de Proyecto de Software. - Crear un cronograma de actividades para el proyecto - Calcular el costo de desarrollo del producto de software - Supervisar el avance del proyecto dentro de los tiempos y costos estimados. - Realizar ajustes a la programación.
  • 19.
    Analistas de requerimientos- Interactúan con el cliente para conocer sus necesidades - Con ayuda del cliente desglosan las necesidades en requerimientos separados. - Determinan la existencia de relaciones entre los requerimientos del sistema. - Administrar los cambios de requerimientos. - Analizar y controlar el impacto provocado por los cambios de requerimientos
  • 20.
    Diseñadores - Describenla estrategia de cómo debe funcionar el sistema. - Establecer la arquitectura de software que se desarrollará - Modelar visualmente el sistema para aumentar la comprensión del software que se desarrollará. - Definir lineamientos de calidad para el software. - Establecer lineamientos a seguir para la elaboración de la documentación.
  • 21.
    Programadores - Escribenlas líneas de código o piezas de programación que implementan lo que los requerimientos especifican. - Modificar piezas de software existentes - Documentar las piezas de programación a fin de facilitar su mantenimiento y reutilización - Realizar pruebas sobre las piezas de programación generadas
  • 22.
    Probadores - Desarrollanel plan de pruebas para la evaluación de software: - Objetivos - Riesgos - Requerimientos del ambiente - Planean las pruebas - Establecer condiciones de la prueba - Definir los resultados esperados - Preparar las pruebas - Desarrollar guiones de las pruebas - Crear archivos de pruebas
  • 23.
    Entrenadores - Enseñana los usuarios como se utiliza el sistema. Equipo de mantenimiento - Corrigen defectos sobre el software - Desarrollan nuevas funcionalidades - Ajustan el software según los cambios del negocio. - Se aseguran de que el software brinde el nivel de servicios esperado por los usuarios.
  • 24.
    Las asignaciones delpersonal a las tareas depende de la dimensión del proyecto. Una vez se ha decidido acerca de los roles de los miembros del proyecto se debe decidir que tipo de gente se necesita en cada rol.