Está en la página 1de 11

Ingeniera de Software

1) Componentes:
La ingeniera de software basada en componentes (CBSE) (tambin
conocida como desarrollo basado en componentes (CBD)) es una rama de la
ingeniera de software que enfatiza la separacin de asuntos (separation of
concerns (SoC)) por lo que se refiere a la funcionalidad de amplio rango
disponible a travs de un sistema de software dado. Es un acercamiento
basado en la reutilizacin para definir, implementar, y componer componentes
dbilmente acoplados en sistemas. Esta prctica persigue un amplio grado de
beneficios tanto en el corto como el largo plazo, para el software en s mismo y
para las organizaciones que patrocinan tal software.
Los ingenieros de software consideran los componentes como parte de la
plataforma inicial para la orientacin a servicios. Los componentes juegan este
rol, por ejemplo, en servicios de web y, ms recientemente, en las
arquitecturas orientadas a servicios (SOA), por el que un componente es
convertido por el servicio web en un servicio y consiguientemente hereda otras
caractersticas ms all de las de un componente ordinario.
Los componentes pueden producir o consumir eventos y pueden ser usados
para las arquitecturas dirigida por eventos (EDA).

2) Campos
-

Consultor en TICs.
Proveedor de Servicios Profesionales.
Administrador de Redes de Computadoras.
Administrador de Bases de Datos.
Programador de Sistemas.
Gerente de Informtica Organizacional.
Generador de tecnologa innovadora.
Docente de nivel medio y superior.
Miembro de pequeas y medianas industrias.
Lder de Proyectos.
Generador de Incubadoras de Software.

3) Aplicacin
Software de sistemas. El software de sistemas es un conjunto de programas
que han sido escritos para servir a otros programas.
Software de tiempo real. El software que coordina/analiza/controla sucesos
del mundo real conforme ocurren, se denomina de tiempo real.
Software de gestin. El proceso de la informacin comercial constituye la
mayor de las reas de aplicacin del software.
Software de ingeniera y cientfico. El software de ingeniera y cientfico
est caracterizado por los algoritmos de manejo de nmeros. Las
aplicaciones van desde la astronoma a la vulcanologa, desde el anlisis de la
presin de los automotores a la dinmica orbital de las lanzaderas espaciales y
desde la biologa molecular a la fabricacin automtica.
Software empotrado. Los productos inteligentes se han convertido en algo
comn en casi todos los mercados de consumo e industriales. El software
empotrado reside en memoria de slo lectura y se utiliza para controlar
productos y sistemas de los mercados industriales y de consumo.
Software de computadoras personales. El mercado del software de
computadoras personales ha germinado en las pasadas dos dcadas. El
procesamiento de textos, las hojas de clculo, los grficos por computadora,
multimedia, entretenimientos, gestin de bases de datos, aplicaciones
financieras, de negocios y personales y redes o acceso a bases de datos
externas son algunas de los cientos de aplicaciones.
Software basado en Web. Las pginas Web buscadas por un explorador son
software que incorpora instrucciones ejecutables (por ejemplo, CGI, HTML, Perl,
o Java), y datos (por ejemplo, hipertexto y una variedad de formatos de audio y
visuales). En esencia, la red viene a ser una gran computadora que proporciona
un recurso software casi ilimitado que puede ser accedido por cualquiera con
un modem.
Software de inteligencia artificial. El software de inteligencia artificial (IA)
hace uso de algoritmos no numricos para resolver problemas complejos para
los que no son adecuados el clculo o el anlisis directo. Los sistemas expertos,
tambin llamados sistemas basados en el conocimiento, reconocimiento de
patrones (imgenes y voz), redes neuronales artificiales, prueba de teoremas, y
los juegos son representativos de las aplicaciones de esta categora.

Actividades de la Ingenieria de Software

4) Procesos
La ingeniera de software requiere llevar a cabo numerosas tareas agrupadas
en etapas, al conjunto de estas etapas se le denomina ciclo de vida. Las etapas
comunes a casi todos los modelos de ciclo de vida son las siguientes:
Obtencin de los requisitos
Se debe identificar sobre que se est trabajando, es decir, el tema principal
que motiva el inicio del estudio y creacin del nuevo software o modificacin
de uno ya existente. A su vez identificar los recursos que se tienen, en esto
entra el conocer los recursos humanos y materiales que participan en el
desarrollo de las actividades. Es importante entender el contexto del negocio
para identificar adecuadamente los requisitos.
Se tiene que tener dominio de la informacin de un problema, lo cual incluye
los datos fuera del software(usuarios finales, otros sistemas o dispositivos
externos), los datos que salen del sistema (por la interfaz de usuario, interfaces
de red, reportes, grficas y otros medios) y los almacenamientos de datos que
recaban y organizan objetos persistentes de datos (por ejemplo, aquellos que
se conservan de manera permanente).
Tambin hay que ver los puntos crticos, lo que significa tener de una manera
clara los aspectos que entorpecen y limitan el buen funcionamiento de los
procedimientos actuales, los problemas ms comunes y relevantes que se
presentan, los motivos que crean insatisfaccin y aquellos que deben ser
cubiertos a plenitud. Por ejemplo: El contenido de los reportes generados,
satisface realmente las necesidades del usuario? Los tiempos de respuesta
ofrecidos, son oportunos?, etc.
Hay que definir las funciones que realizara el software ya que estas ayudan al
usuario final y al funcionamiento del mismo programa.
Se tiene que tener en cuenta como ser el comportamiento del software ante
situaciones inesperadas como lo son por ejemplo una gran cantidad de
usuarios usando el software o una gran cantidad de datos entre otros.
Anlisis de requisitos[editar]
Extraer los requisitos de un producto software es la primera etapa para crearlo.
Durante la fase de anlisis, el cliente plantea las necesidades que se presenta
e intenta explicar lo que debera hacer el software o producto final para
satisfacer dicha necesidad mientras que el desarrollador acta como
interrogador, como la persona que resuelve problemas. Con este anlisis, el
ingeniero de sistemas puede elegir la funcin que debe realizar el software y
establecer o indicar cual es la interfaz ms adecuada para el mismo. 16

El anlisis de requisitos puede parecer una tarea sencilla, pero no lo es debido


a que muchas veces los clientes piensan que saben todo lo que el software
necesita para su buen funcionamiento, sin embargo se requiere la habilidad y
experiencia de algn especialista para reconocer requisitos incompletos,
ambiguos o contradictorios. Estos requisitos se determinan tomando en cuenta
las necesidades del usuario final, introduciendo tcnicas que nos permitan
mejorar la calidad de los sistemas sobre los que se trabaja. 17
El resultado del anlisis de requisitos con el cliente se plasma en el documento
ERS (especificacin de requisitos 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 metdicos 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 de software (Software Requirements Specification).
Finalidades del anlisis de requisitos:

Brindar al usuario todo lo necesario para que pueda trabajar en conjunto


con el software desarrollado obteniendo los mejores resultados posibles.

Tener un control ms completo en la etapa creacin del software, en


cuanto a tiempo de desarrollo y costos.

Utilizacin de mtodos ms eficientes que permitan el mejor


aprovechamiento del software segn sea la finalidad de uso del mismo.

Aumentar la calidad del software desarrollado al disminuir los riesgos de


mal funcionamiento.18

No siempre en la etapa de "anlisis de requisitos" las distintas metodologas de


desarrollo llevan asociado un estudio de viabilidad y/o estimacin de costes. El
ms conocido de los modelos de estimacin de coste del software es el
modelo COCOMO
Limitaciones14 [editar]
Los software tienen la capacidad de emular inteligencia creando un modelo de
ciertas caractersticas de la inteligencia humana pero slo posee funciones
predefinidas que abarcan un conjunto de soluciones que en algunos campos
llega a ser limitado. Aun cuando tiene la capacidad de imitar ciertos
comportamientos humanos no es capaz de emular el pensamiento humano
porque acta bajo condiciones.

Otro aspecto limitante de los software proviene del proceso totalmente


mecnico que requiere de un mayor esfuerzo y tiempos elevados de ejecucin
lo que lleva a tener que implementar el software en una mquina de mayor
capacidad.
Especificacin[editar]
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:

Caso de uso

Historias de usuario

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


informales.
Arquitectura[editar]
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.
Lo principal en este punto es poner en claro los aspectos lgicos y fsicos de las
salidas, modelos de organizacin y representacin de datos, entradas y
procesos que componen el sistema, considerando las bondades y limitaciones
de los recursos disponibles en la satisfaccin de las pacificaciones brindadas
para el anlisis.
Hay que tener en consideracin la arquitectura del sistema en la cual se va a
trabajar, elaborar un plan de trabajo viendo la prioridad de tiempo y recursos
disponibles. En los diseos de salidas entra los que es la interpretacin de
requerimientos lo cual es el dominio de informacin del problema, las funciones
visibles para el usuario, el comportamiento del sistema y un conjunto de clases
de requerimientos que agrupa los objetos del negocio con los mtodos que les
dan servicio.
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

Diagrama de despliegue

Diagrama de secuencia

Siendo los dos primeros los mnimos necesarios para describir la arquitectura
de un proyecto que iniciar a ser codificado. Dependiendo del alcance del
proyecto, complejidad y necesidades, el arquitecto elegir cuales de los
diagramas se requiere elaborar.
Las herramientas para el diseo y modelado de software se
denominan CASE (Computer Aided Software Engineering) entre las cuales se
encuentran:

Enterprise Architect

Microsoft Visio for Enterprise Architects

Programacin[editar]
Implementar un diseo en 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.
Desarrollo de la aplicacin[editar]
Para el desarrollo de la aplicacin es necesario considerar cinco fases para
tener una aplicacin o programa eficiente, estas son:

Desarrollo de la infraestructura: Esta fase permite el desarrollo y la


organizacin de los elementos que formaran la infraestructura de la
aplicacin, con el propsito de finalizar la aplicacin eficientemente.

Adaptacin del paquete: El objetivo principal de esta fase es entender


de una manera detallada el funcionamiento del paquete, esto tiene como
finalidad garantizar que el paquete pueda ser utilizado en su mximo
rendimiento, tanto para negocios o recursos. Todos los elementos que
componen el paquete son inspeccionados de manera detallada para evitar
errores y entender mejor todas las caractersticas del paquete.

Desarrollo de unidades de diseo de interactivas: En esta fase se


realizan los procedimientos que se ejecutan por un dilogo usuario-sistema.
Los procedimientos de esta fase tienen como objetivo principal:
1. Establecer especficamente las acciones que debe efectuar la unidad de
diseo.
2. La creacin de componentes para sus procedimientos.
3. Ejecutar pruebas unitarias y de integracin en la unidad de diseo.

Desarrollo de unidades de diseo batch: En esta fase se utilizan una


serie de combinacin de tcnicas, como diagrama de flujo, diagramas de
estructuras, tablas de decisiones, etc. Cualquiera a utilizar ser beneficioso
para plasmar de manera clara y objetiva las especificaciones y que as el
programador tenga mayor comprensin a la hora de programar y probar los
programas que le corresponden.

Desarrollo de unidades de diseo manuales: En esta fase el


objetivo central es proyectar todos los procedimientos administrativos que
desarrollarn en torno a la utilizacin de los componentes

computarizados.19
Pruebas de software[editar]
Consiste en comprobar que el software realice correctamente las tareas
indicadas en la especificacin del problema. Una tcnica es probar por
separado cada mdulo del software, y luego probarlo de manera 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 maneras de organizar un rea de
pruebas, la primera es que est compuesta por personal inexperto y que
desconozca el tema de pruebas, de esta manera 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.
De acuerdo con Roger S. Pressman, el proceso de pruebas se centra en los
procesos lgicos internos del software, asegurando que todas las sentencias se
han comprobado, y en los procesos externos funcionales, es decir, la
realizacin de pruebas para la deteccin de errores. Se requiere poder probar

el software con sujetos reales que puedan evaluar el comportamiento del


software con el fin de proporcionar realimentacin a los desarrolladores. Es
importante que durante el proceso de desarrollo del software no se pierda
contacto con los interesados o solicitantes del desarrollo de Software, de esta
manera los objetivos del proyecto se mantendrn vigentes y se tendr una
idea clara de los aspectos que tienen que probarse durante el perodo de
pruebas.20
Implementacin[editar]
Una Implementacin es la realizacin de una especificacin tcnica o
algoritmos con un programa, componente software, u otro sistema de
cmputo. Muchas especificaciones son dadas segn a su especificacin o un
estndar. Las especificaciones recomendadas segn el World Wide Web
Consortium, y las herramientas de desarrollo del software contienen
implementaciones de lenguajes de programacin. El modelo de
implementacin es una coleccin de componentes y los subsitemas que
contienen. Componentes tales como: ficheros ejecutables, ficheros de cdigo
fuente y todo otro tipo de ficheros que sean necesarios para la implementacin
y despliegue del sistema.
Documentacin[editar]
Es todo lo concerniente a la documentacin del propio desarrollo del software y
de la gestin del proyecto, pasando por modelaciones (UML), diagramas de
casos de uso, pruebas, manuales de usuario, manuales tcnicos, etc; todo con
el propsito de eventuales correcciones, usabilidad, mantenimiento futuro y
ampliaciones al sistema.
Mantenimiento[editar]
Fase dedicada a mantener y mejorar el software para corregir errores
descubiertos e incorporar nuevos requisitos. Esto puede llevar ms tiempo
incluso que el desarrollo del software inicial. Alrededor de 2/3 del tiempo de
ciclo de vida de un proyecto21 est dedicado a su mantenimiento. Una pequea
parte de este trabajo consiste eliminar errores (bugs); siendo que la mayor
parte reside en extender el sistema para incorporarle nuevas funcionalidades y
hacer frente a su evolucin.

5) Administracin de Proyectos
La necesidad de administrar es una distincin importante entre un desarrollo
profesional de software y la programacin no profesional. La administracin de
proyectos de software es necesaria debido a que la ingeniera de software
profesional siempre est sujeta a restricciones de presupuesto y
calendarizacin; a las que debe ajustarse la organizacin que desarrolla el
software. El trabajo del administrador de proyectos de software es asegurar
que stos cumplan dichas restricciones y entregar software que contribuya a

las metas del negocio. Una buena administracin no garantiza el xito del
proyecto, sin embrago la mala siempre asegura el fracaso del mismo.
6) Producto
El software se ha convertido en algo muy necesario en nuestra sociedad actual,
es la mquina que conduce a la toma de decisiones comerciales, sirve para la
investigacin cientfica moderna, es un factor clave que diferencia productos y
servicios modernos, etc. Esto se da porque el software est inmerso en
sistemas de todo tipo alrededor de nosotros.
El software de computadora es el producto que disean y construyen los
ingenieros de software. Esto abarca programas que se ejecutan dentro de una
computadora de cualquier tamao y arquitectura, despus de estar construido
casi cualquier persona en el mundo industrializado, ya sea directa o
indirectamente.
Los productos se pueden clasificar en:
-

Productos genricos: Son los producidos por una organizacin para ser
vendidos al mercado.
Productos hechos a medida: Sistemas que son desarrollados bajo pedido
a un desarrollador especfico.

Estos productos deben cumplir varias caractersticas al ser entregados, estas


son:
-

Mantenibles: El software debe poder evolucionar mientras cumple con


sus funciones.
Confiabilidad: No debe producir daos en caso de errores.
Eficiencia: El software no debe desperdiciar los recursos.
Utilizacion adecuada: Debe contar con una interfaz de usuario adecuada
y su documentacion.

Lo que constituye el producto final es diferente para el ingeniero y los usuarios,


para el ingeniero son los programas, datos y documentos que configuran el
software pero para el usuario el producto final es la informacin que de cierto
modo soluciona el problema planteado por el usuario.

7) Calidad del Software


Calidad en la ingeniera del software. En una versin sucinta la calidad en la
ingeniera del software es un grupo de caractersticas que representa la

efectividad y la eficiencia de un sistema de informacin. Es importante


enfatizar en dos puntos :
Un software de calidad debe ser eficaz, es decir, que debe realizar las
funciones establecidas, debe ser amigable. Un usuario debe utilizar el software
porque produce resultados confiables, realiza todas las operaciones que se
requieren, ejecuta las operaciones en un tiempo aceptado y es fcilmente
usado por el grupo de usuarios a quien este dirigido.
Un software de calidad debe ser eficiente, es decir el costo de su desarrollo
tomando todos los recursos y el costo de su operacin debe ser tal que las
organizaciones involucradas en su desarrollo y uso obtengan el mximo
beneficio o por lo menos un beneficio aceptable en un perodo de tiempo
establecido.
Para ilustrar el concepto de calidad de manera ms profunda, es necesario
considerar algunos aspectos fundamentales que caracterizan al software de
calidad como son : solidez, exactitud, completitud, mantenibilidad,
reutilizabilidad, claridad en la documentacin, entre otros que sern descritos a
continuacin.
Aspectos bsicos de calidad de software.
La descripcin que se hace de los factores que influyen en un software de
calidad se basan principalmente en las ideas presentadas por Robert Dunn,
Philip Crosby y Roger S. Pressman. Sin embargo, tambin se han tomado
algunos aportes de Bertrand Meyer y Mauricio Fernando Alba.
Robert Dunn presenta la calidad en el software tomando dos puntos de vista :
la calidad en el proceso de desarrollo y la calidad en el producto final, estos dos
grupos principales los agrupa en los siguiente aspectos de calidad :
confiabilidad, utilizabilidad, mantenibilidad, y adaptabilidad.
Roger Pressman describe similares factores de calidad agrupados en tres
grupos : calidad en operacin, calidad en revisin y calidad en transicin.
A continuacin se presentan los factores de calidad de acuerdo al orden dado
por Dunn.
Confiabilidad. Este termino es necesario sea separado en varios elementos que
permiten darle al software el matiz de fiable. Sus componente son :
Completitud
Consistencia y precisin
Solidez

Simplicidad
Calidad en los procesos de desarrollo
Seguridad y Verificabilidad, estas dos ltimas que se determinan con el sistema
en uso.
Usabilidad. Si bien es cierto que la confiabilidad es un factor muy importante
en la calidad del software tambin lo es el hecho de que es necesario
considerar otros factores como los que se mencionan en esta seccin puesto
que de nada sirve un software que funcione correcta y confiablemente si el
usuario prefiere no utilizarlo.
Exactitud de los procesos
Claridad y exactitud de la documentacin
Completitud
Eficiencia y verificabilidad del software
Claridad y amigabilidad de la interfaz
Mantenibilidad. Este aspecto de calidad involucra los elementos que simplifican
la labor de prevencin, correccin o ampliacin del cdigo del programa.
Retomar un cdigo escrito meses antes es un trabajo dispendioso y agobiante,
en especial cuando las aplicaciones no cuentan con la caracterstica a la cual
aqu se hace referencia. Se pueden considerar como atributos de este aspecto :
Exactitud y claridad en la documentacin
Modularidad acoplamiento
Facilidad de lectura
Simplicidad
Portabilidad. Es la capacidad que posee un sistema de informacin que le
permite funcionar en diferentes plataformas ya sean hardware o de software.