Está en la página 1de 35

Tema 01: El campo de aplicación de la Ingeniería de

Software
Página 1 de 2

Historia 
 
La primera vez que se acuñó el término de Ingeniería de Software fue en 1967 por un grupo de
estudio de la OTAN quienes afirmaban que la Ingeniería de Software podía compararse con otras
ciencias ingenieriles.
 
Un año más tarde, en 1968, en una Conferencia de la OTAN celebrada en Garmisch, Alemania, se
concluyó según los conferencistas que la Ingeniería de Software debe utilizar las filosofías y los
paradigmas de las disciplinas de ingeniería para solucionar lo que se denomina la crisis del
software, la cual hace referencia a que la calidad de los productos de software no era la adecuada,
además existían problemas en los tiempos de entrega y en los presupuestos.
 
Lastimosamente los años han pasado y una proporción muy grande de productos de software
todavía se entregan tarde, se exceden los presupuestos, no cumplen con las expectativas de los
clientes, no cuentan con documentación apropiada y con fallas de último momento, es por ello que
algunos autores consideran que en lugar de llamarse crisis del software, debería llamarse
depresión del software, en vista de su larga duración y mal pronóstico.
 

 
Un ingeniero de Software debe adquirir habilidades técnicas y administrativas las cuales debe
aplicar no solo a la programación, sino en cada etapa de la producción del software, desde los
requisitos hasta el mantenimiento que se efectúa luego de la entrega al cliente.
 
Software
 
Hace unos años, pocas personas podrían haber definido lo que significa software, pero en la
actualidad, la mayoría de profesionales y personas particulares consideran que entienden el
significado.
 
Sin embargo, para poder llegar a una definición adecuada hay que considerar las características
siguientes:
 
a) El software no se desgasta: 
 
El software idealmente no debería fallar, conforme avanza el tiempo, no se desgasta como lo hace
el hardware, pero se deteriora debido a los cambios que experimenta en su vida. 
 
Cuando un componente de hardware falla, se sustituye con un repuesto, sin embargo, al software
hay que aplicarle mantenimiento para poder corregir el deterioro lo cual es una actividad de mayor
complejidad.
 
 
b) El software se desarrolla no se construye:
 
El hardware se manufactura y aunque tenga similitudes con el software, las actividades son
diferentes. En ambos la calidad depende del éxito de su diseño pero tienen características
diferentes, en ambos se utilizan personas, pero los costos del software se centran en las
actividades de la ingeniería, por tanto, los proyectos no se pueden manejar como si fueran
proyectos de manufactura.
 
c) La mayoría de software aún se construye a la medida:
 
Generalmente el software se desarrolla conforme los requerimientos del cliente y de acuerdo al
problema o necesidad que se requiere resolver.
 
En resumen, el software está conformado por programas que incluyen líneas de código, por datos
organizados o estructurados para facilitar su manipulación sin dejar a un lado la documentación
que incluye manuales de usuario, manuales técnicos y otros documentos relacionados al software,
sin embargo, hay diferentes definiciones y puntos de vista de diversos autores que también pueden
ser de utilidad.
 

 
 
Definición de ingeniería de software
 
 
Podemos encontrar aún más definiciones, pero lo más importante es comprender que es la
ingeniería de software para que hagas tu propia definición.
 
Objetivos de la ingeniería de software
 
En la construcción y desarrollo de proyectos se aplican métodos y técnicas para resolver los
problemas, la informática aporta herramientas y procedimientos sobre los que se apoya la
ingeniería de software, sus objetivos son: 
 

 Mejorar la calidad de los productos de software.


 Aumentar la productividad y trabajo de los ingenieros del software.
 Facilitar el control del proceso de desarrollo de software.
 Suministrar a los desarrolladores las bases para construir software de alta calidad en una
forma eficiente.
 Definir una disciplina que garantice la producción y el mantenimiento de los productos
software desarrollados en el plazo fijado y dentro del costo estimado.
 Entre otros.
 

LA INGENIERIA DE SOFTWARE TIENE QUE VER


CON VARIOS CAMPOS EN DIFERENTES FORMAS:

MATEMÁTICAS
GESTIÓN DE PROYECTOS
El desarrollo de software de gran porte requiere de una adecuada gestión del proyecto.

CREACIÓN
Los programas son construidos en una secuencia de pasos

ARTE
Los programas contienden muchos elementos artísticos.

Fundamentos y técnicas de la ingeniería de software


 
Los fundamentos y técnicas de Ingeniería de software buscan un compromiso con la calidad, las
organizaciones deben centrarse en conseguir dicha calidad. El software se puede ver como un
conjunto de componentes que buscan obtener la calidad:
 
 
 
Los procedimientos actúan sobre los métodos y las herramientas, definen la secuencia en la que
deben aplicarse los métodos y cómo usar las herramientas. Los métodos definen cómo desarrollar
el software desde el punto de vista técnico. Las herramientas proporcionan un soporte automático
o semi automático para los métodos. 
 

Retos fundamentales que afronta la ingeniería de


software
 
En el siglo XXI, la ingeniería de software afronta tres retos fundamentales:
 
El reto de la heterogeneidad: Es necesario que los sistemas operen en redes con diferentes tipos
de computadoras o dispositivos móviles, diferentes sistemas operativos.
El reto de la entrega: Las técnicas de ingeniería de software consumen mucho tiempo con el
propósito de desarrollar software de calidad. Hoy en día los negocios necesitan cambiar con
rapidez y dar una respuesta rápida
El reto de la confianza: El software tiene relación con todos nuestros aspectos de la vida
necesitamos confiar en él, especialmente si accedemos al software por medio de paginas web o
interfaces

EVALUACIÓN DEL TEMA 1

Tema 02: El papel del ingeniero de software


Página 2 de 2

 
 
Evolución de la ingeniería del software
 
 
Inicialmente la programación de las computadoras era un arte que no disponía de métodos
sistemáticos en que poder basarse para la realización de productos software, por ello se realizaban
sin ninguna planificación.
 
En el año 1950 ya se hablaba de que existían programadores que escribían programas pero no
tenían muchos conocimientos técnicos, ni experiencia.
 
A principios de los años 60, ya existían los programadores expertos que desarrollaban grandes
proyectos.
 
A finales de los años 60, surgieron los grandes sistemas comerciales de software, el trabajo ya no
consistía solo en la programación, va más allá, se crea el término “ingeniería de software”.
 
Desde mediados de los 60 hasta finales de los 70 se caracterizó por el establecimiento del
software como un producto que se desarrollaba para una distribución general. En esta época nació
lo que se conoce como el mantenimiento del software que se da cuando cambian los requisitos de
los usuarios y se hace necesaria la modificación del software. El esfuerzo requerido para este
mantenimiento era en la mayoría de los casos tan elevado que se hacía imposible su
mantenimiento.
 
A continuación, surge una etapa que se caracteriza por la
aparición de una serie de técnicas como la Programación
Estructurada y las Metodologías de Diseño que
solucionan los problemas anteriores. A finales de esta
etapa aparecen las herramientas CASE, aunque como
podemos imaginar eran muy rudimentarias.
 
Hoy en día, los ingenieros de software están muy
orgullosos, ya que debido a la complejidad del software
que han desarrollado a lo largo del siglo XX, es que han
logrado muchas contribuciones en todas las actividades
cotidianas que efectuamos, pero la contribución en el
siglo XXI será aún más grande, ya visitamos el espacio,
se creó Internet, el transporte es controlado por un
software, etc.
 

El ingeniero en general
 
Un ingeniero es alguien que resuelve problemas utilizando las fuerzas de la naturaleza. Sus
herramientas principales son conocimientos científicos y una serie de técnicas aprendidas por
experiencia o en sus estudios de la ingeniería.
 

El ingeniero del software


 
La ingeniería de software es una disciplina de la ingeniería que concierne a todos los aspectos de
la producción de software.
 
Los ingenieros de software adoptan un enfoque sistemático para llevar a cabo su trabajo, utilizan
las herramientas y técnicas necesarias para resolver el problema planteado, de acuerdo a las
restricciones de desarrollo y recursos disponibles.
 

Diferencia entre ingeniero del software y los programadores


 
El programador es un especialista en algunos ámbitos de la ingeniería de software. Un ingeniero
de software está a cargo del proceso global de desarrollo de software y se espera que mejore la
fiabilidad y el mantenimiento de este complejo proceso.
 
Un ingeniero de software puede tener un equipo de programadores informáticos que trabajan bajo
su supervisión.
Diferencia entre los tipos de ingenieros

Ingeniero en informática
Ingeniero en sistemas

Ingeniero de software
Relaciones de la ingeniería del software
 
El ingeniero del software como especialista se relaciona con múltiples áreas en la empresa, así
como ajenos a ella: 
 

 El cliente (usuarios).
 Programadores, diseñadores, testers, mantenimiento y calidad. 
 La alta gerencia.
 Proveedores y grupos de interés.
 

Método de la ingeniería del software 


 
Consiste en usar heurísticas para causar, con los recursos disponibles, el mejor cambio posible en
una situación incierta o pobremente comprendida.
 
A diferencia de la ciencia, la ingeniería no busca modelar la realidad, sino la percepción que tiene
la sociedad de la realidad, incluyendo sus mitos y prejuicios. 
 

Características aplicables
 

Búsqueda de una situación que requiere un cambio. La solución deseada tiene que ser consistente
con los recursos disponibles, la solución debe ser la mejor técnicamente se denomina la solución
optima.
 
Responsabilidad profesional y ética del ingeniero de software 
 
Los ingenieros de software no solo deben considerar aspectos técnicos, deben tener una visión
más amplia, en lo ético, social y profesional.
 
Dentro de los aspectos éticos tenemos: 
 

 Confidencialidad.
 Competencia.
 Derechos de propiedad intelectual.
 Uso del equipo informático. 
 
La responsabilidad en la ingeniería de software es un concepto complejo, sobre todo porque al
estar los sistemas informáticos fuertemente caracterizados por su complejidad, es difícil apreciar
sus consecuencias. 
 
En la ingeniería del software la responsabilidad será compartida por un grupo grande de personas,
que comprende desde el ingeniero de requisitos, hasta el arquitecto software, y contando con el
diseñador, o el encargado de realizar las pruebas. Por encima de todos ellos destaca el director del
proyecto. El software demanda una clara distribución de la responsabilidad entre los diferentes
roles que se dan en el proceso de producción.
 
El ingeniero del software tiene una responsabilidad moral y legal limitada a las consecuencias
directas.
 
No basta con decir que debes poseer estándares normales de honestidad e integridad. Existen
áreas donde los estándares de comportamiento no están acotados por las leyes, sino por la noción
de la responsabilidad profesional. Algunas de estas son:

Confidencialidad, competencia, derechos de propiedad intelectual, uso inapropiado de las


computadoras
 
 
Organizaciones como la ACM, el IEEE y la British Computer Society publican un código de
conducta profesional o de ética.
 
En cualquier situación en la que diferentes personas tienen distintos puntos de vista y objetivos,
será posible encontrar problemas éticos. Los problemas éticos aparecen en nuestra vida
profesional y, afortunadamente en muchos casos, son relativamente menores y se pueden resolver
sin dificultad. Cuando no se pueden resolver, los ingenieros se enfrentan con otro problema, ya que
la acción con base en sus principios podría ser renunciar a su trabajo, pero esto puede afectar a
otros, como por ejemplo, a sus colaboradores o a sus hijos.
 
El área de ética y responsabilidad profesional ha recibido creciente atención en los pasados años.
Los principios de ética se pueden considerar desde un punto de vista filosófico, y la ética de la
ingeniería de software se debe tratar con referencia a estos principios básicos. Este es el enfoque
considerado por Laudon (1995) y por Huff y Martin (1995).
 

Perfil del ingeniero de software


 
El ingeniero de software es un profesional con sólidas bases metodológicas en el desarrollo de
software a pequeña y gran escala, por tanto, debe contar con algunas características de
conocimientos para poder desempeñar de forma correcta sus funciones.
 
Código de ética y práctica profesional de la ingeniería de software
 

La ingeniería de software debe adherirse a los siguientes ocho principios:


 
Público, Cliente y empleador, producto, juicio, gestión, profesión, colegas, uno mismo.
 
Aunque cada uno de estos ocho principios es igualmente importante, aparece un tema más
relevante: un ingeniero de software debe trabajar en pro del interés público.
 
En el ámbito personal, un ingeniero de software debe atenerse a las siguientes reglas: 
 

 Nunca robar datos para beneficio personal.


 Nunca distribuir o vender información patentada que haya obtenido como parte de su
trabajo en un proyecto de software.
 Nunca destruir o modificar maliciosamente los programas, archivos o datos de otra
persona.
 Nunca violar la privacidad de un individuo, grupo u organización.
 Nunca atacar un sistema por deporte o beneficio.
 Nunca crear o difundir un virus o un gusano de computadora.
 Nunca usar la tecnología de computación para facilitar la discriminación o el hostigamiento.
 
Durante la década pasada, ciertos miembros de la industria del software han cabildeado por una
legislación protectora que: 
 

 Permita a las compañías liberar el software sin revelar los defectos conocidos.
 Exentar a los desarrolladores de responsabilidad penal por cualesquiera daños que
resulten debido a dichos defectos conocidos.
 Restringir a otros la revelación de defectos sin permiso del desarrollador original.
 Permitir la incorporación de software de autoayuda dentro de un producto que pueda
desactivar (vía comandos remotos) la operación del producto.
 Exentar a los desarrolladores de software con autoayuda de los daños en caso de que el
software lo desactive una tercera persona. 
 
Al igual que con cualquier legislación, el debate con frecuencia se centra en conflictos políticos, no
tecnológicos. Sin embargo, mucha gente considera que la legislación protectora, si se propone de
manera inadecuada, entra en conflicto con el código de ética de la ingeniería de software al exentar
indirectamente a los ingenieros de software de su responsabilidad para producir software de alta
calidad.

EVALUACION DE TEMA 2
Tema 03: Modelos del ciclo de vida del software
Página 2 de 2
 
 

Desarrollo del software en teoría


 
En un mundo ideal, el software comienza desde cero, primero se determinan los requerimientos del
cliente, luego se realiza el análisis. Cuando se terminan los artefactos del análisis se produce el
diseño. Esto seguido por la implementación o programación del producto software completo, el cual
se instala en la computadora del cliente o se pone en un servidor de acceso en línea.
 
No obstante, la construcción del software es muy diferente en la práctica por dos razones: 
 

 Primera, los profesionales del software son humanos y, por lo tanto, cometen
equivocaciones.

 Segunda, los requerimientos del cliente pueden cambiar mientras se está construyendo el
software.
 

 
¿Qué es? 
 
Los modelos del ciclo de vida del software, también conocidos como modelos prescriptivos del
software, definen un conjunto distinto de actividades, acciones, tareas, fundamentos y productos de
trabajo que se requieren para desarrollar software de alta calidad.

No son perfectos, pero proporcionan una guía útil para el trabajo de la ingeniería del software. 
 
¿Por qué se les llama prescriptivos?
 
Porque prescriben un conjunto de elementos de proceso: 
 

 Actividades del marco de trabajo. 


 Acciones de ingeniería del software.

 Tareas.

 Productos del trabajo. 

 Aseguramiento de calidad. 

 Mecanismos de control de cambio para cada proyecto.

 También prescribe un flujo de trabajo.


 

Modelo en cascada
 
El modelo en cascada es secuencial, ejecuta una lista de actividades al pie de la letra, y no se
puede efectuar la actividad dos sin haber finalizado la uno, por eso es secuencial, se sabrá el
resultado hasta que se finalicen todas las etapas o tareas y eso puede ser desastroso, ya que
cuando se conozca el resultado ya no habrá mucho tiempo para corregir el software terminado,
pero si hay tiempo, los cambios que se hagan pueden deteriorar el software.
 
Algunas veces llamado “Ciclo de vida clásico” sugiere: 
 
Un enfoque sistemático secuencial hacia el desarrollo del software.
Es el paradigma más antiguo para la ingeniería del software.
 

 
En este modelo las pruebas se dejan ya casi en las últimas etapas, hoy en día, es preferible que
las pruebas se hagan lo más pronto posible, no solo al final, así se garantiza la calidad del
software.
 
MODELO EN CASCADA

Se utiliza cuando existen ocasiones en que los requisitos de un problema se entienden de manera
razonable, cuando el trabajo fluye desde la comunicación a través del despliegue de una manera
casi lineal. Ejemplo en adaptaciones o mejoras de un sistema de contabilidad. Cuando los
requerimientos están bien definidos.

El cliente debe tener paciencia, debe esperar que el proyecto esté bien avanzado para poder
probar una versión que funcione del programa, no puede utilizar ninguna versión
Los cambios confunden mientras el equipo del proyecto actúa. Incorporan la incertidumbre
natural. Un error grave será desastroso si no se detecta antes de la revisión del programa.

Puede servir como modelo en situaciones donde los requerimientos están fijo, y donde el trabajo
se realiza hasta su conclusión

Modelo  de procesos incrementales


 
En los modelos incrementales, el cliente identifica a grandes rasgos, los servicios que
proporcionará el sistema. Identifica qué servicios son más importantes y cuáles menos. Entonces
se definen varios incrementos en donde cada uno proporciona un subconjunto de funcionalidades
del sistema.
 
Entre los modelos incrementales podemos seleccionar alguno de los siguientes según nos
convenga:
 
a) Modelo incremental
 
Se da cuando: 
 

 Los requisitos iniciales del software están bien definidos en forma razonable.
 Hay una necesidad imperiosa de proporcionar un conjunto de funcionalidad al usuario y
después refinarla y expandirla.
 A menudo, al utilizar un modelo incremental el primer incremento es un producto esencial,
es decir, software que puede ser utilizado pero que posee solo requerimientos básicos.
 En muchas situaciones los requisitos iniciales del software están bien definidos en forma
razonable, pero el enfoque global excluye un proceso puramente lineal.
 Quizá haya necesidad de proporcionar un conjunto limitado de funcionalidad para el
usuario y después refinarla y expandirla en las entregas posteriores del software.
 
Para situaciones como estas, es conveniente utilizar el modelo incremental, ya que por cada
incremento, el usuario verá una versión funcional del software. En el siguiente incremento se habrá
mejorado y agregado nuevas funcionalidades.
 

Características: 
 

 Este modelo combina elementos del modelo en cascada aplicada en forma iterativa.
 Aplica secuencias lineales de manera escalonada conforme avanza el tiempo en el
calendario.
 Cada secuencia lineal produce incrementos de software.
 En este modelo el primer incremento es un producto esencial.
 Es iterativo por naturaleza.
 Se enfoca en la entrega de un producto funcional con cada incremento.
 Es útil cuando el personal necesario para una implementación completa no está disponible,
posiblemente el personal con mayor experiencia esté trabajando en otro proyecto. Podemos
utilizar el personal disponible para iniciar el proyecto y luego incorporar más personal para los
siguientes incrementos.
 Los primeros incrementos se pueden implementar con menos gente.
 Los incrementos se pueden planear para manejar los riesgos técnicos. 
 
En este tipo de proyectos podemos comenzar con un equipo reducido de personas y conforme se
avanza en los incrementos se van incorporando más, se corre el riesgo que estas nuevas personas
no se acoplen al equipo que inició el software, pero si se planifica y documenta bien todo, el riesgo
será mínimo.
 

Ejemplo de un software procesador de texto aplicando el modelo incremental:


 

b) Desarrollo Rápido de Aplicaciones (DRA)


 
El objetivo del modelo de desarrollo rápido de aplicaciones es el desarrollo de sistemas en poco
tiempo, es una adaptación a “alta velocidad” del modelo en cascada, pero tiene las siguientes
características: 
 

 Requiere de equipos trabajando en paralelo.


 Aplicando tecnología de componentes.
 Del inglés Rapid Application Development  (RAD).
 
El Desarrollo Rápido de Aplicaciones (DRA) es un modelo de proceso de software incremental que
resalta un ciclo de desarrollo corto. 
 
Como otros modelos de proceso, el enfoque DRA cumple con las actividades genéricas del marco
de trabajo que ya se han presentado.
 
La comunicación trabaja para entender el problema del negocio y las características de
información que debe incluir el software. La planeación es esencial porque varios equipos de
software trabajan en paralelo sobre diferentes funciones del sistema. El modelado incluye 3 fases:
el modelado de negocios, el modelado de datos y modelado de procesos.
La construcción resalta el empleo de componentes de software existente y la aplicación de la
generación automática de código. Por último, el despliegue establece una base para las
iteraciones subsecuentes, si estas son necesarias. 
 

Tema 04: El proceso del software


Página 2 de 2
 
 
¿Quién lo hace? 
 
Los ingenieros de software y sus jefes adaptan el proceso a sus necesidades y después le dan
seguimiento. Además la gente que ha solicitado el software tiene una función que desempeñar en
el proceso de definirlo, construirlo y probarlo.
 
¿Por qué es importante?
 
Porque ofrece estabilidad, control y organización a una actividad que puede volverse caótica si no
se controla. Sin embargo, un enfoque de ingeniería del software moderno debe ser “ágil”. Debe
requerir solo aquellas actividades, controles y documentaciones apropiados para el equipo del
proyecto y el producto que ha de producirse.
 

Concepto de proceso de software


 

Producto y proceso
 
El producto de software, generalmente, nace por una necesidad o para resolver algún problema,
luego este producto pasa por un proceso de software que incluye las etapas de desarrollo, control,
gestión y operación, hasta que obtenemos el producto o la solución del software.
 
Es extraño que alguien diga: "Me puse a programar y me salió una contabilidad", sin embargo,
algunas aplicaciones dan la impresión de que recordar que la probabilidad de que un mono teclee
en una máquina de escribir y salga el quijote no es cero, es decir, en algunas ocasiones se puede
finalizar un producto de software sin efectuar ninguna planificación, al final el software siempre se
va finalizar, pero no será un software de calidad.
 
 
Si el proceso es débil, sin  duda, el producto final sufrirá las consecuencias. Asimismo, una
confianza excesiva en el proceso es peligrosa.
 
La gente obtiene tanta satisfacción del proceso creativo que del producto final. Un pintor disfruta
los trazos del pincel tanto como el resultado del cuadro. Un profesional creativo del software debe
sentir tanta satisfacción del proceso como del producto terminado.
 
El trabajo que realizan las personas relacionadas con el software, cambiará en los años que
siguen. La dualidad del producto y el proceso es un elemento importante para mantener a las
personas creativas comprometidas mientras finaliza la transición desde la programación hasta la
ingeniería de software. 
 

Marco de trabajo para el proceso


 
Un marco de trabajo establece la base para un proceso de software completo al identificar un
número pequeño de actividades del marco de trabajo aplicables a todos los proyectos de software,
sin importar su tamaño o complejidad.
 
El siguiente marco de trabajo genérico del proceso se puede aplicar en la mayoría de proyectos de
software:
 
Comunicación, planeación, modelado, construcción, despliegue
 
El marco de trabajo descrito lo complementa una serie de actividades, de las cuales se incluyen:
 Seguimiento y control del proyecto, gestión del riesgo, aseguramiento de la calidad del
software, revisiones técnicas formales, medición

 
La aplicación de cualquier modelo de proceso del software debe reconocer que la adaptación es
esencial para el éxito, pero los modelos de proceso difieren de manera fundamental en: 
 

 El grado en el cual las tareas de trabajo están definidas dentro de cada actividad del marco
de trabajo.

 La forma en la que se aplican las actividades para asegurar la

 del software.

 La forma en la cual se efectúan las actividades de seguimiento y control.

 La interdependencia entre las tareas y las actividades.

 El grado en que los clientes se comprometen con el proyecto.

 El grado en el cual se define la responsabilidad del equipo y la organización.

 El grado de autonomía otorgado al equipo del proyecto de software.


 
En años recientes se han propuesto modelos de proceso que subrayan la agilidad del proyecto y
siguen un conjunto de principios, los cuales conducen a un enfoque más informal para el proceso
de software.
 
Estos modelos ágiles del proceso resaltan la manejabilidad y adaptabilidad. Son apropiados para
muchos proyectos y son útiles cuando se desarrollan aplicaciones en red. 
 

Modelo de capacidad de madurez (CMMI)


 

CMMI es una hoja de ruta para la mejora


del proceso de software. Identifica niveles
de madurez, proporciona una guía para
medir la capacidad del proceso de software
de la organización, permite fijar metas y
prioridades para la mejora del proceso, guía
a la organización hacia una ingeniería del
software de excelencia.
 
El objetivo del modelo CMMI es proveer
una guía para mejorar los procesos de una
organización y su capacidad para gestionar
el desarrollo, la adquisición y el
mantenimiento de los productos de software.
 
El Modelo de Capacidad de Madurez fue desarrollado por el Instituto de Ingeniería de Software,
basado en un conjunto de capacidades de software y de sistemas que deben estar presentes
conforme las organizaciones alcanzan diferentes grados y niveles de madurez del proceso.
 
La CMMI es un modelo definido en alrededor de 700 páginas, la pregunta que se ha debatido
durante una década es ¿La CMMI es excesiva?, la respuesta no es un simple sí o no.
 
Siempre debe adoptarse el espíritu de la CMMI, el desarrollo de software debe tomarse con
seriedad, debe planearse, debe controlarse, debe rastrearse, conducirse de manera profesional,
debe centrarse en las necesidades del cliente, la habilidad de los ingenieros de software y la
calidad del producto terminado.
 
Aun si una organización de software decide no adoptar la CMMI, todo equipo de software debe
retomar su espíritu y aprender de su exposición del proceso y la práctica de la ingeniería de
software. 
 

Patrones del proceso


 
El proceso de software puede definirse como una colección de patrones que definen un conjunto
de actividades, acciones, tareas de trabajo o comportamientos relacionados que requiere el
desarrollo de un software  de computadora.
 
Un patrón del proceso, ofrece una plantilla, mediante la combinación de patrones, un equipo de
software puede construir un proceso que satisfaga lo mejor posible las necesidades de un
proyecto.
 
En algunos casos se puede aplicar un patrón para describir un proceso completo, como por
ejemplo, un prototipo. En otras situaciones se utilizan los patrones para describir una actividad
dentro del marco de trabajo como la planeación o una tarea dentro de una actividad del marco de
trabajo, como por ejemplo, la estimación de un proyecto.

Patrón de proceso: de tarea: definen una acción de ingeniería de software que es parte del proceso
. De escenario: definen una actividad del marco de trabajo para el proceso. De fase: definen la
secuencia de actividades del marco de trabajo que ocurre junto con el proceso .
Los patrones de proceso proporcionan un mecanismo efectivo para describir cualquier proceso de
software, sin embargo, la existencia de un proceso de software no es garantía de que este será
entregado a tiempo, esto dependerá de otros factores.
 
¿Por qué el proceso de software cambia tan drásticamente de una organización a otra?
 
La razón principal es la falta de habilidades en ingeniería de programación. Pocos profesionales se
mantienen actualizados. La mayoría sigue desarrollando software a la antigua porque no conoce
otra forma de hacerlo.
 
Otra razón de que haya diferencias en el proceso del software es que muchos gerentes de
software son excelentes gerentes, pero saben muy poco acerca del desarrollo de software o de su
mantenimiento. Su falta de conocimientos técnicos puede ocasionar retrasos importantes en los
calendarios de los proyectos hasta el punto de que no haya modo de continuar. Con frecuencia
este es el motivo por el que muchos proyectos de software no se terminan.
 

MODELOS DE PROCESO SOFTWARE PERSONAL (PSP)


MODELOS DE PROCESO PERSONAL Y EN EQUIPO

Tecnología del proceso


 
Las herramientas de tecnología del proceso permiten que una organización de software construya
un modelo automatizado del marco de trabajo común del proceso, de los conjuntos de tareas y
actividades vistas anteriormente en el marco de trabajo del proceso.
 
Las herramientas de tecnología de proceso se pueden aprovechar para coordinar el uso de otras
herramientas de la ingeniería de software asistida por computadora que sean apropiadas para una
tarea de trabajo particular.
 
 
Una vez creado un proceso aceptable es posible utilizar otras herramientas de tecnología del
proceso para localizar, monitorear e incluso, controlar todas las tareas de ingeniería de software
definidas como una parte del modelo del proceso.
 

Evaluación del proceso


 
La norma ISO 9001:2008 ha adoptado un ciclo de “planear-hacer-revisar-actuar”, que se aplica a
los elementos de gestión de calidad de un proyecto de software. Dentro de un contexto de
software, “planear” establece los objetivos, las actividades y las tareas del proceso necesario para
conseguir un software de alta calidad y una satisfacción del cliente, “hacer” implementa el proceso
de software, “revisar” monitorea y mide el proceso para asegurarse de que todos los requisitos
establecidos para la gestión de calidad hayan sido cumplidos, “actuar” inicia las actividades de
mejoramiento del proceso de software, el cual tiene una continuidad de trabajo para mejorar el
proceso.
 
La existencia de un proceso de software no es garantía de que este será entregado a tiempo, de
que satisfará las necesidades del cliente, o que mostrará las características técnicas que
conducirán a características de calidad a largo plazo. Por tanto, el proceso mismo debe ser
evaluado para asegurarse de que cumpla con criterios básicos que demuestran ser esenciales
para una ingeniería de software exitosa.

EVALUACIÓN DE TEMA 3

También podría gustarte