Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Introducción a la ingeniería de software

Unidad 1 Fundamentos de Ing de SW
by

Lucero Zamora

on 4 February 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Introducción a la ingeniería de software

SOFTWARE
DEVELOPMENT
MANAGEMENT
APPLICATION
PROJECT
CODING
ENGINEERING
PRODUCT
COST
TIME
SOURCE
APPROACH
PROCESS
METHODOLOGY
QUALITY
PRODUCTS
MARKETING
PROBLEM
INFRASTRUCTURE
SERVICES
DATA
PLATFORM
UTILITY
COMPUTER
USERS
CATEGORY
SYSTEMS
TYPICALLY
CHARACTERISTICS
DELIVERY
INCLUDING
ARCHITECTURE
AMAZON
STORAGE
CLOUD
PROVIDER
COMPONENT
Fundamentos de Ingeniería de SW
Introducción a la Ingeniería de SW
Unidad 1
Ing. Lucero Zamora Merino
CLOUD
PROVIDER
COMPONENT
Qué es Ingeniería de SW???
La Ingeniería del Software es una disciplina o área de la informática o ciencias de la computación, que ofrece método y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo.
Definiciones
Ingeniería
La ingeniería es el estudio y la aplicación de las distintas ramas de la tecnología. El profesional en este ámbito recibe el nombre de ingeniero.
La actividad del ingeniero supone la concreción de una idea en la realidad. Esto quiere decir que, a través de técnicas, diseños y modelos, y con el conocimiento proveniente de las ciencias, la ingeniería puede resolver problemas y satisfacer necesidades humanas.
La ingeniería también supone la aplicación de la inventiva y del ingenio para desarrollar una cierta actividad. Esto, por supuesto, no implica que no se utilice el método científico para llevar a cabo los planes.
Software
Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación.
El software no son solo programas, sino todos los documentos asociados y la configuración de datos que se necesitan para hacer que estos programas operen de manera correcta. Un sistema de software consiste en diversos programas independientes, archivos de configuración que se utilizan para ejecutar estos programas, un sistema de documentación que describe la estructura del sistema, la documentación para el usuario que explica como utilizar el sistema y sitios web que permitan a los usuarios descargar la información de productos recientes.
El software de computadora es el producto que los ingenieros de software construyen y después mantienen en el largo plazo. El software se forma con:
1.- las instrucciones (programas de computadora) que al ejecutar se proporcionan las características, funciones y el grado de desempeño deseados;
2.- las estructuras de datos que permiten que los programas manipulen información de manera adecuada; y
3.- los documentos que describen la operación y uso de los programas.
Ingeniería
de
Software
Ingeniería del Software es el estudio de los principios y metodologías para desarrollo y mantenimiento de sistemas de software
Ingeniería del Software es la aplicación practica del conocimiento científico en el diseño y construcción de programas de computadora y la documentación asociada requerida para desarrollar y operar (funcionar) y mantenerlos. Así como también desarrollo de software o producción de software.
La Ingeniería del Software es el establecimiento y uso de principios solidos de la ingeniería para obtener económicamente un software confiable y que funcione de modo eficiente en maquinas reales.
Ingeniería de Software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación (funcionamiento) y mantenimiento del software: es decir, la aplicación de ingeniería al software
La Ingeniería de Software es una disciplina de la ingeniería que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema hasta el mantenimiento de este después que se utiliza.
La Ingeniería de Software es una disciplina que integra el proceso, los métodos, y las herramientas para el desarrollo de software de computadora
TAREA:
Áreas de estudio o investigación de la Ingeniería de SW
La solicitud del usuario
Las especificaciones
de sistemas
El diseño de ingeniería
El "entregable"
de producción
La integración del producto
Lo que el usuario
realmente necesitaba
Qué diferencias existen con otras áreas de estudio afines

Ingeniería
de
Software
Ingeniería en sistemas computacionales
La ingeniería de software no se trata de entender como funcionan las cosas a fondo. Se trata de entender teorías para hacer diseños de software funcional y entregarlo a tiempo o al menos intentarlo.
Las ciencias computacionales son un área totalmente diferente donde el objetivo contrario a la ingeniería de software si es entender como funcionan las cosas y en dado caso mejorarlas.
Ingeniería
informática
Ciencias
de la
computación
Los siete principios de la ingeniería de software
Aplica los fundamentos de la ciencia de la computación, la Ingeniería electrónica y la ingeniería de software, para el desarrollo de soluciones integrales de cómputo y comunicaciones, capaces de procesar información de manera automática.
Son aquellas que abarcan las bases teóricas de la información y la computación, así como su aplicación en sistemas computacionales.
TAREA
Realizar un ensayo sobre las diferencias entre la ingeniería de sw y sus áreas de estudio afines, resaltando ventajas, desventajas y características de cada una.
Estos principios son las bases centrales para desarrollar un software de manera exitosa
Rigor y formalidad
En cualquier proceso creativo existe la tendencia a seguir la inspiración del momento de forma no estructurada, el desarrollo de software es de por sí una actividad creativa
El rigor es un complemento necesario de la creatividad en todas las actividades de la ingeniería; únicamente a través de un enfoque riguroso podrán producirse productos más confiables.
El rigor no tiene por qué restringir la creatividad, por el contrario, puede potenciar la creatividad aumentando la confianza del ingeniero en los resultados de la misma, una vez que estos son analizados a la luz de evaluaciones rigurosas.
Un ingeniero debe saber cómo y cuándo ser formal si es requerido, entendiendo el nivel de rigor y formalidad que debe ser alcanzado dependiendo de la dificultad conceptual de la tarea y su criticidad, lo que puede variar para diferentes partes del mismo sistema.
Separación
de
intereses
Este principio permite enfrentarse a los distintos aspectos individuales de un problema de forma de concentrarse en cada uno por separado.
La primer forma en la que se pueden separar los distintos intereses es según el tiempo, lo que permite planificar las distintas actividades y eliminar el trabajo extra que implica cambiar de una a otra en forma no restringida.
Otra forma de separación de intereses es en términos de las cualidades que deberían tratarse por separado, por ejemplo podrían enfrentarse separadamente la eficiencia y correctitud de un programa.
Otro tipo importante de separación de intereses permite que distintas visiones del software sean analizadas en forma separada, por ejemplo al analizar los requerimientos de una aplicación podría ser de ayuda concentrarse por un lado en los datos que fluyen de una actividad a otra y por otro lado en el flujo de control que gobierna la sincronización de dichas actividades.
Modularidad

Un sistema complejo puede dividirse en piezas más simples llamadas módulos, un sistema compuesto de módulos es llamado modular
El principio de modularidad tiene tres objetivos principales:
capacidad de descomponer un sistema complejo,
capacidad de componerlo a partir de módulos existentes y
comprensión del sistema en piezas (o pedazos).
Abstracción
La abstracción es un proceso mediante el cual se identifican los aspectos relevantes de un problema ignorando los detalles
Lo que se abstrae y lo que se considera dependerá del propósito de la abstracción, por lo que podrán hacerse distintas abstracciones de la misma realidad cada una de las cuales proveerá una visión de la realidad que sirve para un propósito específico.

Ejercicio
Ejercicio
Anticipación
al
cambio
El software sufre cambios constantemente. Estos cambios pueden surgir por la necesidad de eliminar errores que no fueron detectados antes de liberar la aplicación, o por la necesidad de apoyar la evolución de la aplicación debido a nuevos requerimientos o cambios en los requerimientos existentes.
La anticipación al cambio es posiblemente el principio que más distingue al software de otros tipos de producción industrial.
Muchas veces una aplicación de software es desarrollada mientras sus requerimientos aún no están completamente comprendidos, al ser liberado y obtener retroalimentación del usuario debe evolucionar con nuevos requerimientos o cambios a los requerimientos ya existentes los cuales pueden tener distintos orígenes, por ejemplo debido a cambios en el ambiente de la organización

Generalidad
El principio de generalidad establece que al tener que resolver un problema se debe buscar un problema más general que posiblemente esté oculto tras el problema original
La generalidad es un principio fundamental si se tiene como objetivo el desarrollo de herramientas generales o paquetes para el mercado, ya que para ser exitosas deberán cubrir las necesidades de distintas personas

Incrementalidad
La incrementalidad caracteriza un proceso que se desarrolla en forma de pasos, en incrementos, alcanzando el objetivo deseado mediante aproximaciones sucesivas al mismo, donde cada aproximación es alcanzada a través de un incremento de la previa.
Cuando se construye una aplicación en forma incremental, los pasos intermedios pueden ser prototipos del producto final, esto es solamente una aproximación al mismo.
TAREA
1.- Por equipos y aplicando los 7 principios de la ing de sw desarrollar un software (planteamiento) para una caja registradora
Ciclo de vida
de una aplicación de software
Ciclo de muerte de una aplicación de software
Definición de objetivos
El análisis del Sistema se lleva a cabo con los siguientes objetivos en mente:
Análisis
Diseño
Codificación
Es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
Pruebas
Después de haberse implantado, el sistema sufrirá cambios sin duda alguna, ya sea por las condiciones cambiantes al interior de la organización donde se implantó, que generan nuevos requerimientos del sistema, porque en la operación se encontraron errores que es necesario corregir, o por los avances tecnológicos que presentan ventajas antes no existentes o conocidas y que vale la pena incluir en el sistema.
Validación
Mantenimiento y evolución
Las pruebas consisten en verificar que los requerimientos de los usuarios se cumplan total y satisfactoriamente, según lo detectado en la fase de análisis.
SOFTWARE
DEVELOPMENT
MANAGEMENT
APPLICATION
PROJECT
CODING
ENGINEERING
PRODUCT
COST
TIME
SOURCE
APPROACH
PROCESS
METHODOLOGY
QUALITY
PRODUCTS
MARKETING
PROBLEM
INFRASTRUCTURE
SERVICES
DATA
PLATFORM
UTILITY
COMPUTER
USERS
CATEGORY
SYSTEMS
TYPICALLY
CHARACTERISTICS
DELIVERY
INCLUDING
ARCHITECTURE
AMAZON
STORAGE
CLOUD
PROVIDER
COMPONENT
PRODUCT
METHODOLOGY
COST
Si la etapa de pruebas ha sido llevada a cabo debidamente, la implantación se realizará en tiempo y forma debidos, el requisito importante es que la planeación táctica y la gestión del proyecto se integren al proceso de puesta en marcha, desafortunadamente esto no ocurre así con frecuencia.
* Identificar las necesidades de los usuarios del sistema.
* Evaluar el concepto del sistema para establecer la viabilidad.
* Realizar un análisis técnico y económico.

* Asignar funciones al software, hardware, personal, datos y otros elementos del sistema.
* Establecer las restricciones de presupuesto y planificación temporal.
* Crear una definición fundamental del sistema.
El diseño debe lograr que:
Se implementen todos los requisitos explícitos contenidos en el modelo de análisis y acomodar los requisitos implícitos
Se cuente con una guía del sistema para leer y entender los que lo desarrollen, lo prueben y le mantengan.
Proporcionar una idea completa de lo que es el sistema, enfocando los dominios de datos, funcional y de comportamiento desde la perspectiva de la implementación.
El desarrollador aplica los siguientes pasos:
Identificación de Entidades (personas, objetos u organizaciones que un sistema necesita para producir o utilizar información), y Acciones (sucesos que afectan a las entidades).
Estructura de entidades.- Acciones que afectan a cada entidad, se ordenan por tiempo y se representan por diagramas.
Modelado inicial.- Las estructuras y acciones se representan como un modelo de proceso, se definen las conexiones entre el modelo y el mundo real
Planificación del sistema.- Se especifican las características de planificación de procesos.
Implementación.- El hardware y el software se integran como un proceso.
El objetivo de las pruebas de funcionalidad de los sistemas, se basa en las siguientes tres normas:
La prueba es un proceso de ejecución de programas con el objeto de descubrir un error.
Un buen caso de prueba es aquél que tiene una alta probabilidad de mostrar un error no descubierto hasta entonces.
Una prueba tiene éxito si y solo si descubre un error no detectado hasta el momento de la prueba.
TAREA
Investigar el funcionamiento de las pruebas de "caja negra" y "caja blanca"
La causa más importante por la cual se puede frustrar la implantación de un sistema es la falta de formalidad y la ausencia de una metodología de implantación que garantice la conversión completa del plan resultante de las pruebas previas en una realidad.
Es importante intentar hacer coincidir nuestros objetivos con aquello que la sociedad espera de nosotros.


Un objetivo es una meta o finalidad a cumplir para la que se disponen medios determinados.
La consecución de un determinado logro lleva implícita la superación de obstáculos y dificultades que pueden hacer naufragar el proyecto o, al menos, dilatar su concreción.
Un sistema implantado puede ser susceptible a mantenimiento preventivo o correctivo, los cambios se pueden deber a las siguientes razones:
Corrección
Se hace necesario mantenimiento correctivo por errores que los usuarios descubren al utilizar el sistema
Prevención
El mantenimiento preventivo, también llamado Reingeniería del Software, se debe conducir para permitir que el software sirva para las necesidades de los usuarios finales
Mejora
Conforme se utilice el sistema, el cliente/usuario puede descubrir la necesidad de funciones adicionales que van a producir beneficios.
Adaptación
Conforme pase el tiempo, es probable que cambie el entorno original, como las políticas de la empresa, las características externas de productos.
El mantenimiento preventivo hace cambios en el sistema, a fin de facilitar y/o hacer innecesarias la corrección, adaptación y mejoras
El mantenimiento perfectivo lleva al sistema más allá de sus requisitos funcionales originales.
Los cambios adaptativos permiten la adecuación del sistema a los cambios de su entorno.
Estos cambios pueden llegar a hacerse sumamente complicados, dependiendo de las facilidades de origen que el sistema proporcione y de la naturaleza misma de los cambios.
Cuando esta dificultad crece a tal grado que el beneficio por los cambios resulta menor que el esfuerzo necesario para realizarlos, es el momento de pensar en sustituir el sistema actual y desarrollar uno nuevo.
Cuando esto sucede debe aceptarse la desaparición o muerte del sistema
Full transcript