Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LECTURA SEMANAL
En alianza con
Colombia
computador qué hacer. Y nada más. Y a pesar de que en ciertos contextos esta definición
puede resultar adecuada y suficiente, a medida que las soluciones de software se hacen más
y más complejas y se encuentran en más y más áreas de conocimiento y escenarios de
acción, resulta necesario incluir otros términos que amplíen y hagan más precisa la definición
antes presentada.
¿QUÉ ES SOFTWARE?
En línea con lo dicho en el párrafo anterior, hoy en día resulta importante considerar
diferentes aspectos y componentes que forman parte de un producto de software (Porque
entiéndase esto: en la actualidad, el software es un producto, que comparte muchas de las
características, limitaciones y ventajas de aquellos elementos - usualmente físicos- que son
considerados dentro de la categoría de producto). En primera instancia y de manera
natural, el código fuente, resultado del proceso de escritura de código–el programa, si se
quiere-, es un elemento central de un producto de software. Sin embargo, de manera
paralela y con una importancia muy alta se encuentran los elementos de datos que son
necesarios para su funcionamiento (téngase en cuenta que la manipulación de datos
complejos sigue siendo uno de los principales objetivos de desarrollar una solución de
software, y las estructuras, herramientas, convenciones y procesos existentes para llevar a
cabo el almacenamiento, tránsito, presentación y replicación de dichos datos son cada vez
más sofisticados). En tercer lugar, se encuentran además los documentos asociados con el
producto, y con el proceso de generación de dicho producto.
●En la primera categoría se encuentran los manuales de uso, instalación y mantenimiento de
la aplicación
●Y en la segunda están, por ejemplo, los documentos pertinentes a los procesos de análisis y
diseño del sistema, sus estructuras de datos, y los procesos esperados de operación.
En este momento histórico entonces, resulta bastante más complejo que antes definir
exactamente qué es software. Y a pesar de que no se pretende tener la última palabra en
ese sentido (para más visiones y enfoques de la definición se recomienda revisar la
bibliografía del módulo), para fines prácticos y dentro del contexto de este módulo, se
trabajará con base en la siguiente definición: se entiende como producto de software no
solo al conjunto de programas ejecutables, sino también a los archivos anexos, estructuras de
datos y documentos adicionales que permiten que dichos programas operen de manera
adecuada, desarrollados todos siguiendo un proceso determinado, con el fin de solucionar
una necesidad de una persona o compañía.
Con esta definición es posible abarcar un conjunto mucho más amplio y sobre todo acertado
de componentes de lo que generalmente se conoce simplemente como software. De la misma
manera es posible hacerse a una idea más clara de su complejidad y de la diversidad de
participantes y procesos que son requeridos para su correcta implementación. Con base en
esto, es posible pasar a la siguiente parte, la definición de proceso de software.
PROCESOS DE SOFTWARE
Si entendemos el software como un ente cada vez más complejo y con una creciente
participación en muchos aspectos de la vida cotidiana (hoy en día, la mayor parte de los
procesos de transporte, compra, comunicaciones e incluso ley y gobierno tienen en el centro
de su operación componentes complejos de software), resulta evidente que un resultado de
tal complejidad no resulta bien de manera consistente si no está apoyado en un proceso
ordenado. Este tipo de procesos, de manera evidente, se conocen como procesos de
software.
Sin embargo, no existe una única aproximación a un proceso de software que dé buenos
resultados. En general y dependiendo de un conjunto de características tales como el tipo
En alianza con
Colombia
de proyecto, el tipo de cliente, las restricciones de tiempo, dinero o tecnología y las
capacidades e intereses mismos de la compañía de desarrollo, es posible abordar un
proyecto de software desde varias perspectivas. De hecho, en la siguiente semana del
módulo hablaremos con un mayor nivel de detalle de algunos enfoques utilizados por
procesos de software conocidos. Por ahora sin embargo y con el fin de poseer una
terminología común, se dará una definición de proceso de software que simplifica y
comprende los aspectos más importantes que lo describen: se entiende como proceso de
software, o proceso de desarrollo de software a la estructura que rige el desarrollo de un
proyecto de software. Esta estructura está compuesta por un conjunto de actividades cuyo
objetivo es asegurar el desarrollo de un producto de calidad dentro de las restricciones
establecidas.
Resulta claro de esta definición, que pueden existir un número enorme de posibles variaciones
en la implementación de un proceso de software. Esto es cierto y a pesar de que comparten
un número de características básicas (existen cuatro actividades comunes a todos los
procesos de software:
●Especificación
●Desarrollo
●Pruebas y
●Evolución del software, hay muchos enfoques alrededor del tema.
Sin embargo, por el momento basta con comprender la definición presentada, para poder
seguir con la presentación de los conceptos básicos relacionados con la ingeniería de
software, abordando el concepto central de la cuestión.
Colombia
generales de un sistema complejo (incluyendo hardware y restricciones de tipo administrativo),
la ingeniería de software aborda la resolución de los problemas prácticos relacionados de
manera fundamental con los componentes de software de un sistema determinado. Ahora
bien, con base en la definición presentada, resulta evidente que el conjunto completo de
actividades relacionadas con la ingeniería de software es grande. En este módulo, sin
embargo, el foco está en un subconjunto de las actividades de tipo técnico. Vistas de
manera general, las actividades técnicas que se abordarán son:
●Levantamiento de requerimientos. Durante el levantamiento de requerimientos la idea es
determinar de manera inequívoca y concertada las funcionalidades que el producto de
software debe tener para satisfacer las necesidades del cliente. De esta manera, el trabajo
en este punto está estrechamente vinculado con el diálogo entre el desarrollador y el cliente
y la utilización de herramientas y procesos que faciliten la comunicación para poder
determinar el mejor curso de acción y diseño a tomar.
●Análisis y diseño del sistema. Durante el análisis, se pretende generar, con base en los
resultados del levantamiento de requerimientos, un modelo del sistema que sea completo,
correcto y posible de implementar. La representación de este modelo usualmente se apega a
estándares tales como los definidos por UML (Unified Modeling Language), que serán
discutidos en la tercera unidad de este módulo.
A lo largo del proceso de diseño, se determinan los objetivos que debe cumplir el diseño de
la aplicación que implemente el modelo definido por el análisis, así como los componentes
que se utilizarán, las restricciones de hardware presentes en el proyecto y la manera como el
resultado final de la implementación será desplegado en el ambiente de instalación y
funcionamiento.
Una vez terminados estos procesos, el proyecto de software está listo para entrar en el
proceso de implementación, en el que los resultados previamente obtenidos serán
concretados en el código, de tal manera que se pueda contar al final con un producto
tangible que cumpla con las necesidades y restricciones especificadas por el cliente y
refinadas en conjunto con el desarrollador a lo largo del proceso de desarrollo de software.
Se espera que con las definiciones y planteamientos presentados en este documento resulte
clara la importancia y pertinencia de comprender y aplicar los conceptos relacionados con
la ingeniería de software a un proyecto de desarrollo si se espera que éste genere un
producto que no solamente cumpla con los requerimientos mínimos definidos, sino que
satisfaga las necesidades de crecimiento, adaptabilidad y cumpla con las crecientes
exigencias de calidad presentes en los mercados de software de la actualidad. Sobre la
base de esta comprensión y compromiso, es posible continuar abordando aspectos más
técnicos y procedimentales de la ingeniería de software en las siguientes lecturas y secciones
del módulo.
En alianza con
Colombia