jueves, 11 de abril de 2013

Página 2. Estructura de datos en C++



  • 1.1.3.1 Tipos de sistemas operativos
Las diferentes características especializadas del sistema operativo permiten a las computadores manejar muchas tareas diferentes así como múltiples usuarios de modo simultáneo o en paralelo o bien de modo secuencial. En base a sus características específicas los sistemas operativos se pueden clasificar en varios grupos.

Multiprogramación/Multitarea

La multiprogramación permite a múltiples programas compartir recursos de un sistema de computadora en cualquier momento a través del uso concurrente de una UCP. Sólo un programa utiliza realmente la UCP en cualquier momento dado, sin embargo, las necesidades de entrada/salida pueden ser atendidas en el mismo momento. Dos o más programas están activos al mismo tiempo, pero no utilizan los recursos del computador simultáneamente. Con multiprogramación, un grupo de programas se ejecutan alternativamente y se alternan en el uso del procesador. Cuando se utiliza un sistema operativo de un único usuario, la multiprogramación toma el nombre de multitarea.

Multiprogramación 
Método de ejecución de dos o más programas concurrentemente utilizando la misma computadora. La UCP ejecuta sólo un programa pero puede atender los servicios de entrada/salida de los otros al mismo tiempo.

Tiempo compartido (múltiples usuarios, time sharing)

Un sistema operativo multiusuario es un sistema operativo que tiene la capacidad de permitir que muchos usuarios compartan simultáneamente los recursos de proceso de la computadora. Centenas o millones de usuarios se pueden conectar al computador que asigna un tiempo de computador a cada usuario, de modo que a medida que se libera la tarea de un usuario, se realiza la tarea del siguiente, y así sucesivamente. Dada la alta velocidad de transferencia de las operaciones, la sensación es de que todos los usuarios están conectados simultáneamente a la UCP, con cada usuario recibiendo únicamente en un tiempo de máquina determinado.


Multiproceso

Un sistema operativo trabaja en multiproceso cuando puede enlazar a dos o más UCP para trabajar en paralelo en un único sistema de computadora. El sistema operativo puede asignar múltiples UCP para ejecutar diferentes instrucciones del mismo programa o de programas diferentes simultáneamente, dividiendo el trabajo en diferentes UCP.

La multiprrogramación utiliza proceso concurrente con una UCP; el multiproceso utiliza proceso simultáneo con múltiples UCP.


  • 1.2. Resolución de problemas y desarrollo de software
La creación de un programa requiere de técnicas similares a la realización de otros proyectos de ciencia e ingeniería, ya que, en la práctica, un programa no es más que una solución desarrollada para resolver un problema concreto. La escritura de un programa es casi la última etapa de un proceso en el que se determina primero ¿Cuál es el problema? y el método que se utilizará para resolver el problema. Cada campo de estudio tiene su propio nombre para denominar el método sistemático utilizado para resolver problemas mediante el diseño de soluciones adecuadas.

En ciencia e ingeniería el método se conoce como método científico, mientras que cuando se realiza análisis cuantitativo se suele conocer como enfoque o  método sistemático.

Las técnicas utilizadas por los desarrolladores profesionales de software para llegar a soluciones adecuadas para la resolución de problemas se denominan proceso de desarrollo de software. Aunque el número y nombre de las fases puede variar según los modelos, métodos y técnicas utilizadas.

En general, las fases de desarrollo de software se suelen considerar los siguientes:

  • Análisis y especificación del problema.
  • Diseño de una solución.
  • Implementación (codificación).
  • Pruebas, ejecución, corrección y depuración.
  • Documentación.
  • Mantenimiento  y evaluación.


  • 1.2.1. Modelos de procesos de desarrollo de software
A lo largo de la historia del desarrollo de software desde la década de los cincuenta del siglo pasado se han propuesto muchos modelos. Pressman en la última edición de su conocida obra ingeniería del software, plantea la siguiente división:

1. Modelos normativos (prescriptivos).
2. Modelos en cascada.
3. Modelos de proceso incremental.
          - Modelo incremental.
          - Modelo DRA (Desarrollo Rápido de Aplicaciones).
4. Modelos de proceso evolutivo.
          - Modelo de prototipado (construcción de prototipos).
          - Modelo en espiral.
          - Modelo de desarrollo concurrente.
5. Modelos especializados de proceso.
          - Modelo basado en componentes.
          - Modelo de métodos formales.
          - Desarrollo de software orientado a aspectos.
6. El proceso unificado (RUP de Booch Rumbaugh y Jacobson).
7. Métodos Ágiles [ Beck 01 ].
          - Programación Extrema (XP, Extreme Programming).


  • 1.2.2. Análisis y especificación del problema
El análisis de un problema se requiere para asegurarse de que el problema está bien definido y comprendido con claridad. La determinación de que el problema está definido claramente se hace después de que la persona entienda cuáles son las salidas requeridas y qué entradas son necesarias. Para realizar esta tarea, el analista debe de tener una comprensión de cómo se pueden utilizar las entradas para producir las salidas deseadas.

Después de una análisis profundo del problema se debe realizar la especificación que es una descripción precisa y lo más exacta posible del problema; en realidad, es como un contrato previo para solución.

La especificación del problema no suele hacer un una tarea fácil sobre todo por la complejidad que entrañan la mayoría de los problemas del mundo real. La descripción inicial de un problema no suele ser clara y casi siempre, al principio, suele ser imprecisa y vaga.

La formulación de una especificación del problema requiere una descripción precisa y lo más completa posible de la entrada del problema (información disponible para la resolución del problema) y la salida requerida. Además se requiere información adicional tal como: hardware y software necesarios, tiempo de respuesta, plazos de entrada, facilidad de uso, robustez del software, etc.

la persona que realiza el análisis debe tener una perspectiva inicial lo más amplia posible y comprender el propósito principal de los que el problema o sistema pretende conseguir. En sistemas grandes el análisis, lo realiza normalmente un analista de sistemas, y en programas individuales, el análisis se realiza directamente por el programador.

Con independencia de cómo y por quién se realice el análisis, a la conclusión del mismo se debe de tener una comprensión muy clara de:

¿Qué debe de hacer el sistema o el programa?
¿Qué salidas debe producir?
¿Qué entradas se requieren para obtener las salidas deseadas?



1 comentario:

  1. Cada vez agregando más información sobre la estructura de datos en C++

    ResponderEliminar