mi proyecto

57
UNIVERSIDAD DE OCCIDENTE UNIDAD LOS MOCHIS SEMINARIO DE INVESTIGACION LIC. SISTEMAS COMPUTACIONALES METODOLOGÍA UTILIZADA EN LA ELABORACIÓN DE SOFTWARE EN LA REGIÓN DE LOS MOCHIS PRESENTAN: LÓPEZ MARTINEZ NEIBA KARELY RUIZ PACHECO LUIS ENRIQUE ASESOR: M.C. GENARO EFRAÍN GÁMEZ BUSTILLOS PROF: M.C. FRANCISCO RODIMIRO GUZMÁN DICOCHEA Los Mochis, Sinaloa a 13 de Julio de 2010

Upload: enrique-ruiz

Post on 24-Jul-2015

144 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mi Proyecto

UNIVERSIDAD DE OCCIDENTE

UNIDAD LOS MOCHIS

SEMINARIO DE INVESTIGACION

LIC. SISTEMAS COMPUTACIONALES

METODOLOGÍA UTILIZADA EN LA ELABORACIÓN DE SOFTWARE EN LA REGIÓN DE LOS MOCHIS

PRESENTAN:

LÓPEZ MARTINEZ NEIBA KARELY

RUIZ PACHECO LUIS ENRIQUE

ASESOR: M.C. GENARO EFRAÍN GÁMEZ BUSTILLOS

PROF: M.C. FRANCISCO RODIMIRO GUZMÁN DICOCHEA

Los Mochis, Sinaloa a 13 de Julio de 2010

Page 2: Mi Proyecto

Í N D I C E

Dedicatoria .............................................................................................................. I Agradecimiento ......................................................................................................... II Resumen .................................................................................................................. III Summary .................................................................................................................. IV Capítulo I Metodología

1.1 Planteamiento ...................................................................................... 01 1.2 Justificación .......................................................................................... 03 1.3 Objetivos .............................................................................................. 04 1.4 Metodología ......................................................................................... 05

Capítulo II Marco teórico 2.1 Antecedentes históricos ...................................................................... 06 2.2 Metodologías de la programación ....................................................... 08

2.2.1 Metodología, análisis y diseño estructurado .............................. 08 2.2.2 Metodología, análisis y diseño orientado a objetos ................... 09

2.3 Ingeniería del software ......................................................................... 10 2.3.1 Procesos de desarrollo de software .......................................... 14

2.3.1.1 Modelo en cascada ................................................... 15 2.3.1.2 Modelo de desarrollo evolutivo.................................. 15 2.3.1.3 Modelo incremental ................................................... 16 2.3.1.4 Modelo en espiral ...................................................... 17 2.3.1.5 Modelo espiral win-win .............................................. 18 2.3.1.6 Modelo de desarrollo concurrente ............................. 19 2.3.1.7 Desarrollo basado en componentes.......................... 20

2.3.2 Métodos de desarrollo de software ............................................ 21 2.3.3 Herramientas para la creación de software ............................... 22

2.4 Un enfoque de calidad ......................................................................... 26 2.4.1 Calidad ...................................................................................... 26

2.4.1.1 Control de calidad ..................................................... 28 2.4.1.2 Garantía de calidad ................................................... 28 2.4.1.3 Coste de calidad ....................................................... 29

2.4.2 Aseguramiento de la calidad del software ................................. 30 2.4.3 Gestión de la calidad del software ............................................. 30 2.4.4 Sistema de calidad .................................................................... 31 2.4.5 Certificación de la calidad .......................................................... 32

2.4.5.1 Capability Maturity Model Integration ........................ 32 2.4.5.2 Modelo de procesos para la industria

del software ............................................................... 33 2.4.6 Factores que determinan la calidad del software ...................... 35

Capítulo III Desarrollo de la investigación 3.1 Metodología de desarrollo ..................................................................... 37 3.2 Presentación, análisis e interpretación de resultados .......................... 39

Capítulo IV Conclusiones y recomendaciones ........................................................ 44 Bibliografía ................................................................................................................ 47

Page 3: Mi Proyecto

I

DEDICATORIA

A MIS PADRES:

A ustedes les dedico estas palabras como un reconocimiento al esfuerzo y

apoyo incondicional que han brindado en el transcurso de mi vida. Gracias

por enseñarme lo que han recogido a su paso por la vida y por darme la

libertad de elegir mi futuro; por brindarme con las manos abiertas su apoyo

y confianza en mi preparación, porque hoy recibo su más valiosa herencia:

Mi Profesión.

Page 4: Mi Proyecto

II

AGRADECIMIENTO

A DIOS:

A ti agradezco que hayas dado la vida y salud, así como la oportunidad de disfrutar y compartir con mi familia y amigos una de las etapas más felices

de mi vida, y porque nunca me dejaste flaquear ni perder la fe en los momentos más difíciles.

Profesor:

A ti querido maestro que llevas en el pensamiento, la enseñanza como escudo tu comprensión y talento. Bendito sea tu trabajo una bella y noble misión, predicando con tu ejemplo a generación tras generación. Tienes esa gran virtud de entregarte en cuerpo y alma, yéndose tu juventud en favor de la enseñanza. Nos enseñas muchas cosas grandes conocimientos, experiencias propias o ajenas sin escatimar sufrimientos. Eres un gran confidente un entrañable amigo, algunas veces madre o padre que nos enseña el camino. Tienes grandes satisfacciones cuando aquilatan tu servicio, también algunas decepciones que son gajes de tu oficio. Hoy te digo gracias por todo lo que me has dado, es un trozo de tu vida que a todos nos has convidado. Espero seguir tus pasos quizá no sea en un salón, pero cualquiera que sea mi empleo vivirás en mi corazón.

. M.C. Genaro Efraín Gámez Bustillos

M.C. Francisco Rodimiro Guzmán Dicochea

Page 5: Mi Proyecto

III

RESUMEN

La ingeniería de software es el proceso de construir aplicaciones de tamaño o alcance

prácticos, en las que predominan el esfuerzo del software y que satisface los

requerimientos de funcionalidad, desempeño y calidad.

El software se ha convertido en una tecnología indispensable en los negocios, la ciencia

y la ingeniería; permitiendo la creación de nuevas tecnologías.

Un elemento clave de cualquier proceso de ingeniería es la medición. Empleamos

medidas para entender mejor los atributos de los modelos que creamos. Pero,

fundamentalmente, empleamos las medidas para valorar la calidad de los productos de

ingeniería o de los sistemas que construimos. Intentando obtener un conjunto de

medidas indirectas que dan lugar a estándares que proporcionan una identificación de

la calidad de algún tipo de representación del software.

Existen organismos reguladores de software que proporcionan las herramientas para

producir software de calidad permitiendo detectar los flancos débiles de los procesos y

fortaleciéndolos en forma homogénea e íntegra, mediante la aplicación de mejoras, en

aquellas áreas consideradas poco eficientes. Proporcionando una guía para mejorar los

procesos de una organización y la habilidad para gestionar el desarrollo, adquisición y

mantenimiento de productos o servicios.

Esta investigación pretende mostrar la situación actual de desarrollo de software en la

ciudad de Los Mochis ya que como estudiantes teníamos la inquietud de conocer y

exponer el proceso de desarrollo y los requerimientos de calidad utilizados en la

elaboración de software.

Page 6: Mi Proyecto

IV

SUMMARY

The engineering of software is the process of constructing applications of size or scope

practical, in that they predominate over the effort of the software and that satisfies the

requests of functionality, performance and quality.

The software has turned into an indispensable technology into the business, the

science and the engineering; allowing the creation of new technologies.

A key element of any process of engineering is the measurement. We use

measurements to understand better the attributes of the models that we create. But,

fundamentally, we use the measurements to value the quality of the products of

engineering or of the systems that we construct. Trying to obtain a set of indirect

measurements that lead to standards that provide an identification of the quality of some

type of representation of the software.

There exist regulatory organisms of software that provide the hardware to produce

quality software allowing to detect the weak flanks of the processes and strengthening

them in homogeneous and complete form, by means of the application of progress, in

those slightly efficient considered areas. Providing a handlebar to improve the processes

of an organization and the skill to manage the development, acquisition and

maintenance of products or services.

This investigation tries to show the current situation of development of software in the

city of Los Mochis since as students we had the worry of knowing and exhibiting the

process of development and the quality requests used in the making of software.

Page 7: Mi Proyecto

CAPÍTULO I

METODOLOGÍA

Page 8: Mi Proyecto

1

1.1 Planteamiento

Hoy en día, el termino tecnología informática se ha ampliado para abarcar

muchos aspectos que se refieren a la computadora, las cuales se componen por

hardware que es la parte física de la misma y el software que es un conjunto de

programas y procedimientos que se necesitan para hacer posible la realización

de una tarea específica.

En la actualidad, el software de computadoras es la tecnología individual más

importante en el ámbito mundial. Nadie en la década de 1950 podría haber

predicho que el software se convertiría en una tecnología indispensable en los

negocios, la ciencia y la ingeniería; tampoco que el software permitiría la

creación de tecnologías nuevas (Ing. Genética), la extensión de tecnologías

existentes (Telecomunicaciones), el fin de tecnologías antiguas; que el software

sería la fuerza conductora detrás de la revolución de las computadoras

personales.

El software de las computadoras se divide en software de base e ingeniería de

software. El software de base controla y respalda en cierto modo las categorías

del sistema operativo y la interfaz grafica de usuario, además el software de base

ahorra al usuario el tener que preocuparse por las partes de la memoria del

computador que contiene el documento y otros procesos más.

La ingeniería de software es el proceso de construir aplicaciones de tamaño o

alcance prácticos, en las que predominan el esfuerzo del software y que

satisface los requerimientos de funcionalidad y desempeño1.

Por lo que este proyecto pretende mostrar un panorama de los aspectos

considerados más importantes en la elaboración de software, así como también

1 Braude Ingeniería de software una perspectiva orientada a objetos

Page 9: Mi Proyecto

2

los estándares y métricas utilizados para la creación del mismo en la región de

Los Mochis, Sinaloa.

Anteriormente las compañías locales productoras de software no implementaban

estándares ya que programaban de acuerdo a las necesidades de los clientes, y

dadas las condiciones actuales donde el software se ha convertido en un ente

predominante en la toma de decisiones y dado que existe software para

cualquier campo del conocimiento.

Con el cambio de la sociedad del conocimiento y originado por la globalización

de la información nace un área de especialidad a nivel mundial denominada

ingeniería de software.

Esta nueva área del conocimiento en el desarrollo de software se creó con el fin

de estandarizar y normar el software a nivel mundial.

Por lo expuesto anteriormente consideramos relevante para efectos de esta

investigación dar respuesta a las siguientes interrogantes, planteándose como

pregunta principal: ¿Cuál es el panorama actual que existe en la creación de

software en Los Mochis? y como complementarias: ¿Cuáles son las

metodologías utilizadas para la elaboración de software?, ¿Cuáles son los

factores a considerar en la calidad del software?

Page 10: Mi Proyecto

3

1.2 Justificación

El impacto que han tenido las computadoras en el mundo, es tan profundo que

vale la pena conocer la manera que ha evolucionado esta tecnología, esta

relación estrecha entre persona, software y empresa, no se pueden concebir el

uno sin el otro, por esta razón se trata de dar todas las referencias posibles del

software y su ingeniería así como sus estándares y métricas utilizados para su

creación en Los Mochis.

Este proyecto se realiza con el propósito de describir y mostrar el panorama

actual del software en la región de los Mochis y hacer una comparativa de los

métodos, estándares y métricas utilizadas en las diferentes casas productoras de

software en Los Mochis.

Page 11: Mi Proyecto

4

1.3 Objetivos

Generales:

Mostrar y analizar el panorama actual en la elaboración y construcción de

software en la región de Los Mochis, Sinaloa.

Específicos:

Describir las metodologías para elaboración de software.

Analizar las consideraciones de la calidad de la ingeniería del software.

Page 12: Mi Proyecto

5

1.4 Metodología

Para llevar a cabo el desarrollo de esta investigación el método a seguir será el

siguiente:

Primeramente se realizara una amplia búsqueda de información sobre ingeniería

de software así como sus diferentes metodologías y estándares utilizados

actualmente, esta se realizara en las bibliotecas de Universidad de Occidente

campus Los Mochis e Instituto Tecnológico de Los Mochis.

Además de visitar y entrevistar a personas expertas en el área de ingeniería de

software en la ciudad de Los Mochis, con el fin de recabar información y reforzar

la investigación.

Page 13: Mi Proyecto

CAPÍTULO II

MARCO TEÓRICO

Page 14: Mi Proyecto

6

2.1 Antecedentes Históricos

Se denomina software (palabra de origen anglosajón, pronunciada "sóft-uer"),

programa, equipamiento lógico o soporte lógico a todos los componentes intangibles de

una computadora, es decir, al conjunto de programas y procedimientos necesarios para

hacer posible la realización de una tarea específica, en contraposición a los

componentes físicos del sistema (hardware).

La Ingeniería del Software, término utilizado por primera vez por Fritz Bauer en la

primera conferencia sobre desarrollo de software patrocinada por el Comité de Ciencia

de la OTAN celebrada en Garmisch, Alemania, en octubre de 1968, puede definirse

según Alan Davis como “la aplicación inteligente de principios probados, técnicas,

lenguajes y herramientas para la creación y mantenimiento, dentro de un coste

razonable, de software que satisfaga las necesidades de los usuarios”.2

El término ingeniería del software empezó a usarse a finales de la década de los

sesenta, para expresar el área de conocimiento que se estaba desarrollando en torno a

las problemáticas que ofrecía el software en ese momento. En esa época, el

crecimiento de la demanda de sistemas de computación cada vez más y más

complejos, asociado a la inmadurez del propio sector informático (totalmente ligado al

electrónico) y a la falta de métodos y recursos, provocó lo que se llamó la “crisis del

software” (en palabras de Edsger Dijkstra) entre los años 1965 y 1985.

Durante esa época muchos proyectos importantes superaban con creces los

presupuestos y fechas estimados, algunos de ellos eran tan críticos (sistemas de

control de aeropuertos, equipos para medicina, entre otros) que sus implicaciones iban

más allá de las pérdidas millonarias que causaban.

La crisis del software pasó, no tanto por la mejora en la gestión de los proyectos, sino

en parte porque no es razonable estar en crisis más de veinte años, y en parte porque

se estaban haciendo progresos en los procesos de diseño y metodologías.

2 Sommerville, Ingeniria del Sofware, 7° edición, Pearson Addison Wesley, 2006.

Page 15: Mi Proyecto

7

Así pues, desde 1985 hasta el presente, han ido apareciendo herramientas,

metodologías y tecnologías que se presentaban como la solución definitiva al problema

de la planificación, previsión de costes y aseguramiento de la calidad en el desarrollo de

software. Entre las que se encuentran la programación estructurada, la programación

orientada a objetos, a los aspectos, las herramientas CASE, el lenguaje de

programación ADA, la documentación, los estándares, CORBA, los servicios web y el

lenguaje UML (entre otros) fueron todos anunciados en su momento como la solución a

los problemas de la ingeniería del software, la llamada “bala de plata” (por silver bullet).

Y lo que es más, cada año surgen nuevas ideas e iniciativas encaminadas a ello.

Una metodología puede seguir uno o varios modelos de ciclo de vida, es decir, el ciclo

de vida indica qué es lo que hay que obtener a lo largo del desarrollo del proyecto pero

no cómo hacerlo.

La metodología indica cómo hay que obtener los distintos productos parciales y finales,

en otras palabras la metodología es el conjunto de procedimientos, técnicas,

herramientas y un soporte documental que ayuda a los desarrolladores a realizar nuevo

software.

A lo largo de los años han existido diferentes métodos que han sido desarrollados

diferenciándose por su fortaleza y debilidad para el desarrollo de software,

encontrándose dos generaciones de metodologías de mayor preeminencia como son:

Estructurado.

Orientada a Objetos.

Page 16: Mi Proyecto

8

2.2 METODOLOGÍAS DE LA PROGRAMACIÓN

2.2.1 Metodología, análisis y diseño estructurado

Al igual que muchas de las contribuciones importantes de la ingeniería del software, el

análisis estructurado no fue introducido en un solo artículo o libro clave que incluyera un

tratamiento completo del tema. Pressman menciona que los primero trabajos sobre

modelos de análisis aparecieron a finales de los 60’s y principios de los 70’s nace lo que

se le conoce como análisis estructurado término acuñado originalmente por Douglas

Ross lo que le permite al analista conocer un sistema o proceso (actividad) en una

forma lógica y manejable al mismo tiempo que proporciona la base para asegurar que

no se omite ningún detalle pertinente.

A mediados de los 80´s, las ampliaciones para tiempo real fueron introducidas por Ward

y Mellor y, más tarde, por Hatley y Pirbhai. Con esas ampliaciones, se consiguió un

método de análisis más robusto que podía ser aplicado de forma más efectiva a

problemas de ingeniería.

El objetivo que persigue el análisis estructurado es organizar las tareas asociadas con

la determinación de requerimientos para obtener la comprensión completa y exacta de

una situación dada. A partir de aquí determina los requerimientos que serán la base de

un sistema nuevo o modificado.

En el análisis estructurado la palabra estructura significa qué: 1) el método intenta

estructurar el proceso de determinación de los requerimientos comenzando con la

documentación del sistema existente; 2) el proceso está organizado de tal forma que

intenta incluir todos los detalles relevante que describe al sistema en uso; 3) es fácil

verificar cuando se han omitido detalles relevantes; 4) la identificación de los

requerimientos será similar entre varios analistas e incluirá las mejora soluciones y

estrategias para las oportunidades para de desarrollo de sistemas; y 5) los documentos

de trabajo generados para documentar los sistemas existente o propuesto son

dispositivos de comunicación eficientes.

Page 17: Mi Proyecto

9

El análisis estructurado hace uso de los siguientes componentes.

Símbolos gráficos. Iconos y connotaciones para identificar y describir los

componentes de un sistema junto con las relaciones entre estos componentes.

Diccionario de datos. Descripciones de todos los datos utilizados en el sistema.

Descripciones de procesos y procedimientos. Declaraciones formales que

emplean técnicas y lenguajes que permiten a los analistas describir actividades

importantes que forman parte del sistema.

Reglas. Estándares para describir y documentar el sistema en forma completa y

correcta.

2.2.2 Metodología, análisis y diseño Orientado a Objetos

En los 90’s se establece el análisis orientado a objetos basándose en un conjunto de

principios básicos: (1) se modelo el dominio de la información; (2) se describe la

función;(3) se representa el comportamiento del modelo; (4) los modelos de datos

funcional y de comportamiento se dividen para mostrar más detalles; y (5) los modelos

iniciales representan la esencia del problema mientras que los últimos aportan detalles

para la implementación. Estos principios forman la base para el enfoque del análisis

orientado a objetos. Partiendo de esta época a la fecha como el nuevo auge en la

manera de diseñar y programar software.

El propósito del análisis orientado a objetos es definir todas las clases que son

relevantes al problema que se van a resolver, las operaciones y atributos asociados, las

relaciones y comportamientos asociadas con ellas. Para cumplir se deben ejecutar las

siguientes tareas:

1. Los requisitos básicos del usuario deben comunicarse entre el cliente y el

ingeniero del software.

2. Identificar las clases (es decir definir atributos y métodos).

3. Se debe especificar una jerarquía de clases.

4. Representan las relaciones objeto a objeto (conexiones de objetos).

Page 18: Mi Proyecto

10

5. Modelar el comportamiento del objeto.

6. Repetir interactivamente las tareas de la 1 a la 5 hasta completar el modelo.

El análisis orientado a objetos comienza con una descripción de casos de uso, que es

una descripción de escenarios sobre cómo interactúan los actores (gente, maquina u

otros sistemas) con el sistema a construir. El modelo de clases-responsabilidad-

colaboración (CRC) traslada la información de los casos de uso a una representación

de las clases y sus colaboraciones con las otras clases. Las características estáticas y

dinámicas de las clases se modelan entonces utilizando un lenguaje de modelado

unificado o cualquier otro método.

Para el desarrollo de software orientado a objetos no basta usar un lenguaje orientado a

objetos. También se necesitará realizar un análisis y diseño orientado a objetos.

El moldeamiento visual es la clave para realizar el análisis orientado a objetos. Desde

los inicios del desarrollo de software orientado a objetos han existido diferentes

metodologías para hacer esto del modelamiento, pero sin lugar a duda, el Lenguaje de

Modelamiento Unificado (UML) puso fin a la guerra de metodologías.

Los mismos diseñadores del lenguaje UML, éste tiene como fin modelar cualquier tipo

de sistemas (no solamente de software) usando los conceptos de la orientación a

objetos. Y además, este lenguaje debe ser entendible para los humanos y máquinas.

Actualmente en la industria del desarrollo de software se tiene a UML como un estándar

para el modelamiento de sistemas orientado a objetos. Fue la empresa Racional que

creó estas definiciones y especificaciones del estándar UML, y lo abrió al mercado. La

misma empresa creó uno de los programas más conocidos hoy en día para este fin; el

Racional Rose, pero también existen otros programas como el Poseidon que trae

licencias del tipo community edition que permiten su uso libremente.

El UML consta de todos los elementos y diagramas que permiten modelar los sistemas

en base al paradigma orientado a objetos. Los modelos orientados a objetos cuando se

Page 19: Mi Proyecto

11

construyen en forma correcta, son fáciles de comunicar, cambiar, expandir, validar y

verificar. Este modelamiento en UML es flexible al cambio y permite crear componentes

plenamente reutilizables.

2.3 Ingeniería del software

La Ingeniería de Software es una disciplina o área de la Informática o Ciencias de la

Computación, que ofrece métodos y técnicas para desarrollar y mantener software de

calidad que resuelven problemas de todo tipo. Hoy día es cada vez más frecuente la

consideración de la Ingeniería de Software como una nueva área de la ingeniería, y el

ingeniero de software comienza a ser una profesión implantada en el mundo laboral

internacional, respetada, con derechos, deberes y responsabilidades que cumplir, junto

a una ya reconocida consideración social en el mundo empresarial y, por suerte, con

brillante futuro3.

La Ingeniería de Software trata con áreas muy diversas de la informática y de las

ciencias de la computación, tales como construcción de compiladores, sistemas

operativos o desarrollos en Intranet/Internet, abordando todas las fases del ciclo de vida

del desarrollo de cualquier tipo de sistemas de información y aplicables a una infinidad

de áreas tales como: negocios, investigación científica, medicina, producción, logística,

banca, control de tráfico, meteorología, el mundo del derecho, la red de redes Internet,

redes Intranet y Extranet, etc3.

El termino Ingeniería se define en DRAE4 como: «1. Conjunto de conocimientos y

técnicas que permiten aplicar el saber científico a la utilización de la materia y de las

fuentes de energía. 2. Profesión y ejercicio de ingeniero» y el termino ingeniero se

define como: «Persona que profesa o ejerce la ingeniería». De igual modo la Real

Academia de Ciencias Exactas, Físicas y Naturales de España define el término

3 Pressman, Ingenieria del software un enfoque practico. 5ta. Edicion

4 DRAE, Diccionario de la Real Academia Española de la Lengua.

Page 20: Mi Proyecto

12

Ingeniera como: «Conjunto de conocimientos y técnicas cuya aplicación permite la

utilización racional de los materiales y de los recursos naturales, mediante invenciones,

construcciones u otras realizaciones provechosas para el hombre»5.

Evidentemente, si la Ingeniería del Software es una nueva Ingeniería, parece lógico que

reúna las propiedades citadas en las definiciones anteriores. Sin embargo ni el

DRAE(Diccionario de la Real Academia Española de la Lengua), ni la Real Academia

Española de Ciencias han incluido todavía el termino en sus últimas ediciones; en

consecuencia vamos a recurrir para su definición más precisa a algunos de los autores

más acreditados que comenzaron en su momento a utilizar el término o bien en las

definiciones dadas por organismos internacionales profesionales de prestigio tales

como IEEE o ACM, de los cuales se han seleccionado las siguientes definiciones de

Ingeniería del Software:

Definición 1:

Ingeniería del Software es el estudio de los principios y metodologías para desarrollo y

mantenimiento de sistemas de software6.

Definición 2:

Ingeniería del Software es la aplicación práctica del conocimiento científico en el diseño

y construcción de programas de computadora y la documentación necesaria requerida

para desarrollar, operar (funcionar) y mantenerlos. Se conoce también como desarrollo

de software o producción de software(Bohem)7.

5 Vocabulario Científico y Técnico, edición de 1996.

6 Zelkovitz, M. V., Shaw, A. C. y Gannon, J. D.: Principles of Software Engineering and Desing. Prentice-

Hall, Englewoods Clig, 1979. 7 Boehm, B. W.: «Software Engineering», IEEE Transactions on Computers, C-25, núm. 12, diciembre,

pp. 1226-1241.

Page 21: Mi Proyecto

13

Definición 3:

Ingeniería del Software trata del establecimiento de los principios y métodos de la

Ingeniería a fin de obtener software de modo rentable que sea fiable y trabaje en

máquinas reales(Bauer)8.

Jacobson define al proceso de ingeniería de software como "un conjunto de etapas

parcialmente ordenadas con la intención de lograr un objetivo, en este caso, la

obtención de un producto de software de calidad" y Pressman lo define como "un marco

de trabajo de las tareas que se requieren para construir software de alta calidad".

(Pressman 1992).El proceso de desarrollo de software "es aquel en que las

necesidades del usuario son traducidas en requerimientos de software, estos

requerimientos transformados en diseño y el diseño implementado en código, el código

es probado, documentado y certificado para su uso operativo". Concretamente "define

quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo".

El proceso de desarrollo de software requiere por un lado un conjunto de conceptos,

una metodología y un lenguaje propio. Pressman define que los proyectos de software

están divididos en fases. Al conjunto de fases y su secuencia se le denomina ciclo de

vida del software. El cual comprende cuatro grandes fases: concepción, elaboración,

construcción y transición. La concepción define el alcance del proyecto y desarrolla un

caso de negocio. La elaboración define un plan del proyecto, especifica las

características y fundamenta la arquitectura. La construcción crea el producto y la

transición transfiere el producto a los usuarios. Scacchi(1987) menciona que el ciclo de

vida del Software describe todo el proceso de software de un sistema dado, desde su

concepción hasta su retiro (concepción, introducción, aceptación o crecimiento,

madurez, saturación, obsolescencia y retiro) y Pressman define al ciclo de vida del

software como un tiempo determinado en el cual un producto de software se desarrolla

y usa, hasta que es retirado.

El desarrollo del software se realiza mediante un método basado en conceptos y

técnicas que conforman el enfoque o paradigma de la forma de construir un sistema de

8 Bauer, F.L: «Software Engineering», Information Processing, 71, North Holland Publishing Co.,

Amsterdam, 1972.

Page 22: Mi Proyecto

14

software. Dicho método permite establecer el proceso de software, es decir, las

actividades de desarrollo, cuya definición determinará el tipo de soporte requerido para

llevarlas a efecto.

La Ingeniería del software es una tecnología multicapa. Como muestra la Figura 1,

cualquier enfoque de ingeniería (incluida ingeniería del software) debe apoyarse sobre

un compromiso de organización de calidad.

Figura 1. Capas de la ingeniería del Software.

2.3.1 Procesos de desarrollo de software

El fundamento de la ingeniería del software es la capa de proceso. El proceso de la

ingeniería del software es la unión que mantiene juntas las capas de tecnología y que

permite un desarrollo racional y oportuno de la ingeniería del software. El proceso

define un marco de trabajo para un conjunto de aéreas clave de proceso (ACPs) que

se deben establecer para la entrega efectiva de la tecnología de la ingeniería del

software. Las áreas claves del proceso forman la base del control de gestión de

proyectos del software y establecen el contexto en el que se aplican los métodos

técnicos, se obtienen productos del trabajo (modelos, documentos, datos, informes,

formularios, etc.), se establecen hitos, se asegura la calidad y el cambio se gestiona

adecuadamente.

Se establece un marco común del proceso definiendo un pequeño número de

actividades del marco de trabajo que son aplicables a todos los proyectos del software,

con independencia de su tamaño o complejidad. Un número de conjuntos de tareas –

cada uno es una colección de tareas de trabajo de ingeniería del software, hitos de

Page 23: Mi Proyecto

15

proyectos, productos de trabajo, y puntos de garantía de calidad- que permiten que las

actividades del marco de trabajo se adapten a las características del proyecto del

software y a los requisitos del equipo del proyecto. Finalmente, las actividades de

protección -tales como garantía de calidad del software, gestión de configuración del

software y medición*-abarcan el modelo de procesos. Las actividades de protección son

independientes de cualquier actividad del marco de trabajo y aparecen durante todo el

proceso (Pressman 1992).

Estos modelos generales no son descripciones definitivas de los procesos de software.

Más bien, son abstracciones de los procesos que se pueden utilizar para explicar

diferentes enfoques para el desarrollo de software. Puede pensarse en ellos como

marcos de trabajo del proceso que pueden ser extendidos y adaptados para crear

procesos más específicos de ingeniería del software.

2.3.1.1 Modelo en cascada

Es un proceso secuencial de desarrollo en el que los pasos de desarrollo son vistos

hacia abajo (como en una cascada de agua) considera las actividades fundamentales

del proceso de especificación, desarrollo, validación y evolución, y los representa como

fases separadas del proceso, tales como la especificación de requerimientos, el diseño

del software, la implementación, las pruebas y mantenimiento (Sommerville 2002).

Las ventajas del modelo en cascada son que la documentación se produce en cada

fase y que este cuadra con otros modelos del proceso de ingeniería de. Su principal

problema es su inflexibilidad al dividir el proyecto en distintas etapas.

2.3.1.2 Modelo de Desarrollo Evolutivo

Este enfoque entrelaza las actividades de especificación, desarrollo y validación. Un

sistema inicial se desarrolla rápidamente a partir de especificaciones abstractas. Este

Page 24: Mi Proyecto

16

se refina basándose en las peticiones del cliente para producir un sistema que satisfaga

sus necesidades (Sommerville 2002).

La ventaja de un proceso del software que se basa en un enfoque evolutivo es que la

especificación se puede desarrollar de forma creciente. Tan pronto como los usuarios

desarrollen un mejor entendimiento de su problema, éste de se puede reflejar en el

sistema software. Sin embargo, desde una perspectiva de ingeniería y de gestión, el

enfoque evolutivo tiene dos problemas:

El proceso no es visible: Los administradores tienen que hacer entregas

regulares para medir el progreso. So los sistemas se desarrollan rápidamente, no

es rentable producir documentos que reflejen cada versión del sistema.

A menudo los sistemas tienen una estructura deficiente: los cambios continuos

tienden a corromper la estructura del software. Incorporar cambios en el se

convierte cada vez más en una tarea difícil y costosa.

2.3.1.3 Modelo incremental

Combina elementos del modelo lineal secuencial (aplicados repetidamente) con la

filosofía interactiva de construcción de prototipos, el modelo incremental aplica

secuencias lineales de forma escalonada mientras progresa el tiempo en el calendario.

Cada secuencia lineal produce un incremento del software.

Cuando se utiliza un modelo incremental, el primer incremento a menudo es un

producto esencial. Es decir se afrontan requisitos básicos, pero muchas funciones

suplementarias (algunas conocidas, otras no) quedan sin extraer. El cliente utiliza el

producto central (o sufre la revisión detallada). Como un resultado de utilización y/o de

evaluación, se desarrolla un plan para el incremento siguiente. El plan afronta la

modificación del producto central a fin de cumplir mejor las necesidades del cliente y la

entrega de funciones, y características adicionales. Este proceso se repite siguiendo la

entrega de cada incremento, hasta q se elabore el producto completo (Pressman 1992).

Page 25: Mi Proyecto

17

Figura 2. El modelo Incremental

2.3.1.4 Modelo en espiral

Es un modelo de software es un proceso de software evolutivo que conjuga la

naturaleza interativa de la construcción de prototipos con los aspectos controlados y

sistemáticos del modelo lineal secuencial. Proporciona el potencial para el desarrollo

rápido de versiones incrementales del software. En el modelo espiral, el software se

desarrolla en una serie de versiones incrementales. Durante las primeras interacciones,

la versión incremental podría ser un modelo en papel o un prototipo. Durante las últimas

interacciones se producen versiones cada vez más completas del sistema diseñado

(Pressman 1992).

Figura 3. Un modelo espiral típico.

Page 26: Mi Proyecto

18

El modelo en espiral se divide en un número de actividades de marco de trabajo,

también llamadas regiones de tareas. Generalmente, existen entre tres y seis regiones

de tareas:

Comunicación con el cliente.

Planificación.

Análisis de riesgo.

Ingeniería

Construcción y acción

Evaluación del cliente.

2.3.1.5 Modelo espiral WIN-WIN (Victoria&Victoria)

El objetivo de este modelo es mostrar los requisitos del cliente. En un contexto ideal, el

desarrollador simplemente pregunta al cliente lo que necesita y el cliente proporciona

detalles suficientes para continuar. Desgraciadamente esto raramente ocurre. En

realidad el cliente y el desarrollador entran en un proceso de negociación, donde el

cliente puede ser preguntado para sopesar la funcionalidad, en rendimiento, y otros

productos o características del sistema frente al coste y al tiempo de comercialización

(Pressman 1992).

Figura 4. El modelo en espiral WinWin

Page 27: Mi Proyecto

19

Más que una simple actividad de comunicación con el cliente, se definen las siguientes

actividades:

Identificación del sistema o subsistemas clave de los “directivos”.

Determinación de las condiciones de “victoria” de los directivos.

Negociación de las condiciones de “victoria” de los directivos para reunirlas en un

conjunto de condiciones “Victoria&Victoria” para todos los afectados (incluyendo

el equipo del proyecto de software).

Las mejores negociaciones se esfuerzan en obtener “Victoria&Victoria”. Esto es,

el cliente gana obteniendo el producto o sistema q satisface la mayor parte de

sus necesidades y el desarrollador gana trabajando para conseguir presupuestos

y lograr una fecha de entrega realista.

2.3.1.6 Modelo de desarrollo concurrente

El modelo de proceso concurrente se puede representar en forma de esquema como

una serie de actividades técnicas importantes, tareas y estados asociados a ellas.

Este modelo define una serie de acontecimientos que disiparan transacciones de

estado a estado para cada una de las actividades de la ingeniería del software. Por

ejemplo, durante las primeras etapas del diseño, no se contempla una inconsistencia

del modelo de análisis. Esto genera la corrección del modelo de análisis de sucesos,

que disparará la actividad de análisis del estado hecho al estado cambios en espera.

La dimensión de componentes se afronta con dos actividades: diseño y realización. Lac

concurrencia se logra de dos formas: (1) las actividades del sistema y de componentes

ocurren simultáneamente y pueden modelarse con el enfoque orientado a objetos; (2)

una aplicación cliente-servidor típico se implementa con muchos componentes, cada

una de los cuales se pueden diseñar y realizar concurrentemente. En realidad, el

modelado de proceso concurrente es aplicable a todo tipo de desarrollo de software y

proporciona una imagen exacta del estado actual de un proyecto (Pressman 1992).

Page 28: Mi Proyecto

20

Figura 5. Un elemento del modelo de proceso concurrente.

2.3.1.7 Desarrollo basado en componentes

El desarrollo basado en componentes como lo menciona Pressman, incorpora muchas

de las características del modelo en espiral. Es evolutivo por naturaleza, y exige un

enfoque interativo para la creación del software. Sin embargo, el modelo de desarrollo

basado en componentes configura apliaciones desde componentes preparados de

software (llamadas “clases”).

Esta actividad se lleva a cabo examinando los datos que se van a manejar por parte de

la aplicación y el algoritmo que se va a aplicar para conseguir el tratamiento. Los datos

y los algoritmos correspondientes se empaquetan en una clase.

Las clases creadas en los proyectos de ingeniería del software anterior, se almacenan

en una biblioteca de clases o diccionario de datos (repository). Una vez identificadas las

clases candidatas, la biblioteca de clases se examina para determinar si estas clases ya

existen. En caso de que así fuera, se extraen de la biblioteca y se vuelven a utilizar. Si

una clase candidata no reside en la biblioteca, se aplican los métodos orientados

objetos. Se compone así la primera iteración de la aplicación a construirse, mediante las

clases extraídas de la biblioteca y las clases nuevas construidas para cumplir las

necesidades Únicas de la aplicación. El flujo del proceso vuelve a la espiral y volverá a

introducir por último la iteración ensambladora de componentes a través de la actividad

Page 29: Mi Proyecto

21

de ingeniería. Pressman dice que el modelo de desarrollo basado en componentes

conduce a la reutilización del software, y la reutilización proporciona beneficios a los

ingenieros de software. Según estudios de reutilización, QSM Associates, Inc. Informa

que el ensamblaje de componentes lleva a una reducción del 70 por 100 de tiempo de

ciclo de desarrollo, un 84 por 100 del coste del proyecto y un índice de productividad del

26.2, comparado con la norma de industria del 16.9. Aunque estos resultados están en

función de la robustez de la biblioteca de componentes, no hay duda de que el

ensamblaje de componentes proporciona ventajas significativas para los ingenieros de

software.

Figura 5. Desarrollo basado en componentes

2.3.2 Métodos de desarrollo de software

Los métodos de la ingeniería del software indican “cómo” construir técnicamente el

software. Los métodos abarcan una gran gama de tareas que incluyen análisis de

requisitos, diseño, construcción de programas, pruebas y mantenimiento. Los métodos

de la ingeniería del software dependen de un conjunto de principios básicos que

gobiernan cada área de la tecnología e incluyen actividades de modelado y otras

técnicas descriptivas (Pressman, 1992).

Page 30: Mi Proyecto

22

Sommerville menciona que un método de ingeniería de software es un enfoque

estructurado para el desarrollo de software cuyo propósito es facilitar la producción de

software de alta calidad de una forma costeable.

Todos los métodos se basan en la idea de modelos gráficos de desarrollo de un

sistema y en el uso de estos modelos como un sistema de especificación o diseño.

2.3.3 Herramientas para la creación de software

Las herramientas de la Ingeniería del software proporcionan un enfoque automático o

semi-automático para el proceso y para los métodos. Cuando se integran herramientas

para que la información creada por una herramienta la pueda utilizar otra, se establece

un sistema de soporte para el desarrollo del software llamado ingeniería del software

asistida por computadora (CASE).

CASE proporciona al ingeniero la posibilidad de automatizar actividades manuales y de

mejorar su visión general de la ingeniería, estas herramientas CASE ayudan a

garantizar que la calidad se diseñe antes de llegar a construir el producto (Pressman

1992).

Herramientas de ingeniería de procesos de negocio: El objetivo primordial de

las herramientas de esta categoría consiste en representar objetos de datos de

negocios, sus relaciones, y la forma en que fluyen estos objetos de datos entre

distintas zonas de negocio en el seno de la compañía.

Modelado de procesos y herramientas de gestión: Las herramientas de

modelado de procesos (llamadas también herramientas de tecnología de

procesos) se utilizan para representar los elementos clave del proceso de

manera que sea posible entenderlo mejor. Estas herramientas también pueden

proporcionar vínculos con descripciones de procesos que ayuden a quienes

estén implicados en el proceso de comprender las tareas que se requieren para

llevar a cabo ese proceso.

Page 31: Mi Proyecto

23

Herramientas de planificación de proyectos: Las herramientas de esta

categoría se concentran en dos áreas primordiales: Estimación de esfuerzos de

proyecto y de costes de software y planificación de proyectos. Las herramientas

de estimación calculan el esfuerzo estimado, la duración del proyecto y el

número recomendado de personas.

Herramientas de análisis de riesgos: La identificación de posibles riesgos y el

desarrollo de un plan para mitigar, monitorizar y gestionar esos riesgos tienen

una importancia fundamental en los proyectos grandes. Las herramientas de

análisis de riesgos hacen posible que el gestor del proyecto construya una tabla

de riesgos proporcionando una guía detallada en la identificación y análisis de

riesgos.

Herramientas de gestión de proyectos: La planificación del proyecto y el plan

del proyecto deberán ser rastreados y monitorizados de forma continua.

Herramientas de seguimiento de requisitos: Las herramientas típicas de

seguimiento de requisitos combinan una evaluación de textos por interacción

humana, con un seguimiento de gestión de bases de datos que almacena y

categoriza todos y cada uno de los requisitos del sistema que se <<analizan>> a

partir de la RFP o especificación original.

Herramientas de métricas y de gestión: Las herramientas con orientación

técnica determinan las métricas técnicas que proporcionan una mejor visión de la

calidad del diseño o del código.

Herramientas de documentación: las herramientas de documentación suponen

una oportunidad importante para mejorar la productividad.

Herramientas de software de sistema: CASE es una tecnología de estaciones

de trabajo. Por tanto, el entorno CASE debe adaptase a un software de sistema

en redes de alta calidad, al correo electrónico, a los boletines electrónicos y a

otras capacidades de comunicaciones.

Herramientas de control de calidad: Las herramientas de control de calidad

son en realidad herramientas métricas que hace una auditoria del código fuente

para determinar si es justa o no a ciertos estándares del lenguaje.

Page 32: Mi Proyecto

24

Herramientas de gestión de base de datos: El software de gestión de bases

de datos sirve como fundamentos para establecer una base de datos CASE

(repositorio), que también se denominará base de datos del proyecto.

Herramientas de configuración de software: La gestión de configuración de

software (GCS) se encuentra en el núcleo de todos los entornos CASE. Las

herramientas pueden ofrecer su asistencia en las cinco tareas principales de

GCS: (identificación, control de versiones control de cambios, auditorias y

contabilidad de estados).

Herramientas de análisis y diseño: Las herramientas de análisis y diseño

capacitan al ingeniero del software para crear modelos del sistema que haya que

construir. Los modelos contienen una representación de los datos, de la función y

del comportamiento (en el nivel de análisis), así como caracterizaciones del

diseño de datos, arquitectura, procedimientos e interfaz.

Herramientas PRO/SIM: Las herramientas PRO/SIM (de prototipos y

simulación) proporcionan al ingeniero del software la capacidad de predecir el

comportamiento de un sistema en tiempo real antes de llegar a construirlo.

Herramientas de desarrollo y diseño de interfaz: Las herramientas de

desarrollo y diseño de interfaz son en realidad un conjunto de primitivas de

componente de programas tales como menús, botones, estructuras de ventanas,

iconos, mecanismos de desplazamiento, controladores de dispositivos, etc.

Herramientas de construcción de prototipos: Se puede utilizar toda una gama

de herramientas de generación de prototipos. Los generadores de pantallas

permiten al ingeniero de software definir rápidamente la disposición de pantalla

para aplicaciones interactivas.

Herramientas de programación: La categoría de herramientas de

programación abarca los compiladores, editores y depuradores que están

disponibles para apoyar a la mayoría los lenguajes de programación, los

lenguajes de cuarta generación, los entornos de programación gráfica, los

generadores de aplicaciones y los lenguajes de consulta de bases de datos.

Herramientas de desarrollo de Web: Las actividades asociadas a la ingeniería

Web están apoyadas por una variedad de herramientas de desarrollo de Web.

Entre estas herramientas se incluyen las que prestan ayuda a la generación de

Page 33: Mi Proyecto

25

texto, gráficos, formularios, guiones, applets, y otros elementos de una página

Web.

Herramientas de integración y pruebas: Adquisición de datos: herramientas

que adquieren datos que se utilizaran durante la prueba; Medida estática:

herramientas que analizan el código fuente sin ejecutar casos de prueba;

Medida dinámica: herramientas que analizan el código fuente durante la

ejecución; Simulación: herramientas que simulan las funciones del hardware o de

otros elementos externos; Gestión de pruebas: herramientas que prestan su

asistencia en la planificación, desarrollo y control de las pruebas; Herramientas

de funcionalidad cruzada: se trata de herramientas que cruzan los limites de las

categorías anteriores.

Herramientas de análisis estático: Las herramientas de análisis estático

prestan su asistencia al ingeniero del software a efectos de derivar casos

prácticos. Se utilizan tres tipos distintos de herramientas estáticas de

comprobación en la industria: herramientas de comprobación basadas en código,

lenguajes de comprobación especializados, y herramientas de comprobación

basadas en requisitos.

Herramientas de análisis dinámico: Las herramientas de análisis dinámico

interactúan con un programa que se esté ejecutando, comprueban la cobertura

de rutas, comprueban las afirmaciones acerca del valor de variables específicas

e instrumentan por otro lado el flujo de ejecución del programa.

Herramientas de gestión de pruebas: Se utilizan para controlar y coordinar las

pruebas del software por todos y cada uno de los pasos principales de las

pruebas. Las herramientas de esta categoría gestionan y coordinan las pruebas

de regresiones, efectúan comparaciones que determinan las diferencias entre la

salida real y esperada y realizan pruebas por lotes de programas con interfaces

hombre-máquina interactivas.

Herramientas de pruebas cliente/servidor: El entorno C/S existe unas

herramientas de comprobación especializadas que ejerciten la interfaz gráfica de

usuario y los requisitos de comunicaciones en red para el cliente y el servidor.

Herramientas de reingeniería: La categoría de herramientas de reingeniería se

pueden subdividir en las funciones siguientes: Herramientas de ingeniería

Page 34: Mi Proyecto

26

inversa para producir especificaciones: se toma el código fuente como entrada y

se generan modelos gráficos de análisis y diseño estructurados, listas de

utilización y otras informaciones de diseño; Herramientas de reestructuración y

análisis de código: se analiza la sintaxis del programa, se genera una gráfica de

control de flujo y se genera automáticamente un programa estructurado;

Herramientas de reingeniería para sistemas en línea: se utilizan para modificar

sistemas de bases de datos en línea (por ejemplo: para convertir archivos IDMS

o DB2 traduciéndolos a un formato de entidades y relaciones).

2.4 Un Enfoque de Calidad

Algunos desarrolladores de software continúan creyendo que la calidad del software es

algo en lo que empiezan a preocuparse una vez que se ha generado el código. ¡Nada

más lejos de la realidad! La garantía de calidad del software (SQA, Software Quality

Assurance GCS, Gestión de calidad del software) es una actividad de protección que se

aplica a lo largo de todo el proceso del software. La SQA engloba: (1) un enfoque de

gestión de calidad; (2) tecnología de ingeniería del software efectiva (métodos y

herramientas); (3) revisiones técnicas formales que se aplican durante el proceso del

software; (4) una estrategia de prueba multiescalada; (5) el control de la documentación

del software y de los cambios realizados; (6) un procedimiento que asegure un ajuste a

los estándares de desarrollo del software (cuando sea posible), y (7) mecanismos de

medición y de generación de informes.

2.4.1 Calidad

Todas las metodologías y herramientas tienen un único fin producir software de gran

calidad

Definiciones de calidad del software:

“Concordancia con los requisitos funcionales y de rendimiento explícitamente

establecidos con los estándares de desarrollo explícitamente documentados y

Page 35: Mi Proyecto

27

con las características implícitas que se espera de todo software desarrollado

profesionalmente” Pressman (1992).

“El conjunto de características de una entidad que le confieren su aptitud para

satisfacer las necesidades expresadas y las implícitas” ISO 8402 (UNE 66-001-

92).

El American Heritage Dictionary, define la calidad como «una característica o

atributo de algo». Como un atributo de un elemento, la calidad se refiere a las

características mensurables -cosas que se pueden comparar con estándares

conocidos como longitud, color, propiedades eléctricas, maleabilidad, etc.-. Sin

embargo, el software en su gran extensión, como entidad intelectual, es más

difícil de caracterizar que los objetos físicos.

No obstante, si existen las medidas de características de un programa. Entre estas

propiedades se incluyen complejidad ciclomática, cohesión, número de puntos de

fusión, líneas de código, etc.

La obtención de un software con calidad implica la utilización de metodologías o

procedimientos estándares para el análisis, diseño, programación y prueba del software

que permitan uniformar la filosofía de trabajo, en aras de lograr una mayor confiabilidad,

mantenibilidad y facilidad de prueba, a la vez que eleven la productividad, tanto para la

labor de desarrollo como para el control de la calidad del software.

Cuando se examina un elemento según sus características mesurables, se pueden

encontrar dos tipos d calidad: calidad del diseño y calidad de concordancia.

La calidad del diseño se refiere a las características que especifican los ingenieros para

un elemento. El grado de materiales, tolerancias y las especificaciones del rendimiento

contribuyen a la calidad del diseño. Cuando se utilizan materiales de alto grado y

especifican tolerancias más estrictas y niveles más altos de rendimiento, la calidad de

diseño de un producto aumenta, si el producto se fabrica de acuerdo con las

especificaciones. La calidad de concordancia es el grado de cumplimiento del las

especificaciones de diseño durante su realización. Una vez más, cuanto mayor sea el

Page 36: Mi Proyecto

28

grado de cumplimiento, mas alto será el nivel de calidad de concordancia. En el

desarrollo del software, la calidad de diseño comprende los requisitos, especificaciones

el diseño del sistema. La calidad de concordancia es un aspecto centrado

principalmente en la implementación. Si la implementación sigue el diseño, y el sistema

resultante cumple los objetivos de requisitos y rendimiento, la calidad de concordancia

es alta (Pressman, 1992).

2.4.1.1 Control de calidad

El control de cambios puede equipararse al control de calidad. Pero, ¿cómo se logra el

control de calidad? El control de calidad es una serie de inspecciones, revisiones y

pruebas utilizadas a lo largo del proceso del software para asegurar que cada producto

cumple con los requisitos que le han sido asignados. El control de calidad incluye un

bucle de realimentación (feedback) del proceso que creó el producto. La combinación

de medición y realimentación permite afinar el proceso cuando los productos de trabajo

creados fallan al cumplir sus especificaciones. Este enfoque ve el control de calidad

como parte del proceso de fabricación (Pressman 1992).

Las actividades de control de calidad pueden ser manuales, completamente

automáticas o una combinación de herramientas automáticas e interacción humana. Un

concepto clave del control de calidad es que se hayan definido todos los productos y las

especificaciones mensurables en las que se puedan comparar los resultados de cada

proceso. El bucle de realimentación es esencial para reducir los defectos producidos.

2.4.1.2 Garantía de calidad

La garantía de calidad consiste en la auditoría y las funciones de información de la

gestión. El objetivo de la garantía de calidad es proporcionar la gestión para informar de

los datos necesarios sobre la calidad del producto, por lo que se va adquiriendo una

visión más profunda y segura de que la calidad del producto está cumpliendo sus

objetivos. Por supuesto, si los datos proporcionados mediante la garantía de calidad

Page 37: Mi Proyecto

29

identifican problemas, es responsabilidad de la gestión afrontar los problemas y aplicar

los recursos necesarios para resolver aspectos de calidad (Pressman, 1992).

2.4.1.3 Coste de calidad

El coste de calidad incluye todos los costes acarreados en la búsqueda de la calidad o

en las actividades relacionadas en la obtención de la calidad. Se realizan estudios

sobre el coste de calidad para proporcionar una línea base del coste actual de calidad,

para identificar oportunidades de reducir este coste, y para proporcionar una base

normalizada de comparación. La base de normalización siempre tiene un precio. Una

vez que se han normalizado los costes de calidad sobre un precio base, tenemos los

datos necesarios para evaluar el lugar en donde hay oportunidades de mejorar nuestros

procesos. Es más, podemos evaluar cómo afectan los cambios en términos de dinero.

(Pressman, 1992)

Los costes de calidad se pueden dividir en costes asociados con la prevención, la

evaluación y los fallos.

Entre los costes de prevención se incluyen:

planificación de la calidad,

revisiones técnicas formales,

equipo de pruebas,

formación.

Entre los costes de evaluación se incluyen actividades para tener una visión más

profunda de-la condición del producto «la primera vez a través de» cada proceso.

A continuación se incluyen algunos ejemplos de costes de evaluación:

inspección en el proceso y entre procesos,

calibrado y mantenimiento del equipo,

pruebas.

Page 38: Mi Proyecto

30

2.4.2 Aseguramiento de la calidad del software

El aseguramiento de calidad del software es el conjunto de actividades

planificadas y sistemáticas necesarias+ para aportar la confianza en que el

producto (software) satisfará los requisitos dados de calidad.

El aseguramiento de calidad del software se diseña para cada aplicación antes

de comenzar a desarrollarla y no después.

Algunos autores prefieren decir garantía de calidad en vez de aseguramiento.

o Garantía, puede confundir con garantía de productos.

o Aseguramiento pretende dar confianza en que el producto tiene calidad.

El aseguramiento de calidad del software está presente en:

o Métodos y herramientas de análisis, diseño, programación y prueba.

o Inspecciones técnicas formales en todos los pasos del proceso de

desarrollo del software.

o Estrategias de prueba multiescala

o Control de la documentación del software y de los cambios realizados

o Procedimientos para ajustarse a los estándares (y dejar claro cuando se

está fuera de ellos).

o Mecanismos de medida (métricas).

o Registro de auditorías y realización de informes.

Actividades para el aseguramiento de calidad del software

o Métricas de software para el control del proyecto.

o Verificación y validación del software a lo largo del ciclo de vida.

Incluye las pruebas y los procesos de revisión e inspección

o La gestión de la configuración del software

2.4.3 Gestión de la calidad del software

El estándar ISO 9000, que ha sido adoptado por más de 130 países para su uso, se ha

convirtiendo en el medio principal con el que los clientes pueden juzgar la competencia

de un desarrollador de software. Uno de los problemas con el estándar ISO 9001 está

Page 39: Mi Proyecto

31

en que no es específico de la industria: está expresado en términos generales, y puede

ser interpretado por los desarrolladores de diversos productos como automóviles,

equipamientos deportivos y televisiones, así como por desarrolladores de software. Se

han realizado muchos documentos que relacionan el estándar con la industria del

software, pero no entran en una gran cantidad de detalles. El objetivo de esta sección

es describir lo que significa el ISO 9001 en términos de elementos de calidad y técnicas

de desarrollo (Pressman, 1992).

Para la industria del software los estándares relevantes son:

ISO 9001. Quality Systems- Model for Quality Assurance in Design,

Development, Production, Installation and Servicing. Este es un estándar que

describe el sistema de, calidad utilizado para mantener el desarrollo de un

producto que implique diseño.

ISO 9000-3. Guidelines for Application of ISO 9001 to the Development, Supply

and Maintainance of ISO 9004-2. Quality Management and Quality System

Elements -Part 2-. Este documento proporciona las directrices para el servicio de

facilidades del software como soporte de usuarios.

2.4.4 Sistema de calidad

• Sistema de calidad

– Estructura organizativa, procedimientos, procesos y recursos necesarios

para implantar la gestión de calidad.

• El sistema de calidad se debe adecuar a los objetivos de calidad de la empresa

• La dirección de la empresa es la responsable de fijar la política de calidad y las

decisiones relativas a iniciar, desarrollar, implantar y actualizar el sistema de

calidad.

• Un sistema de calidad consta de varias partes

– Documentación

Page 40: Mi Proyecto

32

• Manual de calidad. Es el documento principal para establecer e

implantar un sistema de calidad. Puede haber manuales a nivel de

empresa, departamento, producto, específicos (compras,

proyectos,…)

– Parte física: locales, herramientas ordenadores, etc.

– Aspectos humanos:

• Formación de personal

• Creación y coordinación de equipos de trabajo

2.4.5 Certificación de la calidad

Un sistema de certificación de calidad permite una valoración independiente que debe

demostrar que la organización es capaz de desarrollar productos y servicios de calidad

Los pilares básicos de la certificación de calidad son tres:

Una metodología adecuada

Un medio de valoración de la metodología

La metodología utilizada y el medio de valoración de la metodología deben estar

reconocidos ampliamente por la industria.

2.4.5.1 Capability Maturity Model Integration

Integración de Modelos de Madurez de Capacidades o Capability Maturity Model

Integration (CMMI) es un modelo para la mejora y evaluación de procesos para el

desarrollo, mantenimiento y operación de sistemas de software.

Mediante la aplicación de CMMI se obtiene un Nivel de Madurez de los procesos de

construcción de software, integrados en las disciplinas base Ingeniería de Sistemas,

Ingeniería de Software e Integración de componentes.

Page 41: Mi Proyecto

33

CMMI incluye cinco niveles de madurez, siendo el más básico el Nivel 2 (Gestión de

Proyectos) y el esfuerzo de alcanzarlo, dependerá fuertemente de la cultura de trabajo

de cada empresa.

Estos análisis permiten detectar los flancos débiles de los procesos fortaleciéndolos en

forma homogénea e integra, mediante la aplicación de mejoras, en aquellas áreas

consideradas poco eficientes.

El objetivo de CMMI es proveer una guía para mejorar los procesos de una

organización y la habilidad para gestionar el desarrollo, adquisición y mantenimiento de

productos o servicios.

CMMI provee un acercamiento a la estructura de su organización, ayudándolo a evaluar

el grado de maduración organizacional y estableciendo prioridades para mejorar e

implementar esas mejoras.9

Categorías de mejoras, beneficios:

Mejoras en la predictibilidad de plazos y presupuestos.

Mejoras en los ciclos de vida de construcción de software.

Mejoras en la productividad.

Mejoras en la Calidad (medida por defectos).

Incrementa la satisfacción del Cliente.

Mejora la moral de los empleados.

Mejora el retorno de la inversión.

Decremento el costo de Calidad.

2.4.5.2 Modelo de Procesos para la Industria del Software

Modelo para la mejora y evaluación de los procesos de desarrollo y mantenimiento de

sistemas y productos de software. Desarrollado por la Asociación Mexicana para la

9 http://www.asnnetwork.com.ar/detalle.php?IDSECCION=354

Page 42: Mi Proyecto

34

Calidad en Ingeniería de Software a través de la Facultad de Ciencias de la Universidad

Nacional Autónoma de México (UNAM) y a solicitud de la Secretaría de Economía para

obtener una norma mexicana que resulte apropiada a las características de tamaño de

la gran mayoría de empresas mexicanas de desarrollo y mantenimiento de software.

Moprosoft es el nombre del modelo en la comunidad universitaria y profesional, y la

norma técnica a la que da contenido es la NMX-059/01-NYCE-2005 que fue declarada

Norma Mexicana el 15 de agosto de 2005 con la publicación de su declaratoria en el

Diario de la Federación.

Moprosoft, tiene por objetivo proporcionar a la industria mexicana, y a las áreas internas

dedicadas al desarrollo y mantenimiento de software, un conjunto integrado de las

mejores prácticas basadas en los modelos y estándares reconocidos

internacionalmente, tales como ISO 9000:2000, CMM-SW, ISO/

IEC 15504, PMBOK, SWEBOK entre otros.

Moprosoft contiene tres categorías de procesos que corresponden a las capas de Alta

Dirección, Gestión y Operación. La categoría de Alta Dirección contiene el proceso de

Gestión de Negocio; la categoría de Gestión se compone de Gestión de Procesos,

Gestión de Proyectos y Gestión de Recursos, a su vez, este último se divide en tres

subprocesos: el de Recursos Humanos, el de Bienes, Servicios e Infraestructura y el de

Conocimiento de la Organización. Finalmente, la categoría de Operación contiene los

procesos de Administración de Proyectos Específicos y de Desarrollo y Mantenimiento

de Software.

Moprosoft, a diferencia de CMM-SW y CMMI, está dirigido a la micro y pequeña

industria. Sintetiza las mejores prácticas en un conjunto pequeño de procesos que

abarcan las responsabilidades de la alta dirección, gestión y operación. Se trata de un

modelo integrado, en el cual: las salidas de un proceso están claramente dirigidas como

entradas a otros procesos; las prácticas de planeación, seguimiento y evaluación se

incluyeron en todos los procesos de gestión y administración; los objetivos, los

indicadores, las mediciones y las metas cuantitativas fueron incorporadas de manera

congruente y práctica en todos los procesos; las verificaciones, validaciones y pruebas

Page 43: Mi Proyecto

35

están incluidas de manera explícita dentro de las actividades de los procesos; y existe

una base de conocimiento que resguarda todos los documentos y productos generados

por los procesos.

En otras palabras, es un modelo que –de manera más pragmática que otros– presenta

las mejores prácticas para la industria de software.

En la actualidad, es indudable que el software es la herramienta que establece las

dinámicas laborales, de producción y hasta de convivencia en todo el mundo.

Los múltiples desarrollos que en este ámbito se dan –casi cotidianamente–generan

como consecuencia la necesidad de establecer cánones de calidad para cada producto,

para así garantizar que su desempeño y sus funciones cubran las expectativas de sus

consumidores y que, en la praxis, cumplan con su cometido satisfactoriamente.

2.4.6 Factores que determinan la calidad del software

Se clasifican en tres grupos:

• Operaciones del producto: características operativas

– Corrección (¿Hace lo que se le pide?)

• El grado en que una aplicación satisface sus especificaciones y

consigue los objetivos encomendados por el cliente.

– Fiabilidad (¿Lo hace de forma fiable todo el tiempo?)

• El grado que se puede esperar de una aplicación lleve a cabo las

operaciones especificadas y con la precisión requerida

– Eficiencia (¿Qué recursos hardware y software necesito?)

• La cantidad de recursos hardware y software que necesita una

aplicación para realizar las operaciones con los tiempos de

respuesta adecuados.

– Integridad (¿Puedo controlar su uso?)

Page 44: Mi Proyecto

36

• El grado con que puede controlarse el acceso al software o a los

datos a personal no autorizado.

– Facilidad de uso (¿Es fácil y cómodo de manejar?)

• El esfuerzo requerido para aprender el manejo de una aplicación,

trabajar con ella, introducir datos y conseguir resultados

• Revisión del producto: capacidad para soportar cambios

– Facilidad de mantenimiento (¿Puedo localizar los fallos?)

• El esfuerzo requerido para localizar y reparar errores

– Flexibilidad (¿Puedo añadir nuevas opciones?)

• El esfuerzo requerido para modificar una aplicación en

funcionamiento

– Facilidad de prueba (¿Puedo probar todas las opciones?)

• El esfuerzo requerido para probar una aplicación de forma que

cumpla con lo especificado en los requisitos

• Transición del producto: adaptabilidad a nuevos entornos

– Portabilidad (¿Podré usarlo en otra máquina?)

• El esfuerzo requerido para transferir la aplicación a otro hardware

o sistema operativo.

– Reusabilidad (¿Podré utilizar alguna parte del software en otra

aplicación?)

• Grado en que partes de una aplicación pueden utilizarse en otras

aplicaciones

– Interoperabilidad (¿Podrá comunicarse con otras aplicaciones o

sistemas informáticos?

• El esfuerzo necesario para comunicar la aplicación con otras

aplicaciones o sistemas informáticos.

Page 45: Mi Proyecto

CAPÍTULO III

DESARROLLO DE LA

INVESTIGACION

Page 46: Mi Proyecto

37

3.1 Metodología de desarrollo

Para obtener respuesta a nuestros objetivos planteados en esta investigación se realizo

la recolección sistemática de datos de poblaciones o de muestras de población que

deben obtenerse mediante el uso de entrevistas personales.

Esta encuesta tiene como finalidad conocer el panorama real y la situación actual que

se vive en las casas productoras de desarrollo de software en la región de Los Mochis,

Sinaloa, muestra los retos a los que se enfrentan como: las acreditaciones y/o

certificaciones que como empresa es necesario para obtener acceso a proyectos de

desarrollo importantes, debemos mencionar que las empresas encuestadas se

encuentran en constante crecimiento y a la vanguardia tecnológica adecuada a las

necesidades que demandan los sectores públicos y privados de la región de Los

Mochis.

La presente encuesta fue diseñada con la finalidad de dar respuesta a los objetivos que

fueron planteados al inicio de esta investigación.

Ejemplo de encuesta aplicada a las principales casas productoras y desarrolladoras de

software en Los Mochis, Sinaloa:

1. ¿Conoce alguna metodología en el desarrollo de software?

2. ¿Conoce organizaciones que certifiquen las metodologías de software, cuáles?

3. ¿Qué metodología utilizan en el desarrollo de software?

4. ¿La empresa cuenta con alguna certificación, cuáles?

5. ¿Cuáles son las áreas de certificación con las que cuenta la empresa?

6. ¿Sus analistas y/o programadores cuentan con alguna certificación, cuáles?

7. ¿Cuáles son los principales problemas para tener acceso a proyectos de

desarrollos importantes?

8. ¿Cuáles son las recomendaciones para que las empresas produzcan software de

calidad?

Page 47: Mi Proyecto

38

Entre las empresas que fueron consideradas para esta investigación, se selecciono una

muestra representativa para esta investigación de campo.

Empresas entrevistadas:

SHYA

IMAGENSOFT

ÉXITO

MACROPRO

DASI DESARROLLO

A continuación se presentan los resultados obtenidos de esta investigación llevada a

cabo en los días de 24 de mayo al 07 de junio de 2010.

Page 48: Mi Proyecto

39

3.2 Presentación, análisis e interpretación de resultados

1. ¿Conoce alguna metodología en el desarrollo de software?

2. ¿Qué metodología utilizan en el desarrollo de software?

3. ¿Conoce Organizaciones que Certifiquen las metodologías de software, cuáles?

100%

0%

Si

No

50%

33%

17% Programacion Orientada a Objetos

RUP

CMMI-DEV

100%

0%

si

no

Page 49: Mi Proyecto

40

4. ¿La Empresa cuenta con alguna certificación, cuáles?

43%

14%

29%

14%

Innevo

Cega Software

Sei

Nyce

100%

0%

Si

No

22%

34%

22%

11%

11%Moprosoft

CMMI

Syscom

Panasonic

siemens

Page 50: Mi Proyecto

41

5. ¿Cuáles son las áreas de certificación con las que cuenta la empresa?

6. ¿Sus analistas y/o programadores cuentan con alguna certificación, cuáles?

29%

14%

14%

29%

14%Desarrollo

CCTV

Soporte

Procesos

Calidad

100%

0%

Si

No

14%

43%14%

29%ASP.net

ADO.net

UML

SQL

Page 51: Mi Proyecto

42

En las siguientes preguntas no se cuantificaron los resultados debido a que no fueron

enfocadas para ser consideradas y tomadas en cuenta como tal, sino para conocer la

situación por la cual atraviesan las empresas al momento de hacer desarrollo de

software.

7. ¿Cuáles son los principales problemas para tener acceso a proyectos de

desarrollo importantes?

Las empresas desarrolladoras de software en la región de Los Mochis nos

mencionan que el principal problema es la falta de cultura de software en la

entidad por parte de las empresas clientes que están establecidas en la región,

así como el factor económico por parte de las ellas para invertir en software para

sus organizaciones, ya que piensan que es un riesgo invertir en este tipo de

tecnología.

8. ¿Cuáles son las recomendaciones para que las empresas produzcan software de

calidad?

Las empresas recomiendan el trabajar bajo procesos y estándares de calidad

que avalen su trabajo de desarrollo y productos de software, así como la mejora

continua de sus procesos.

Además de tener al personal y empresa capacitados bajo normas y estándares

de calidad para llevar a cabo sus procesos y actividades de desarrollo y ver que

se apliquen constantemente para llevar a la mejora continua de los procesos de

calidad en cada una de las actividades realizadas

Como se esperaba se logro obtener información acerca de la situación actual que se

vive en las empresas de desarrollo de software en la región de Los Mochis, Sinaloa,

además de conocer los retos a los que se enfrentan ( acreditaciones y/o certificaciones)

como empresa es necesario para obtener acceso a proyectos de desarrollo

importantes, debemos mencionar que las empresas encuestadas se encuentran

certificadas y acreditadas lo que les permite tener en constante crecimiento y estar a la

Page 52: Mi Proyecto

43

vanguardia tecnológica adecuada a las necesidades que demandan los sectores

públicos y privados de la región de Los Mochis.

Con los resultados obtenidos de las encuestas se logro responder a los objetivos

planteados en nuestra investigación.

Objetivos

Generales:

Mostrar y analizar el panorama actual en la elaboración y construcción de

software en la región de Los Mochis, Sinaloa.

Específicos:

Describir las metodologías para elaboración de software.

Analizar las consideraciones de la calidad de la ingeniería del software.

Para responder al objetivo general podemos mencionar que las casas desarrolladoras

de software se han preocupado por ser empresas de tipo mundial es decir producir

software de alta calidad basados en estándares propios de la ingeniería del software

esto permite poner a la ciudad de Los Mochis a la vanguardia en calidad y metodologías

de desarrollo de software, entre las metodologías utilizadas para el desarrollo se

encuentran la programación orientada a objetos, metodología RUP y estándares de

CMMI solo por mencionar algunos.

En cuanto a los objetivos específicos se observo que existe una cultura de calidad y

certificación por parte de las empresas desarrolladoras de software para acreditar sus

actividades y lograr software de calidad, entre las certificaciones con las que cuentan

las empresas son CMMI, Panasonic, Siemens y MOPROSOFT certificándose en áreas

de desarrollo, procesos, calidad y soporte de software, lo cual avala la seriedad y

formalidad de su trabajo.

Page 53: Mi Proyecto

CAPÍTULO IV

CONCLUSIONES Y

RECOMENDACIONES

Page 54: Mi Proyecto

44

Conclusiones

En la actualidad, el software de computadoras es la tecnología individual más

importante en el ámbito mundial. El software se ha convertido en una tecnología

indispensable en los negocios, la ciencia y la ingeniería; permitiendo la creación de

tecnologías nuevas (Ing. Genética), la extensión de tecnologías existentes

(Telecomunicaciones).

La ingeniería de software ha llegado a convertirse en el proceso de construir

aplicaciones de tamaño o alcance prácticos, en las que predominan el esfuerzo del

software y que satisface los requerimientos de funcionalidad, desempeño y calidad.

Un elemento clave de cualquier proceso de ingeniería es la medición. Empleamos

medidas para entender mejor los atributos de los modelos que creamos. Pero,

fundamentalmente, empleamos las medidas para valorar la calidad de los productos de

ingeniería o de los sistemas que construimos. A diferencia de otras disciplinas, la

ingeniería del software no está basada en leyes cuantitativas básicas de la física. Las

medidas absolutas, tales como el voltaje, la masa, la velocidad o la temperatura no son

comunes en el mundo del software. En su lugar, intentamos obtener un conjunto de

medidas indirectas que dan lugar a estándares que proporcionan una identificación de

la calidad de algún tipo de representación del software. Sin embargo las medidas y

estándares de software no son absolutas.

Existen organismos reguladores de software que proporcionan las herramientas para

producir software de calidad permitiendo detectar los flancos débiles de los procesos y

fortaleciéndolos en forma homogénea e íntegra, mediante la aplicación de mejoras, en

aquellas áreas consideradas poco eficientes. Proporcionando una guía para mejorar los

procesos de una organización y la habilidad para gestionar el desarrollo, adquisición y

mantenimiento de productos o servicios.

Page 55: Mi Proyecto

45

Esta investigación se logro mostrar la situación actual de desarrollo de software en la

ciudad de Los Mochis ya que como estudiantes teníamos la inquietud de conocer y

exponer el proceso de desarrollo y los requerimientos de calidad utilizados en la

elaboración de software. Para dar solución a esta inquietud nos planteamos los

siguientes objetivos específicos:

Describir las metodologías para elaboración de software.

Analizar las consideraciones de la calidad de la ingeniería del software.

Dimos respuesta a estos objetivos mediante una investigación documental e

investigación de campo en algunas empresas desarrolladoras de software en la ciudad

de Los Mochis.

El objetivo número uno se respondió con la investigación plasmada en el capítulo II del

tema 2.2 Metodologías de la programación de este proyecto en el cual, se mencionan

aspectos como los procesos, métodos y herramientas de desarrollo de software.

Respecto al objetivo número dos, iniciamos dándole solución mediante la aplicación de

encuestas a las empresas desarrolladoras de software para conocer de primera mano

lo que se vive actualmente en las empresas, haciendo hincapié en los aspectos y

consideraciones de calidad. Complementándolo con información recabada en el tema

2.4 Un enfoque de calidad.

De manera general se observo que existe una cultura de calidad y certificación por

parte de las empresas desarrolladoras de software para acreditar sus actividades y

lograr software de calidad, entre las certificaciones con las que cuentan las empresas

son CMMI, Panasonic, Siemens y MOPROSOFT certificándose en áreas de desarrollo,

procesos, calidad y soporte de software, lo cual avala la seriedad y formalidad de su

trabajo. Permitiendo poner a la ciudad de Los Mochis a la vanguardia en calidad y

metodologías de desarrollo de software.

Page 56: Mi Proyecto

46

Para finalizar este proyecto se recomienda continuar con esta investigación ya que se

mencionaron aspectos de suma importancia como los son los retos a los que se

enfrentan las empresas para obtener las acreditaciones y/o certificaciones, obtener

acceso a proyectos importantes de desarrollo, la obtención de recursos mediante

certificaciones que avalan la calidad y seriedad de la empresa y por consecuente el

producto (software)

Page 57: Mi Proyecto

47

BIBLIOGRAFÍA

1. Braude, Ingeniería de software una perspectiva orientada a objetos. Pearson

educación, mexico, 2002.

2. Sommerville, Ingeniria del Sofware, 7° edición, Pearson Addison Wesley,

2006.

3. SENN, James. "Análisis y Diseño de Sistemas de Información"

4. DRAE, Diccionario de la Real Academia Española de la Lengua.

5. Vocabulario Científico y Técnico, edición de 1996.

6. Zelkovitz, M. V., Shaw, A. C. y Gannon, J. D.: Principles of Software

Engineering and Desing. Prentice-Hall, Englewoods Clig, 1979.

7. Boehm, B. W.: «Software Engineering», IEEE Transactions on Computers, C-

25, núm. 12, diciembre, pp. 1226-1241.

8. Bauer, F.L: «Software Engineering», Information Processing, 71, North

Holland Publishing Co., Amsterdam, 1972.

9. Pressman, Ingenieria del software un enfoque practico. 5ta. Edicion

10. Walt Scacchi: "Models of Software Evolution: Life Cycle and Process", SEI

Curriculum Module SEI-CM-10-1.0, Oct. 1987.

11. http://www.asnnetwork.com.ar/detalle.php?IDSECCION=35