Tema 1 Fundamentos de Ingeniería de Software

Page 1

Instituto Tecnológico Superior de Huatusco

Docente: MSC. Olivia Labastida Puertos Tema 1: Fundamentos de Ingeniería de Software E-mail: olabastidap@huatusco.tecnm.mx


Competencia Específica:

Identifica y comprende el entorno de aplicación de la ingeniería de software.


1.1 Conceptos Básicos

¿Qué es el software? Programas de cómputo y su documentación asociada: requerimientos, modelos de diseño y manuales de usuario. El software puede ser desarrollado para un cliente en particular o para un mercado general.


1.1 Conceptos Básicos

El software puede ser: Genérico: desarrollado para venderse múltiples clientes (Excel, Word, etc.).

a

A la medida: desarrollado bajo demanda del cliente a un desarrollador especifico. El software nuevo puede ser creado desarrollando nuevos programas, configurando sistemas de software genérico o reutilizando software existente.


1.1 Conceptos Básicos

¿Qué es la Ingeniería de Software? Una disciplina de la concierne a todos los producción de software.

Ingeniería que aspectos de la


1.1 Conceptos Básicos

Los ingenieros de Software deben: Adoptar un enfoque sistemático para llevar a cabo su trabajo.

Utilizar las herramientas y técnicas apropiadas para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y a los recursos disponible.


1.1 Conceptos Básicos

¿Cuál es la diferencia entre Ingeniería de Software y Ciencias Computacionales? Las ciencias computacionales conciernen a la teoría y fundamentos de cualquier sistema de cómputo (hardware o software).

La ingeniería de software concierne a los aspectos prácticos del desarrollo y puesta en marcha de productos útiles de software.


1.1 Conceptos Básicos

¿Cuál es la diferencia entre Ingeniería de Software y Ciencias Computacionales? La Ingeniería de Software aún está lejos de ser considerada una ciencia como los son la química o la física. La ingeniería de sistemas concierne a todos los aspectos del desarrollo de sistemas basados en cómputo

incluyendo

ingeniería de procesos.

hardware,

software

y

la


1.1 Conceptos Básicos

¿Cuál es la diferencia entre Ingeniería de Software e Ingeniería de Sistemas? La ingeniería de software es una parte de este proceso que comprender el desarrollo de software, control, aplicaciones y bases de datos del sistema.


1.1 Conceptos Básicos

Los ingenieros de software son los encargados de la especificación del sistema, del diseño de la arquitectura, la integración y la puesta en marcha.


1.1 Conceptos Básicos ¿Qué es un proceso de software? Un conjunto estructurado de actividades cuya meta es el desarrollo o evolución de un software. Algunas actividades genéricas procesos de software son:

en

todos

los

• Especificación, qué debe hacer el software y cuáles son sus especificaciones de desarrollo.


1.1 Conceptos Básicos • Desarrollo, producción del sistema de software. • Validación, verificar que el software cumple con lo solicitado por el cliente. • Evolución, cambiar/adaptar el software a las nuevas demandas.

Estas actividades varían dependiendo de la organización y del tipo de sistema a desarrollarse.


1.1 Conceptos Básicos ¿Qué es un modelo de proceso de software? Representación formal y simplificada de un proceso de software, representada desde una perspectiva especifica. Ejemplos de perspectivas del proceso de software:

Flujo de trabajo, secuencia de actividades. Flujo de datos, flujo de la información. Rol/acción, quién realiza qué.


1.1 Conceptos Básicos

Modelos Genéricos: Cascada, separar en distintas faces de especificación y desarrollo.

Desarrollo Iterativo, la especificación, desarrollo y validación están interrelacionados.


1.1 Conceptos Básicos

Modelos Genéricos: Prototipado, un modelo sirve de prototipo para la construcción del sistema final.

Basado en componentes, asume que partes del sistema ya existen y se enfoca a su integración.


1.1 Conceptos Básicos

¿Cuáles son los costos de la Ingeniería de Software? El costo total de un software esta dividido aproximadamente de la siguiente forma: 60% costos de desarrollo.

40% costos de prueba. En el software a la medida los costos de evolución a menudo exceden los costos de desarrollo.


1.1 Conceptos Básicos

Los costos dependen del tipo de sistema que se desarrolla y de los requerimientos del mismo tales como el desempeño y confiabilidad. La distribución de los costos depende del modelo de desarrollo empleado.


1.1 Conceptos Básicos

¿Qué son los métodos de Ingeniería de Software? Enfoques estructurados para el desarrollo de software que incluye: • Descripciones del modelo, descripciones de modelos gráficos que deben ser producidos. • Reglas, restricciones modelos de sistemas.

aplicadas

a

los


1.1 Conceptos Básicos

• Recomendaciones, para realizar un diseño efectivo. • Administración del proceso, que actividades deben realizarse y en qué orden.


1.1 Conceptos Básicos

¿Qué es CASE? CASE es Engineering

Computer-Aided-Software

Programas que son usados para dar soporte automatizado a las actividades del proceso de software. Análisis de requerimientos, modelado del sistema, pruebas y depuración (debugging).


1.1 Conceptos Básicos

Las herramientas CASE son comúnmente usadas para dar soporte a los métodos de software. Editores para la notación del método. Módulos de análisis que verifican que las reglas del método se cumplan.


1.1 Conceptos Básicos

Generadores de reportes que facilitan la creación de la documentación de sistema. Generadores de código a partir del modelo del sistema.


1.1 Conceptos Básicos ¿Cuáles son los atributos del software de calidad? El software debe proveer la funcionalidad y desempeño requeridos por el usuario y debe ser mantenible, confiable y aceptable. •

Mantenible, el software debe poder evolucionar para

continuar cumpliendo con las especificaciones. •

Confiable, el software no debe causar daños físicos o económicos en el caso de que falle.


1.1 Conceptos Básicos •

Eficiente, el software no debe desperdiciar los recursos del sistema.

Aceptable, el software debe ser aceptado por los usuarios para los que fue diseñado. Debe ser entendible, utilizable y compatible con

otros sistemas.


1.1 Conceptos Básicos

¿Cuáles son los retos de la Ingeniería de Software? Heterogeneidad Desarrollar técnicas para software que pueda hacer plataformas y ambientes de heterogéneos (diferentes tipos Sw).

construir frente a ejecución de Hw y


1.1 Conceptos Básicos

¿Cuáles son los retos de la Ingeniería de Software? Tiempos de entrega Desarrollar técnicas que permitan reducir los tiempos de entrega del software sin comprometer la calidad.


1.1 Conceptos Básicos

¿Cuáles son los retos de la Ingeniería de Software? Confianza Desarrollar técnicas que permitan que los usuarios confíen plenamente en el software.


1.2 Fases de la Ingeniería de Software La ingeniería del software comparte el interés común con otras disciplinas de ingeniería. Al igual que otros dominios de ingeniería donde un problema determinado (por ejemplo, construir un puente) se puede resolver siguiendo una serie de pasos interrelacionados, el proceso de desarrollo de software también comprende una serie de pasos o fases.


Mantenimiento

Documentación

Pruebas

Programación

Diseño y Arquitectura

Análisis de Requisitos

1.2 Fases de la Ingeniería de Software


1.2 Fases de la Ingeniería de Software

Análisis de Requisitos Extraer los requisitos de un producto de software es la primera etapa para crearlo.

Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia en la ingeniería de software para reconocer requisitos incompletos, ambiguos o contradictorios.


1.2 Fases de la Ingeniería de Software

Diseño y Arquitectura Se refiere a determinar como funcionará de forma general sin entrar en detalles.

Consiste en incorporar consideraciones de la implementación tecnológica, como el hardware, la red, etc. Se definen los Casos de Uso para cubrir las funciones que realizará el sistema.


1.2 Fases de la Ingeniería de Software

Programación Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no es necesariamente la porción más larga.

La complejidad y la duración de esta etapa está íntimamente ligada al o a los lenguajes de programación utilizados.


1.2 Fases de la Ingeniería de Software

Pruebas Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación.

Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo.


1.2 Fases de la Ingeniería de Software

Documentación Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML), diagramas, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.


1.2 Fases de la Ingeniería de Software

Mantenimiento Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos.

Esto puede llevar más tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniería de software tiene que ver con dar mantenimiento.


1.3 Metodologías de Desarrollo de Software Lograr la construcción de un sistema informático eficiente, que cumpla con los requerimientos planteados, es una tarea realmente intensa y sobre todo difícil de cumplir. Las metodologías para el desarrollo del software imponen un proceso disciplinado sobre el desarrollo de software con el fin de hacerlo más predecible y eficiente.


1.3 Metodologías de Desarrollo de Software Una metodología de desarrollo de software tiene como principal objetivo aumentar la calidad del software que se produce en todas y cada una de sus fases de desarrollo. No existe una metodología de software universal, ya que toda metodología debe ser adaptada a las características de cada proyecto (equipo de desarrollo, recursos, etc.) exigiéndose así que el proceso sea configurable.


1.3 Metodologías de Desarrollo de Software 1.3.1 Clásicas

Cascada

Incremental

Evolutivo


1.3 Metodologías de Desarrollo de Software 1.3.1 Clásicas

Espiral

Prototipos

Desarrollo Basado en Componentes


1.3 Metodologías de Desarrollo de Software 1.3.2 Ágiles Se caracterizan por hacer énfasis en la comunicación cara a cara, es decir, se basan en una fuerte y constante interacción, donde clientes desarrolladores y desarrolladores trabajan constantemente juntos, estableciéndose así una estrecha comunicación. Estas metodologías están orientadas al resultado del producto y no a la documentación; exige que el proceso sea adaptable, permitiendo realizar cambios de último momento.


1.3 Metodologías de Desarrollo de Software 1.3.2 Ágiles

Extreme Programming (XP)

Es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo.


1.3 Metodologías de Desarrollo de Software 1.3.2 Ágiles

Scrum

Desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle. Define un marco para la gestión de proyectos, que se ha utilizado con éxito durante los últimos 10 años. Está especialmente indicada para proyectos con un rápido cambio de requisitos.


1.3 Metodologías de Desarrollo de Software 1.3.2 Ágiles

Crystal Methodologies

Se trata de un conjunto de metodologías para el desarrollo de software caracterizadas por estar centradas en las personas que componen el equipo (de ellas depende el éxito del proyecto) y la reducción al máximo del número de artefactos producidos.


El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental.

Ingeniería Web

Para la metodología del desarrollo del proyecto GA3 se utilizó principalmente el modelo reciente Ganar-ganar ya que con este existen ganancias para todas las partes implicadas .

Proceso Unificado (UP)

Ganar-ganar

1.3 Metodologías de Desarrollo de Software 1.3.3 Otras Filosofías La ingeniería web es la aplicación de metodologías sistemáticas, disciplinadas y cuantifica bles al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la World Wide Web.


1.4 Importancia de las Herramientas CASE en la Ingeniería de Software Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) son diversas aplicaciones informáticas o programas informáticos destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero.


1.4 Importancia de las Herramientas CASE en la Ingeniería de Software Estas herramientas pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costos, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores, entre otras.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.