Вы находитесь на странице: 1из 36

Estructura temtica

Introduccin ............................................................................................................................ 2
Competencias ......................................................................................................................... 3
Ideograma ............................................................................................................................... 4
1. Software e Ingeniera ...................................................................................................... 5
1.1. Qu, para qu y porqu del software?........................................................................ 5
1.2. El software como eje central de las organizaciones .................................................... 9
2. Antecedentes, evolucin y localizacin del software dentro del contexto social
contemporneo ..................................................................................................................... 11
3. Componentes de la Ingeniera de Software ................................................................... 12
3.1. Componente Tcnico ................................................................................................. 13
3.2. Componente no tcnico (organizacional) .................................................................. 19
4. Competencias y desafos para el Ingeniero de software ............................................... 29
4.1. Competencias ............................................................................................................ 29
4.2. Aspectos ticos y legales de la Ingeniera de Software ............................................. 31
Glosario ................................................................................................................................ 33
Bibliografa ........................................................................................................................... 36

1
Introduccin
Hasta hace relativamente muy poco tiempo la escritura de programas de computador se
asemejaba a escribir una novela, pintar un cuadro o realizar una escultura. Uno de los
primeros libros obligados para la generacin de "nuevos gomosos" (1970's y 1980's) de la
computacin era un libro de portada amarilla titulado por su autor, Donal P. Knuth, El arte
de la programacin de computadores, en ingls " The art of computer programming".
Curiosa pero no extraamente los primeros captulos estaban dedicados a la teora de los
nmeros y la lgica combinatoria para posteriormente adentrarse al tema de las estructuras
de datos y las estructuras de programacin. En resumen la obra de Knuth, fundamental para
el cientfico de la programacin, es originalmente una triloga (la recopilacin cuenta ahora
con 5 volmenes) que abarca una buena parte de los amplios terrenos de la programacin
de computadores: Ordenamiento, bsqueda, Bsqueda combinatoria, recursividad etc.

Paulatinamente, el desarrollo y la convergencia de diferentes disciplinas y el avance


acelerado de diversas tecnologas vinieron a poner en evidencia la necesidad de aplicar
ciertos principios de otras reas del saber a la actividad del desarrollo de software. En
nuestros das, el programador, el ingeniero y el ingeniero de software juegan un papel
fundamental en la industria informtica, pero cada uno posee competencias que le permiten
jugar un rol especfico dentro de los procesos de desarrollo de software.

Las siguientes paginas permitirn descubrir al lector (estudioso) el alcance de la Ingeniera


de software, las competencias personales a desarrollar, los retos y dificultades que se deben
atravesar para llegar a ser un profesional en el desarrollo de software y al mismo tiempo
las oportunidades crecientes y la "belleza" de nuestra profesin: Ingeniero de Software.

2
Competencias
Entender de manera general el alcance y enfoque de la Ingeniera de Software como
disciplina facilitadora en los procesos de desarrollo e implementacin de tecnologas de
la informacin en las organizaciones.

Reconocer las diferentes competencias tcnicas, organizacionales y de comunicacin


que caracterizan al profesional ingeniero de software.

Comprender las implicaciones ticas que conlleva el ejercicio del desarrollo del
software en nuestra sociedad.

Reconocer de manera general las diferentes etapas, procesos y herramientas


metodolgicas que comprende el mbito de la Ingeniera de software.

Comprender los diferentes campos de aplicacin de la ingeniera de software.

Distinguir las etapas bsicas en los proyectos de desarrollo de software.

3
Ideograma

Componente Tcnico

Componentes de la
Componente no Tcnico
Ingeniera de Software

Tecnicas de Ingenieria de
Software

El software dentro del


contexto Social El software dentro del
Contemporneo contexto social

Orientacin a la Ingeniera Qu, porqu y para qu de


de software (modulo 1 ) la Ingeniera de software

Software e Ingeniera

El software como eje


central de las
Organizaciones

Aspectos legales y ticos


de la Ingeniera de
Software

Competencias , desafos y
oportunidades para el
Ingeniero de Software Competencias

Oportunidades

4
1. Software e Ingeniera

1.1.Qu, para qu y porqu del software?


La computacin como elemento esencial de la sociedad y la economa moderna tiene sus
antecedentes inmediatos en el siglo XX. Formalmente, es a partir de los aportes hechos por
Alan Turing (1936 - Sobre los nmeros computables, con una aplicacin al problema de la
decisin - "On Computable Numbers, with an Application to the Entscheidungsproblem)
que la fabricacin de las primeras mquinas de clculo numrico aparecen hasta llegar a
convertirse en una industria efervescente y compleja que ocupa diversos lugares de la vida
del hombre moderno.

El software, concebido como aquel conjunto lgico de instrucciones que permiten la


operacin armnica de los componentes de un sistema de informacin, ha evolucionado
paralelamente a la industria de computadores. Por su parte, esta ltima, crece a tasas muy
superiores a aquellas de la produccin de software generando as fallas estructurales y
cuellos de botella en la innovacin y desarrollo de nuevas tecnologas. El desarrollo de
software es lento, el presupuesto para el mismo excede lo esperado mientras que la calidad
del mismo no alcanza las exigencias del mercado.

Antes de profundizar en los temas propios de la Ingeniera de software conviene precisar


algunos trminos referentes a los elementos y componentes tecnolgicos de nuestra
sociedad actual. Un sistema de informacin es un conjunto de recursos humanos,
tcnicos, financieros e informacionales que permiten a una organizacin registrar, procesar
y controlar las diferentes operaciones de negocio posibilitando la toma de decisiones de
manera racional, sistemtica y asertiva. La figura 1 permite ilustrar de forma global los
principales componentes de un sistema de Informacin.

5
Figura 1. Componentes De Un Sistema de Informacin
Fuente: Bentley, Whitten. System Analysis and Design Methods

Los sistemas de informacin permiten almacenar, procesar y gestionar los datos para as
poder producir la informacin que soporte la organizacin, sus empleados, proveedores y
socios. Los mismos se pueden clasificar en:

Sistemas Transaccionales: son aquellos que permiten procesar las transacciones de


negocio tales como rdenes de compra, pagos a proveedores, reservas de vuelo etc.

Sistemas Gerenciales: Estos usan los datos transaccionales para producir la


informacin necesaria destinada a los Directivos para gestionar y desarrollar las
actividades de negocio.

Sistemas de soporte de decisin: Ayudan a todos aquellos que toman decisiones en


una organizacin a identificar las diferentes alternativas y opciones para as llegar a
obtener decisiones adecuadas.

6
Sistemas Expertos: Son aquellos que capturan y reproducen el conocimiento de un
experto o un decisor para luego simular la manera o el procedimiento de decisin
utilizado.

Sistemas de Comunicacin y Colaboracin: Permiten la colaboracin entre las


personas, tanto al interior como al exterior de la organizacin.

Sistemas de automatizacin de oficina: Ayudan al personal de la organizacin a crear


y compartir documentos que soportan las actividades rutinarias

Por otra parte, los sistemas de informacin pueden ser apreciados desde la perspectiva de
aquellos que participan o influyen en su concepcin, operacin, mantenimiento, soporte y
proteccin. Algunos roles relevantes son:

Propietarios: Son aquellos que auspician o patrocinan el desarrollo de los sistemas de


informacin. Pueden ser los accionistas de las compaas, la alta gerencia u otro tipo de
agentes organizacionales que participan activamente y promueven el desarrollo de
nuevos sistemas de informacin.

Usuarios: Las personas que usan cotidianamente los sistemas de informacin y por
tanto son impactados o afectados directamente por su desempeo, su estabilidad o aun
por sus ausencia.

Diseadores: Son los especialistas o personal tcnico encargado de traducir las


necesidades de informacin de las organizaciones en soluciones de software.

Arquitectos y desarrolladores: Son aquellos que construyen el sistema de informacin


basados en las especificaciones de diseo propuesta por los diseadores o arquitectos.

Analistas de sistemas: Son aquellos que facilitan el desarrollo de sistemas de


informacin y las aplicaciones de computador. Ellos coordinan los esfuerzos de los
propietarios, usuarios, diseadores y arquitectos para obtener sistemas de informacin
alineados con los objetivos estratgicos de las organizaciones.

Podemos utilizar la metfora de la construccin para entender la construccin de un sistema


de informacin asemejndola con la construccin de un edificio. Para llegar a construir un
edificio se deben tener en cuenta entre otros los siguientes aspectos:

Cules planos van a ser los orientadores de la construccin?


Cules tareas y actividades deben ser realizadas y cul ser la secuencia lgica a
seguir?
Qu tipo de herramientas van a ser utilizadas para su construccin?
Quines participaran en el proyecto y en qu etapas sern integrados?
7
Qu normas o estndares deben ser respetados?
Cules sern los costos y cmo se controlaran?
Qu tipo de infraestructura adicional: acueducto, alcantarillado, vas de acceso estarn
disponibles para facilitar la construccin y su aprovechamiento posterior?
Qu tipo de documentacin es necesaria para soportar el uso y mantenimiento del
edificio: planos arquitectnicos, planos elctricos etc.?

As mismo, para la construccin de un sistema de informacin es necesario seguir una serie


de etapas que permiten a partir de un diseo inicial llegar al final a obtener una solucin
que comprende diferentes componentes tecnolgicos tales como: hardware, software,
procedimientos, informacin, recurso humanos etc. Todos ellos una vez puesta en
produccin la solucin tecnolgica van a cumplir un rol especfico pero siempre buscando
el fin u objetivo que se proyect desde el instante de la decisin de construirlo.

Desde hace unas cuantas dcadas, el arte de programar no basta para proveer las
necesidades crecientes de software en nuestra sociedad. Los fracasos y fallas en la
construccin de software han obligado a los profesionales de las Tecnologas de la
Informacin a ir ms all e incluir los principios de ingeniera existentes ya en otros
dominios como la ingeniera mecnica, la ingeniera civil, la ingeniera elctrica etc., con
el objetivo de producir software de calidad, mantenible y ajustndose a los presupuestos y
el tiempo establecido para los proyectos. En la primera conferencia de ingeniera de
software en 1968, Fritz Bauer defini la Ingeniera de Software como El establecimiento
y uso de principios de ingeniera universalmente reconocidos con el propsito de
desarrollar software de manera econmicamente eficiente y que pueda trabajar de manera
confiable y eficiente en mquinas reales. Por su parte, Schach define la ingeniera de
software como una disciplina cuyo fin es producir software de calidad, entregado
oportunamente, cumpliendo un presupuesto y satisfaciendo los requerimientos.

El software incluye no solamente programas, sino tambin los procedimientos para su


configuracin, instalacin y puesta en produccin. Esquemticamente el software puede ser
visto tal como lo muestra la figura 2.

8
Figura 2. Componentes de Software
Fuente: Satzinger, John W., et Al. 2003. Analyse et conception de systmes dinformation.

Cualquier programa es un subconjunto de software y debe ser documentado y provisto de


material que permita su instalacin y configuracin. Estos elementos tales como: manuales
de instalacin y configuracin, gua de usuario, etc., forman parte del software. Algunos
tipos de documentacin que acompaan al software son: Especificacin formal, diagramas
de contexto, diagramas de flujo, diagramas de entidad-relacin, listados de cdigo fuente,
listado de referencias cruzadas, conjuntos de datos de prueba, conjunto de resultados de
pruebas.

1.2.El software como eje central de las


organizaciones
El diseo y el desarrollo de software se han convertido en una actividad compleja y de
misin crtica para muchas organizaciones. Sin embargo, la forma de enfrentar y asumir el
proceso de desarrollo de software vara de acuerdo con el tipo de organizacin. Algunas lo
incorporan como uno de sus procesos organizacionales y deciden estructurar reas de
desarrollo de software acorde con las complejidades de los procesos de negocio a soportar.
No obstante, llegar a ser exitosos en el desarrollo de software va ms all de contratar
desarrolladores brillantes y proveerlos de las mejoras herramientas tecnolgicas. Es

9
necesario usar e incorporar procesos de desarrollo de software efectivos y eficientes de tal
forma que los desarrolladores, los lderes de proyectos y dems personal tcnico puedan
aprovechar las herramientas y utilizar la gestin de proyectos para alcanzar el xito y
conseguir el logro de los objetivos de desarrollo de software que persigue la organizacin.

La industria del software ha evolucionado a un ritmo insospechado pero aun no llega a los
niveles de oportunidad, eficiencia y seguridad exigidos por una industria de la computacin
y de las nuevas tecnologas de la informacin en efervescencia. Hasta hace un tiempo, el
desarrollo de software ocurri al interior de las organizaciones para satisfacer las
necesidades de desarrollo de sistemas de informacin con propsitos estrictamente
definidos.

Actualmente, la convergencia de diversas tecnologas atrae a diversos jugadores en el


terreno del desarrollo de software dando lugar a una industria diversificada y muy
competitiva. Uno de los campos ms prolficos y con un ritmo de crecimiento acelerado lo
constituye la industria de los juegos de computador (PC gaming). All se mueven millones
de dlares y miles de personas juegan diferentes roles en el desarrollo de juegos
standalone y online. Segn Michael D. Gallagher, presidente y director ejecutivo de la
Asociacin para el Software de Entretenimiento (ESA), la industria de los videojuegos
genera cerca de 25 billones de dlares en ingresos y emplea directa e indirectamente cerca
de 120.000 personas en Estados Unidos con un salario promedio para los empleados que
trabajan de forma directa que llega a los 90.000 US dlares anuales. Algunas estadsticas
como las siguientes muestran el auge de la industria de los videojuegos en Estados Unidos:
En el 72% de los hogares americanos se juega algn tipo de videojuego, la edad media del
jugador es de 37 aos, en el 2011 el 28% de los jugadores eran mayores de 50 aos. La
distribucin de los jugadores por gnero es de 42% mujeres y 58% hombres. La edad media
de los compradores de computadores y de videojuegos es de 41% y el 33% de todos
aquellos jugadores manifiestan que jugar en el computador o jugar algn videojuego es su
actividad favorita de entretenimiento.

Al 2010, las unidades de videojuegos vendidas por tipo se distribuan segn lo muestra la
figura 3

10
Figura No. 3. Distribucin Mundial de Mercado de Videojuegos
Fuente: Grupo de Estadsticas NPD - 2010

2. Antecedentes, evolucin y localizacin


del software dentro del contexto social
contemporneo
Hasta aqu nos hemos aproximado a la comprensin del desarrollo de software y hemos
llegado a comprender algunos de los diferentes elementos que constituyen dicha actividad.
Es tradicional devolverse hasta las dcadas 50-90 del siglo XX para hablar de la evolucin
de la computacin y del software. No obstante, prefiero subrayar las ultimas 2 dcadas
(1990-2000 y 2001-2010) que marcan un hito en la historia de nuestra sociedad y definen
nuevos retos para el hombre de hoy. Pero, Cules son los eventos que han generado estos
nuevos procesos de cambio en la visin y gestin de nuestra informacin?

En primer trmino, es hacia finales de la dcada de los 80s (1989) que Tim Berners Lee es
encargado por el CERN para definir las lneas generales del Estndar HTML (Hyper Text
Markup Language) y publicar la primera versin de un nuevo protocolo de difusin de
informacin de manera global (Estndar HTML 1.0). Los esfuerzos de Tim Berners Lee y
su equipo se vieron consolidados con la escritura y lanzamiento de la primera versin del
navegador MOSAIC, escrito por Marc Andreesen en 1993. La combinacin del estndar
HTML, el protocolo de comunicacin HTTP y la disponibilidad y fcil acceso al navegador
MOSAIC constituyeron la piedra angular para los cimientos de unas nuevas formas de
comunicacin entre las personas y el origen de vertiginosos cambios en la manera de

11
entablar vnculos y relaciones en nuestra sociedad. A partir de 1993, la expansin del uso
de la Word Wide Web sigue un ritmo geomtrico hasta alcanzar niveles de penetracin
inusitados como los alcanzados actualmente. Algunos datos bsicos para tener en cuenta
son:

En la actualidad, existen 2405 millones de usuarios de Internet que representan una


penetracin global del 33%. De estos, 1076 millones (27%) se localizan en Asia y aunque
la tasa de penetracin de Internet en frica es solo del 15%, la tasa de crecimiento en la
ltima dcada muestra un ritmo de aumento del 3000%.

Una vez colocados los cimientos de una nueva era de la informacin a saber: estndar
HTML, navegadores grficos, conexiones y redes de fcil acceso, el camino hacia nuevas
transformaciones en la forma de hacer negocios, en la manera de relacionarse y an ms en
la forma de conocerse, identificarse y socializar estaba listo. Es as como la primera dcada
del siglo XXI vio la aparicin vertiginosa de nuevas tecnologas: Computacin Mvil, Geo
- localizacin, redes sociales, computacin en la nube (cloud computing), sistemas de
colaboracin en lnea, protocolos de comunicacin inalmbricos, gobierno en lnea,
teletrabajo etc.

Cada una de estas tecnologas implica cientos de personas dedicadas al desarrollo de


millones de lneas de cdigo para facilitar la gestin, acceso y tratamiento de grandes
volmenes de datos y generar as la informacin necesaria para soportar los negocios y la
toma de decisiones que ello involucra. La sociedad actual est fundamentada en la
informacin y por consiguiente todos aquellos procesos que permiten su gestin y
procesamiento juegan un papel fundamental en la misma. Es por ello que en las siguientes
secciones estaremos desarrollando con algo ms de detalle los diferentes componentes de la
Ingeniera de Software, las tendencias actuales en el desarrollo de software, las
competencias y desafos para el ingeniero de software y algunos aspectos econmicos y
logsticos de los procesos de desarrollo de software.

3. Componentes de la Ingeniera de
Software
Si bien es cierto que la Ingeniera de software es una disciplina relativamente nueva,
existen mltiples fuentes y documentos que facilitan su estudio y evolucin. Para efectos
del presente curso dividiremos la Ingeniera de software en dos grandes componentes:
Tcnico y No Tcnico.

12
El componente tcnico se refiere a todas aquellas metodologas, procedimientos y
herramientas que permiten al ingeniero de software desarrollar un sistema de informacin
siguiendo una secuencia lgica de fases, utilizando una serie de estndares de la industria y
ayudndose con herramientas y tcnicas ya existentes. El componente no tcnico est
constituido por todas aquellas actividades administrativas y de gestin que permiten a los
equipos de desarrollo de software controlar las diferentes fases tcnicas y facilitar el uso
eficiente de los canales de comunicacin.

3.1.Componente Tcnico
A continuacin centraremos nuestra atencin en discutir de manera un poco ms detallada
el componente tcnico de la ingeniera de software. El desarrollo de un sistema de
informacin exige normalmente los siguientes tipos de actividades: anlisis, concepcin,
desarrollo e implementacin.

Las actividades de anlisis permiten comprender en profundidad las necesidades de


informacin de la organizacin y los requerimientos que cada unidad organizacional exige.
Este conjunto de actividades van a facilitar la obtencin de diferentes tipos de diagramas
que establecen los diferentes flujos de informacin que ocurren al interior de una
organizacin. La figura 4 ejemplifica un flujo de informacin tpico.

13
Figura 4. Flujos de Informacin en la Organizacin.
Fuente: Amado Ballester Castro. 2012. Sistema de informacin para la toma de decisiones en el Departamento Comercial
de ETECSA
En: http://www.gestiopolis.com/administracion-estrategia-2/sistema-informacion-toma-de-decisiones-departamento-
comercial-de-etecsa.htm

Por su parte, las actividades de concepcin, estn encaminadas a definir la arquitectura de


informacin y la estructura del nuevo sistema tales que cumplan con las exigencias
descritas en el anlisis. Es durante esta fase que los analistas de sistemas conceptualizan y
vislumbran una solucin informtica que permita a la organizacin gestionar sus
necesidades de informacin.

As mismo, las actividades de desarrollo agrupan todos aquellos esfuerzos encaminados a


plasmar en un cdigo eficaz y eficiente la solucin esquematizada en la fase de concepcin.
Para ello los desarrolladores y programadores de software convierten el diseo inicial en
piezas de software modulares que al final van a conformar un sistema de informacin
completo. Estos ltimos utilizarn diversos tipos de herramientas tales como: software
grfico, lenguajes de programacin, depuradores de cdigo, pruebas unitarias,
documentadores, gestores de versiones etc.

Finalmente, las actividades de implementacin permitirn obtener una versin final del
producto de software que ser puesta en produccin siguiendo ciertos estndares de
aseguramiento de calidad, seguridad y soporte para satisfacer las exigencias de la
organizacin. Una vez instalado y entregado formalmente el sistema de informacin
sobrevienen las fase de mantenimiento y soporte, las cuales van a exigir la definicin y
ejecucin de toda una serie de procesos operacionales cuyo objetivo es asegurar la
continuidad en la operacin del sistema de informacin conforme a unos acuerdos de
servicio previamente establecidos por el grupo de gestin de Tecnologas de la
Informacin y los gerentes de rea involucrados en su operacin. Esta ltima fase durar
mucho ms tiempo que las fases de concepcin, desarrollo e implementacin del sistema y
provocar unos costos recurrentes para la organizacin.

14
Fig. 5 : Ciclo de Vida de Desarrollo de Sistemas (SDLC)
Adaptado de: Turban, Efraim et Al. 2007. Information Technology for Management

En la figura 5, se muestra el esquema del ciclo de vida de Sistemas descrito de forma muy
breve en la seccin anterior.

Seguidamente, explicaremos con algn grado de detalle cada una de las fases del ciclo de
vida de desarrollo de sistemas. Es claro que a lo largo de la carrera el estudiante tendr la
oportunidad de profundizar cada uno de los aspectos de este enfoque y desarrollar mltiples
competencias y habilidades que le facilitarn su desempeo profesional.

El desarrollo de sistemas de informacin comienza por la fase de anlisis, aunque en alguna


literatura se considera la fase de planificacin como etapa previa. Como veremos ms
adelante, la planificacin forma parte del componente no tcnico y permite la correcta
ejecucin de las fases del ciclo de vida.

El principal objetivo de la fase de anlisis es comprender las necesidades de gestin y los


imperativos de procesamiento de la informacin del nuevo sistema. Esta fase permite
descubrir y comprender los procesos de la organizacin y los diferentes elementos de
informacin necesarios para cumplir las actividades cotidianas y cumplir los objetivos
estratgicos trazados por la alta gerencia. Las siguientes son las principales actividades a
desarrollar en esta fase:

Recoleccin de informacin.
Definicin de las especificaciones del sistema.
Construccin de prototipos para facilitar la descripcin de las especificaciones.
Priorizacin de las especificaciones.
Examen de las alternativas conjuntamente con la direccin.

15
La recoleccin de informacin es fundamental en la fase de anlisis, pues mediante ella,
los analistas de sistemas obtendrn una visin general de las actividades de la organizacin
y de los principales componentes e interrelaciones de la misma. Ellos se reunirn
peridicamente con los diferentes usuarios del futuro sistema y utilizando mltiples
mtodos tales como: entrevistas, talleres, observacin directa, etc., y haciendo uso de
herramientas metodolgicas plasmarn el funcionamiento en esquemas grficos (diagramas
de flujo de datos, casos de uso, diagramas de actividades) que luego sern validados y
refinados hasta obtener una fotografa de la organizacin y de los flujos de informacin
que circulan al interior de ella. Con base en el entendimiento de los procesos de negocio, el
equipo de anlisis podr resumir las necesidades de informacin de la organizacin y
aproximarse a unas dos o tres alternativas de solucin global del sistema.

Posteriormente, en algunos cursos especficos de su carrera profesional, el estudiante tendr


la oportunidad de revisar las diferentes tcnicas de recoleccin de informacin.
Mencionaremos solamente algunas de ellas: revisin de documentacin interna y externa,
investigacin y visita de sitios de trabajo, observacin directa del ambiente de trabajo,
cuestionarios, entrevistas, prototipos y reuniones conjuntas de definicin de requerimientos.

La fase de concepcin tiene como principal objetivo la elaboracin de un diseo general y


detallado de los diferentes componentes del futuro sistema. Esta fase utiliza como insumo
la informacin recolectada en la fase de recoleccin de informacin. La concepcin
funcional del sistema consistir en desarrollar la estructura para la solucin de software, el
diseo de los modelos de datos a utilizar, el diseo de la concepcin grfica de la interfaz
de usuario. Posteriormente el equipo de concepcin y arquitectura del sistema deber
proponer y desarrollar la manera en cmo se implantara la solucin de software, es decir,
que tipo de hardware ser utilizado, el tipo de comunicacin y redes a utilizar, los sistemas
operacionales y gestores de bases de datos que soportarn la solucin, etc. Como
actividades principales de esta fase tenemos:

Concepcin e integracin de la redes de comunicacin.


Concepcin de la arquitectura de la aplicacin.
Diseo de las interfaces de usuario.
Diseo de las interfaces del sistema.
Diseo y concepcin de la(s) bases de datos.
Prototipo detallado de los componentes del sistema de informacin.
Concepcin e integracin de los controles del sistema.

Las actividades de concepcin estn estrechamente relacionadas entre ellas y usualmente


exigen una gran dedicacin y exactitud por parte de los equipos de trabajo. Las actividades
con respecto a las redes (networking) comprenden la instalacin de los componentes
fsicos tales como: servidores, enrutadores, sistemas de deteccin de intrusos, etc., as como
los sistemas operativos de cada uno de estos dispositivos. Ellos albergarn las aplicaciones
y los datos del nuevo sistema de informacin permitiendo a la organizacin el
16
procesamiento y explotacin de sus datos segn unos acuerdos o niveles de servicio fijados
por los usuarios y responsables de la operacin del mismo.

La arquitectura de la aplicacin es aquella parte esencial que responde a las exigencias de


los usuarios en cuanto a requerimientos de informacin. Ella provee las funciones de
procesamiento de informacin segn las especificaciones de negocio. La concepcin tendr
como objetivo traducir los diagramas de requerimientos en programas de software
adecuados para la organizacin. Dichos programas sern desarrollados utilizando lenguajes
de programacin y herramientas automticas de desarrollo de software tales como: Eclipse,
Netbeans, Visual Studio, etc.

La interfaz de usuario es un componente crucial de cualquier nuevo sistema. Existen en el


mercado innumerables herramientas para construccin de prototipos de interface que
facilitan la tarea de su diseo a travs de un enfoque en espiral o de aproximaciones
sucesivas. En la fase de concepcin los diferentes elementos visuales y no visuales van a
combinarse para construir una interfaz integrada compuesta por formularios, pantallas y
secuencias de interacciones. Muy seguramente el estudiante explorar todos estos temas
que modernamente se denomina de ergonoma e interfaz hombre-mquina.

As mismo, como el nuevo sistema brinda una forma de acceso y gestin a travs de la
interfaz de usuario, deber estar en capacidad de interactuar con otros sistemas. Por
ejemplo: un sistema de recursos humanos deber estar en capacidad de intercambiar
informacin con el sistema contable, con el sistema de gestin y control de acceso a las
aplicaciones etc. Entonces, ser imprescindible invertir en la definicin y programacin de
los vnculos de comunicacin entre el sistema y su entorno.

Cualquier sistema de informacin tendr como uno de sus objetivos el registro de las
actividades de negocio. Por ejemplo: Twitter es una aplicacin (micro blogging)
considerada como una red social en la que se comparte informacin de estado (eventos,
actividades ) de algn objeto de la realidad (persona, concierto, actividad poltica, etc.) y
como tal genera enormes cantidades de datos que van a ser explotados por numerosas
compaas. Para tal efecto, el sistema de informacin sobre el que se apoya Twitter genera
segundo a segundo un gran cumulo de mensajes que deben ser almacenados en algn lugar
para mltiples propsitos: anlisis estadstico, marketing empresarial, seguridad
informtica, etc. En este caso los diseadores de Twitter definieron una arquitectura de
informacin que se traduce en bases de datos, archivos de configuracin, auditorias del
sistema.

Adicional a este conjunto de actividades anteriormente mencionadas, el personal dedicado


a la concepcin debe anticipar y disear los controles para proteger la integridad de los
datos y ofrecer la seguridad a las aplicaciones. Esto controles deben ser pensados e
integrados desde las primeras etapas de la concepcin del sistema y no una vez sea
construido.

17
Las actividades de desarrollo son aquellas que permiten plasmar toda la concepcin en
lneas de cdigo y finalmente la puesta en produccin de un sistema de informacin fcil de
usar y administrar. Podemos distinguir las siguientes grandes actividades de esta fase:

Construccin de los componentes de software


Verificacin y pruebas
Conversin de datos
Formacin de usuarios y documentacin del sistema
Instalacin del sistema

Existen numerosas tcnicas para desarrollar y construir software. Una de las ms utilizadas
es valerse de un lenguaje de programacin como: Visual Basic, Java, PHP, Perl, Phyton etc.
Por otra parte, existen herramientas que permiten a partir de los requerimientos de usuario
generar un cdigo base a partir del cual el equipo de programacin comienza a desarrollar
los diferentes mdulos del sistema de informacin. El software debe ser debidamente
probado haciendo uso de variadas tcnicas y metodologas, pero siempre con el propsito
de disminuir el riesgo de fallas cuando el sistema de informacin sea puesto en produccin.
Entre las pruebas ms conocidas estn: pruebas unitarias, pruebas funcionales, pruebas de
integracin.

Generalmente, el proceso de puesta en produccin conlleva mltiples tareas de


alistamiento, configuracin y migracin de diversos elementos del sistema: hardware,
comunicaciones, datos, procesos etc. La Migracin de datos por ejemplo puede implicar la
gestin de un proyecto independiente que comprender el mismo las fases de anlisis,
concepcin e implementacin de procedimientos destinados a convertir los datos de un
sistema a otro, o cargar inicialmente los datos partiendo de cero o algn proceso complejo
de transformacin de un sistema existente hacia el nuevo sistema. Este procedimiento
puede comprender actividades de depuracin manual y/o automtica de datos para asegurar
el correcto funcionamiento del nuevo sistema de informacin.

Previo a la fase de instalacin y puesta en produccin del sistema, el equipo del proyecto
deber tener en cuenta como aspecto primordial: la gestin del cambio y la formacin de
los usuarios en el uso del nuevo sistema. Es comn, considerar que el proceso de entrega en
produccin tiene solamente un componente tcnico de escogencia del hardware,
configuracin de los canales de comunicacin, instalacin de clientes (PCs, navegadores
etc), instalacin de servidores e instalacin de los componentes de software. Sin embargo
uno de los mayores riesgos que enfrentan los gerentes de proyectos de software es: La
resistencia al cambio. Por ello es necesario incluir los mecanismos y tcnicas adecuadas
que garanticen la reduccin al mnimo posible de este fenmeno natural en las
organizaciones sociales y en los individuos. Esto incluir sesiones de trabajo y formacin
para que los usuarios puedan apropiarse del sistema y eliminar las barreras naturales que
impediran una adaptacin rpida al nuevo sistema de informacin.

18
La fase de soporte y mantenimiento tiene como principal objetivo garantizar la continuidad
de la operacin del sistema durante el tiempo acordado o previsto en las etapas de
concepcin. En razn a que esta fase es posterior a la entrega del sistema, normalmente no
es considerada parte del ciclo de vida de un sistema. Durante el transcurso de esta fase el
sistema de informacin sufrir actualizaciones y mejoras que permitirn: extender sus
funcionalidades, solucionar problemas de rendimiento o desempeo o incluso arreglar
deficiencias en el sistema inicialmente entregado. Podemos distinguir tres grandes
actividades a lo largo de la fase de soporte:

Mantenimiento del sistema


Actualizacin y mejoramiento del sistema
Soporte a los usuarios

Cada sistema exige un proceso continuo de revisin para solucionar los problemas
detectados por los usuarios al utilizar el sistema y de actualizacin del software acorde con
los nuevos requerimientos de la organizacin y de los procesos de negocio. En la actualidad
el ciclo de vida de los sistemas tiende a ser mucho ms corto que lo que era hace unos 10 o
20 aos en razn a la dinmica misma de los negocios y al ritmo vertiginoso de aparicin
de nuevas tecnologas. Sin embargo existen sectores tales como: el financiero, de seguros y
ciertas actividades gubernamentales que por ser demasiado crticas, sensibles y complejas
han decidido continuar con sus sistemas tradicionales (Legacy Systems) hacindole ciertos
ajustes a la forma como los usuarios finales visualizan el sistema pero dejando intactas sus
plataformas centrales. Las principales tareas que tienen que ver con el mantenimiento de las
aplicaciones incluyen la correccin o depuracin de errores (debugging) y los ajustes a las
especificaciones de procesamiento de informacin. Tradicionalmente, la labor de
mantenimiento del sistema es asignada a un equipo dedicado de soporte de sistemas.

Finalmente, la otra gran actividad de la fase de soporte tiene que ver con la provisin de
asistencia a los usuarios finales. Las mesas de ayuda (help desk) constituyen un mecanismo
globalmente utilizado para responder rpidamente a las preguntas de los usuarios finales y
ayudarlos a mantener o aumentar su productividad. En tanto que profesional de la
Ingeniera de software, seguramente, su carrera profesional incluir alguna(s) etapas
ejerciendo el rol de instructor o de soporte a usuarios dentro de un grupo de mesa de ayuda.

3.2.Componente no tcnico
(organizacional)
En la siguiente seccin escudriaremos algunos aspectos no tcnicos del proceso de
ingeniera de software. Como se haba resaltado anteriormente, el desarrollo de un proyecto

19
de ingeniera de software implica un cumulo de tcnicas y metodologas que faciliten su
planificacin, realizacin, control y seguimiento.

En muchas ocasiones cuando ocurren eventos trgicos se mencionan diferentes factores que
pueden haber incidido como origen de los mismos. En muchas disciplinas, tal como la
ingeniera de software, los equipos de desarrollo deben tener en mente realizar una
cuidadosa planificacin de cada una de las actividades a ejecutar, as como los tiempos y
recursos necesarios para llegar a cumplir las metas en trminos de dinero y duracin.

Incluir un adecuado uso de la gestin o gerencia de proyectos podr reducir los riesgos de
eventos perjudiciales en el desarrollo del proyecto: costos elevados en algunas actividades,
conflictos en la utilizacin de recursos, demoras injustificadas en cada una de las etapas etc.
No siempre podremos como responsables del proyecto ampararnos en la inevitabilidad de
la ley de Murphy o en el desconocimiento de ciertas tcnicas tales como el anlisis de
riesgos o la mitigacin de los mismos.

A continuacin introduciremos algunos aspectos primordiales de gestin de proyectos


aplicables a la ingeniera de software. Posteriormente, el estudiante profundizar en varios
de sus cursos algunos de estos conceptos.

En primer lugar, un proyecto se define como una secuencia compleja de actividades nicas,
complejas y conexas que tienen un propsito y que deben ser culminadas en un tiempo
determinado, cumpliendo un presupuesto y de acuerdo con una especificacin (WHITTEN,
2005). Para cualquier proyecto de desarrollo de sistemas es necesario asegurar que el
proyecto cumple un cronograma y unas fechas de entrega determinadas previamente, que es
desarrollado ajustndose a un presupuesto (control de costos) y cumpla con las expectativas
y requerimientos establecidos inicialmente.

Continuamente se divulgan estudios donde se ponen de relieve las mltiples dificultades y


estadsticas que muestran un alto ndice de fracasos en los proyectos de sistemas. Algunas
de las dificultades y fallas en la gestin de proyectos que se menciona a menudo son:

Ausencia de compromiso de la alta direccin con el proyecto.


Falta de compromiso para seguir las metodologas de gestin de proyectos.
Uso de tcnicas de estimacin poco confiables.
Competencias del recurso humano inadecuadas.
Falta de adaptacin a los cambios del negocio.
Recursos insuficientes.
Fallas para gestionar el plan.
Exceso de optimismo.

Evidentemente, la causa ms frecuente de falla de un proyecto lo constituye la falta de


conocimiento y destreza en la gerencia del proyecto por parte de los lderes del mismo. Para
20
llegar a ser un buen gerente de proyectos es necesario entrenamiento y desarrollo de las
destrezas y habilidades propias de este rol.

Por el contrario, como factores crticos de xito para los proyectos de desarrollo de
software encontramos:

Definicin clara de las especificaciones del sistema.


Fuerte implicacin de los usuarios.
Apoyo decidido de la alta direccin.
Planes minuciosos y detallados del proyecto.
Cronogramas de trabajo y fijacin de metas realistas.

Como una gua bsica para el estudiante introduciremos el ciclo de vida de un proyecto y
sus etapas ms importantes. Las actividades de gestin de proyectos permean todas las
fases del desarrollo de un sistema. A continuacin explicaremos brevemente las
actividades de gestin de proyectos.

Definicin del alcance: Esta actividad tiene como propsito que todos los participantes en
el proyecto acuerden un alcance del proyecto antes de intentar cualquier identificacin de
tareas y/o asignar recursos (personal) a esas tareas. El alcance del proyecto no es ms que la
delimitacin de las fronteras del proyecto. Sera necesario identificar y acordar cuales reas
y procesos de negocio sern estudiadas, analizadas, construidas, mejoradas e
implementadas. El alcance tambin deber incluir las excepciones o limitaciones del
proyecto. Para la construccin de este alcance, el grupo de trabajo deber responder
adecuadamente las siguientes preguntas:

Producto: Qu se quiere?
Calidad: Qu tanta calidad va a tener el producto?
Tiempo: Cundo queremos que entre a funcionar?
Costo: Cunto est el cliente o patrocinador dispuesto a pagar por el
desarrollo del sistema?
Recursos: Cules recursos existen y estn disponibles para emprender la construccin
del sistema?

Identificacin de tareas: Una vez identificado el alcance del proyecto la siguiente


actividad consiste en identificar las tareas. Una tarea es una unidad de trabajo manejable y
cuantificable en trminos del tiempo asignado para su ejecucin y el recurso (das-hombre)
destinado para su realizacin. Una de las metodologas ms populares es la conocida como
Estructura de descomposicin del Trabajo (Work Breakdown Structure) la cual permite
identificar y documentar las actividades y tareas de un proyecto. El resultado de esta
metodologa es una estructura jerrquica del proyecto en fases, actividades y tareas. La
figura 6 ejemplifica los posibles resultados la descomposicin de las unidades de trabajo
utilizando la metodologa WBS para dos proyectos cualquiera:

21
Fig. 6. Resultado de la Estructura de Descomposicin de Trabajo (EDT - WBS)
Fuente: www.criticaltools.com

Estimacin de la duracin de tareas

Una vez hecha la descomposicin de las unidades de trabajo el gerente de proyectos tendr
que asignar la duracin de cada una de ellas. La duracin de una tarea depende de factores
22
tales como: tamao del equipo, nmero de usuarios, disponibilidad de los usuarios,
aptitudes de los usuarios, complejidad del sistema, arquitectura de informacin, experiencia
y destreza del equipo de trabajo y experiencia en otros proyectos.

Una buena parte de las metodologas de sistemas definen tanto las tareas como tambin
proveen guas para la estimacin de la duracin de las mismas. El director de proyectos
debe usar sus habilidades para ajustar la duracin de las tareas acorde con las necesidades y
caractersticas especficas del proyecto. No obstante, en la practica la estimacin o clculo
de la duracin de las tareas es algo difcil de realizar con la precisin adecuada y
normalmente los proyectos incluyen algunos tiempos de holgura para mitigar el riesgo de
haber hecho una estimacin inadecuada de la duracin de las tareas. Adicional a las
metodologas existen innumerables herramientas de software en el mercado para facilitar el
diseo del cronograma e incluir los recursos y costos del proyecto. Algunas de ellas son
Microsoft Project Manager, Primavera, Lotus Notes, entre otros.

Especificacin de Interdependencias entre las tareas

Una vez conocidas las fases, actividades, tareas y sus duraciones, es necesario determinar
cules actividades dependen de otras y qu tipos de dependencias suceden entre ellas.
Existen 4 tipos bsicos de dependencias entre tareas:

FS (Finish-to-Start) El fin de una tarea provoca el comienzo de otra.


SS (Start-to-Start) El comienzo de una tarea provoca el comienzo de otra.
FF (Finish-to-Finish) Dos tareas deben finalizar al mismo tiempo.
SF (Start-to-Start) El comienzo de una tarea significa el fin de otra.

Asignacin de Recursos

Una vez conocida la secuencia lgica y las interrelaciones de las diferentes tareas de un
proyecto conviene asignar lo diferentes recursos. Entre ellos mencionaremos:

Personas: incluye todos los propietarios del sistema, usuarios, analistas, diseadores,
desarrolladores, personal externo y personal de soporte involucrado en el desarrollo del
proyecto de una u otra manera
Servicios: Incluye todo tipo de servicios tal como aseguramiento de calidad, impresin
de documentos, Albergue de pginas (hosting), etc., necesarios para completar el
proyecto
Equipos y espacio fsico: Incluye todas las salas de reunin, conferencias, puestos de
trabajo, etc.
Materiales y suministros: Incluye todos aquellos artculos como papelera, lpices, etc.
necesarios para el normal desarrollo de las actividades.
Dinero: Incluye todo el flujo de efectivo para el sostenimiento del proyecto.

23
La disponibilidad de recursos es un factor crtico para los proyectos. Especialmente
cuando nos referimos al recurso humano o a la disponibilidad de instalaciones. Una
gran proporcin de metodologas de sistema identifican los recursos humanos
necesarios para la ejecucin de cada tarea usando el concepto de rol. El rol es una
investidura que alguien toma puesto que posee ciertas habilidades particulares:
Analista de Datos, Analista de Procesos, Usuario Lder, Diseador de interfaces etc. En
el instante de asignar los recursos, el gerente de proyectos especifica las unidades del
recurso que se requerirn para ejecutar una tarea.

Figura 7. Ejemplo de asignacin de recursos


Fuente: www.innate.co.uk

Dirigir el esfuerzo del equipo

Todas las actividades anteriores estaban encaminadas a obtener un plan del proyecto. Ahora
es necesario proceder a la ejecucin del plan. Esta exigir del gerente de proyectos la
administracin del personal enfocndose al logro del xito del proyecto. Existe una amplia
bibliografa que gua a los gerentes de proyecto por el difcil camino de la direccin y la
gestin de un equipo de trabajo y la orientacin de un proyecto hacia la consecucin de los
objetivos fijados en las primeras etapas.

24
Monitoreo y control de progreso del proyecto

A medida que se ejecuta el proyecto el personal que gestiona el proyecto (gerentes de


proyecto) debe monitorear su progreso tomando como referencia el alcance, el cronograma
y el presupuesto. El director de proyecto debe reportar el progreso y cuando sea necesario
ajustar el alcance, el cronograma y los recursos asignados.

El reporte de progreso del proyecto es a menudo suficiente para establecer el control y las
responsabilidades, pero en ocasiones se convierte en un impedimento para lograr un
avance real del proyecto. En alguna literatura (algo obsoleta) se recomiendan reuniones
para mostrar el progreso del proyecto cada 2 semanas. Esto puede ser vlido a nivel de alta
gerencia. Sin embargo a nivel del control de ejecucin de las actividades, es ya de uso
corriente metodologas mucho ms livianas (sobre todo en trminos de documentacin) que
implementan reuniones diarias muy cortas con el propsito de conocer el avance de
cada uno de los integrantes de los equipos de trabajo y las dificultades o interdependencias
que pueden suscitar algn tipo de bloqueo o dificultad en el avance del proyecto. Estas
metodologas se han dado en denominar AGILE.

Los informes de progreso o ejecucin del proyecto pueden hacerse verbalmente o de forma
escrita. En general las herramientas de gestin de proyectos como Microsoft Project
manager, primavera, etc., poseen opciones de reportes que facilitan la impresin o envo
electrnico de los informes de ejecucin o de progreso del proyecto. Tambin es muy usado
Excel como herramienta liviana y de fcil uso para mostrar la ejecucin de un proyecto,
usndolo conjuntamente con los grficos de GANTT o PERT.

Control del resultado del proyecto y Evaluacin

La actividad final conlleva la necesidad de aprender y generar conocimiento a partir de la


experiencia. En esta fase se hace un sondeo o evaluacin de los resultados del proyecto
conjuntamente con el equipo de trabajo (incluyendo los clientes o usuarios finales)
respecto a las diferentes experiencias y aprendizajes vividos a lo largo del proyecto. Se
respondern las siguientes tres preguntas:

Cumpli el producto final con las expectativas del usuario?


Se ajust el proyecto a los tiempos estipulados en el cronograma?
Se cumpli de manera cabal el presupuesto?

Adems de responder a la pregunta con un s o con un no, se debern revisar las razones
y circunstancias que justifican las respuestas, para posteriormente favorecer un mecanismo
de mejoramiento continuo que permita progresar en el uso de las metodologas de
desarrollo de sistemas y de gestin de proyectos en el futuro.

Tcnicas de la Ingeniera de Software

25
A continuacin introduciremos algunos elementos referentes a las diferentes tcnicas
existentes para la implementacin y desarrollo de software.

Existen mltiples tcnicas utilizadas para el desarrollo de software. Sin embargo


escudriaremos solamente algunas de ellas de manera muy rpida y breve. Tenemos
algunas tcnicas basadas en la reutilizacin. Estamos hablando o refirindonos a poder
utilizar en diferentes componentes de software piezas comunes a nivel de cdigo o
programacin. Aunque la idea no es totalmente nueva y la idea de reutilizacin est
inmersa en varias metodologas antiguas de desarrollo y en algunos lenguajes de
programacin, su vigencia y proliferacin es cada vez ms evidente. Algunas de las
ventajas que este enfoque de reutilizacin nos da son:

Disminucin de costos: Es claro que si en un proyecto de desarrollo podemos crear


elementos comunes una sola vez y estos van a ser compartidos por varios componentes
del sistema de informacin esto redundar en la eficiencia y en la obtencin de costos
ms bajos para el proyecto.

Confiabilidad: Los componentes comunes habrn sido probados lo suficiente,


brindando as un mayor porcentaje de confiabilidad para su incorporacin en las partes
restantes del sistema. Sin embargo existen algunos riesgos inherentes, pues si existe
una probabilidad de falla en algn componente reutilizado e incorporado en muchos
partes del proyecto y esta probabilidad se concretiza en un incidente o problema
podramos impactar de manera significativa todo el sistema.

Oportunidad: puesto que la reutilizacin conlleva menor cantidad de lneas de cdigo a


escribir y por ende menor esfuerzo de programacin, el tiempo de entrega del proyecto
podra ser menor a aquel sin la reutilizacin.

Eficiencia: Si el proceso de reutilizacin es implementado adecuadamente se generara


un tipo de especializacin que favorecer la calidad y eficiencia del producto de
software

Es necesario tener en cuenta que la reutilizacin de cdigo exige del equipo de desarrollo
un esfuerzo en la gestin de versiones del mismo. Puesto que el desarrollo de software en
gran escala es una actividad de equipo que implica compartir elementos comunes, la labor
de gestionar las versiones del software exigir una atencin especial.

El concepto de reutilizacin de software conlleva tambin la creacin de normas y


estndares que provean un marco comn a la generacin de componentes reutilizables

Entre las tcnicas que incorporan la reutilizacin tenemos:

El desarrollo orientado por objetos.


El uso de frameworks de desarrollo.
26
El desarrollo por componentes.
El desarrollo orientado a servicios.
El uso de patrones.
Lneas de Producto.

El desarrollo orientado por objetos es un enfoque relativamente reciente que permite


incorporar algunos conceptos muy poderosos tales como: el encapsulamiento, y la
abstraccin. El primero de ellos, consiste en ocultar los detalles sobre las estructuras
internas de una pieza de software. Para ello se recurre al uso de mtodos que permiten
acceder de forma indirecta a las caractersticas principales de un objeto (propiedades) los
cuales se consideran pblicos, pero al interior existen mecanismos que acceden de forma
directa y manipulan las propiedades del objeto. Estas tcnicas sern revisadas con gran
detalle en el curso de programacin orientada por objetos donde seguramente se utilizar
alguno de los lenguajes de programacin que implementan o usan este enfoque: C++ o
Java. El segundo, consiste en identificar las caractersticas generales de un problema,
pudiendo as centrar nuestra atencin exclusivamente en estas. La abstraccin permite
agrupar caractersticas comunes a una serie de objetos que se llamarn propiedades y
determinarn el comportamiento de dichos objetos que sern representados a travs de
mtodos. De esa manera se define una clase como un conjunto de objetos que poseen las
mismas o similares propiedades y que siguen un comportamiento tambin parecido. El
hecho de poder definir una clase con el propsito de representar un conjunto de objetos de
la realidad facilita la reutilizacin y la estandarizacin.

Los cuadros referenciales o frameworks de desarrollo son un conjunto de clases


predefinidas que le permiten al desarrollador implementar rpidamente un sistema o
aplicacin. Existe multitud de frameworks que ofrecen funcionalidades genricas y
probadas permitiendo al grupo de desarrollo centrarse en asuntos especficos del negocio.
Ejemplos de framewoks utilizados son: Ruby on Rails, Zend, .NET, etc.

Por otra parte, el desarrollo por componentes permite reutilizar un conjunto de clases de
manera integral. En este enfoque no es permitido utilizar una de las clases del componente
de forma individual. Cada componente representa una unidad de aplicacin, con su interfaz
y sus reglas para ser usado (contrato o protocolo) sin dejar ver cmo est desarrollado
internamente. Ejemplos de componentes son las interfaces grficas disponibles en entornos
como java y .net. El xito del desarrollo utilizando el enfoque de componentes reside en
definir claramente: cul ser la interfaz y cul es su contrato. Para facilitar la definicin de
la interfaz en ocasiones se utiliza un lenguaje de definicin de interfaz (IDL). Esto
independiza la implementacin y definicin de la interfaz del lenguaje de programacin
utilizado.

El desarrollo orientado a servicios tiene como propsito fundamental facilitar la


identificacin y granularidad de cada una de las funcionalidades del sistema. Un sistema
desarrollado con el enfoque SOA (Service Oriented Architecture) estar conformada por
una serie de servicios que sern consumidos o utilizados bsicamente mediante el concepto
27
de cliente que puede ser de tipo REST o SOAP. El enfoque de orientacin a servicios
supone que la organizacin ha superado ciertas fases de madurez dentro de su enfoque de
desarrollo de software y el equipo de desarrollo ha sido suficientemente entrenado para
usufructuar toda la potencialidad del enfoque de servicios. Este enfoque facilita en la
implementacin diversas maneras de distribuir cada una de las capas de servicio en el
hardware disponible. La idea subyacente al enfoque de servicios es que las diferentes reas
de la organizacin compartan funcionalidades comunes a travs de unidades de
procesamiento (o ejecucin) definidas de forma granular. Algo as como la manera en que
en un restaurante se distribuyen cada una de las tareas o servicios: preparacin,
distribucin, limpieza, toma de la orden del pedido, pago, etc.

Adems de los enfoques de reutilizacin vistos, se utilizan en el desarrollo de software


diferentes tipos de tcnicas para facilitar el uso ptimo de las clases y la adaptacin de
acuerdo con el tipo de necesidad. El termino patrn, se refiere a un diseo general que
permite solucionar un problema recurrente de diseo en sistemas orientados a objetos.
(HEL.1994)

Las principales ventajas de recurrir al uso de patrones reside en:

Reutilizar las soluciones y aprovechar la existencia de personal especializado dedicado


a explorar este tipo de enfoque.
Establecer un vocabulario comn para trasmitir y explicar las soluciones de software.
Encapsular cierto conocimiento sobre un tipo de problema y sus soluciones.
No tener necesidad de reinventar la rueda.

Para lograr usufructuar y conseguir estos beneficios ser necesario tener en cuenta los
siguientes elementos del patrn:

El nombre del patrn nos permite identificar el patrn de diseo y aumentar el nivel de
abstraccin puesto que nos centramos en la solucin del problema como un todo.

El problema nos muestra que situacin resuelve el patrn. Puede ser un aspecto
concreto o la identificacin de una estructura del problema.

La solucin describe los elementos que participan en el patrn tales como sus
relaciones, responsabilidades y colaboraciones. La solucin acta como una plantilla
que podemos aplicar a nuestro problema.

Las consecuencias que son los resultados y los compromisos derivados del uso del
patrn. Esto nos permite evaluar los costos y beneficios de la aplicacin del patrn.

Algunos ejemplos de patrones tpicos usados en orientacin a objetos son: Factora de


objetos, Fachada, Singleton, adaptador, puente, estado, estrategia, Iterador, etc.
28
Por otra parte tenemos las lneas de producto que son bsicamente estrategias de mercadeo
que facilitan el ofrecimiento de un producto de forma individual o agrupada. Por ejemplo
en lneas de productos de software podemos tener la distribucin de Linux Ubuntu que
tiene como ediciones las versiones Desktop, Server y Notebook. Adems a partir de estas
lneas principales de producto pueden derivarse otras ms especficas de acuerdo con el tipo
de mercado al cual se dirija el producto.

Encontramos tambin algunas otras metodologas que permiten o facilitan el desarrollo de


software. Por ejemplo existen herramientas de modelizacin tal como UML. UML es una
abstraccin que permite a travs de un conjunto de diagramas o grficos dar cuenta de los
elementos principales de diseo de un sistema de informacin. Entre sus principales
conceptos estn: caso de uso, diagrama de actividad, diagrama de secuencia, diagrama de
clases, diagrama de transicin de estado etc. Esta metodologa ser revisada por el
estudioso en cursos tales como programacin orientada a objetos, Anlisis y diseo de
sistemas de informacin y Patrones, Estndares y Metodologas para la construccin de
Software.

Ahora bien algunas herramientas que permiten automatizar la generacin y construccin de


software, comnmente llamadas CASE (Computer Aided Software Engineering)
incorporan el uso de elementos de diseo o diagramacin, as como mecanismos para
gestionar la definicin de requerimientos hasta la generacin de un cdigo base de la
aplicacin.

4. Competencias y desafos para el


Ingeniero de software
La ingeniera de software es una disciplina en constante evolucin y para desempear las
diferentes actividades que cada uno de sus componentes exige, el profesional de software
debe estar dotado de una serie de caractersticas, competencias y saberes. Algunas de estas
competencias que debe poseer son las siguientes.

4.1.Competencias
29
Conocimientos y competencias tcnicas:

El profesional de software debe comprender los fundamentos de las siguientes tecnologas.

El computador y la manera como este funciona.


Los diferentes dispositivos que interactan con un computador: las unidades o
dispositivos de entrada-salida, los dispositivos de almacenamiento.
Las redes de comunicacin que permiten conectar los computadores.
Las bases de datos y los sistemas de gestin de bases de datos.
Los lenguajes de programacin.
Los sistemas operacionales y sus utilitarios.

Un ingeniero de software debe comprender los diferentes tipos de herramientas de


software y tcnicas existentes en el mercado que permiten o apoyan el desarrollo de
software. Ejemplo de estas utilidades de software son: Eclipse (ambiente integrado de
desarrollo), Notepad++ y Sublime (editores de cdigo), GIMP (graficador), Photoshop
(Procesamiento grfico), etc.

Las tcnicas permiten realizar actividades especficas de desarrollo de sistemas tales como:
planificar proyectos, concebir o disear un sistema, instalar un software etc.

Conocimientos y competencias administrativas:

Entre otros conocimientos y habilidades esenciales para un analista, es necesario tener en


cuenta aquellas que le permiten comprender la organizacin o el entorno en el cual trabaja.
Normalmente, el objetivo del desarrollo de software consiste en resolver problemas
administrativos. Sin embargo, el ingeniero de software debe ser flexible y estar dispuesto a
adaptarse a circunstancias en ciertas ocasiones ambiguas y a aprender nuevos dominios
muchas veces totalmente desconocidos y complejos. Algunos ejemplos de estas
competencias son:

Funciones administrativas de las organizaciones.


Cmo estn estructuradas las organizaciones.
Cmo estn administradas las organizaciones.
Qu tipo de trabajo se ejecuta en una organizacin y qu productos o servicios son
ofrecidos

Los profesionales de software generalmente poseen una visin global del mundo de los
negocios. Es por ello que en el pensum de su carrera el estudioso encontrar asignaturas
que le permitirn comprender mejor los procesos crticos de las organizaciones.

Conocimientos y competencias en relaciones humanas:

30
El profesional de software debe poseer una muy buena comprensin de las personas y de
las relaciones humanas. En cada uno de los proyectos se enfrentar a retos de comunicacin
complejos en donde deber extraer muy rpidamente el mayor provecho posible en
trminos del entendimiento de los factores y procesos crticos de una organizacin con
miras a determinar los requisitos funcionales de un sistema. Por tanto, ser absolutamente
necesario desarrollar habilidades para entender como: piensan, aprenden, reaccionan ante
los cambios, se comunican y trabajan.

4.2.Aspectos ticos y legales de la


Ingeniera de Software
El ejercicio de la profesin de Ingeniera de software se enmarca dentro de una serie de
lineamientos ticos, morales y legales que disminuyen los riesgos en su ejercicio y limitan
los posibles daos o perjuicios que puedan sufrir las organizaciones. Este conjunto de
criterios, normas y procedimientos generalmente estn relacionados con el contexto en el
cual se practica la profesin y los cnones y valores de la cultura organizacional y de
sociedad en la que se acta. Sin embargo, como punto de partida mencionaremos algunos
elementos bsicos usando el cdigo de tica desarrollado por la ACM (Association of
Computer Machinery). Acorde con lo expresado en dicho cdigo, el ingeniero de
software debe comprometerse con hacer del anlisis, la especificacin, el diseo, el
desarrollo, las pruebas y el mantenimiento de software una profesin respetada y de
beneficio para la sociedad (traduccin libre). Acorde con el principio general de bienestar
de la sociedad, el ingeniero de software deber ceirse a 8 principios a saber:

Los ingenieros de software debern actuar en beneficio del inters pblico.


El ingeniero de software deber actuar para favorecer los intereses del cliente y del
empleador siguiendo el principio de consistencia con el bien pblico.
El ingeniero de software deber asegurar que los productos y sus modificaciones
cumplan con los ms altos estndares profesionales posibles.
Los ingenieros de software debern mantener una independencia e integridad con
respecto a su juicio profesional.
Los gerentes y lderes de proyectos de software debern subscribir y promover un
enfoque tico para gestionar el desarrollo y mantenimiento de software.
Los Ingenieros de software debern promover la integridad y reputacin de su profesin
consistente con el inters general.
Los profesionales de software debern ser transparentes y colaboradores con sus
colegas.
Los profesionales de software debern mantenerse constantemente actualizados y
promover un enfoque tico en el ejercicio de la profesin.

31
Oportunidades

As como el Ingeniero de software se enfrenta a un mercado mucho ms competitivo y


exigente en trminos de competencias, conocimientos y dedicacin, la recompensa y los
dividendos econmicos pueden ser mucho ms atrayentes. En la actualidad existe un
desequilibrio global en la oferta y demanda de profesionales de ingeniera de software y
cientficos de computacin. Por un lado la informatizacin y la automatizacin creciente de
las actividades de la sociedad conllevan presiones sobre la demanda de profesionales
calificado en Tecnologas de la Informacin e Ingeniera de Software.

No obstante, es evidente que las condiciones de los pases desarrollados favorecen el


desarrollo de una industria de software altamente competitiva que a su vez debe ser
alimentada por la oferta de mano de obra local y por los flujos migratorios de personal
altamente calificado en tecnologas de la informacin y con un nivel de adaptacin y
desarrollo de competencias lingsticas superior al promedio. Ahora bien, la penetracin de
Internet y el auge de las TIC en los pases emergentes como Brasil, Rusia, China, India y
Surfrica y en pases como Argentina, Mxico, Chile, Ecuador, Colombia y ms
recientemente algunos pases de frica conduce a evaluar diversas alternativas de
produccin de software y de soporte al ya existente. Teniendo como premisa la integracin
de redes de alta velocidad que conecten las economas desarrolladas con aquellas
emergentes surge un sin nmero de oportunidades en el dominio del desarrollo de
software. Para aprovechar estos nichos de mercado, es imprescindible lograr adecuar las
estructuras de desarrollo tecnolgico, el desarrollo del capital humano y el desarrollo de un
componente muy fuerte de competencias lingsticas con el objetivo de favorecer la mejor
distribucin de recursos y facilitar el acercamiento de la demanda de mano de obra
especializada en desarrollo de software con la oferta existente en los pases emergentes.

La oportunidad de integrarse de forma rpida a estos procesos depende del desarrollo de la


mano de obra calificada y la bsqueda de nuevas oportunidades de acercamiento a los
flujos de empleo existentes en el mundo. En pases de la OCDE o del G7, los indicadores
de salario promedio del ingeniero de software son muy atrayentes. En USA, el salario
promedio de un desarrollador de software est entre los $60.000 USD y los $100.000
USD por ao. En el caso de algunos pases de Amrica Latina (Fuente:
http://sg.com.mx/revista/38/estudio-salarios-sg-2012 ), el salario promedio
aproximadamente es como sigue:
Colombia: $1,470 dlares
Costa Rica: $2,600 dlares
Ecuador: $700 dlares
Per: $920 dlares

32
Glosario

Actividad: Conjunto de tareas que permiten realizar un proyecto y alcanzar objetivos o


metas especficos en el marco de un proyecto.

Analista de sistemas: Un especialista que facilita el estudio de un problema de negocio


para recomendar mejoras y especificar los requerimientos de negocio y prioriza las
soluciones.

Archivo: Conjunto fsico de registros organizados de acuerdo con una lgico o protocolo
que permiten el almacenamiento de datos sin procesar. Existen mltiples tipos de archivos,
de acuerdo con su funcin, su estructura etc.

Arquitectura de aplicacin: Especificacin de las tecnologas a ser usadas en el momento


de implementar un sistema de informacin.

Base de datos: Conjunto de estructuras de datos (generalmente archivos) que permite el


almacenamiento, organizacin y recuperacin de los mismos de forma segura y eficiente.

Configuracin: Conjunto de propiedades o atributos que permiten el control de la forma


como se organiza y funciona un sistema de informacin. Generalmente se almacenan en
archivos sin ningn tipo de formato especial.

Conversin de datos: proceso utilizado en la fase de implementacin de sistemas para


facilitar la transferencia de datos en forma confiable y segura de un sistema de
informacin a otro.

Especificacin de Interfaz: diseo tcnico que documenta como los usuarios del sistema
interactuaran con el sistema y como el sistema se relacionara con otros sistemas Auditoria

HTML: conjunto de reglas y cdigos que permiten la escritura de contenidos de


informacin de forma tal que sean fcilmente transferibles y legibles haciendo uso de las
modernas tecnologas de Internet y de sus mltiples servicios. La sigla viene del trmino
Hypertext Markup Language.

Ley de Murphy: Es una forma de expresar la propensin a obtener una cadena de errores
en un proceso o en una actividad concreta. Se expresa de manera simple diciendo Si algo
puede salir mal, saldr mal.

Monitoreo: Actividad consistente en la revisin de cierto indicadores para conocer el


estado de una actividad, o una tarea o en general un proyecto.
33
Patrn: Descripcin de un diseo general para solucionar problemas recurrentes de diseo
en orientacin a objetos.

Proyecto: Es una secuencia de actividades nicas, complejas y relacionadas que tienen un


propsito y deben ser ejecutadas en un plazo, sujetas a un presupuesto y de acuerdo con una
especificacin previamente determinada.

Proyecto: Conjunto de actividades que se encuentran interrelacionadas y coordinadas para


cumplir un objetivo especfico.

Prueba de software: actividad realizada por una o varias personas para validar y verificar
el correcto funcionamiento de una pieza de cdigo de software.

Red: Es la organizacin lgica y fsica que permita a un conjunto de dispositivos de


computacin de comunicarse de forma gil, eficiente y segura. Existen diferentes tipos de
red de acuerdo con su organizacin geogrfica: LAN (red de rea local), MAN (Red de rea
metropolitana), WAN (Red de rea amplia) y recientemente han evolucionado las
denominadas HAN (Redes de hogar Home rea Networks).

Sistema de Informacin: conjunto de recursos humanos, tcnicos, financieros e


informacionales que permiten a una organizacin registrar, procesar y controlar las
diferentes operaciones de negocio posibilitando la toma de decisiones de manera racional,
sistemtica y asertiva.

Software: conjunto lgico de instrucciones que permiten la operacin armnica de los


componentes de un sistema de informacin.

Tarea: Unidad bsica de ejecucin a la cual podemos asignar una duracin determinada y
unos recursos especficos.

Tecnologa de Informacin: Componente tecnolgico de un sistema de informacin o


conjunto de sistema de computacin de una organizacin.

Teora de la Computacin: Es una rama de la matemtica que propende por encontrar


mtodos para resolver problemas de la vida real utilizando clculos y clasificacin de
problemas. Entre algunas de las subramas de la computacin tenemos: Criptografa, Teora
de Grafos, Lgica Matemtica, Teora de Tipos.

Usuario del sistema: un cliente quien usar o ser afectado por un sistema de
informacin de forma regular en trminos de la captura, validacin, respuesta,
almacenamiento o intercambio de datos e informacin.
34
Validacin: Proceso mediante el cual se establece si un cdigo de software es ejecutado
libre de errores.

Verificacin: Proceso mediante el cual se comprueba que un sistema de informacin o una


parte de l satisfacen los requerimientos iniciales fijados por el usuario.

35
Bibliografa
Whitten, Jeffrey L y Bentley , Lonnie D. 2005. System Analysis and Design Methods.
McGraw Hill 7ma. Edicin.

Satzinger, John W., et Al. 2003. Analyse et conception de systmes dinformation .


Editorial Reynald Goulet Inc. 2da. Edicin

Turban, Efraim et Al. 2007. Information Technology for Management. Editorial John
Wiley & Sons. 6ma. Edicin .

Sabharwal Sangeeta. Introduction to Software Engineering . En Software Engineering ,


disponible en http://www.newagepublishers.com/samplechapter/001036.pdf

Fontaine, Richard y Leduc, Jean-Francois. 2009 . En Notas de Curso Modle de


Connaisances des TI . Centre de Formation en Technologies de linformation.

Association of Computer Machinery. Software Engineering Code of Ethics and


Professional Practice. 2011. En http://www.acm.org/.

Pradel Jordi y Raya Martos Miquel. Introduccin a la Ingeniera de Software. Universidad


Ouverta de Catalua ,

Helm, Richard et Al. Design Patterns: Elements of reusable ObjectOriented software.


1994. Addison-Wesley.

36

Вам также может понравиться