Arquitectura De Software
En los inicios de la informática, la programación se consideraba un arte y se desarrollaba como tal, debido a la dificulta que entrañaba para la mayoría de las personas, pero con el tiempo se han ido descubriendo y desarrollando formas y guías generales, con base a las cuales se puedan resolver los problemas. A estas, se les ha denominado Arquitectura de Software, porque, a semejanza de los planos de un edificio o construcción, estas indican la estructura, funcionamiento e interacción entre las partes del software. En el libro "An introduction to Software Architecture", David Garlan y Mary Shaw definen que la Arquitectura es un nivel de diseño que hace foco en aspectos "más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema"
- La
Arquitectura del Software es el diseño de más alto nivel de la estructura
de un sistema.
- Una
Arquitectura de Software, también denominada Arquitectura lógica, consiste en un conjunto de
patrones y abstracciones coherentes que proporcionan el marco
- Una
arquitectura de software se selecciona y diseña con base en objetivos y
restricciones. Los objetivos son aquellos prefijados para el sistema de
información, pero no solamente los de tipo funcional, también otros
objetivos como la mantenibilidad, auditabilidad, flexibilidad e
interacción con otros sistemas de información. Las restricciones son
aquellas limitaciones derivadas de las tecnologías disponibles para
implementar sistemas de información. Unas arquitecturas son más
recomendables de implementar con ciertas tecnologías mientras que otras
tecnologías no son aptas para determinadas arquitecturas. Por ejemplo, no
es viable emplear una arquitectura de software de tres capas para
implementar sistemas en tiempo real.
- La
arquitectura de software define, de manera abstracta, los componentes que
llevan a cabo alguna tarea de computación, sus interfaces y la
comunicación entre ellos. Toda arquitectura debe ser implementable en
una arquitectura física, que consiste
simplemente en determinar qué computadora tendrá asignada cada
tarea.
- La arquitectura de software, tiene que ver con el diseño y la implementación de estructuras de software de alto nivel. Es el resultado de ensamblar un cierto número de elementos arquitectónicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de desempeño de un sistema, así como requerimientos no funcionales, como la confiabilidad, escalabilidad, portabilidad, y disponibilidad.
¿Que Es Software?
Existen varias definiciones
similares aceptadas para software, pero probablemente la más formal sea la
siguiente:
Es el conjunto de los programas
de cómputo, procedimientos, reglas, documentación y datos asociados, que forman
parte de las operaciones de un sistema de computación.
Considerando esta definición, el
concepto de software va más allá de los programas de computación en sus
distintos estados: código fuente, binario o ejecutable; también su
documentación, los datos a procesar e incluso la información de usuario forman
parte del software: es decir, abarca todo lo intangible, todo lo «no físico»
relacionado.
Clasificación De Software
Software de sistema: Su objetivo
es desvincular adecuadamente al usuario y al programador de los detalles del
sistema informático en particular que se use, aislándolo especialmente del
procesamiento referido a las características internas de: memoria, discos,
puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc.
El software de sistema le procura al usuario y programador adecuadas interfaces
de alto nivel, controlador, herramientas y utilidades de apoyo que permiten el
mantenimiento del sistema global. Incluye entre otros:
- Sistemas operativos
- Controladores de dispositivos
- Herramientas de diagnóstico
- Herramientas de Corrección y Optimización
- Servidores
- Utilidades
Software de programación: Es el conjunto de herramientas que
permiten al programador desarrollar programas informáticos, usando diferentes
alternativas y lenguajes de programación, de una manera práctica. Incluyen
básicamente:
- Editores de texto
- Compiladores
- Intérpretes
- Enlazadores
- Depuradores
- Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).
Software de aplicación: Es aquel que permite a los usuarios
llevar a cabo una o varias tareas específicas, en cualquier campo de actividad
susceptible de ser automatizado o asistido, con especial énfasis en los
negocios. Incluye entre muchos otros:
- Aplicaciones para Control de sistemas y automatización industrial
- Aplicaciones ofimáticas
- Software educativo
- Software empresarial
- Bases de datos
- Telecomunicaciones (por ejemplo Internet y toda su estructura lógica)
- Video juegos
- Software médico
- Software de cálculo numérico y simbólico.
- Software de diseño asistido (CAD)
- Software de control numérico (CAM)