Análisis y Diseño de Aplicaciones

Slides:



Advertisements
Presentaciones similares
INTRODUCCIÓN A LA VERIFICACION Y VALIDACION
Advertisements

Ciclo de vida de desarrollo de software
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
Validación de Requerimientos
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
ANÁLISIS DE REQUERIMIENTOS
Ingeniería de Software
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
INTECPLAN L.M. KARLA ANDRADE REYES.
ORGANIZACIONES PARA INGENIEROS
Análisis y Diseño de Aplicaciones Ingeniería de Software
IEEE-std Práctica Recomendada para la Especificación de Requerimientos de Software Fuente: IEEE Recommendad Practice for Software Requirements.
Administración de Procesos de Pruebas
Versión 2004 Enrique Bañuelos Gómez
M.S.C. Ivette Hernández Dávila
HERRAMIENTAS CASE.
SEMANA Introducción.
Propuesta de una metodología para el desarrollo de proyectos informáticos empleando la herramienta para el diseño automatizado GeneXus Autor: Dipl.-Ing.
Ingeniería de Sistemas Requerimientos
Ingeniería de Software
 Docentes ◦ Jonathan Erlich  ◦ Ariel Glikman   Organización de la materia ◦ Idesmaimonides.wikidot.com.
Las etapas de un proyecto
Ciclo de Vida del Software Paradigmas de Desarrollo
El Proceso de Software es la única manera de desarrollar sistemas de calidad. F. o V. Justifica tu respuesta. Que tiene que ver la globalización.
Ingeniería de Software
Ingeniería de Software
Más de los SIG.
Ingeniería de Software
Ingeniería del Software
Tema 1: Introducción a la Ingeniería de Software
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
INTRODUCCIÓN INGENIERIA DE SISTEMAS
PRESENTACIÓN Este trabajo se desarrolla sobre el tema de competencias, y basado en el Marco de Fundamentacion Conceptual Especificaciones de la Pruebas.
ASIGNACIÓN DE ROLES.
INGENIERIA DE SOFTWARE
Verificación y Validación del Software
Ciclo de vida de un sistema
 Sara Isabel Osorio Alcaraz Ana Isabel Vallejo Grisales 10 Informática 1.
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
Ing. José Manuel Poveda.  Muchas personas asocian el término de Software con los programas de PC. Sin embargo, software no son sólo programas, sino todos.
Ingeniería de Requerimientos
Introducción al proceso de verificación y validación.
Integrantes: Dennys Quintero José Ortega Simón Fagundez Caracas 09 de Febrero de 2015.
Análisis y Diseño de Aplicaciones
PROCESOS DE DESARROLLO DE SOFTWARE
Ingeniería de software
Ingeniería del Software I
problemas de la calidad del software
El producto de software y su ciclo de vida
Responsabilidad y Ética en la Profesión
Por: Jaime Enrique Melendez Monreal Código: INGENIERÍA DE SOFTWARE.
Ciclo de Vida del Software
Preocupaciones del Analista Programador & Usuarios
Ingeniería en Informática F UNDAMENTOS DE C OMPUTACIÓN B ACHILLERATO EN I NGENIERÍA I NFORMÁTICA L IC. C ARLOS H. G UTIÉRREZ L EÓN.
DESARROLLO DE SOFTWARE Cuando se va desarrollar un software intervienen muchas personas como lo es el cliente quien es el que tiene el problema en su.
REUNION INICIAL DE PROYECTO DE SOFTWARE Nombre del Proyecto: SISTEMA DE CONTROL UNIVERSITARIO Tipo de Proyecto: DESARROLLO DE SOFTWARE A LA MEDIDA 7 de.
Ing del Software Libre1 Ingeniería del Software Libre y Modelos de Calidad Instructora: Ing. Erika Veliz Correo Electrónico:
LILIANA JIMENEZ GARCIA FERANANDO CANO GOMEZ. El proceso de recopilar, analizar y verificar las necesidades del cliente para un sistema es llamado Ingeniería.
¿Qué es la Ingeniería De Software? Ingeniería de Software.
Una introducción a la Ingeniería de Software
Especificación del Problema Partimos del hecho de un programador no puede resolver un problema que no entiende. Por esta razón, la primera etapa en todo.
Las fases del ciclo de la vida de desarrollo de sistemas
CICLO DE VIDA DE UN SOFTWARE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de.
INSTITUTO TECNOLÓGICO DE LIBRES INGENIERÍA EN SISTEMAS COMPUTACIONALES FUNDAMENTOS E DESARROLLO DE SISTEMAS “PRUEBAS E IMPLEMENTACIONES” INTEGRANTES: SOTERO.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 Una introducción a la Ingeniería de Software.
Verificación y Validación del Software
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verificación y Validación.
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
GESTIÓN DE PROYECTOS.
Transcripción de la presentación:

Análisis y Diseño de Aplicaciones 3º Educación Media Tecnológica

Ingeniería de Software Las economías de TODAS las naciones desarrolladas son dependientes de software y sistemas informáticos. Cada vez más sistemas son controlados por software. La Ingeniería de Software concierne teorías, métodos y herramientas para el desarrollo profesional de software. Los gastos en software representan una fracción significativa del PBI en todos los países desarrollados.

Costos del Software Los costos del software a menudo dominan en los costos de un sistema computacional o informático. Los costos de software en una PC son a menudo mayores que el costo del hardware. Cuesta más el mantenimiento del software que el desarrollo del mismo. Para sistemas de larga vida, los costos de mantenimiento se multiplican con respecto a los costos de desarrollo. A la Ingeniería de Software le compete el desarrollo de software rentable.

Preguntas frecuentes sobre Ingeniería de Software Qué es Software? Qué es la Ingeniería de Software? Qué es un proceso de Software? Qué es un modelo de proceso de Software? Cuáles son los costos que implica la Ingeniería de Software? Cuáles son las metodologías de desarrollo de Software? Qué son las herramientas CASE (Computer-Aided Software Engineering) Cuáles son los atributos de un buen Software? Cuáles son los desafíos primordiales frente a la Ingeniería de Software?

Qué es Software? El software de computadora es el producto que construyen los programadores profesionales y al que después le dan mantenimiento durante un largo tiempo. Incluye programas que se ejecutan en una computadora de cualquier tamaño y arquitectura. Los productos software pueden ser desarrollados para un cliente particular o bien para el mercado en general. Los productos software pueden ser: Genéricos – desarrollados para ser vendidos a una gama de diversos clientes, ejemplo: software como Excel o Word. Hecho a medida – desarrollado para un cliente particular acorde a sus requerimientos y especificaciones. Una diferencia importante entre estos diferentes tipos de software es que, en los productos genéricos, la organización que desarrolla el software controla su especificación. La especificación de los productos personalizados, por lo general, es desarrollada y controlada por la organización que compra el software. Los desarrolladores de software deben trabajar con esa especificación. No obstante, la línea de separación entre estos tipos de productos se está haciendo cada vez más borrosa. Cada vez más compañías de software empiezan con un sistema genérico y lo adaptan a las necesidades de un cliente en particular. Los sistemas de planificación de recursos empresariales (ERP), como los sistemas SAP, son el mejor ejemplo de este enfoque. Aquí, un sistema largo y complejo se adapta a una compañía incorporando información sobre reglas de negocio y de procesos, informes, etcétera.

Qué es la Ingeniería de Software? La Ingeniería de Software es una disciplina de la ingeniería que concierne a todo lo referente con producción de software. Está formada por un proceso, un conjunto de métodos (prácticas) y un arreglo de herramientas que permite a los profesionales elaborar software de cómputo de alta calidad. Los ingenieros de software deberían adoptar un enfoque sistemático y organizado con respecto a su trabajo, utilizar herramientas y técnicas apropiadas con relación al problema planteado, las restricciones del desarrollo y los recursos disponibles. La ingeniería abarca desde el inicio de software hasta su mantenimiento.

Qué es un modelo de proceso de Software? Una representación simplificada de un proceso de software, presentada desde una perspectiva específica. Ejemplos de perspectivas de proceso son: Perspectiva de flujo de trabajo – secuencia de actividades. Perspectiva de flujo de datos – flujo de información (DFD). Perspectiva de Casos de Uso – quién hace qué (funcionalidad). DFD: Diagrama de flujo de datos.

Qué es un proceso de Software? Un conjunto sistemático de actividades cuya meta es el desarrollo o la evolución del software. Actividades genéricas en todos los procesos de software son: Especificación: lo que el sistema debería hacer y sus restricciones de desarrollo. Desarrollo: producción del sistema software. Integración y Validación: instalando el software y comprobando que es lo que el cliente quiere. Evolución: cambios y mantenimiento en el software con relación a los cambios en los requerimientos y demandas. ESPECIFICACIÓN: donde los clientes e ingenieros definen el software a producir y las restricciones sobre su operación. Planificación, alcances y límites. DESARROLLO: donde el software se diseña y se programa. VALIDACIÓN: donde el software se valida para asegurar que es lo que el cliente requiere. Pruebas de testing. EVOLUCIÓN: donde el software se modifica para adaptarlo a los cambios requeridos por el cliente y el mercado. Opción a modificaciones fácilmente.

Cuales son los costos de la Ingeniería de Software? Rigurosamente, 60% de los costos son de desarrollo, 40% son costos de prueba. Para software hecho a medida, los costos de evolución a menudo exceden los costos de desarrollo. Varían acorde al tipo de sistema a desarrollar y a los requerimientos con respecto a los atributos del mismo, como ser el funcionamiento y la confiabilidad del sistema. La distribución de los costos depende del modelo empleado para el desarrollo del software. El software de tiempo real normalmente requiere una validación y pruebas más extensas que los sistemas basados en web. SW TIEMPO REAL: Que están constantemente comprobando entradas y salidas (el usuario no es la prioridad sino los procesos). Ej.: Usados por medicos para operar. Por empresas para controlar una máquina Cada uno de los diferentes enfoques genéricos al desarrollo del software tiene un perfil de distribución de costos diferente a través de las actividades del proceso del software. Dependiendo del enfoque que se le de al software, tendrá un costo diferente que varía según las actividades del proceso del mismo

Distribución de costos por actividad Se considera que el costo total del desarrollo de un sistema de software complejo es de 100 unidades de Costo (100: pesos, dólares euros, etc.) o 100 mil Modelo en Cascada La integración y pruebas del sistemas son las actividades de desarrollo más caras. Normalmente, éste supone alrededor del 40% del costo del desarrollo total, pero para algunos sistemas críticos es probable que sea al menos el 50% de los costos de desarrollo del sistema. Cascada: ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la etapa anterior. ******************************************************************************************************** Desarrollo Iterativo: Si el software se desarrolla utilizando un enfoque iterativo, no existe división entre la especificación, el diseño y el desarrollo. En este enfoque, los costos de la especificación se reducen debido a que sólo se produce la especificación de alto nivel antes que el desarrollo. La especificación, el diseño, la implementación, la integración y las pruebas se llevan a cabo en paralelo dentro de una actividad de desarrollo. Sin embargo, aún se necesita una actividad independiente de pruebas del sistema una vez que la implementación inicial esté completa. Iterativo: que una vez realizada una entrega se vuelve a abordar una versión posterior que incluye nuevas funcionalidades. Asumir que esto es así desde un principio es lo que plantea el ciclo de vida iterativo: que una vez realizada la integración o entrega de una versión, se volverá a la fase de análisis para seguir avanzando en el desarrollo. En este enfoque, los costos de la especificación se reducen debido a que sólo se produce la especificación de alto nivel antes que el desarrollo. La especificación, el diseño, la implementación, la integración y las pruebas se llevan a cabo en paralelo dentro de una actividad de desarrollo. Software basado en componentes Los costos de integración y pruebas se incrementan porque tenemos que asegurarnos de que los componentes que utilizamos cumplen realmente su especificación y funcionan como se espera con otros componentes. Componente:Esta arquitectura se enfoca en la descomposición del diseño en componentes funcionales o lógicos que expongan interfaces de comunicación bien definidas. Esto provee un nivel de abstracción mayor que los principios de orientación por objetos y no se enfoca en asuntos específicos de los objetos como los protocolos de comunicación y la forma como se comparte el estado.

Distribución de costos por actividad (larga vida) 100 Además de los costos de desarrollo, existen costos asociados a cambios que se le hacen al software una vez que está en uso. Para sistemas software de larga vida, tales como sistemas de orden y de control que pueden ser usados durante 10 años o más, estos costos exceden a los de desarrollo por un factor de 3 o 4. Por ejemplo, si los costos de desarrollo de un software es de $100.000 (aquí el software se considera instalado, testeado y pronto para funcionar),el mantenimiento del mismo a 10 años aproximadamente, supondrá un costo de $400.000.

Costos del desarrollo del Producto La anterior distribución de costos se cumple para el software personalizado, el cual es especificado por un cliente y desarrollado por un contratista. Para productos de software que se venden para PCs, el perfil del costo es diferente. Estos productos comúnmente se desarrollan a partir de una especificación inicial utilizando un enfoque de desarrollo evolutivo. Los costos de la especificación son relativamente bajos. Sin embargo, debido que se pretende utilizarlos en diferentes configuraciones, deben ser probados a fondo.

Qué son las herramientas CASE (Computer-Aided Software Engineering) Sistemas de software cuya finalidad es la de proveer soporte automatizado para actividades de proceso o desarrollo de software. Los sistemas CASE son usados con frecuencia como soporte dentro de la metodología de desarrollo. Herramientas CASE tempranas o Superiores Herramientas para soportar las actividades tempranas de requerimientos y diseño dentro del proceso de software. Herramientas CASE tardías o Inferiores Herramientas para soportar actividades posteriores como ser la programación, depuración y prueba o testeo. Diferentes tipos de programas que se utilizan para ayudar a las actividades del proceso del software, como el análisis de requerimientos, el modelado de sistemas, la depuración y las pruebas. Todos los métodos vienen con tecnología CASE asociada, como los editores para las notaciones utilizadas en el método, módulos de análisis que verifican el modelo del sistema según las reglas del método y generadores de informes que ayudan a crear la documentación del sistema. Las herramientas CASE también incluyen un generador de código que automáticamente genera código fuente a partir del modelo del sistema y de algunas guías de procesos para los ingenieros de software.

Cuáles son los atributos de un buen Software? El software debe entregar la funcionalidad y el funcionamiento requerido por el usuario y debe ser mantenible, confiable, eficiente y aceptable. Mantenibilidad El software debe evolucionar para cubrir necesidades cambiantes. Confiabilidad El software debe ser confiable. Eficiencia El software no debería hacer mal uso de los recursos del sistema. Aceptabilidad El software debe aceptar las necesidades de los usuarios para los cuales fue diseñado. Esto significa que debe ser entendible, de utilidad y compatible con otros sistemas.

Caules son los desafíos primordiales frente a la Ingeniería de Software? Heterogeneidad, entrega y confianza. Heterogeneidad Técnicas de desarrollo para la construcción de software que puedan encararse con plataformas heterogéneas y ambientes de ejecución apropiados. Entrega Técnicas de desarrollo que lleven a una entrega de software más rápida. Confianza Técnicas de desarrollo que demuestren que el software es de confianza para con sus usuarios. El reto de la heterogeneidad: que un sistema funcione en distintas computadoras con distintos soportes (win, linux, Mc). Ej.: sistema web. El reto de la entrega: reducir los tiempos de entrega para sistemas grandes y complejos sin comprometer la calidad del sistema. El reto de la confianza: desarrollar técnicas que demuestren que los usuarios pueden confiar en el software. Especialmente importante en sistemas remotos de software a los que se accede a través de páginas web o de interfaces de servicios web.

¿Qué debemos evitar? Así lo explica el cliente Recordemos que en la mayoría de los casos el cliente usará un lenguage no técnico. Es nuestro trabajo identificar las necesidades del cliente y asegurarnos de que es realmente lo que el mismo desea. Así lo explica el cliente Así lo entiende el jefe de proyecto Así lo diseña el analista

Así lo escribe el programador Así lo vende el de marketing ¿Qué debemos evitar? Nuestro desafío no es realizar lo que el cliente “dice” sino lo que el cliente “piensa” Así lo escribe el programador Así lo vende el de marketing

¿Qué debemos evitar? La documentación es fundamental para conocer realmente las necesidades del cliente. Es menos costoso realizar un nuevo diagrama o especificaciones de requerimientos, que realizar un nuevo programa. La integración y las pruebas es altamente necesaria. El cliente debería ver que el programa funciona, no que el programa falla. Es por eso que se debe implementar un correcto y cuidadoso método de validación. Si el software es lo que el cliente desea, los costos para el mismo serán una inversión; de lo contrario será un gasto que generó muchas pérdodas económicas y de tiempo.

¿Qué debemos evitar?

¿Qué debemos evitar?

Responsabilidad ética y profesional La Ingeniería de Software implica responsabilidades mayores que el simple uso de habilidades técnicas. Los ingenieros de software deben comportarse de manera honesta y éticamente responsable si van a ser respetados como profesionales. Comportamiento éticamente responsable es mucho más que simplemente actuar dentro de la ley.

Aspectos de responsabilidad profesional Confidencialidad Los ingenieros deberían normalmente respetar la confidencialidad de sus clientes independientemente de que se haya firmado o no un previo acuerdo de confidencialidad. Capacidad Los ingenieros no deberían pretender tener mayor capacidad (intelectual y laboral) de la que tienen, deben aceptar conscientemente el trabajo que esté acorde a su capacidad.

Aspectos de responsabilidad profesional Derechos de propiedad intelectual Los ingenieros deberían estar conscientes de las leyes que gobiernan el uso de propiedad intelectual, como ser patentes y derechos reservados. Deben ser cuidadosos al garantizar que la propiedad intelectual de sus clientes está protegida. Mal uso de la computadora Los ingenieros de software no deberían usar sus habilidades técnicas para un mal uso de las computadoras de otras personas. El mal uso de una computadora comprende desde lo relativamente simple (jugar en la computadora del cliente) hasta lo extremamente serio (diseminar virus).

Puntos Clave La Ingeniería de Software es una disciplina de la ingeniería concerniente a todos los aspectos de la producción de software. Los productos software consisten en programas desarrollados y su documentación asociada. Atributos esenciales del producto son la mantenibilidad, formalidad, eficiencia y utilidad. El proceso de software consiste en actividades involucradas en el desarrollo de productos software. Actividades básicas son la especificación del software, desarrollo, validación y evolución. Las metodologías son maneras organizadas de producir software. Estas incluyen sugerencias para el proceso a seguir, notaciones a usar, reglas que rigen las descripciones del sistema que son pautas para el desarrollo.

Puntos Clave Las herramientas CASE son sistemas de software diseñadas para soportar actividades rutinarias en el proceso de software, como ser: editar diagramas de diseño, verificaciones de la consistencia de diagramas y seguir el rastro de las pruebas del programa que han sido ejecutadas. Los ingenieros de software tienen responsabilidades para con la profesión y la sociedad. No deberían simplemente preocuparse de aspectos técnicos. Las sociedades profesionales publican códigos de conducta que establecen los estándares de comportamiento que se esperan de sus miembros.

Ingeniería de Software, Ian Sommerville Capítulo 1 Bibliografía Ingeniería de Software, Ian Sommerville Capítulo 1