SWEBOK

10
INGRNIERIA DEL SOFTWARE Un enfoque desde la guía SWEBOK CAPITULO I La guía SWEBOK surge por el deseo de IEEE de crear una acreditación para el ingeniero de software. Los objetivos fundamentales la guía SWEBOK son: 1. Caracterizar los conocimientos del cuerpo de conocimiento de la ingeniería del Software. 2. Promover una visión consistente y universal de la disciplina. 3. Establecer las diferencias entre la ingeniería del software y otras disciplinas relacionadas, como las ciencias de la computación, la gestión de proyectos, o las matemáticas. 4. Servir de base para la certificación de profesionales. La guía SWEBOK describe las áreas principales de la ingeniería del software, a cada una de las cuales dedica un capıtulo separado (denominados áreas de conocimiento), donde además se resumen las referencias clave de cada área. En una conferencia de desarrolladores de software, uno de los ponentes lanzó la siguiente pregunta a los asistentes: —“Si estuviesen ustedes subiendo a un avión y les dijeran que el software de control del aparato fue desarrollado por el equipo de programadores de su empresa, ¿quién de los presentes desembarcaría de inmediato?. Entre el bosque de manos alzadas solo una persona permaneció sin moverse. El ponente se dirigió a esa persona para preguntarle qué haría el, quien con un aire tranquilo replicó: —“No me preocuparía en absoluto, con el software de mi empresa es muy poco probable que el avión pudiese ni siquiera despegar”. LA CRISIS DEL SOFTWARE

Transcript of SWEBOK

Page 1: SWEBOK

INGRNIERIA DEL SOFTWARE

Un enfoque desde la guía SWEBOK

CAPITULO I

La guía SWEBOK surge por el deseo de IEEE de crear una acreditación para el ingeniero de software.

Los objetivos fundamentales la guía SWEBOK son:1. Caracterizar los conocimientos del cuerpo de conocimiento de la ingeniería del

Software.2. Promover una visión consistente y universal de la disciplina.3. Establecer las diferencias entre la ingeniería del software y otras disciplinas

relacionadas, como las ciencias de la computación, la gestión de proyectos, o las matemáticas.

4. Servir de base para la certificación de profesionales.

La guía SWEBOK describe las áreas principales de la ingeniería del software, a cada una de las cuales dedica un capıtulo separado (denominados áreas de conocimiento), donde además se resumen las referencias clave de cada área.

En una conferencia de desarrolladores de software, uno de los ponentes lanzó la siguiente pregunta a los asistentes: —“Si estuviesen ustedes subiendo a un avión y les dijeran que el software de control del aparato fue desarrollado por el equipo de programadores de su empresa, ¿quién de los presentes desembarcaría de inmediato?. Entre el bosque de manos alzadas solo una persona permaneció sin moverse. El ponente se dirigió a esa persona para preguntarle qué haría el, quien con un aire tranquilo replicó: —“No me preocuparía en absoluto, con el software de mi empresa es muy poco probable que el avión pudiese ni siquiera despegar”.

LA CRISIS DEL SOFTWARE

El término aparece desde los años sesenta, para hacer referencia a ciertos problemas específicos y persistentes de la ingeniería del software.

Algunos autores han llegado a considerar estos problemas como una enfermedad crónica (en lugar de una simple crisis) para resaltar el carácter persistente de los mismos. Podemos clasificar estos problemas como:

Page 2: SWEBOK

Problemas asociados al desarrollo, como los retrasos en los plazos de los proyectos, o la baja productividad de los desarrolladores.

Problemas de uso de los productos finales, como por ejemplo deficiencias de calidad.

Software es el conjunto completo de programas, procedimientos y documentación relacionada que se asocia con un sistema, y especialmente con un sistema de computadora. En un sentido específico, el software son los programas de computadora.

Sistematicidad, disciplina y cuantificación Una actividad es sistemática cuando es metódica en cuanto al procedimiento o al plan. Una actividad es disciplinada cuando está sujeta al control con respecto a ciertos

estándares, entendiendo el término “estándar” en su acepción más genérica de norma o patrón, y no como especiación formal respaldada por un organismo de estandarización.

Decimos que una actividad es cuantificable si tanto su realización como sus resultados pueden medirse. Tanto el producto final del desarrollo, como el propio proceso de desarrollo de software en sí pueden ser, y normalmente son, sometidos a medición con diferentes fines.

Lo dicho reafirma la noción de que la programación como actividad casual o esporádica no puede ser considerada ingeniería del software, lo que no quiere decir que dicha actividad no tenga valor o que no pueda producir resultados interesantes

CONCEPTOS BASICOS DE LA INGENIERIA DE SOFTWARE

Como toda ingeniería, donde se crean objetos con una cierta función, la ingeniería del software trata fundamentalmente de actividades llevadas a cabo por personas (ingenieros, pero también en cierta medida, usuarios u otros intervinientes) que producen, usan o modifican artefactos. Por ello, hay considerar también elementos tales como métodos, especiaciones y modelos, entre otros.

La Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, la operación y el mantenimiento del software.

Una actividad es un proceso que tiene lugar en el tiempo y en el espacio, y en el cual un agente actúa con unos objetivos determinados. Las actividades en la ingeniería del software abarcan por tanto cualquier acción con un propósito claro dentro de esta ingeniería, lo que incluye actividades de gestión, producción, comunicación y documentación.

Page 3: SWEBOK

Un artefacto es algo tangible creado con un propósito práctico. Son artefactos de la ingeniería del software todos aquellos elementos creados en actividades propias de la disciplina, tales como el código, los documentos o los diagramas, entre otros.

Un método, en sentido general, es la especificación de una secuencia de acciones orientadas a un propósito determinado. En el área de la ingeniería del software, los métodos determinan el orden y la forma de llevar a cabo las actividades.

En la ingeniería del software, se denomina metodología a un conjunto de métodos coherentes y relacionados por unos principios comunes. En sentido general se definiría como la “ciencia del método”, es decir, el estudio de los métodos de una disciplina o actividad

Una especiación es una descripción detallada y precisa de algo existente (o que existirá) o de una cierta situación, presente o futura. En la ingeniería del software, una especiación del software que se desea construir da lugar a especificaciones ejecutables denominadas programas de computadora.

El ciclo de vida de un producto o proyecto software es la evolución del mismo desde el momento de su concepción hasta el momento en que deja de usarse, y puede describirse en función de las actividades que se realizan dentro de él.

Un proceso software es un conjunto coherente de políticas, estructuras organizativas, tecnologías, procedimientos y artefactos que se necesitan para concebir, desarrollar, implantar y mantener un producto software.

De hecho, los modelos de ciclo de vida no son otra cosa que modelos de procesos, pero con una diferencia de énfasis, pues un modelo de ciclo de vida solamente describe las fases fundamentales, y es por tanto una abstracción de muy diversos procesos

CAPITULO II

MODELOS Y PROCESOS

El objetivo general de este capítulo es introducir el concepto de proceso de software en el sentido de su definición, uso, evaluación, medida, gestión, cambio y mejora. El software se ha convertido en las últimas décadas en un elemento fundamental en las sociedades modernas. Junto a esa importancia creciente, se ha generalizado una preocupación por la calidad del software que ha fomentado el desarrollo de diferentes áreas de estudio en la ingeniería del software.

Page 4: SWEBOK

Un proceso, entendido de manera general, es una serie de pasos que incluyen actividades,Restricciones y recursos que resultan en un producto determinado con ciertas características.

Un proceso es una secuencia de pasos que se lleva a cabo para un propósito determinado.IEEE

Un proceso proporciona, además de otros beneficios, facilidad de mantenimiento, capacidad de seguimiento y consistencia. Facilidad de mantenimiento, la capacidad de seguimiento, por su parte, hace que se puedan medir los productos de las actividades, y la consistencia facilita la homogeneidad en la documentación y el diseño.

Puesto que generalmente se considera que dichos atributos contribuyen a la calidad de un software, se resume que la calidad en el proceso resulta en calidad en el producto.

Un proceso de software es un conjunto coherente de políticas, estructuras organizativas, Tecnologías, procedimientos y artefactos que se necesitan para concebir, desarrollar, implantar y mantener un producto software.

Es necesario clarificar la diferencia entre proceso de software y proyecto de software, pues a menudo se confunden algunos de los términos que aparecen en ella. Los términos proceso y proyecto en relación al software, o el término ciclo de vida, que pueden ser aplicados a diferentes conceptos, resultan confusos y a menudo se usan incorrectamente en la literatura.

Un proyecto es un esfuerzo que se lleva a cabo una sola vez, que tiene objetivos bien definidos y que se produce dentro de un plazo determinado.

Un proyecto de ingeniería del software es un proyecto cuyo objetivo es obtener un producto de software que satisfaga ciertos requisitos, en el plazo previsto y dentro del presupuesto.

El ciclo de vida de un desarrollo de software es el periodo de tiempo que comienza cuando se toma la decisión de desarrollar un producto de software y que concluye cuando se entrega el software. Por lo anterior se considera que proceso de software, proceso de desarrollo y proceso de ciclo de vida del software son términos sinónimos

Método vs. Metodología Aunque método y metodología son generalmente utilizados como sinónimos, el términoMetodología hace en realidad referencia al estudio de los métodos.

El concepto de método en ingeniería del software es muy general, mucho más que el de proceso de ciclo de vida. Un método en ingeniería del software impone una estructura a ciertas actividades de ingeniería con el objetivo de hacer esas actividades sistemáticas y, en definitiva, más eficaces.

Page 5: SWEBOK

Los métodos por lo general proporcionan ciertas notaciones, un vocabulario específico, procedimientos para llevar a cabo ciertas tareas, y directrices para evaluar tanto la ejecución de las actividades como el producto. Pero hay métodos que cubren todo el ciclo de vida, y otros que son específicos de una fase o de una actividad en concreto. Por ello, diferenciaremos el concepto de método del de proceso de ciclo de vida.

Los modelos de proceso del ciclo de vida son definiciones de alto nivel de las fases por las que transcurren los proyectos de desarrollo software. No son guías concretas y detalladas, sino definiciones generales que muestran las dependencias entre las fases. Son ejemplos de estos modelos el ciclo de vida en cascada, el ciclo de vida en espiral o el desarrollo basado en prototipos. A partir de uno de estos modelos, se pueden especificar procesos de ciclo de vida del software más concretos y detallados.

El Proceso Unificado se puede adaptar el proceso de cualquier organización en particular, es un marco general de procesos basado en un pequeño conjunto de principios que se consideran fundamentales en todo proceso. Estos principios son los siguientes:

Iterativo e incremental. Las actividades se realizan en ciclos de desarrollo y el resultado de cada uno de esos micro--ciclos es un incremento del sistema

Dirigido por los casos de uso. Los casos de uso, que no son otra cosa que especificaciones de requisitos funcionales, se utilizan como guía de todas las actividades del proceso.

Centrado en la arquitectura. La arquitectura software es el diseño de alto nivel que constituye el armazón del sistema. El proceso se centra en la construcción temprana de un prototipo arquitectónico que si bien implementa de forma completa sólo un pequeño subconjunto de la funcionalidad, permite descubrir los problemas técnicos fundamentales al principio del proyecto.

Orientado a los riesgos. El proceso requiere identificar y priorizar los riesgos del proyecto

Las fases del Proceso Unificado, en su secuencia temporal, son las siguientes: Comienzo o incepción Elaboración: En esta fase se identifican y especifican la mayoría de los requisitos Construcción Transición: En esta fase se entrega el software a los usuarios, e incluye la formación

asistencia necesaria.

ASPECTOS IMPORTANTES DE LOS PROCESOS DE SOFTWARE

No existe un único proceso de software que determine la forma correcta de hacer las cosas independientemente de la organización, el proyecto y las circunstancias

Hay que diferenciar los procesos entendidos como ``las actividades de desarrollo que realmente ocurren en una organización X'' de la discusión general sobre cómo son y qué propiedades tienen los distintos tipos de procesos.

Los procesos no son sólo para las grandes organizaciones. Los procesos son útiles también para las pequeñas organizaciones y, debidamente adaptados, también lo son para los pequeños desarrollos

Page 6: SWEBOK

MODELOS DE CICLO DE VIDA DEL SOFTWARE

Modelo en CascadaEl modelo del ciclo de vida en cascada es tal vez el más ampliamente difundido dentro de los métodos clásicos, y si bien no existe una única formulación del mismo, su característica distintiva es la de llevar a cabo distintas fases de desarrollo en secuencia, comenzando cada una de ellas en el punto en que terminó la anterior.

Modelo en V El modelo del ciclo de vida ``con forma de V'' es una evolución del modelo en cascada en el que se enfatizan las actividades de verificación y validación.

Modelos de proceso basados en prototipos Un prototipo software es un modelo ejecutable de un sistema futuro que implementa sólo una pequeña parte de la funcionalidad, pero permite a los clientes, usuarios y desarrolladores adquirir experiencia con la arquitectura y la funcionalidad. Esto posibilita la evaluación temprana de riesgos evitando que los fallos o discordancias con las necesidades reales se manifiesten al final del proceso, cuando se ha gastado la mayor parte del esfuerzo del mismo.

Modelo en espiral A menudo se considera que el modelo del ciclo de vida en espiral reúne las mejores características del uso de prototipos y de los modelos de ciclo de vida en cascada

Procesos ágiles Se denomina métodos de desarrollo ágiles a un conjunto de métodos que enfatizan el enfoque iterativo, la adaptabilidad del proceso y la colaboración. Los métodos ágiles se caracterizan además por el hecho de que reducen la documentación y los procedimientos al mínimo. Por ello, se les suele contraponer con métodos anteriores en los que se produce una gran profusión de documentos y comprobaciones formales, a los que a veces se les aplica la metáfora de métodos ``de gran ceremonia''.No siguen ciertas normas de disciplina pero sí utilizan la planificación.

Procesos basados en componentes Un componente es una pieza de software auto--contenida, que ofrece unos servicios definidos en sus interfaces y que está preparado para integrarse en otras aplicaciones.Los componentes pueden venderse de forma separada, o, dentro de una misma organización, puede reutilizarse un componente desarrollado en proyectos anteriores para así reducir el tiempo de desarrollo de los proyectos en curso.

CAPITULO IIIMEDICION

Los objetivos fundamentales de este capítulo se centran en poner los cimientos de una actividad, la medición, necesaria para todas las demás actividades del ciclo de vida del software.

Dentro de la definición de la Ingeniería de software se dice que es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, la operación y el mantenimiento del

Page 7: SWEBOK

software. La medición está pues inexorablemente ligada como una actividad necesaria a lo largo de todo el ciclo de vida del software

MedidaEs la asignación de un símbolo o número resultado de una medición a una entidad para caracterizar un atributo.Es la evaluación cuantitativa del grado en el cual un producto o proceso software posee un atributo determinado.

ESCALAS DE MEDICIONConjunto de valores que permite establecer relaciones entre medidas. Con frecuencia dicho conjunto es continuo, está ordenado y viene delimitado por un punto inicial y otro final.

Escala nominalAquella formada por categorías entre las cuales no existe ningún orden, por lo que la única relación que se puede aplicar es la de igualdad. Por ejemplo, la escala nominal para determinar el sexo.

Escala ordinalAquella en que se definen categorías pero, a diferencia de la escala nominal, existe una relación de orden "es menor que" entre ellas.