Principios de la Ingeniería de Software

Slides:



Advertisements
Presentaciones similares
Clase 09.  Garantizar la calidad de software  La prueba nunca termina, del IS translada se translada al usuario  Las casas de software invierte del.
Advertisements

Sistemas de Información Enfoques para la Construcción de los Sistemas de Información MBA Luis Elissondo.
CONCEPTO INGENIERÍA DE SOFTWARE  Analiza, diseña y desarrolla productos de sistemas software, proponiendo la plataforma tecnológica más apropiada. Domina.
Lcda. Ingrid Graü Diseño de Sistemas 1. Lcda. Ingrid Graü Diseño de Sistemas 2.
Principios de la Ingeniería de Software Principio s Metodologías Herramientas Técnicas Cada estrato se basa en los inferiores y es más susceptible a cambios.
Instituto tecnológico superior de lerdo Sistemas de información II Diseño orientado a flujo de datos Profesor: Ing. Ricardo de Jesús Bustamante. Alumna:
Pruebas de Funcionalidad de Software: Caja Negra y Caja Blanca Curso: Diseño de Sistemas 9no. Semestre.
Organizaciones involucradas: El centro de cálculo noruego. Crea lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en 1967.
Ingeniería de Software
Metodología de Implementación de Sistemas ERP
El Lenguaje de Modelación Unificado
Diseño de interfases Sistemas de Información
Ciclo de vida del producto y decisiones de selección del proceso
IEEE-std Práctica Recomendada para la Especificación de Requerimientos de Software Fuente: IEEE Recommendad Practice for Software Requirements.
Ingeniería de Software
CC4401 – Ingeniería de Software I
SWEBOK.
U.T. 11: Introducción A Las Bases De Datos
CICLO DE VIDA DEL SOFTWARE
Cualidades del Software
Administración de proyectos
MOPROSOFT.
Cualidades del Software
NORMA INTERNACIONAL DE AUDITORÍA 330
CARRERA DE INGENIERÍA EN SISTEMAS E INFORMÁTICA
INTRODUCCIÒN AL SISTEMA GESTOR DE BASE DE DATOS
Ingeniería de Sistemas Requerimientos
Tema 3. Lenguaje unificado de modelado UML
Seminario de Arquitectura de Software
CICLO DE VIDA DEL SOFTWARE
UNIVERSIDAD NACIONAL DE LOJA Área de la Educación, el Arte y la Comunicación Informática Educativa IV INGENIERIA DE SOFTWARE Taller de Análisis y Diseño.
Mantenimiento basado en el Riesgo (Inspección basada en el Riesgo)
Metodología Merise Universidad Nororiental Privada
Metodología de la programación
Algoritmo Capitulo Cinco.
Ingeniería del Software
Conceptos Relacionados Unidad I. Parte A.
Modelo de interacción de usuario.  El Desarrollo basado en modelos de la interfaz de usuario, en inglés Model-based User Interface Development (MB-UID),
FUNDAMENTOS DE PROGRAMACION EN ENTORNO WEB. Rodrigo Cabello Ing. Informático Director de proyectos Think – Ideas in Motion FUNDAMENTOS.
Base de Datos TECNICATURA SUPERIOR EN INFORMÁTICA PROF.: GUANUCO, JUAN CARLOS.
ARQUITECTURA DE SOFTWARE Y SUS COMPONENTES Integrantes: Luis Morel Braulio Jiménez Yeuris Ossers Rawel Lauciano
MF. MARGARITA VALLE LEÓN
Ciclo de vida del Software
Metodologías de Desarrollo de Software RUP – Proceso Racional Unificado Gilber BASILIO ROBLES I.E.S.T.P. “DANIEL ALCIDES CARRIÓN” Taller de Modelamiento.
Análisis y diseño de aplicaciones. Introducción Crisis del software - conferencia organizada en 1968 por la Comisión de Ciencias de la OTAN en Garmisch.
La planeación y la organización de los procesos técnicos.
ABSTRACCION DE DATOS   Estructura de Datos Básicos: En programación una estructurad de datos, es una forma particular de organizar datos en una computadora.
CICLO DE VIDA DE SOFTWARE
Modelo de la cascada (cont.)
Planes del Proyecto.
Zegelipae.edu.pe. Aseguramiento de la Calidad Sesión 6.
Es el proceso de subdividir los entregables y el trabajo del proyecto en componentes más pequeños y más fáciles de manejar Se puede dar una visión estructurada.
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
Principios de I.S. Pr. Néstor Piazza AÑO 2017 Repartido F.ING.
Desarrollo organizacional ORGANIZACIONES PARA INGENIEROS MODULO 8 DESARROLLO ORGANIZACIONAL UdelaR FIng febrero del 2006 versión 06 Carlos A. Petrella.
METODOLOGIA AGIL XP LIC. ROXANA LAUREL R.. INTRODUCCION  Proceso : conjunto de actividades ordenadas para lograr una serie de objetivos  Proceso Pesado.
Metodología de Desarrollo de Sistemas II Ingeniería de Software  DEFINICIÓN La ingeniería del software es el establecimiento y uso de principios de.
IEEE Estándar para documentación de pruebas de software
Características de los Sistemas Operativos
Desarrollo de Sistemas de Información Contable - Sis USB 1 METODOLOGIAS DE DESARROLLO DE SOFTWARE.
DISEÑO MECÁNICO II Diseño: Es un Producto Técnico (SISTEMA MECANICO) construido especialmente para que cumpla una Función Objetivo.Diseñar: Conjunto de.
GC-F-004 V.01 CENTRO DE INDUSTRIA Y LA CONSTRUCCIÓN REGIONAL TOLIMA.
MODELO EN CASCADA Integrantes: Felipe Alemán Lester Blandón.
¿Qué es la celda de manufactura? La celda de manufactura es un conjunto de componentes electromecánicos, que trabajan de manera coordinada para el logro.
Desarrollo de Sistemas de Información Contable - Sis USB 1 METODOLOGIAS DE DESARROLLO DE SOFTWARE.
Desarrollo de sistemas
Estructura de Sistemas Operativos
Diseñas y elaboras algoritmos para la solución de problemas
Transcripción de la presentación:

Principios de la Ingeniería de Software

Motivación ¿Cómo se logra construir un software de calidad? ¿Existe algún principio o práctica general que me asegure que el producto de software creado tendrá ciertas cualidades? Proceso Producto

Algunos Conceptos Métodos Técnicas Metodología Herramienta forma sistemática de abordar una actividad Técnicas más técnicos y restringidos que los métodos Metodología organización de métodos y técnicas para guiar el proceso de resolución de un problema Herramienta encarna y fuerza la metodología (métodos y técnicas)

Relaciones entre conceptos Herramientas Metodología Métodos y Técnicas Principios

Principios 1. Rigor y formalidad 2. Separación de intereses 3. Modularidad 4. Abstracción 5. Anticipación del cambio 6. Generalidad 7. Incrementalidad

1. Rigor y Formalidad ? Creatividad Formalismo

Rigor y Formalidad Caos Rigor Formalidad

Rigor y Formalidad Una serie de pasos definidos, precisos, coherentes. En cada paso se aplica alguna técnica. La técnica aplicada depende de: resultados teóricos derivados de un modelo de la realidad, ajustes empíricos para casos no cubiertos por el modelo, experiencia del desarrollador. Esta mezcla define una metodología que puede usarse repetidamente.

Rigor o Formalismo El grado de formalismo usado en cada paso depende de varios factores: experiencia en el área de desarrollo, cuán crítico es el producto, tiempo en ejecución. Es necesario que el desarrollador sepa decidir sobre el grado de formalidad necesario para cada paso del desarrollo.

Ejemplo  u, u’  USUARIOS  u.número = u’.número  u = u’ El número de usuario es único en el sistema. o  u, u’  USUARIOS  u.número = u’.número  u = u’

Cualidades del Software Confiable Verificable Mantenible Reusable Portable Comprensible Interoperable Documentación rigurosa y/o formal Cualidades del producto y del proceso de desarrollo.

2. Separación de Intereses “Divide et Impera”. Separar el problema en sus diferentes aspectos y abordarlos separadamente.

Distintos enfoques Para un producto de software: funcionalidad ofrecida, confiabilidad esperada, eficiencia en el uso del tiempo y el espacio, dependencias del ambiente, interfaces del usuario. Para el proceso de desarrollo: ambiente de desarrollo, estructura y organización del equipo de trabajo, agenda, procedimientos de control, estrategias de diseño, mecanismos de recuperación de errores. Otros: asuntos económicos y financieros.

Abordar los Distintos Enfoques Algunos aspectos no pueden decidirse en forma completamente independiente: dinero disponible, ambiente de desarrollo, agenda.

Separación de Intereses Tiempo: organización de las actividades en el tiempo, base del ciclo de vida del software, secuencia de actividades. Cualidades: dedicarse a desarrollar distintas cualidades por separado, ej.: funcionalidad y eficiencia. Visiones: flujo de datos y flujo de control, interfaces del usuario y diseño de la base de datos. Partes: refinamiento del sistema por partes dependiendo del tamaño, modularidad.

Separación y Optimalidad La separación del problema completo en pequeñas partes sugiere que es posible no considerar una solución óptima global. En general, la complejidad del problema completo nos impide resolver bien los problemas parciales y también el problema global. Separación Completo Simplicidad Complejidad

Consecuencias La separación de intereses determina la división de las tareas posiblemente entre personas con diferentes habilidades. También las necesidades de personal en las distintas etapas de desarrollo del software son diferentes: cantidad, calificación.

3. Modularidad Un sistema complejo puede dividirse en partes llamadas módulos. Un sistema dividido en módulos es modular. La modularidad es importante en casi todos los productos y procesos de ingeniería: estandarización reutilización.

Objetivos de la Modularidad Descomposición descomponer un sistema en grandes bloques, aplicar la descomposición recursivamente a bloques complejos. Composición usando varios elementos (módulos) básicos, se construye un sistema más complejo, la reutilización de módulos de software beneficia todo el proceso de desarrollo. Comprensión es más fácil localizar cambios en un sistema modular, también es más fácil comprender módulos pequeños.

Cohesión y Acoplamiento Alta Cohesión (interna) los elementos comprendidos dentro de un módulo están altamente relacionados, cooperan para lograr un mismo fin, no están juntos al azar. Bajo Acoplamiento (externo) la relación e interacción entre los distintos módulos debe ser simple, si dos módulos dependen altamente uno del otro, es probable que los cambios en un módulo afecten al otro.

Dos Fases de Modularidad Fase 1: Nivel de Módulos los detalles de cada módulo se tratan en forma independiente. Fase 2: Nivel del Sistema la interacción entre los módulos se trata independientemente de los detalles internos. Fase 1 - Fase 2: Bottom - up Fase 2 - Fase 1: Top - down

Buena Modularización

4. Abstracción Distinguir los elementos esenciales e ignorar los detalles. Es una forma de separación de intereses (esencia y detalles). La abstracción no es única: depende del software, del usuario de la abstracción.

Abstracciones del Software Usuario Final: funcionalidad y mecanismos de interacción. Diseñador: funcionalidad, algoritmos y estructuras de datos. Programador: algoritmos, estructuras de datos, lenguaje de programación. Mantenedor: arquitectura, funcionalidad, lenguaje de programación.

Abstracción en Otras Áreas Arquitectura el plano de una casa describe: orientación, tamaño relativo de las habitaciones, distribución, pero no incluye: materiales de construcción, colores de las paredes. Circuitos eléctricos incluyen: resistencias, capacitores, etc., ecuaciones, no incluyen: resistencia de los conectores

Modelo del Software Requerimientos Abstracción Modelo del Software

El Software es una Abstracción ESPECIFICACIÓN DEL SOFTWARE GENERADOR DE CÓDIGO LENGUAJE DE ALTO NIVEL Abstracción ASSEMBLER LENGUAJE DE MÁQUINA HARDWARE

Abstracción de Producto y Proceso Producto de Software: el comentario en el encabezado describe una abstracción de la funcionalidad del procedimiento. Proceso de Software: la estimación del costo de desarrollo se realiza considerando los principales factores: personal, capacitación, local, equipamiento;

5. Anticipación del Cambio La mantenibilidad es una cualidad deseable del software: corrección de errores, aumentar la funcionalidad. Desarrollar software fácilmente mantenible no es gratis: anticipar el cómo y dónde van a ocurrir los cambios, proceder de modo que haga fácil la aplicación de futuros cambios. Este principio se aplica generalmente en la etapa de diseño del software: los lugares que van a cambiar se aíslan de modo que los cambios no afecten otras porciones del software.

Principio Único del Software Las aplicaciones de software se desarrollan a pesar de que sus requerimientos muchas veces no se han comprendido completamente. Después de instalado el sistema, el usuario realiza comentarios que dan lugar a cambios y ajustes. Las organizaciones se ven afectadas por la instalación de un nuevo sistema, de modo que los requerimientos cambian con su implantación. La anticipación de los cambios es casi la única forma de abordar esta situación eficientemente.

Reutilización y Anticipación del Cambio Una componente es reusable si puede ser utilizada para construir un nuevo sistema de software (sin cambios o con cambios mínimos). Reutilización es una evolución en pequeña escala, a nivel de componentes. Si puede anticiparse los contextos en que la componente será utilizada, se la diseña de modo de poder acomodar fácilmente los cambios necesarios.

Control de la Configuración Los cambios en las componentes deben ser registrados y almacenados. Cada sistema debe tener la versión apropiada de cada una de sus componentes. Cada configuración consistente debe también ser almacenada. Las herramientas son esenciales. A B C D B.1 B.2 C.1 C.2 D.1

Anticipación en el Proceso Deben anticiparse acciones en caso de cambio en el personal. También debe considerarse el mantenimiento para la estimación de costos del sistema. Debe considerarse la construcción de componentes reutilizables como parte del proyecto o como un proyecto paralelo.

Ejemplo: Algoritmo de Sort Consideremos un algoritmo de ordenamiento, por ejemplo QuickSort. Algunos posibles cambios en una componente que implemente este algoritmo: cambio en el tipo de datos a ordenar, la cantidad de datos es tan grande que deben almacenarse en disco. ¿Qué consideraciones haría para prever este tipo de cambios?

6. Generalidad Cada vez que deba resolver un problema, trate de concentrarse en descubrir un problema más general que se esconde bajo el problema particular. Puede suceder que el problema generalizado sea más sencillo que el original. Una solución más general es potencialmente más reutilizable. Es inclusive posible que ya exista una solución general disponible. También es posible que la solución general sea invocada en varias circunstancias en la aplicación en lugar de tener varias soluciones particulares. Como contrapartida, una solución general puede ser menos eficiente (ejecución, uso de memoria, tiempo de desarrollo). Hay que evaluar la conveniencia de una solución general.

Ejemplo: Intercalar dos Archivos 1 2 3 4 6 11 5 8 9 14 Se desea intercalar dos archivos ordenados para obtener un único archivo ordenado. Se sabe que no existen claves duplicadas. Si se desarrolla un algoritmo que acepte también claves duplicadas, habrá una mayor cantidad de casos para reusar el algoritmo. Además existe un algoritmo para esta tarea que puede tomarse.

Generalidad e Industria La generalidad es esencial si se intenta desarrollar herramientas o paquetes para comercializar: más generalidad implica más aplicaciones y por lo tanto más potenciales compradores. Configurar un producto general es más fácil, rápido y barato que desarrollar una aplicación a medida. Tendencia natural en todas las áreas de la ingeniería: ¿ropa a medida? ¿autos a medida?

7. Incrementalidad Un proceso es incremental si se compone de pequeños pasos (incrementos). El objetivo se logra como una sucesión de aproximaciones construidas cada una sobre la anterior. En el software, un proceso de desarrollo es incremental si se aplica el modelo Evolutivo de desarrollo.

Proceso Incremental Seleccionar y desarrollar un subconjunto de la funcionalidad Obtener comentarios del usuario para proseguir con el desarrollo Entregar al usuario la funcionalidad desarrollada

Desarrollo Incremental Desarrollo controlado cuando los requerimientos no son estables o completamente claros. En la mayor parte de los casos es imposible tener todos los requerimientos al momento de comenzar el desarrollo. La clarificación de los requerimientos surge como consecuencia de la experimentación con el sistema. La retroalimentación permite desarrollar el sistema. Está íntimamente relacionado con la anticipación del cambio.

Incrementalidad de Cualidades Evolucionable Eficiencia Amigable Robustez Confiabilidad Cualidades incrementales Los estados intermedios del sistema pueden considerarse prototipos del sistema final. El control de la configuración resulta también esencial para administrar la incrementalidad.