Está en la página 1de 13

Historia

El término ingeniería del software apareció por primera vez en la conferencia de ingeniería
de software de la OTAN en 1968 y fue mencionado para provocar el pensamiento sobre la
crisis de software del momento. Desde entonces, ha continuado como una profesión y
campo de estudio dedicado a la creación de software de alta calidad, barato, con capacidad
de mantenimiento y rápido de construir. Debido a que el campo es todavía relativamente
joven comparado con otros campos de la ingeniería, hay todavía mucho trabajo y debate
sobre qué es realmente la ingeniería del software, y si se merece el título de ingeniería. Ha
crecido orgánicamente fuera de las limitaciones de ver el software sólo como
programación. Mientras que el término ingeniería del software fue acuñado en una
conferencia en 1968, los problemas que intentaba tratar empezaron mucho antes. La
historia de la ingeniería del software está entrelazada con las historias contrapuestas de
hardware y software. Cuando el ordenador digital moderno apareció por primera vez en
1941, las instrucciones para hacerlo funcionar estaban conectadas dentro de la maquina.
Las personas relacionadas con la ingeniería rápidamente se dieron cuenta de que este
diseño no era flexible e idearon la arquitectura de programa almacenado o arquitectura
von Neumann. De esta forma la primera división entre “hardware” y “software” empezó
con la abstracción usada para tratar la complejidad de la computación. Los lenguajes de
programación empezaron a aparecer en la década de 1950 y este fue otro paso importante
en la abstracción. Los lenguajes principales como Fortran, Algol y Cobol se lanzaron a
finales de los 50s para tratar con problemas científicos, algorítmicos y de negocio
respectivamente. Dijsktra escribió “Go to Statement Considered Harmful” en 1968 y David
Parnas introdujo el concepto clave de la modularidad y encapsulación en 1972 para ayudar
a los programadores a tratar con la complejidad de los sistemas de software. Un sistema
software para gestionar el hardware, denominado sistema operativo también se introdujo,
más notablemente por Unix en 1969. En 1967, el lenguaje Simula introdujo el paradigma
de la programación orientada a objetos. Estos avances en software se encontraron con más
avances en el hardware. A mediados de los 70s, la microcomputadora fue introducida,
haciendo económico a los aficionados a obtener una computadora y escribir software para
él. Esto sucesivamente condujo al famoso ordenador personal o PC y Microsoft Windows.
El ciclo de vida de desarrollo de software o SDLC también empezó a aparecer como un
consenso para la construcción centralizada de software a mediados de los 80s. A finales de
los 70s y principios de los 80 se vieron varios lenguajes de programación orientados a
objetos inspirados en Simula, incluyendo C++, Smalltalk y Objective C. El software open
source empezó a aparecer a principios de los 90s en la forma de Linux y otros software
introduciendo el “bazaar” o el estilo descentralizado de construcción de software. Después
aparecieron Internet y la World Wide Web a mediados de los 90s cambiando de nuevo la
ingeniería del software. Los sistemas distribuidos ganaron dominio como forma de diseñar
sistemas y el lenguaje de programación Java se introdujo como otro paso en la abstracción,
teniendo su propia máquina virtual. Varios programadores colaboraron y escribieron el
manifiesto ágil que favoreció procesos más ligeros para crear software más barato y en
menos tiempo.

Aportes de la Ingeniería de Software


Entre los grandes aportes de la ingeniería de software al movimiento del Software Libre
(SL), es precisamente la forma de hacer las cosas, mejor dicho de hacer que el software se
haga de la mejor forma posible, lo que algunos llaman metodologías, bastante útiles en
cualquier proyecto.

Uno de los aspectos más importantes para las comunidades de desarrollo de software libre
es que las piezas funcionen de forma engranada y disponer de la información que sea
necesaria para hacer los aportes que la comunidad necesita. El seguimiento de proyectos
en las comunidades de SL, está basado en hacer las cosas lo más organizadamente posible,
de forma que sus desarrollos no sean incompatibles y que se trabaje como lo han acordado
hacer. El secreto está en una comunicación eficaz y en el espíritu de colaboración que es
indispensable. Se requiere de líderes que organicen el trabajo, que no intenten imponerse
(prevalece la colaboración), que sepa delegar a la comunidad que les acompaña el trabajo
requerido, así como hacer que estos permanezcan acompañándole.
El medio que utilizan para establecer su comunicación es Internet, pero a través de
plataformas que soportan el trabajo colaborativo, en el caso de la comunidad de
desarrolladores de Debían, uno de sus más importantes recursos es CPAN (Comprehensive
Perl Archive Network), que además de ofrecer herramientas para el desarrollo y
seguimiento colaborativo, también ofrecen un sistema de seguimiento de fallos, y un
sistema de organización, búsqueda y consulta de la documentación de los módulos que lo
conforman. Además cuentan con una herramienta (script) que les permite comparar el
estado de los módulos en CPAN, los paquetes en el depósito Subversión, los reportes en el
sistema de seguimiento de Debían, y los paquetes publicados en la distribución misma de
Debían. La comunidad manifiesta que hoy en día, este script es su principal herramienta de
seguimiento, brindándoles un reporte de estado condensado y adecuado específicamente
a su flujo de trabajo.

Herramientas de Ingeniería de Software.

Aplicaremos el término herramienta a un producto CASE que da soporte a una tarea


concreta dentro de las actividades de desarrollo de software. Dicho soporte consistirá en
una serie de servicios, cada uno de los cuales automatiza una operación individual.
Podemos clasificar las herramientas según los servicios que ofrece y/o la tarea a la que da
soporte. A continuación se describen algunas clases de herramientas o grupos de funciones
que podemos encontrar en un entorno de programación:
•Edición y examen del código (editor / browser / navigator)
•Codificación
•Verificación y validación
•Gestión de configuración
•Métricas
•Otras herramientas

Otras herramientas de desarrollo no incluidas en la relación anterior se salen del marco de


lo que hemos denominado entorno de programación, y dan soporte a otras fases del ciclo
de vida de desarrollo
Metodología de Software.
Orientaciones sobre como manejar al desarrollo a traves del ciclo de vida del software

Clasificación de Software por tipos.


El software puede dividirse en dos grandes categorías:

• Software de aplicaciones: se usan para proveer servicios a clientes y ejecutar


negocios de forma más eficiente. El software de aplicaciones puede ser un sistema
pequeño o uno grande integrado. Como ejemplos de este tipo de software están: un
sistema de cuentas, un sistema de planificación de recursos…

• Software de sistemas: el software de sistemas se usa para operar y mantener un


sistema informático. Permite a los usuarios usar los recursos del ordenador
directamente y a través de otro software. Algunos ejemplos de este tipo de software
son: sistemas operativos, compiladores y otras utilidades del sistema.

Modelamiento en base a Proyecto de Ingeniería de Software I.


Diagrama de casos de Uso

Diagrama de Clases.
Diagramas de Objetos.

Diagrama de
Colaboración.
Sistemas de Informacaión.

Definición.
Definición: Un sistema de información es un conjunto de elementos
interrelacionados con el propósito de prestar atención a las demandas
deinformación de una organización, para elevar el nivel de conocimientos que
permitan un mejor apoyo a la toma de decisiones y desarrollo de acciones. (Peña,
2006).

Caractteristicas.

Tipos de Sistemas de Información.


ERP
Los sistemas Enterprise Resource Planning (o planificación de recursos de la empresa) son
softwares que integran diferentes procesos y datos de la empresa, reuniéndolos en un solo
lugar.
De esta forma, los datos de todos los departamentos de la organización se integran y
almacenan.
Los datos proporcionados por el software ERP ayudan a darle más agilidad a los procesos y
permiten cumplir la producción por demanda, también llamada just in time.
El objetivo es reducir las existencias, evitando los gastos de almacenamiento.
Un ejemplo de funcionamiento del software ERP es en el momento de la venta de una
mercancía.
Mientras se realiza la venta, los departamentos de producción y de compras son
automáticamente alertados.
Así, es posible verificar si están todos los productos o si será necesario adquirir algo más.
Además, se puede identificar si es necesario o no reponer las existencias.

CRM
El software Customer Relationship Management (o gestión de relaciones con los clientes)
automatiza todas las funciones relacionadas al contacto con los clientes, permitiéndole a
las organizaciones recopilar y almacenar los datos de contacto, las preferencias de los
clientes, su historial de compras, etc.
Así, la empresa puede contactar a los clientes para estrategias específicas, con el objetivo
principal de atender a las necesidades de los consumidores de manera anticipada.

SMC
Los sistemas Supply Chain Management (o gestión de la cadena de suministro) integran los
diferentes procesos relativos a los proveedores de servicios, productos e información.
El propósito es crear valor para el consumidor, satisfaciéndolo cuando adquiere un
producto o servicio.
Así, este tipo de software integra los datos relativos a fabricantes, proveedores y puntos de
venta, garantizando que los productos sean entregados en las cantidades necesarias y en el
plazo correcto, evitando la falta de mercancías y el exceso de stock.
Así, se alcanza un buen nivel de servicio al mismo tiempo que se reducen los gastos.
Es importante resaltar que este software está compuesto por los sistemas de gestión de
suministros y componentes, de la cadena de suministros, de la estructura de producto, del
rastreo de origen y uso y de control de la cadena de suministros.
De esta forma, se logra hacer desde la previsión de ventas, inventario y clasificación de
ítems hasta reducir el costo de manipulación y creación de piezas.

SIG
Los Sistemas de Información Gerencial están bastante orientados al apoyo a la toma de
decisiones y actúan en los niveles estratégico, operacional y táctico.
La información se puede proporcionar a través de gráficos, hojas de cálculo o, más
comúnmente, en informes.
En el caso de los informes, se pueden categorizar en 4 tipos:

Informes programados
Son una de las formas más tradicionales para el suministro de información. Como el propio
nombre lo indica, se programan, es decir, se generan con una determinada programación.
Algunos ejemplos de informes programados son los de ventas por día y por semana y los
estados financieros mensuales, por ejemplo.

Informes de excepción
Se crean en situaciones excepcionales con el fin de obtener información específica.
Por ejemplo, un informe enfocado en la lista de incumplimientos o uno que presente a los
clientes que sobrepasen el límite de crédito ofertado.

Informes y respuestas por solicitud


Presentan la información según la solicitud del emprendedor.
Por lo tanto, no proporcionan datos específicos, sino una visión general para que el gestor
pueda analizar los datos rápidamente y encontrar soluciones inmediatas.

Informes en pilas
Las informaciones se colocan en pilas en el escritorio del administrador o en el
emprendedor. Por lo tanto, se puede acceder al informe cada vez que se desee o necesite.

Herramientas para desarrollar Sistemas de Información..


El modelado de software es el primer paso antes de desarrollar cualquier tipo de
sistema. Normalmente, el modelado se basa en la creación de Diagramas que
explican el funcionamiento del software. Para eso se usan los diagramas UML, los
cuales permiten que los desarrolladores definan sistema, funcionamiento y
funcionalidades.
Algunas de las herramientas de modelado de software son los Diagramas UML
Online de Lucidchart, la Herramienta UML de Altova y MagicDraw UML.

Ciclo de vida del Software.


Planificación.
El primer punto importante en el ciclo de vida de software, es analizar brevemente
los requerimientos que el cliente pide para la elaboración del sistema que necesita.
Esta etapa requiere se cierto conocimiento para poder entender la idea que el
cliente propone, además de que regularmente debes tomar nota con cada uno de
los puntos importantes que se te solicitan, de este modo puedes hacer una
planificación al momento y llegar incluso a determinar los tiempos de desarrollo que
te llevará, antes de proceder a entregar el producto final.Un punto importante por el
cual la planificación siempre debe estar en los ciclos de vida del software. Es porque
el cliente se imagina su producto final de una forma tan abstracta, que necesitas
hacer que ponga los pies en el suelo para obtener resultados que se acerquen mas a
la realidad.

Implementación.
Una vez que hemos platicado con el cliente y tenemos lo que es un análisis de
requerimientos, necesidades y funcionalidades por parte de una aceptación en
ambas partes, entonces procedemos con lo que es el ciclo de vida de desarrollo de
software. Para este punto, existen una infinidad de metodologías de desarrollo de
software, que nos ofrecen la posibilidad de trabajar de distintas formas. Más
adelante hablaremos más específicamente de ellas, sin embargo la implementación,
es básicamente la parte donde los programadores empiezan a codificar o desarrollar
el sistema que se necesita, básicamente se trata del ciclo de vida del desarrollo de
sistemas, sin importar el lenguaje de programación mediante el cual se vayan a
elaborar.

Pruebas.
Una ves que el sistema se va desarrollando, es importante para el ciclo de vida del
desarrollo del software, que se realicen ciertas pruebas conforme se vaya
avanzando. La idea es que no se termine el desarrollo para poder hacer pruebas, si
no que mucho antes, durante el proceso de creación, estas ya se puedan ir
ejecutando.Las pruebas nos van a permitir ver si el sistema que se está
desarrollando es funcional, si tiene algunos errores, si le faltan ciertas cosas para
funcionar correctamente, pues básicamente para avanzar al siguiente punto del ciclo
de desarrollo de sotware, será necesario haber pasado las pruebas correctamente.
Documentación.
Muchas metodologías de lo que es el ciclo de vida software, van creando
documentación, conforme se va avanzando en el desarrollo del sistema. Sin
embargo algunas otras prefieren no hacer la documentación hasta el final. Ahora si
que sea cual sea la metodología que elijas, la documentación siempre será
importante, pues considera que no siempre vas a estar tu y tu equipo disponibles y
cuando otro equipo llegue a programar lo que ustedes hicieron, será indispensable
que haya una documentación de la cual se puedan basar, para poder empezar a
desarrollar nuevamente el sistema incompleto.

Despliegue.
Ya casi llegando a lo que son las últimas etapas del desarrollo de software, nos
encontramos con el Despliegue. Este no es otra cosa, más que el momento en que el
sistema ya está terminado y ha sido aprobado para que se elabore el producto final.
ahora será el momento de distribuirlo y celebrar, pues gracias al equipo de trabajo
es como se habrá llegado a esta fase.Lamentablemente, de las etapas de desarrollo
de software, esta es a la cual muchos nunca llegan. Pues una gran cantidad de
software incompleto se queda en el camino debido a distintos puntos o motivos.
Puede ser que el equipo no se unió, el cliente declinó, el proyecto no fue funcional,
etc. Así que de haber llegado a esta fase de desarrollo de software, tu como tu
equipo deberán sentirse orgullosos y es momento de volver a desarrollar un
proyecto más.

Mantenimiento.
La última de las fases del desarrollo de software, es el mantenimiento. Que creías,
que nunca más verías al software que hicieron, terminaron y distribuyeron. Pues
claro que si lo volverías a ver, pues es momento de darle mantenimiento. Acá
además se pueden agregar lo que son las actualizaciones, dependiendo del tipo de
desarrollo. Si el equipo siguió trabajando con el software desarrollado y encontraron
formas de hacerle mejoras, entonces parte del mantenimiento será actualizarlo a la
versión final en todo momento.

Metodología de desarrollo de Software.

Modelo de Cascada
Si alguna vez has incursionado en el mundo del Desarrollo de Software, de seguro te has
topado en algún momento con el modelo de cascada. De no ser así, cabe destacar que en
este modelo cada etapa representa una unidad de desarrollo con un pequeño descanso en
el medio. Por lo tanto, cada siguiente etapa inicia tan pronto como la anterior haya
culminado, y esos descansos son usados para confirmaciones del lado del cliente.
Adicionalmente, este es considerado como el método tradicional de explicar el proceso de
desarrollo de software en ingeniería de software, por lo que actualmente es visto como
anticuado. Sin embargo, aún sigue siendo aplicado a proyectos con metas claras y
requisitos que demandan hasta 100 horas de desarrollo, sobre todo considerando que este
enfoque permite a los negocios deshacerse del papeleo innecesario, reuniones regulares
que consumen mucho tiempo y retrasos en sus procesos de negocio.
Es por esto que esta es una gran opción para pequeños proyectos donde todos los aspectos
del proceso de desarrollo de software se conocen de antemano, pero una mala solución
para proyectos complicados, ya que se trata de un modelo bastante inflexible. 

Modelo de Espiral
Mientras que la metodología de la cascada ofrece una estructura ordenada para el
desarrollo de software, las demandas de tiempo reducido al mercado hacen que sus pasos
en serie sean inapropiados.
El siguiente paso evolutivo desde la cascada es donde se realizan los diversos pasos para
múltiples entregas o traspasos. La última evolución de la caída del agua es la espiral,
aprovechando el hecho de que los proyectos de desarrollo funcionan mejor cuando son
incrementales e iterativos.
La metodología espiral refleja la relación de tareas con prototipos rápidos, mayor
paralelismo y concurrencia en las actividades de diseño y construcción. El método en
espiral debe todavía ser planificado metódicamente, con las tareas y entregables
identificados para cada paso en la espiral.

Metodología de Prototipo
Es un procedimiento de desarrollo especializado que permite a los desarrolladores la
posibilidad de poder solo hacer la muestra de la resolución para poder  validar su esencia
funcional ante los clientes, y hacer los cambios que sean fundamentales antes de crear la
solución final auténtica. De hecho, la mejor parte de esta metodología es que tiende a
resolver un conjunto de problemas de diversificación que ocurren con el método de la
cascada.
Además de esto, la gran ventaja de optar por este enfoque es que da una idea clara sobre
el proceso funcional del software, reduce el riesgo de falla en una funcionalidad de
software y asiste bien en la recolección de requisitos y en el análisis general.

Metodología de Programación Extrema (XP)


Como metodología ágil de ingeniería de software, la metodología de programación
extrema se conoce actualmente como metodología de XP (eXtreme Programming). Esta
metodología, se utiliza principalmente para evitar el desarrollo de funciones que
actualmente no se necesitan, pero sobre todo para  para atender proyectos complicados.
Sin embargo, sus métodos peculiares pueden tomar más tiempo, así como recursos
humanos en comparación con otros enfoques.  
Estas son solo algunas de las metodologías de Desarrollo de Software que existen, pero lo
importante es que tengas en cuenta que al estar familiarizado con estos populares
enfoques podrás optimizar la eficiencia de tus proyectos utilizando un enfoque puro o
combinando algunos de ellos.
Dicho esto, si deseas saber más sobre Desarrollo de Software en México, Panamá y
Ecuador, así como otro países de la región de Latinoamérica, te invitamos a descargar el
material con el que podrás disfrutar de un recorrido por los aspectos más básicos de esta
solución.

Arquitectura de sistemas de información.


La arquitectura de la Información (AI) es la disciplina y arte encargada del estudio, análisis,
organización, disposición y estructuración de la información en espacios de información, y
de la selección y presentación de los datos en los sistemas de información interactivos y no
interactivos.

En relación con la World Wide Web, el Information Architecture Institute define la


"Arquitectura de la Información" como:

1. El diseño estructural en entornos de información compartida.


2. El arte y la ciencia de organizar y rotular sitios web, "intranets", comunidades en línea y
software para promover la usabilidad y la "encontrabilidad" (-Findability- la característica
de ser encontrado a través de las búsquedas en Internet).
3. Una comunidad emergente orientada a aplicar al entorno digital los principios del diseño
y la arquitectura.
La Arquitectura de la Información trata indistintamente del diseño de: sitios web, interfaces
de dispositivos móviles o gadgets (como los lectores de mp3), CD interactivos, videoclips
digitales, relojes, tableros de instrumentos de aviones de combate o civiles, interfaces de
máquinas dispensadoras, interfaces de juegos electrónicos, etc. (Laverde, A. 2005)

También podría gustarte