You are on page 1of 10

Ensayo

Existe una gran diferencia entre ser programador e ingeniero de software ya que como

hemos aprendido en materias anteriores, el programador es quien se encarga de la parte

del código, es decir, depurar errores, implementar nuevas funciones o simplemente, el

mantenimiento general de la aplicación. La ingeniería del software va más enfocada al

diseño, desarrollo, operación y mantenimiento, en otras palabras, el programador no tiene

en cuenta el presupuesto y los requerimientos del proyecto. Es por eso que cuando un

programador hace las veces de ingeniero del software los proyectos se exceden del

presupuesto o se entregan tarde.

Para adentrarnos en el mundo de la ingeniería del software es necesario entender que es

un software y aunque existen muchas definiciones quizá la más acertada es: “estructuras

de datos que permiten que los programas manipulen de forma adecuada la información”-

libro de ensayos sobre el negocio del software, Tom DeMarco-1995, existen varios tipos

de software, por eso es necesario clasificarlos: tenemos los software genéricos que son

sistemas que se producen y comercializan de manera general por una organización y que

cualquier empresa o persona puede adquirirlos y están los software personalizados que

son sistemas más específicos en cuanto a requerimientos del cliente y que no están a

disposición del público. Según su aplicación tenemos el software de sistemas que son

software que nos permite controlar e interactuar con el sistema operativo, software de

tiempo real que son sistemas que interactúan con su entorno físico, software de gestión
personal y oficina, software de ingeniería y científico que suelen manejar algoritmos

matemáticos, software empotrado que son sistemas que se diseñan para cubrir

necesidades específicas, software basado en web que son herramientas que se pueden

usar accediendo a un servidor web ya sea por medio de internet o intranet.

Entendiendo que es un software y los tipos de software que existen debemos

preguntarnos: ¿Qué es ingeniería de software? Según la definición vista en clase, es el

abastecimiento y uso de principios de ingeniería robustos, orientados a obtener

económicamente software que sea fiable funcione eficientemente sobre maquinas reales.-

F.L. Bauer. Software engineering. Information processing 71., 1972, en otras palabras, la

ingeniería de software es mucho más que simplemente programar, pues es el ingeniero

del software quien realmente está al frente de todo lo que tiene que ver con el proyecto

para que este se pueda desarrollar con el presupuesto previsto y en el plazo estipulado.

En los años 60’s, exactamente en 1968 el término de ingeniería del software surgió en

una conferencia en Garmish (Alemania) que tenía como objetivo resolver los problemas

de la llamada “crisis del software”, este término se usó para describir los frecuentes

problemas que aparecían durante el proceso de desarrollo de nuevo software. Tras la

aparición de hardware basado en circuitos integrados, se desarrollaron sistemas y

aplicaciones que fueron más complejos que muchas veces no se podían construir porque

el hardware disponible hasta ese momento no lo permitía, surgían problemas como no

terminar los proyectos a tiempo, lo que significaba un exceso en el presupuesto inicial,

además, muchas veces el software no daba respuesta real a las necesidades del cliente o
tenían que ser muchas veces un usuario experto para poder usarlo, además de que el

mantenimiento era costoso.

Como el software no tenía un proceso definido como si lo tenía el hardware, los resultado

en los software eran productos de pésima calidad. Se dieron cuenta de que los métodos

de desarrollo de software que hasta ese entonces existían, no eran suficientes para los

nuevos y grandes proyectos y que se necesitaban profesionales especializados que fueran

capaces de lidiar con la creciente complejidad de los nuevos sistemas.

Por mucho tiempo, resolver la crisis del software hizo que muchas compañías produjeran

muchas herramientas de software, cada nueva práctica que aparecía se le conocía como

“silver bullet”. Pero fue en 1986 que Fred Brooks público un artículo titulado NO

SILVER BULLET en el cual afirmaba que ninguna tecnología por si misma podría

mejorar en un diez por ciento la productividad en los siguiente diez años.

El mundo de la ingeniería del software es demasiado complejo y diverso para que una

única solución resuelva todos los problemas, pero el conjunto de todas las prácticas que

surgieron y de las que hoy en día surgen, permiten que la ingeniería del software

desarrolle productos de calidad.

histinf.blogs.upv.es/2010/12/28/ingenieria-del-software/

El proceso de desarrollo de software que también se denomina ciclo de vida del software

que es en cierta manera una forma de dividir el trabajo en distintas actividades o fases

con el fin de lograr la mejor gestión y resultado del proyecto, el ciclo de vida del software
Por lo general incluye una fase de requisitos, una fase de diseño, una fase de pruebas, una

fase de instalación y aceptación, una fase de operación y mantenimiento, y, en ocasiones,

una fase de retirada, aunque pueden variar de un modelo a otro, sus principales fases son:

 Fase de definición:

o Planificación del proyecto de desarrollo de software

o Ingeniería de requisitos o extracción de información

o Análisis (estudio) de requisitos

 Fase de desarrollo:

o Diseño del software

o Generación del código

o Pruebas de software

 Fase de mantenimiento:

o Corrección de errores y reajustes que muchas veces provienen de

implementar nuevos requisitos

https://es.wikiversity.org/wiki/Procesos_de_desarrollo_software

Algunos de los propósitos de los modelos de software es que nos ayuda a comprender un

problema complejo, nos permite comparar soluciones alternativas y quizá la más

importante es que nos permite la detección de errores y omisiones durante el diseño.

Aunque el proceso de desarrollo de software no es único puesto que no existe un proceso

universal que sea efectivo para cada proyecto, si podemos describir las actividades

fundamentales del proceso del software:


 Especificación de software: se define la funcionalidad y restricciones de

operación que debe cumplir el software.

 Diseño e implementación: se diseña y construye el software de acuerdo a la

especificación.

 Validación: este debe validarse para asegurarnos de que cumple con lo que el

cliente desea.

 Evolución: el software debe evolucionar, para adaptarse a las necesidades del

cliente.

Como atributos de un buen software tenemos las siguientes:

 Mantenibilidad: fácil de corregir un error en un programa

 Confiabilidad: que se define mediante

o Fiabilidad: como se espera que funcione el programa.

o Seguridad: como se controla el acceso al programa y los datos por

usuarios no autorizados.

o Protección: en caso de fallo, no causa daños físicos ni económicos.

 Eficiencia: cantidad de recursos requeridos por el programa para realizar una

función.

 Usabilidad: que sea fácil de utilizar por los usuarios.

Desarrollar software puede ser muy difícil ya que representa un gran desafío intelectual

a quien se aventura en este complejo mundo; por lo general, entre más grande sea el

proyecto, más complejo y variado se torna, existe una gran diferencia entre la práctica y

la teoría, es por esto que, cuando un proyecto se desarrolla de forma indisciplinada,


existen muchas probabilidades de fracasar, en clase, se muestra como ejemplo diseñar un

columpio y que, ya sea por la falta de comunicación o especificación en requerimientos,

o tal vez por falta de experiencia en el desarrollo de proyectos, muchas veces no se obtiene

lo que el cliente espera del proyecto.

http://www.sc.ehu.es/jiwdocoj/mmis/externas.htm

El modelo de capacidad de madurez nace como un modelo propuesto por el Software

Engineering Institute (SEI) en 1986 que buscaban mejorar el proceso de software y

comenzaron a desarrollar un marco de trabajo que llamaron proceso de madurez. Este

modelo de capacidad de madurez es una estrategia de mejora, señalización de deficiencias

dentro de la organización y una guía para avanzar hacia una cultura de calidad; esta no es

por lo tanto, una solución rápida sino gradual.

El modelo de capacidad de madurez consta de cinco niveles:

 Nivel 1. Inicial: es el punto base, una empresa está ubicada en este nivel si su

proceso es caótico, esto quiere decir no hay un ambiente estable en el cual se pueda

desarrollar o mantener software, en este, el éxito depende del esfuerzo individual

 Nivel 2. Repetible: para poder dejar atrás el nivel 1 la organización debe empezar

a documentar su proceso, así, el cliente puede saber acerca del avance del

proyecto. La capacidad del proceso de una organización nivel 2 tiene disciplina,

ya que el proyecto involucra planeación y seguimiento. Los éxitos anteriores

pueden repetirse.
 Nivel 3. Definido: en este nivel, contamos con un proceso de software estándar

para desarrollar o mantener el software, este está documentado y es implementado

a lo largo de toda la organización en varios proyectos. En este nivel se cuenta con

planes y programas de mejora.

 Nivel 4. Gestionado: en este nivel hacemos uso de todos los datos que hemos

recolectado. Convertimos datos en información relevante para la organización

para así poder identificar lo que está mal, se cumple con los planes y programas

de mejora y se hace una distinción entre los procesos principales y los de apoyo.

 Nivel 5. Optimizado: en el nivel 5 la organización se dedica a mejorar

continuamente su proceso, pero siempre de manera controlada. Este mejoramiento

se da gracias al uso o implementación de nuevas tecnologías.

http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/garcia_r_ci/capitulo5.pdf

MODELO CASCADA

También conocido como ciclo de vida del software es un enfoque metodológico que

ordena rigurosamente las etapas del proceso para el desarrollo del software, esto

quiere decir que, hasta que no finalice una etapa no puede iniciar la siguiente. Al final

de cada etapa se lleva a cabo una revisión final para determinar si el proyecto pude

avanzar a la siguiente fase, este es la base de todos los modelos de ciclo de vida
1. Planificación: estudio de factibilidad del software y de los costos que puedan

surgir durante su implementación.

2. Análisis y diseño de requerimientos: identificación de características para

determinar las funcionalidades del software, debemos tener en cuenta las

restricciones que debe tener el software.

3. Diseño: plasmar todos los requerimientos y características que permita visualizar

y contemplar situaciones no previstas.

4. Implementación: realizar pruebas pertinentes y verificar que se cumple con los

requerimientos y características.

5. Operación y mantenimiento: una vez instalado, dependerá de lo que pase a partir

de ese punto, ya que, se pueden aparecer nuevas características que no han sido

contempladas u otras innecesarias.


6. Crecimiento y cambio: se evalúa el software y se determina si se puede emplear

dentro de la nueva tecnología no afectando la integridad del mismo.

Una de sus desventajas es que, cualquier error de diseño detectado en una de sus

etapas, conduce necesariamente al rediseño y nueva programación del código,

aumentando los costos del desarrollo, otra seria que el proceso de creación del

software tarda mucho tiempo, ya que, debe pasar por el proceso de prueba pues esta

es la base para que funcione bien.

http://ingenexescom.blogspot.com.co/2012/02/modelo-en-cascada.html

MODELO DE DESARROLLO EVOLUTIVO

Estos son modelos iterativos que permiten desarrollar versiones cada vez más

completas y complejas e incluso evolucionar más allá. La idea de este modelo es el

desarrollo del sistema inicial y junto con el usuario probarla cuantas veces sea

necesario hasta que se desarrolle el sistema adecuado. Una ventaja de este modelo es

que es de rápida realimentación del usuario, es decir, que este está en constante

interacción con el programa donde se realizan pruebas en cada iteración.

En este modelo existen dos tipos de desarrollo evolutivo:

 Desarrollo exploratorio: es explorar con el usuario los requisitos hasta llegar

a un sistema final.

 Enfoque utilizando prototipos: en este, el objetivo es entender los requisitos

del usuario y trabajar para mejorar la calidad de los requisitos.

You might also like