Vous êtes sur la page 1sur 14

Ingeniera de software

Ingeniera de software es la disciplina o rea de la informtica que


ofrece mtodos y tcnicas para desarrollar y mantener software de
calidad.
Esta ingeniera trata con reas muy diversas de la informtica y de las
ciencias de la computacin, tales como construccin de compiladores,
sistemas operativos, o desarrollos Intranet/Internet, abordando todas las
fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de
informacin y aplicables a infinidad de reas: negocios, investigacin
cientfica, medicina, produccin, logstica, banca, control de trfico,
meteorologa, derecho, Internet, Intranet, etc.
Una definicin precisa an no ha sido contemplada en los diccionarios,
sin embargo se pueden citar las enunciadas por algunos de los ms
prestigiosos autores:

Ingeniera de Software es el estudio de los principios y


metodologas para el desarrollo y mantenimiento de sistemas
software (Zelkovitz, 1978)

Ingeniera de software es la aplicacin prctica del conocimiento


cientfico al diseo y construccin de programas de computadora y
a la documentacin asociada requerida para desarrollar, operar y
mantenerlos. Se conoce tambin como Desarrollo de Software o
Produccin de Software ( Bohem, 1976).

Ingeniera de Software trata del establecimiento de los principios y


mtodos de la ingeniera a fin de obtener software de modo
rentable, que sea fiable y trabaje en mquinas reales (Bauer,
1972).

Es la aplicacin de un enfoque sistemtico, disciplinado y


cuantificable al desarrollo, operacin y mantenimiento del

software; es decir, la aplicacin de la ingeniera al software (IEEE,


1993).
En el 2004, en los Estados Unidos, la Oficina de Estadsticas del Trabajo
(U. S. Bureau of Labor Statistics) cont 760.840 ingenieros de software
de computadora.1 El trmino "ingeniero de software", sin embargo, se
utiliza en forma genrica en el ambiente empresarial, y no todos los
ingenieros de software poseen realmente ttulos de Ingeniera de
universidades reconocidas.
Algunos autores consideran que Desarrollo de Software es un trmino
ms apropiado que Ingeniera de Software (IS) para el proceso de crear
software. Personas como Pete McBreen (autor de "Software
Craftmanship") cree que el trmino IS implica niveles de rigor y prueba
de procesos que no son apropiados para todo tipo de desarrollo de
software.
Indistintamente se utilizan los trminos Ingeniera de Software o
Ingeniera del Software. En hispanoamrica el trmino usado
normalmente es el primero de ellos.

Implicaciones socioeconmicas
La ingeniera de software afecta a la economa y las sociedades de
variadas formas.

Econmicamente
En los EEUU, el software contribuy a 1/8 de todo el incremento del PIB
durante los 90's (alrededor de 90,000 millones de dlares por ao), y 1/9
de todo el crecimiento de productividad durante los ltimos aos de la
dcada (alrededor de 33,000 millones de dlares por ao). La ingeniera
de software contribuy a $1 billn de crecimiento econmico y
productividad en esa dcada. Alrededor del globo, el software contribuye
al crecimiento econmico en formas similares, aunque es difcil de
encontrar estadsticas fiables.
Adems, con la industria del lenguaje est hallando cada vez ms
campos de aplicacin a escala global.

Socialmente
La ingeniera de software cambia la cultura del mundo debido al
extendido uso de la computadora. El correo electrnico (E-mail), la WWW
y la mensajera instantnea permiten a la gente interactuar en nuevas
formas. El software baja el costo y mejora la calidad de los servicios de
salud, los departamentos de bomberos, las dependencias
gubernamentales y otros servicios sociales. Los proyectos exitosos
donde se han usado mtodos de ingeniera de software incluyen a
GNU/Linux, el software del transbordador espacial, los cajeros
automticos y muchos otros.
La IS se puede considerar como la ingeniera aplicada al software, esto
es, por medios sistematizados y con herramientas preestablecidas, la
aplicacin de ellos de la forma ms eficiente para la obtencin de
resultados ptimos; objetivos que siempre busca la ingeniera. No es
slo de la resolucin de problemas, sino ms bien teniendo en cuenta las
diferentes soluciones, elegir la ms apropiada.

Metodologa
Un objetivo de dcadas ha sido el encontrar procesos y metodologas,
que sean sistemticas, predecibles y repetibles, a fin de mejorar la
productividad en el desarrollo y la calidad del producto software.

Etapas del proceso


La ingeniera de software requiere llevar a cabo numerosas tareas,
dentro de etapas como las siguientes:

Anlisis de requisitos
Extraer los requisitos de un producto de software es la primera etapa
para crearlo. Mientras que los clientes piensan que ellos saben lo que el
software tiene que hacer, se requiere de habilidad y experiencia en la
ingeniera de software para reconocer requisitos incompletos,
ambiguos o contradictorios. El resultado del anlisis de requisitos con
el cliente se plasma en el documento ERS, Especificacin de
Requerimientos del Sistema, cuya estructura puede venir definida por

varios estndares, tales como CMMI. Asimismo, se define un diagrama


de Entidad/Relacin, en el que se plasman las principales entidades que
participarn en el desarrollo del software.
La captura, anlisis y especificacin de requisitos (incluso pruebas de
ellos), es una parte crucial; de esta etapa depende en gran medida el
logro de los objetivos finales. Se han ideado modelos y diversos procesos
de trabajo para estos fines. Aunque an no est formalizada, ya se habla
de la Ingeniera de requisitos.
La IEEE Std. 830-1998 normaliza la creacin de las Especificaciones de
Requisitos Software (Software Requirements Specification).

Especificacin
La Especificacin de Requisitos describe el comportamiento esperado en
el software una vez desarrollado. Gran parte del xito de un proyecto de
software radicar en la identificacin de las necesidades del negocio
(definidas por la alta direccin), as como la interaccin con los usuarios
funcionales para la recoleccin, clasificacin, identificacin, priorizacin
y especificacin de los requisitos del software.
Entre las tcnicas utilizadas para la especificacin de requisitos se
encuentran:

Casos de Uso,

Historias de usuario,

Siendo los primeros ms rigurosas y formales, los segundas ms giles e


informales.

Arquitectura
La integracin de infraestructura, desarrollo de aplicaciones, bases de
datos y herramientas gerenciales, requieren de capacidad y liderazgo
para poder ser conceptualizados y proyectados a futuro, solucionando
los problemas de hoy. El rol en el cual se delegan todas estas actividades
es el del Arquitecto. El Arquitecto de Software es la persona que aade
valor a los procesos de negocios gracias a su valioso aporte de

soluciones tecnolgicas. La Arquitectura de Sistemas en general, es una


actividad de planeacin, ya sea a nivel de infraestructura de red y
hardware, o de Software. La Arquitectura de Software consiste en el
diseo de componentes de una aplicacin (entidades del negocio),
generalmente utilizando patrones de arquitectura. El diseo
arquitectnico debe permitir visualizar la interaccin entre las entidades
del negocio y adems poder ser validado, por ejemplo por medio de
diagramas de secuencia. Un diseo arquitectnico describe en general el
cmo se construir una aplicacin de software. Para ello se documenta
utilizando diagramas, por ejemplo:

Diagramas de clases

Diagramas de base de datos

Diagramas de despliegue plegados

Diagramas de secuencia multidireccional

Siendo los dos primeros los mnimos necesarios para describir la


arquitectura de un proyecto que iniciar a ser codificado. Depende del
alcance del proyecto, complejidad y necesidades, el arquitecto elige qu
diagramas elaborar. Entre las herramientas para disear arquitecturas
de software se encuentran:

Enterprise Architect

Microsoft Visio for Enterprise Architects

Programacin
Reducir un diseo a cdigo puede ser la parte ms obvia del trabajo de
ingeniera de software, pero no necesariamente es la que demanda
mayor trabajo y ni la ms complicada. La complejidad y la duracin de
esta etapa est ntimamente relacionada al o a los lenguajes de
programacin utilizados, as como al diseo previamente realizado.

Prueba
Consiste en comprobar que el software realice correctamente las tareas
indicadas en la especificacin del problema. Una tcnica de prueba es

probar por separado cada mdulo del software, y luego probarlo de


forma integral, para as llegar al objetivo. Se considera una buena
prctica el que las pruebas sean efectuadas por alguien distinto al
desarrollador que la program, idealmente un rea de pruebas; sin
perjuicio de lo anterior el programador debe hacer sus propias pruebas.
En general hay dos grandes formas de organizar un rea de pruebas, la
primera es que est compuesta por personal inexperto y que
desconozca el tema de pruebas, de esta forma se evala que la
documentacin entregada sea de calidad, que los procesos descritos son
tan claros que cualquiera puede entenderlos y el software hace las cosas
tal y como estn descritas. El segundo enfoque es tener un rea de
pruebas conformada por programadores con experiencia, personas que
saben sin mayores indicaciones en qu condiciones puede fallar una
aplicacin y que pueden poner atencin en detalles que personal
inexperto no considerara.

Documentacin
Todo lo concerniente a la documentacin del propio desarrollo del
software y de la gestin del proyecto, pasando por modelaciones (UML),
diagramas, pruebas, manuales de usuario, manuales tcnicos, etc; todo
con el propsito de eventuales correcciones, usabilidad, mantenimiento
futuro y ampliaciones al sistema.

Mantenimiento
Mantener y mejorar el software para enfrentar errores descubiertos y
nuevos requisitos. Esto puede llevar ms tiempo incluso que el
desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniera de
software tiene que ver con dar mantenimiento. Una pequea parte de
este trabajo consiste en arreglar errores, o bugs. La mayor parte
consiste en extender el sistema para hacer nuevas cosas. De manera
similar, alrededor de 2/3 de toda la ingeniera civil, arquitectura y trabajo
de construccin es dar mantenimiento

Modelos de desarrollo de software


La ingeniera de software tiene varios modelos, paradigmas o filosofas
de desarrollo en los cuales se puede apoyar para la realizacin de

software, de los cuales podemos destacar a stos por ser los ms


utilizados y los ms completos:

Modelo en cascada o Clsico (modelo tradicional)

Modelo de prototipos

Modelo en espiral (modelo evolutivo)

Desarrollo por etapas

Desarrollo iterativo y creciente o Iterativo e Incremental

RAD (Rapid Application Development)

Desarrollo concurrente

Proceso Unificado

RUP (Proceso Unificado de Rational)

Naturaleza de la IS
La Ingeniera de Software tiene que ver con varios campos en diferentes
formas:
Matemticas
Los programas tienen muchas propiedades matemticas. Por ejemplo la
correccin y la complejidad de muchos algoritmos son conceptos
matemticos que pueden ser rigurosamente probados. El uso de
matemticas en la IS es llamado mtodos formales.
Creacin
Los programas son construidos en una secuencia de pasos. El hecho de
definir propiamente y llevar a cabo estos pasos, como en una lnea de
ensamblaje, es necesario para mejorar la productividad de los
desarrolladores y la calidad final de los programas. Este punto de vista
inspira los diferentes procesos y metodologas que encontramos en la IS.
Gestin de Proyectos
El software comercial (y mucho no comercial) requiere gestin de
proyectos. Hay presupuestos y establecimiento de tiempos. Gente para

liderar. Recursos (espacio de oficina, computadoras) por adquirir. Todo


esto encaja apropiadamente con la visin de la Gestin de Proyectos.
Arte
Los programas contienen muchos elementos artsticos. Las interfaces de
usuario, la codificacin, etc. Incluso la decisin para un nombre de una
variable o una clase. Donald Knuth es famoso porque ha argumentado
que la programacin es un arte.

Responsabilidad
La responsabilidad en la Ingeniera del Software es un concepto
complejo, sobre todo porque al estar los sistemas informticos
fuertemente caracterizados por su complejidad, es difcil apreciar sus
consecuencias.
En la Ingeniera 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 diseador, o el
encargado de realizar las pruebas. Por encima de todos ellos destaca el
director del proyecto. El software demanda una clara distribucin de la
responsabilidad entre los diferentes roles que se dan en el proceso de
produccin.
El ingeniero del Software tiene una responsabilidad moral y legal
limitada a las consecuencias directas.

Educacin tica
Organizaciones

Software Engineering Institute (SEI)

Association for Computing Machinery (ACM)

British Computer Society (BCS)

IEEE Computer Society

RUSSOFT Association

Society of Software Engineers

Caso de uso

Notacin de caso de uso

En ingeniera del software, un caso de uso es una tcnica para la


captura de requisitos potenciales de un nuevo sistema o una
actualizacin de software. Cada caso de uso proporciona uno o ms
escenarios que indican cmo debera interactuar el sistema con el
usuario o con otro sistema para conseguir un objetivo especfico.
Normalmente, en los casos de usos se evita el empleo de jergas
tcnicas, prefiriendo en su lugar un lenguaje ms cercano al usuario
final. En ocasiones, se utiliza a usuarios sin experiencia junto a los
analistas para el desarrollo de casos de uso.
En otras palabras, un caso de uso es una secuencia de interacciones que
se desarrollarn entre un sistema y sus actores en respuesta a un
evento que inicia un actor principal sobre el propio sistema. Los
diagramas de casos de uso sirven para especificar la comunicacin y el
comportamiento de un sistema mediante su interaccin con los usuarios
y/u otros sistemas. O lo que es igual, un diagrama que muestra la
relacin entre los actores y los casos de uso en un sistema. Una relacin
es una conexin entre los elementos del modelo, por ejemplo la
especializacin y la generalizacin son relaciones. Los diagramas de
casos de uso se utilizan para ilustrar los requerimientos del sistema al

mostrar cmo reacciona a eventos que se producen en su mbito o en l


mismo.

Historias de usuario

Una historia de usuario es una representacin de un requerimiento de


software escrito en una o dos frases utilizando el lenguaje comn del
usuario. Las historias de usuario son utilizadas en las metodologas de
desarrollo giles para la especificacin de requerimientos (acompaadas
de las discusiones con los usuarios y las pruebas de validacin). Cada
historia de usuario debe ser limitada, esta debera poderse escribir sobre
una nota adhesiva pequea. Dentro de la metodologa XP las historias
de usuario deben ser escritas por los clientes.
Las historias de usuario son una forma rpida de administrar los
requerimientos de los usuarios sin tener que elaborar gran cantidad de
documentos formales y sin requerir de mucho tiempo para
administrarlos. Las historias de usuario permiten responder rpidamente
a los requerimientos cambiantes.

Lenguaje Unificado de Modelado

Collage de diagramas UML.

Lenguaje Unificado de Modelado (LUM) o (UML, por sus siglas en


ingls, Unified Modeling Language) es el lenguaje de modelado de
sistemas de software ms conocido y utilizado en la actualidad; est
respaldado por el OMG (Object Management Group). Es un lenguaje
grfico para visualizar, especificar, construir y documentar un sistema.
UML ofrece un estndar para describir un "plano" del sistema (modelo),
incluyendo aspectos conceptuales tales como procesos de negocio y
funciones del sistema, y aspectos concretos como expresiones de
lenguajes de programacin, esquemas de bases de datos y
componentes reutilizables.

Es importante resaltar que UML es un "lenguaje de modelado" para


especificar o para describir mtodos o procesos. Se utiliza para definir
un sistema, para detallar los artefactos en el sistema y para documentar
y construir. En otras palabras, es el lenguaje en el que est descrito el
modelo.
Se puede aplicar en el desarrollo de software entregando gran variedad
de formas para dar soporte a una metodologa de desarrollo de software
(tal como el Proceso Unificado Racional o RUP), pero no especifica en s
mismo qu metodologa o proceso usar.
UML no puede compararse con la programacin estructurada, pues UML
significa Lenguaje Unificado de Modelado, no es programacin, solo se
diagrama la realidad de una utilizacin en un requerimiento. Mientras
que, programacin estructurada, es una forma de programar como lo es
la orientacin a objetos, sin embargo, la programacin orientada a
objetos viene siendo un complemento perfecto de UML, pero no por eso
se toma UML slo para lenguajes orientados a objetos.
UML cuenta con varios tipos de diagramas, los cuales muestran
diferentes aspectos de las entidades representadas.

Jerarqua de los diagramas UML 2.0, mostrados como un diagrama de clases

En UML 2.0 hay 13 tipos diferentes de diagramas. Para comprenderlos


de manera concreta, a veces es til categorizarlos jerrquicamente,
como se muestra en la figura de la derecha.
Los Diagramas de Estructura enfatizan en los elementos que deben
existir en el sistema modelado:

Diagrama de clases

Diagrama de componentes

Diagrama de objetos

Diagrama de estructura compuesta (UML 2.0)

Diagrama de despliegue

Diagrama de paquetes

Los Diagramas de Comportamiento enfatizan en lo que debe suceder


en el sistema modelado:

Diagrama de actividades

Diagrama de casos de uso

Diagrama de estados

Diagrama de secuencia

Los Diagramas de Interaccin son un subtipo de diagramas de


comportamiento, que enfatiza sobre el flujo de control y de datos entre
los elementos del sistema modelado:

Diagrama de secuencia

Diagrama de comunicacin, que es una versin simplificada del


Diagrama de colaboracin (UML 1.x)

Diagrama de tiempos (UML 2.0)

Diagrama global de interacciones o Diagrama de vista de


interaccin (UML 2.0)

Estandarizacin de UML

Desde el ao 2005. UML es un estndar aprobado por la ISO como


ISO/IEC 19501:2005 Information technology Open Distributed
Processing Unified Modeling Language (UML) Version 1.4.2.
Crticas a UML

A pesar de su status de estndar ampliamente reconocido y utilizado,


UML siempre ha sido muy criticado por su carencia de una semntica
precisa, lo que ha dado lugar a que la interpretacin de un modelo UML
no pueda ser objetiva. Otro problema de UML es que no se presta con
facilidad al diseo de sistemas distribuidos. En tales sistemas cobran
importancia factores como transmisin, serializacin, persistencia, etc.
UML no cuenta con maneras de describir tales factores. No se puede, por
ejemplo, usar UML para sealar que un objeto es persistente o remoto, o
que existe en un servidor que corre continuamente y que es compartido
entre varias instancias de ejecucin del sistema analizado. Sin embargo,
UML s acepta la creacin de nuestros propios componentes para este
tipo de modelado.

Entorno de desarrollo integrado

Herramienta CASE

Tcnica de Modelado a Objetos

Programacin orientada a objetos

XMI, un formato estndar basado en XML para el intercambio de


modelos UML.

OCL, Lenguaje de especificacin para los diferentes modelos en UML.

Webml, Metodologa para el diseo de Sistemas de Informacin Web.

Categora:Herramientas UML

En Ingeniera de software el desarrollo en cascada, tambin llamado


modelo en cascada, es el enfoque metodolgico que ordena
rigurosamente las etapas del ciclo de vida del software, de tal forma
que el inicio de cada etapa debe esperar a la finalizacin de la
inmediatamente anterior.
Un ejemplo de una metodologa de desarrollo en cascada es:
1. Anlisis de requisitos
2. Diseo del Sistema
3. Diseo del Programa
4. Codificacin
5. Pruebas
6. Implantacin
7. Mantenimiento

Vous aimerez peut-être aussi