Parte 1: Introducción a la ingeniería de software

Capitulo 4: Ingeniería de requerimientos

4.1 Requerimientos funcionales y no funcionales

4.2 El documento de requerimientos de software

4.3 Especificación de requeimientos

4.4 Procesos de ingeniería de requerimientos

4.5 Adquisición y análisis de requerimientos

4.6 Validación de requerimientos

4.7 Administración de requerimientos

Capitulo 5: Modelado del sistema

5.5 Ingeniería dirigida por modelo

5.4 Modelos de comportamiento

5.3 Modelos estructural

5.2 Modelos de interacción

5.1 Modelos de contexto

Capitulo 3: Desarrollo ágil de software

3.4 Administración de un proyecto ágiles

3.5 Escalamiento de métodos ágiles

3.3 Programación extrema

3.2 Desarrollo dirigido por un plan y desarrollo ágil

3.1 Métodos ágiles

Este software lo desarrollaron grandes equipos que trabajan para diferentes compañías. A menudo los equipos estaban geográficamente dispersos y laboraban por largos períodos en el software.

Subtopic

Diseño de sistemas a la medida dentro de una organización

Desarrollo del producto

Capitulo 2: Procesos de software

2.4 El Proceso Unificado Racional

Es un ejemplo de un modelo de proceso moderno que se derivó del trabajo sobre el UML y el proceso asociado de desarrollo de software Unificado.

2.3 Cómo enfrentar el cambio

Los requerimientos del sistema varían conforme la empresa procura que el sistema responda a precisiones externas y se modifican las prioridades administrativas.

2.3.3 Modelo en espiral de boehm

El modelo en espiral combina el evitar el cambio con la tolerancia al cambio.

Cada ciclo en la espiral se divide en cuatro sectores:

Establecimiento de objetivos

Valoración y reducción del riesgo

Desarrollo y validacion

Planeación

2.3.2 Entrega incremental

Es un enfoque al desarrollo de software donde algunos de los incrementos diseñados se entregan al cliente y se implementan para usarse en un entorno operacional.

2.3.1 Creación del prototipo

Un prototipo es una versión inicial de un sistema de software que se usa para demostrar conceptos, tratar opciones de diseño y encontrar más sobre el problema y sus posibles soluciones.

En el proceso de ingeniería de requerimiento

En el proceso de diseño de sistemas

2.2 Actividades del procesos

Los desarrolladores de software usan en sus trabajos diferentes herramientas de software. Las pruebas son ejecutables y se desarrollan antes del programa en si. La evolución incluye la reestructuración o refactorización sustancial del sistema.

2.2.4 Evolución del Software

La flexibilidad de los sistemas de software es una de las razones principales por las que cada vez mas software se incorporan en los sistemas grandes y completo.

2.2.3 Validacion de Software

Su verificación y validación se crea para mostrar que un sistema cumple tanto como con sus especificación como con las expectativas del cliente.

Las etapas en el proceso de prueba son:

Prueba de desarrollo

Las personas que desarrollan el sistema ponen a prueba los componentes que constituyen el sistema.

Prueba del sistema

Los componentes del sistema se integran para crear un sistema completo.

Prueba de aceptación

Esta es la etapa final en el proceso de prueba, ante de que el sistema se acepte para uso operacional.

2.2.2.Dieseño e implementación del software

Es el proceso de convertir una especificación del sistema en un sistema ejecutable. Un diseño de software se entiende como una descripción de la estructura del software que se va a implementar, los modelos y las estructuras de datos utilizados por el sistema

2.2.1 Especificación del software

La especificación del software o la ingeniería de requerimientos consiste en el proceso de comprender y definir que servicio que requieres del sistema.

2.1 Modelos de proceso de software

Cada modelo del proceso representa a otros desde una particular perspectiva y, por lo tanto, un modelo de actividad del proceso muestra las actividades y sus secuencias, pero quizás sin presentar los roles de las personas que intervienen en esas actividades.

Ingeniería De Software Orientada A La Reutilización

En la mayoría de los proyecto de software hay cierta reutilización de software. Sucede con frecuencia de manera informal, cuando las personas que trabajan en el proyecto conocen diseños o códigos que son similares a los que se requieren. Los enfoques orientados a la reutilización se apoyan en una gran base de componentes de software reutilizado y en la integración de marcos para la composición de dichos componentes.

Dichas Etapas Son:

Análisis de componente

Dada las especificaciones de requerimiento, se realiza una búsqueda de componentes para implementar dicha especificación.

Modificación de requerimiento

Durante esta etapa se realizan los requerimientos usando información de los componentes descubiertos.

Diseño de sistema con reutilización

Durante esta fase se diseña el marco conceptual del sistema o se reutiliza un marco conceptual existente.

Desarrollo e integracion

Se diseña el software que no puede procurarse de manera externa, y se integran los componentes y los sistemas COTS para crear el nuevo sistema

Subtopic

Desarrollo Incremental

Se base en la idea de diseñar un implementación inicial, exponer esta al comentario del usuario, y luego desarrollar en sus diversas versiones hasta producir un sistemas adecuado.

Tiene tres beneficios importantes:

1. Se reduce el costo de adaptar los requerimientos cambiante del cliente

2. Es mas sencillo obtener retroalimentación del cliente sobre el trabajo de desarrollo que se realizo

3. Es posible que sea mas rápida la entrega e implementación de software útil al cliente, aun si no se ha incluido todas las funcionalidad.

Modelo En Cascada

El modelo en cascada es un ejemplo de un proceso dirigido por un plan; en principio, usted debe planear y programar todas las actividades del proceso, antes de comenzar a trabajar con ellas.

Las principales etapas de modelo en cascadas

Análisis y definición de requerimientos

Diseño del sistemas y del Software

Implementación y prueba de unidad

Integración y prueba de sistema

Operación y mantenimiento

Capitulo 1: Introducción

1.3 Estudios de caso

Un sistema de adquisición de datos basados en sensores

Es un sistema cuyo principal objetivo es recolectar datos de un conjunto de sensores y procesar esos datos de alguna forma.

Un sistema de información

Es un sistema donde software controla un dispositivo de hardware y está embebido en dicho dispositivos.

Un sistema embebido

Es un sistema cuyo principal propósito es gestionar y dar acceso a una base de datos de información.

1.2 Ética en la ingeniería de software

La ingeniería de software se realiza dentro de un marco social y legal que limita la libertad de la gente que trabaja en dicha área. Sin embargo, existen áreas donde los estándares de comportamiento aceptable no están acostados por la legislación, sino por la noción más difusa de responsabilidad profesional.

Algunas de ellas son:

1. Confidencialidad

Por lo general, debe respetar la confidencialidad de sus empleadores o clientes sin importar si se firmó o no un acuerdo formal sobre la misma.

2. Competencia

No debe desvirtuar su nivel de competencia.

3. Derechos de propiedad intelectual

Tiene que conocer las leyes locales que rigen el uso de la propiedad intelectual, como las patentes y el copyright.

4. Mal uso de computadoras

No debe emplear sus habilidades técnicas para usar incorrectamente las computadoras de otros individuos.

1.1 Desarrollo de software profesional

1.1.1 Ingeniería de software

La ingeniería de software es una disciplina de ingeniería que se interesa por los aspectos de la producción de software, desde las primeras etapas d la especificación del sistema hasta el mantenimiento del sistema después de que se pone en operación.

Características del producto

Mantenimiento

El software debe escribirse de tal forma que pueda evolucionar para satisfacer las necesidades cambiantes de los clientes.

Confiabilidad

La confiabilidad del software incluye un rango de características que abarcan fiabilidad, seguridad y protección.

Eficiencia

El software no tiene que desperdiciar los recursos del sistema, como la memoria y los ciclos del procesador.

Aceptabilidad

El software debe ser aceptable al tipo de usuarios para quienes se diseña

1.1.2 Diversidad de la ingeniería de software

La ingeniería de software es un enfoque sistemático para la producción de software que toma en cuenta los temas prácticos de costo, fecha y confiabilidad, así como las necesidades de clientes y fabricantes de software.

Tipos de aplicación

Aplicaciones independientes

Trata de sistemas de aplicaciones que corren una computadora local.

Aplicaciones interactivas basadas en transacción

Consiste en aplicaciones que se ejecutan en una computadora remota ya las que los usuarios acceden desde sus propias PC o terminales.

Sistema de control embebido

Se trata de sistemas de control de software que regulan y gestionan dispositivos

Sistema de procesamiento en lotes

Son sistemas empresariales que se diseñan para procesar datos en grandes lotes ( batch).

Sistema de entretenimiento

Son sistemas para uso sobre todo personal, que tienen la intención de entretener al usuario.

Sistema ara modelado y simulación

Éstos son sistemas que desarrollan científicos e ingenieros para modelar procesos o situaciones físicas.

Sistema de adquisición

Son sistemas que desde su entorno recopilan datos usando un conjunto de sensores

Capitulo 6: Diseño arquitectónico

6.1 Decisiones en el diseño arquitectónico

6.2 Vistas arquitectónicas

6.3 Patrones arquitectónicos

6.4 Arquitecturas de aplicación

Capitulo 7: Diseño e implementación

7.1 Diseño orientado a objetos con el uso de UML

7.2 Patrones de diseño

7.3 Conflictos de implementación

7.4 Desarrollo de códigos abierto

Capitulo 8: Pruebas de software

8.1 Pruebas de desarrollo

8.2 desarrollo dirigido por pruebas

8.3 Pruebas de versión

8.4 Pruebas de usuarios

Capitulo 9: Evolución del software

9.1 Procesos de evolución

9.2 Evolución dinámica del programa

9.3 Mantenimiento del software

9.4 Administración de sistemas heredados

La ingeniería de software busca apoyar el desarrollo de software profesional, en lugar de la programación individual. incluye de los cuales son normalmente relevantes para el desarrollo de software personal. Con el objetivo de ayudarlo a obtener una amplia visión de lo que trata la ingeniería de software.

Un proceso de software es una serie de actividades relacionadas que conduce a la elaboración de un producto de software. Existen muchos diferentes procesos de software, pero todos deben incluir cuatro actividades que son fundamentales para la ingeniería de software:

Validación del software: Hay que validar el software para asegurarse de que cumple lo que el cliente quiere.

Evolución del software: El software tiene que evolucionar para satisfacer las necesidades cambiantes del cliente

Diseño e implementación del software: Debe desarrollarse el software para cumplir con las especificaciones.

Especificación del software: Tienen que definirse tanto la funcionalidad del software como las restricciones de su operación.

Los procesos de desarrollo del software rápido se diseñan para producir rápidamente un software útil. Aun cuando existen muchas enfoques para el desarrollo de software rápido, comparten algunas características fundamentales:

El sistemas se desarrolla en diferentes versiones.

La interfaces de usuario del sistema se desarrollan usando con frecuencia un sistema de elaboración interactivo.

Los procesos de especificación, diseño e implementación están entrelazados.