Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ISOFT 2018
CICLO 2018
I
3. Implantación de sistemas ................................................................. 10
Codificación.......................................................................................... 11
Probando la aplicación ...................................................................... 11
Instalación y Evaluación...................................................................... 11
Adiestramiento (Training) .................................................................... 11
Conversión de archivos ....................................................................... 11
System Changeover............................................................................. 11
4. Aplicación de modelos matemáticos ............................................ 11
C. Gestión de Proyectos de Tecnologías de Información ............... 18
1. Administración de proyectos de tecnologías de información ... 18
2. Control de calidad de proyectos de tecnologías de información
28
D. Gestión de Redes, Bases de Datos, Sistemas Operativos y
Lenguaje de Desarrollo .......................................................................................... 31
1. Gestión de redes de datos ............................................................... 31
Implementación de redes. ................................................................. 31
2. Gestión de bases de datos ............................................................... 31
Diseño de base de datos utilizando de normalización.................. 31
Administrador de la base de datos ................................................... 31
Modificación de la base de datos .................................................... 31
3. Gestión de sistemas operativos o lenguajes de desarrollo ......... 31
II
A. ANÁLISIS DE SISTEMAS DE INFORMACIÓN.
3
2. Modelado de los requerimientos de un sistema de
información
4
Requerimientos duraderos y volátiles
Diseño de la arquitectura
5
B. DESARROLLO E IMPLEMENTACIÓN DE APLICACIONES
COMPUTACIONALES
6
Herramientas a nuestro alcance para manipular los datos y
alcanzar un resultado (fórmulas, tablas, accesorios diversos).
Una medida aconsejable para facilitar esta etapa consiste en
colocarnos en lugar de la computadora deduciendo los elementos que
necesitaremos para alcanzar el resultado.
Diseño de la solución.
Codificación.
7
Programa Fuente
Programa Ejecutable
Prueba y depuración.
Documentación.
Mantenimiento.
8
Cualquier actualización o cambio en el programa deberá reflejarse
en su documentación.
Algoritmo
Diagramas de Flujo
2. Desarrollo de sistemas
Para lograr la realización de un proyecto es muy importante que se
lleven a cabo una serie de pasos y procedimientos de investigación, los
cuales permitirán abrir aún más las perspectivas que tenemos de dicho
proyecto. La ejecución clara y objetiva de estos procedimientos de
investigación son las que nos permitirán obtener un enfoque claro de lo
que deseamos obtener y como lo habremos de lograr.
9
El desarrollo de proyectos es una parte fundamental para toda
empresa u organización que desea obtener éxito en las áreas que
involucran un proyecto. Para llevar a cabo el desarrollo de un proyecto
nos planteamos algunas preguntas: ¿existe un problema?, ¿cuál es el
problema?, ¿cómo se realizan los procesos actuales?, etc. La aclaración
de estos aspectos permitirá obtener una visión más clara de los problemas
que serán resueltos con la realización del proyecto.
Dados los antecedentes, al iniciar un proyecto es claro que se
debe de conocer a fondo los pasos y procedimientos de investigación
que requiere un proyecto.
El Desarrollo de Proyectos es una herramienta de una
gran utilidad y es por esto que he decidido llevar a cabo una recopilación
de los pasos que conlleva la realización de un proyecto.
DETECCIÓN DE NECESIDADES
Estudio de Factibilidad
3. Implantación de sistemas
En la fase de implantación, las especificaciones del diseño del
sistema sirven como base para la construcción del nuevo sistema. En este
punto, los programadores y los analistas de sistemas asumen diferentes
responsabilidades. El analista debe proveer especificaciones claras y
correctas al programador. El programador codifica, prueba y documenta
los módulos de programas, mientras que el analista de sistema planifica la
integración de los programas y asegura que trabajen unidos para
satisfacer las necesidades de la organización.
10
Un nuevo sistema requiere planificación, construcción y prueba. Los
programas y módulos deben ser diseñados, codificados, probados y
documentados. Cuando se planifica el sistema, muchas veces se usa un
estilo de arriba-hacia-abajo (top-down), que procede de un diseño
general a una estructura detallada siguiendo unos pasos lógicos. En el
estilo top-down, el analista de sistemas define los objetivos generales, y
luego los descompone en subsistemas y módulos en un proceso llamado
“partitioning”. Este estilo también se conoce como diseño modular. Un
módulo es un conjunto de instrucciones de programas que se pueden
ejecutar como un grupo. Asignando módulos a diferentes programadores
se agiliza el desarrollo del programa.
Codificación
Probando la aplicación
Instalación y Evaluación
Adiestramiento (Training)
Conversión de archivos
System Changeover
11
Errores, el proceso de revisión reduce de manera sustancial el costo
de las actividades posteriores en el proceso del software.
La figura ilustra un ejemplo hipotético de amplificación del defecto
para un proceso de software en el que no se hacen revisiones. En la figura,
se supone que en cada etapa de prueba se detecta y corrige 50 por
ciento de todos los errores de entrada sin que se introduzcan nuevos
errores (suposición optimista). Diez defectos preliminares de diseño se
amplifican a 94 errores antes de que comiencen las pruebas. Se liberan al
campo 12 errores latentes (defectos). La figura
15.3 considera las mismas condiciones, excepto porque se efectúan
revisiones del diseño y código como parte de cada acción de la
ingeniería de software. En este caso, son 10 los errores
12
Las revisiones técnicas son una de las muchas acciones que se
requieren como parte de las buenas prácticas de la ingeniería de
software. Cada acción requiere un esfuerzo humano dirigido.
Como el esfuerzo disponible para el proyecto es finito, es importante
que una organización de software comprenda la eficacia de cada
acción, definiendo un conjunto de métricas que puedan utilizarse para
evaluar esa eficacia.
Aunque se han definido muchas métricas para las revisiones
técnicas, un conjunto relativamente pequeño da una perspectiva útil. Las
siguientes métricas para la revisión pueden obtenerse conforme se
efectúe ésta:
Esfuerzo de preparación, Ep: esfuerzo (en horas-hombre) requerido
para revisar un producto del trabajo antes de la reunión de revisión
real.
Esfuerzo de evaluación, Ea: esfuerzo requerido (en horas-hombre) que
se dedica a la revisión real.
Esfuerzo de la repetición, Er: esfuerzo (en horas-hombre) que se
dedica a la corrección de los errores descubiertos durante la revisión.
Tamaño del producto del trabajo, TPT: medición del tamaño del
producto del trabajo que se ha revisado (por ejemplo, número de
modelos UML o número de páginas de documento o de líneas de
código).
Errores menores detectados, Errmenores: número de errores
detectados que pueden clasificarse como menores (requieren menos
de algún esfuerzo especificado para corregirse).
Errores mayores detectados, Errmayores: número de errores
encontrados que pueden clasificarse como mayores (requieren más
que algún esfuerzo especificado para corregirse).
Estas métricas pueden mejorarse, asociando el tipo de producto del
trabajo que se revisó con las métricas obtenidas.
13
Erevisión =Ep + Ea +Er
14
Es difícil medir en tiempo real la eficacia del costo de cualquier
revisión técnica. Una organización de ingeniería de software puede
evaluar la eficacia de las revisiones y su relación costo-beneficio sólo
después de que éstas han terminado, de que las unidades de medida de
la revisión se han recabado, de que los datos promedio han sido
calculados y de que la calidad posterior del software ha sido medida
(mediante pruebas).
Los errores relacionados con los requerimientos no detectados
durante las pruebas requieren un promedio de 45 horas-hombre para
encontrarse y corregirse (no hay datos disponibles acerca de la severidad
relativa del error). Con estos promedios se obtiene lo siguiente:
Esfuerzo ahorrado por error = Epruebas - Erevisiones
45 – 6 = 30 horas – hombre / error
Como durante la revisión del modelo de requerimientos se
encontraron 22 errores, se tendrá un ahorro cercano a 660 horas-hombre
en el esfuerzo dedicado a las pruebas. Y esto se refiere sólo a los errores
relacionados con los requerimientos. Al beneficio general se suman
aquellos asociados con el diseño y el código. El esfuerzo total conduce a
ciclos de entrega más cortos y a un mejor tiempo para llegar al mercado.
REVISIONES: ESPECTRO DE
FORMALIDAD
15
La figura ilustra un modelo de referencia para las revisiones técnicas
que identifica cuatro características que contribuyen a la formalidad con
la que se efectúa una revisión.
Cada una de las características del modelo de referencia ayuda a
definir el nivel de formalidad de la revisión.
La formalidad de una revisión se incrementa cuando:
1. Se definen explícitamente roles distintos para los revisores,
2. Hay suficiente cantidad de planeación y preparación para la
revisión,
3. Se define una estructura distinta para la revisión (incluso tareas y
productos internos del trabajo) y
4. El seguimiento por parte de los revisores tiene lugar para
cualesquiera correcciones que se efectúen.
Principios de medición
16
Análisis. El cálculo de métricas y la aplicación de herramientas
matemáticas.
Interpretación. Evaluación de las métricas resultantes para
comprender la calidad de la representación.
Retroalimentación. Recomendaciones derivadas de la
interpretación de las métricas del producto, transmitidas al equipo
de software.
17
personas en los equipos de proyecto por variables de lenguaje de
programación en el programa da como resultado una mezcla
sospechosa de unidades que no son intuitivamente convincentes.
Independiente del lenguaje de programación. Debe basarse en el
modelo de requerimientos, el modelo de diseño o la estructura del
programa en sí. No debe depender de los caprichos de la sintaxis
o de la semántica del lenguaje de programación.
Un mecanismo efectivo para retroalimentación de alta calidad.
Debe proporcionar información que pueda conducir a un
producto final de mayor calidad.
18
La dirección de proyectos es la aplicación de conocimientos,
habilidades, herramientas y técnicas a las actividades del proyecto para
cumplir con los requisitos del mismo. Se logra mediante la aplicación e
integración adecuadas de los 42 procesos de la dirección de proyectos,
agrupados lógicamente, que conforman los 5 grupos de procesos. Estos
5 grupos de procesos son:
Iniciación
Planificación
Ejecución
Seguimiento y Control
Cierre
Dirigir un proyecto por lo general implica:
Identificar requisitos
Abordar las diversas necesidades, inquietudes y expectativas de los
interesados según se planifica y efectúa el proyecto
Equilibrar las restricciones contrapuestas del proyecto que se
relacionan, entre otros aspectos, con:
el alcance
la calidad
el cronograma
el presupuesto
los recursos
el riesgo
Todo proyecto requiere para su realización una serie de recursos.
Los recursos necesarios para el desarrollo del proyecto generalmente se
clasifican en cuatro tipos:
Humanos: Para poner en marcha cualquier tipo de proyecto de
debe disponer de personas adecuadas y capacitadas para realizar las
actividades y tareas previstas.
Físicos: Los recursos físicos tradicionalmente comprenden varios
aspectos como terrenos, edificios, maquinaria, equipos, infraestructura,
19
bibliografía, documentación, medios de transporte, tecnología, etc. Sin
embargo, este tipo de recursos no siempre deben ser adquiridos, pero sí
puede ser cubiertos o sustituidos con lo que se tiene.
Técnicos: En caso de que el proyecto contemple herramientas o
recursos específicos, es necesario establecer las alternativas técnicas
elegidas y las tecnologías a utilizar. Cuando un proyecto contempla la
adopción de innovaciones tecnológicas, es bueno tener presente, que
muy probablemente, la adopción de la innovación no se va a producir
en su totalidad.
Financieros: Los recursos financieros hacen referencia al
presupuesto necesario para la operación del proyecto. Se sabe que
cualquier acción tiene un costo que es asumido por todas las partes
comprometidas en su puesta en marcha. Los recursos no necesariamente
tienen que provenir de entidades especializadas en financiar proyectos.
El éxito o fracaso de un proyecto esta medido en función del logro
de sus objetivos y posteriormente por la administración de los recursos
asignados al mismo. Cuando se habla de recursos, se hace referencia a
los requerimientos necesarios para lograr la realización de un proyecto:
a) Tiempo
b) Personas
c) Dinero
d) Equipo
e) Instalaciones o instrumentos
En muchas organizaciones la asignación de recursos responde a
una sola variable: “Disponibilidad”. No obstante, el establecimiento de un
plan adecuado permite asegurar que todos los recursos necesarios para
el establecimiento del coste del proyecto estén debidamente asignados.
Se precisa aplicar tres procesos para la gestión de los recursos al
asignarlos al proyecto. Estos procesos se presentan a continuación:
1. Planificación de Recursos.
Identificación del tipo de recursos materiales requeridos, la
cantidad precisa y el período de necesidad en el proyecto. Comprende
la identificación de los recursos necesarios para el desarrollo del proyecto,
teniendo en cuenta las tecnologías disponibles, la utilización de recursos
20
internos y de recursos existentes en el mercado, etc., así como las
restricciones existentes para el uso de tales recursos.
2. Asignación de Recursos.
Obtención de los recursos materiales, su asignación al proyecto y su
retirada durante la desactivación del proyecto. La adquisición de
recursos externos -si fuera precisa- se efectuará de acuerdo con los
procesos de gestión de adquisiciones del proyecto. La asignación a
cada tipo de recursos, es parte de la gestión del proyecto, focalizada por
la planificación estratégica. Partiendo del análisis de qué recursos se
tienen, definir cuáles falta y establecer el plan de acción para conseguir
los que faltan. Es entonces ahí, donde el concepto de administración
estratégica entra en juego. Al principio puede ser genérica, pero a
medida que avanza el proyecto debe ser más específica. Identificación
de recursos de plena disposición y compartidos (con qué otras
actividades o proyectos y características de los mismos).
3. Control de Recursos.
Comprobación del uso apropiado de los recursos materiales. Las
desviaciones respecto al plan de recursos deben ser identificadas y
analizadas, para proponer las acciones subsiguientes necesarias. Las
decisiones y acciones deben ser tomadas sólo tras tener en cuenta las
implicaciones sobre otros procesos y objetivos del proyecto. El control
adecuado permitirá:
Que el proyecto coincida o se acerque a los estimados con
precisión
Consistencia con los objetivos técnicos y de plazo de ejecución del
proyecto
Consideración de un presupuesto de coste razonable en función
de los logros del proyecto.
La administración efectiva de un proyecto de software se enfoca
en las cuatro P: personal, producto, proceso y proyecto. El orden no es
arbitrario. El gerente que olvida que el trabajo de la ingeniería del
software es una empresa intensamente humana nunca triunfará en la
administración del proyecto. Un gerente que fracase en alentar una
comunicación comprensiva con los participantes durante las primeras
etapas de la evolución de un producto se arriesga a construir una solución
elegante para el problema equivocado. El gerente que ponga poca
atención al proceso corre el riesgo de insertar métodos y herramientas
21
técnicos competentes, pero en el vacío. Aquel que se embarque sin un
plan sólido pone en peligro el éxito del proyecto.
La administración de proyectos de software es una actividad
sombrilla dentro de la ingeniería
de software. Comienza antes de iniciar cualquier actividad técnica
y continúa a lo largo del
modelado, construcción y despliegue del software de cómputo.
Cuatro P tienen influencia sustancial sobre la administración del
proyecto de software: personal, producto, proceso y proyecto. El personal
debe organizarse en equipos eficaces, motivados para hacer trabajo de
software de alta calidad, y coordinarse para lograr comunicación
efectiva. Los requerimientos del producto deben comunicarse de cliente
a desarrollador, dividirse (descomponerse) en sus partes constitutivas y
ubicarse para su trabajo por parte del equipo de software. El proceso
debe adaptarse al personal y al producto. Se selecciona un marco
conceptual común al proceso, se aplica un paradigma de ingeniería de
software adecuado y se elige un conjunto de tareas de trabajo para
realizar el trabajo. Finalmente, el proyecto debe organizarse de forma que
permita triunfar al equipo de software.
El ciclo de vida del proyecto es un conjunto de fases del mismo,
generalmente secuenciales y en ocasiones superpuestas, cuyo nombre y
número se determinan por las necesidades de gestión y control de la
organización u organizaciones que participan en el proyecto, la
naturaleza propia del proyecto y su área de aplicación. Un ciclo de vida
puede documentarse con ayuda de una metodología. El ciclo de vida
del proyecto puede ser determinado o conformado por los aspectos
únicos de la organización, de la industria o de la tecnología empleada.
Mientras que cada proyecto tiene un inicio y un final definidos, los
entregables específicos y las actividades que se llevan a cabo entre éstos
variarán ampliamente de acuerdo con el proyecto. El ciclo de vida
proporciona el marco de referencia básico para dirigir el proyecto,
independientemente del trabajo específico involucrado.
Modelo de cascada
22
la primera fase se termina se puede empezar con la segunda, y así
progresivamente.
Este modelo asume que todo se lleva a cabo y tiene lugar tal y
como se había planeado en la fase anterior, y no es necesario pensar en
asuntos pasados que podrían surgir en la siguiente fase. Este modelo no
funcionará correctamente si se dejan asuntos de lado en la fase previa.
La naturaleza secuencial del modelo no permite volver atrás y deshacer
o volver a hacer acciones. Este modelo es recomendable cuando el
desarrollador ya ha diseñado y desarrollado softwares similares con
anterioridad, y por eso está al tanto de todos sus dominios.
Modelo repetitivo
23
Este modelo guía el proceso de desarrollo de software en
repeticiones.
Modelo en espiral
24
Este modelo considera el riesgo, factor que otros modelos olvidan o
no prestan atención en el proceso. El modelo empieza determinando los
objetivos y las limitaciones del software al inicio de cada repetición. En la
siguiente etapa se crean los modelos de prototipo del software. Esto
incluye el análisis de riesgos. En la cuarta etapa es donde se prepara el
plan de la siguiente repetición.
Modelo V
25
En cada etapa, se crea la planificación de las pruebas y los casos
de pruebas para verificar y validar el producto según los requisitos de la
etapa. Por ejemplo, en la etapa de recogida de requisitos, el equipo de
evaluadores prepara las pruebas de caso correspondientes a los
requisitos. Más tarde, cuando el producto se desarrolla y está preparado
para ser evaluado, las pruebas de caso en esta etapa verifican el
software y su validez según sus requisitos.
Esto hace que tanto la verificación como la validación vayan en
paralelo. Este modelo también se conoce como modelo de validación y
verificación.
26
reunimos muchos fondos y programación, quizá podemos conseguir el
mejor producto de software.
27
2. Control de calidad de proyectos de tecnologías de
información
La calidad del software en el sentido más general se define como:
Proceso eficaz de software que se aplica de manera que crea un
producto útil que proporciona valor medible a quienes lo producen y a
quienes lo utilizan.
Un proceso eficaz de software establece la infraestructura que da
apoyo a cualquier esfuerzo
de elaboración de un producto de software de alta calidad.
Un producto útil entrega contenido, funciones y características que
el usuario final desea; sin embargo, de igual importancia es que entrega
estos activos en forma confiable y libre de errores.
Al agregar valor para el productor y para el usuario de un producto,
el software de alta calidad proporciona beneficios a la organización que
lo produce y a la comunidad de usuarios finales. La organización que
elabora el software obtiene valor agregado porque el software de alta
calidad requiere un menor esfuerzo de mantenimiento, menos errores que
corregir y poca asistencia al cliente.
Los Modelos de Calidad son aquellos documentos que integran la
mayor parte de las mejores prácticas, proponen temas de administración
en los que cada organización debe hacer énfasis, integran diferentes
prácticas dirigidas a los procesos clave y permiten medir los avances en
calidad.
Los Estándares de Calidad son aquellos que permiten definir un
conjunto de criterios de desarrollo que guían la forma en que se aplica la
Ingeniería del Software. Los estándares suministran los medios para que
todos los procesos se realicen de la misma forma y son una guía para
lograr la productividad y la calidad.
Los Modelos y/o Estándares permiten que las Empresas de Software
realicen sus tareas y funciones teniendo en cuenta la Calidad. Cualquier
organización que se dedica a la investigación, producción y
comercialización de software debe considerar la calidad, hoy con más
razón, donde existe un mercado en el cual el cliente es cada vez más
exigente, no sólo en lo que se refiere al precio, sino, sobre todo, en cuanto
a los servicios y a la confiabilidad que brindan los productos de software.
La calidad desempeña un rol determinante para la competitividad de la
empresa. Cuando una empresa está funcionando y decide implantar un
28
Modelo / Estándar de Calidad del Software, es señal que la empresa tiene
el propósito de permanecer y crecer en el mercado, ser competitiva,
proteger los intereses de los accionistas, cuidar la fuente de trabajo y
mejorar la calidad de vida de su personal.
Implantar Modelos o Estándares de Calidad tiene como objetivo
principal que las empresas desarrollen sistemáticamente, productos,
bienes y servicios de mejor calidad y cumplan con las necesidades y
deseos de los clientes. Para esto, se requiere de un Modelo / Estándar que:
permita: (1) unir la misión de la empresa y el esfuerzo de cada área en
una sinergia de resultados hacia la competitividad y la calidad de clase
mundial; y (2) tener procesos y procedimientos ágiles; y comprensibles
para todos los involucrados, pasando por las etapas de desarrollo,
prueba, producción y satisfacción del cliente.
La implantación de un Modelo o Estándar de Calidad del Software
implica un cambio de mentalidad y una formación en todo el personal
de la Empresa teniendo en cuenta qué tarea realiza cada persona. La
Calidad en una Empresa de Software requiere un cambio de cultura muy
significativo tanto en la forma de trabajar como de pensar.
La Gestión de la Calidad del Proyecto incluye los procesos y
actividades de la organización ejecutante que determinan
responsabilidades, objetivos y políticas de calidad a fin de que el
proyecto satisfaga las necesidades por la cuales fue emprendido.
Implementa el sistema de gestión de calidad por medio de políticas
y procedimientos, con actividades de mejora continua de los procesos
llevados a cabo durante todo el proyecto, según corresponda.
El enfoque básico de la gestión de calidad que se describe en esta
sección pretende ser compatible con el de la Organización Internacional
de Normalización (ISO). También es compatible con enfoques
propietarios sobre la gestión de calidad, tales como los recomendados
por Deming, Juran, Crosby y otros, así como con enfoques que no son
propietarios, como la Gestión de la Calidad Total (TQM), Six Sigma, Análisis
de Modos de Fallo y Efectos, Revisiones del Diseño, Opinión del Cliente,
Costo de la Calidad (COQ) y Mejora Continua.
La gestión moderna de la calidad complementa la dirección de
proyectos. Ambas disciplinas reconocen la importancia de:
La satisfacción del cliente.
29
Entender, evaluar, definir y gestionar las expectativas, de modo que
se cumplan los requisitos del cliente. Esto requiere una combinación de
conformidad con los requisitos (para asegurar que el proyecto produzca
aquello para lo cual fue emprendido) y adecuación para su uso (el
producto o servicio debe satisfacer necesidades reales).
La prevención antes que la inspección.
Uno de los preceptos fundamentales de la gestión moderna de la
calidad establece que la calidad se planifica, se diseña y se integra (y no
se inspecciona). Por lo general, el costo de prevenir errores es mucho
menor que el de corregirlos cuando son detectados por una inspección.
La mejora continua.
El ciclo planificar-hacer-revisar-actuar es la base para la mejora de
la calidad, según la definición de Shewhart, modificada por Deming.
Además, las iniciativas de mejora de la calidad emprendidas por la
organización ejecutante, tales como TQM y Six Sigma, deben mejorar
tanto la calidad de la dirección del proyecto, como la del producto del
proyecto. Los modelos de mejora de procesos incluyen Malcolm Baldrige,
OPM3® (Organizational Project Management Maturity Model) y CMMI®
(Capability Maturity Model Integration).
La responsabilidad de la dirección.
El éxito requiere la participación de todos los miembros del equipo
del proyecto, pero proporcionar los recursos necesarios para lograr dicho
éxito sigue siendo responsabilidad de la dirección.
El costo de la calidad se refiere al costo total de todos los esfuerzos
relacionados con la calidad a lo largo del ciclo de vida del proyecto. Las
decisiones del proyecto pueden causar un impacto en los costos
operativos de calidad, como resultado de devoluciones de productos,
reclamaciones de garantía y campañas para retirar productos del
mercado. Por lo tanto, debido a la naturaleza temporal de un proyecto,
la organización patrocinadora puede elegir invertir en la mejora de la
calidad del producto, especialmente en lo que se refiere a la prevención
y evaluación de defectos para reducir el costo externo de la calidad.
30
medidas de control de calidad, a fin de garantizar que se utilicen
definiciones operacionales y normas de calidad adecuadas.
31
Un sistema operativo está íntimamente relacionado con el
hardware de la computadora sobre la que se ejecuta. Extiende el
conjunto de instrucciones de la computadora y administra sus recursos.
Para trabajar debe conocer muy bien el hardware, por lo menos en lo
que respecta a cómo aparece para el programador. Por esta razón,
revisaremos brevemente el hardware de computadora como se
encuentra en las computadoras personales modernas. Después de eso,
podemos empezar a entrar en los detalles acerca de qué hacen los
sistemas operativos y cómo funcionan.
Procesadores.
El “cerebro” de la computadora es la CPU, que obtiene las
instrucciones de la memoria y las ejecuta. El ciclo básico de toda CPU es
obtener la primera instrucción de memoria, decodificarla para determinar
su tipo y operandos, ejecutarla y después obtener, decodificar y ejecutar
las instrucciones subsiguientes. El ciclo se repite hasta que el programa
termina. De esta forma se ejecutan los programas.
Cada CPU tiene un conjunto específico de instrucciones que puede
ejecutar. Como el acceso a la memoria para obtener una instrucción o
palabra de datos requiere mucho más tiempo que ejecutar una
instrucción, todas las CPU contienen ciertos registros en su interior para
contener las variables clave y los resultados temporales. Debido a esto, el
conjunto de instrucciones generalmente contiene instrucciones para
cargar una palabra de memoria en un registro y almacenar una palabra
de un registro en la memoria. Otras instrucciones combinan dos
operandos de los registros, la memoria o ambos en un solo resultado,
como la operación de sumar dos palabras y almacenar el resultado en
un registro o la memoria.
Además de los registros generales utilizados para contener variables
y resultados temporales, la mayoría de las computadoras tienen varios
registros especiales que están visibles para el programador. Uno de ellos
es el contador de programa (program counter), el cual contiene la
dirección de memoria de la siguiente instrucción a obtener. Una vez que
se obtiene esa instrucción, el contador de programa se actualiza para
apuntar a la siguiente.
Otro registro es el apuntador de pila (stack pointer), el cual apunta
a la parte superior de la pila (stack) actual en la memoria. La pila contiene
un conjunto de valores por cada procedimiento al que se ha entrado
pero del que todavía no se ha salido. El conjunto de valores en la pila por
32
procedimiento contiene los parámetros de entrada, las variables locales
y las variables temporales que no se mantienen en los registros.
Otro de los registros es PSW (Program Status Word; Palabra de
estado del programa). Este registro contiene los bits de código de
condición, que se asignan cada vez que se ejecutan las instrucciones de
comparación, la prioridad de la CPU, el modo (usuario o kernel) y varios
otros bits de control. Los programas de usuario pueden leer normalmente
todo el PSW pero por lo general sólo pueden escribir en algunos de sus
campos. El PSW juega un papel importante en las llamadas al sistema y
en las operaciones de E/S.
El sistema operativo debe estar al tanto de todos los registros.
Cuando la CPU se multiplexa en el tiempo, el sistema operativo detiene
con frecuencia el programa en ejecución para (re)iniciar otro. Cada vez
que detiene un programa en ejecución, el sistema operativo debe
guardar todos los registros para poder restaurarlos cuando el programa
continúe su ejecución.
Memoria
El segundo componente importante en cualquier computadora es
la memoria. En teoría, una memoria debe ser en extremo rápida (más
rápida que la velocidad de ejecución de una instrucción, de manera que
la memoria no
detenga a la
CPU), de gran
tamaño y muy
económica.
Ninguna
tecnología en
la actualidad
cumple con
todos estos objetivos, por lo que se adopta una solución distinta. El sistema
de memoria está construido como una jerarquía de capas. Las capas
superiores tienen mayor velocidad, menor capacidad y mayor costo por
bit que las capas inferiores, a menudo por factores de mil millones o más.
Discos
El siguiente lugar en la jerarquía corresponde al disco magnético
(disco duro). El almacenamiento en disco es dos órdenes de magnitud
más económico que la RAM por cada bit, y a menudo es dos órdenes de
33
magnitud más grande en tamaño también. El único problema es que el
tiempo para acceder en forma aleatoria a los datos en ella es de cerca
de tres órdenes de magnitud más lento. Esta baja velocidad se debe al
hecho de que un disco es un dispositivo mecánico.
Cintas
La última capa de la jerarquía en la memoria es la cinta magnética.
Este medio se utiliza con frecuencia como respaldo para el
almacenamiento en disco y para contener conjuntos de datos muy
extensos. Para acceder a una cinta, primero debe colocarse en un lector
de cinta, ya sea que lo haga una persona o un robot (el manejo
automatizado de las cintas es común en las instalaciones con bases de
datos enormes).
Dispositivos de E/S
La CPU y la memoria no son los únicos recursos que el sistema
operativo debe administrar. Los dispositivos de E/S también interactúan
mucho con el sistema operativo. Los dispositivos de E/S generalmente
constan de dos partes: un dispositivo controlador y el dispositivo en sí. El
dispositivo controlador es un chip o conjunto de chips que controla
físicamente el dispositivo. Por ejemplo, acepta los comandos del sistema
operativo para leer datos del dispositivo y los lleva a cabo.
Buses
A medida que los procesadores y las memorias se hicieron más
veloces, la habilidad de un solo bus (y sin duda, del bus de la IBM PC) de
manejar todo el tráfico se forzaba hasta el punto de quiebre. Algo tenía
que ceder. Como resultado se agregaron más buses, tanto para
dispositivos de E/S más rápidos como para el tráfico entre la CPU y la
memoria.
Arranque de la computadora
El BIOS contiene software de E/S de bajo nivel, incluyendo
procedimientos para leer el teclado, escribir en la pantalla y realizar
operaciones de E/S de disco, entre otras cosas. Hoy en día está contenido
en una RAM tipo flash que es no volátil pero el sistema operativo puede
actualizarla cuando se encuentran errores en el BIOS.
Cuando se arranca la computadora, el BIOS inicia su ejecución.
Primero hace pruebas para ver cuánta RAM hay instalada y si el teclado
34
junto con otros dispositivos básicos están instalados y responden en forma
correcta. Empieza explorando los buses ISA y PCI para detectar todos los
dispositivos conectados a ellos. Comúnmente, algunos de estos
dispositivos son heredados (es decir, se diseñaron antes de inventar la
tecnología plug and play), además de tener valores fijos para los niveles
de interrupciones y las direcciones de E/S (que posiblemente se
establecen mediante interruptores o puentes en la tarjeta de E/S, pero
que el sistema operativo no puede modificar). Estos dispositivos se
registran; y los dispositivos plug and play también. Si los dispositivos
presentes son distintos de los que había cuando el sistema se inició por
última vez, se configuran los nuevos dispositivos.
Después, el BIOS determina el dispositivo de arranque, para lo cual
prueba una lista de dispositivos almacenada en la memoria CMOS. El
usuario puede cambiar esta lista si entra a un programa de configuración
del BIOS, justo después de iniciar el sistema. Por lo general, se hace un
intento por arrancar del disco flexible, si hay uno presente. Si eso falla, se
hace una consulta a la unidad de CD-ROM para ver si contiene un CD-
ROM que se pueda arrancar. Si no hay disco flexible ni CD-ROM que
puedan iniciarse, el sistema se arranca desde el disco duro. El primer
sector del dispositivo de arranque se lee y se coloca en la memoria, para
luego ejecutarse. Este sector contiene un programa que por lo general
examina la tabla de particiones al final del sector de arranque, para
determinar qué partición está activa. Después se lee un cargador de
arranque secundario de esa partición. Este cargador lee el sistema
operativo de la partición activa y lo inicia.
Luego, el sistema operativo consulta al BIOS para obtener la
información de configuración. Para cada dispositivo, comprueba si tiene
el driver correspondiente. De no ser así, pide al usuario que inserte un CD-
ROM que contenga el driver (suministrado por el fabricante del
dispositivo). Una vez que tiene los drivers de todos los dispositivos, el
sistema operativo los carga en el kernel. Después inicializa sus tablas, crea
los procesos de segundo plano que se requieran, y arranca un programa
de inicio de sesión o GUI.
35
diferencia entre estas computadoras y las personales está en su
capacidad de E/S. Una mainframe con 1000 discos y millones de
gigabytes de datos no es poco común; una computadora personal con
estas especificaciones sería la envidia de los amigos del propietario. Las
mainframes también están volviendo a figurar en el ámbito
computacional como servidores Web de alto rendimiento, servidores para
sitios de comercio electrónico a gran escala y servidores para
transacciones de negocio a negocio.
Los sistemas operativos para las mainframes están profundamente
orientados hacia el procesamiento de muchos trabajos a la vez, de los
cuales la mayor parte requiere muchas operaciones de E/S. Por lo general
ofrecen tres tipos de servicios: procesamiento por lotes, procesamiento de
transacciones y tiempo compartido. Un sistema de procesamiento por
lotes procesa los trabajos de rutina sin que haya un usuario interactivo
presente. El procesamiento de reclamaciones en una compañía de
seguros o el reporte de ventas para una cadena de tiendas son
actividades que se realizan comúnmente en modo de procesamiento por
lotes. Los sistemas de procesamiento de transacciones manejan grandes
cantidades de pequeñas peticiones, por ejemplo: el procesamiento de
cheques en un banco o las reservaciones en una aerolínea. Cada unidad
de trabajo es pequeña, pero el sistema debe manejar cientos o miles por
segundo. Los sistemas de tiempo compartido permiten que varios usuarios
remotos ejecuten trabajos en la computadora al mismo tiempo, como
consultar una gran base de datos. Estas funciones están íntimamente
relacionadas; a menudo los sistemas operativos de las mainframes las
realizan todas. Un ejemplo de sistema operativo de mainframe es el
OS/390, un descendiente del OS/360. Sin embargo, los sistemas operativos
de mainframes están siendo reemplazados gradualmente por variantes
de UNIX, como Linux.
Sistemas operativos de servidores
En el siguiente nivel hacia abajo se encuentran los sistemas
operativos de servidores. Se ejecutan en servidores, que son
computadoras personales muy grandes, estaciones de trabajo o incluso
mainframes. Dan servicio a varios usuarios a la vez a través de una red y
les permiten compartir los recursos de hardware y de software. Los
servidores pueden proporcionar servicio de impresión, de archivos o Web.
Los proveedores de Internet operan muchos equipos servidores para dar
soporte a sus clientes y los sitios Web utilizan servidores para almacenar las
páginas Web y hacerse cargo de las peticiones entrantes. Algunos
36
sistemas operativos de servidores comunes son Solaris, FreeBSD, Linux y
Windows Server 200x.
Sistemas operativos de multiprocesadores
Una manera cada vez más común de obtener poder de cómputo
de las grandes ligas es conectar varias CPU en un solo sistema.
Dependiendo de la exactitud con la que se conecten y de lo que se
comparta, estos sistemas se conocen como computadoras en paralelo,
multicomputadoras o multiprocesadores. Necesitan sistemas operativos
especiales, pero a menudo son variaciones de los sistemas operativos de
servidores con características especiales para la comunicación,
conectividad y consistencia.
Con la reciente llegada de los chips multinúcleo para las
computadoras personales, hasta los sistemas operativos de equipos de
escritorio y portátiles convencionales están empezando a lidiar con
multiprocesadores de al menos pequeña escala y es probable que el
número de núcleos aumente con el tiempo. Por fortuna, se conoce
mucho acerca de los sistemas operativos de multiprocesadores gracias a
los años de investigación previa, por lo que el uso de este conocimiento
en los sistemas multinúcleo no debe presentar dificultades. La parte difícil
será hacer que las aplicaciones hagan uso de todo este poder de
cómputo. Muchos sistemas operativos populares (incluyendo Windows y
Linux) se ejecutan en multiprocesadores.
Sistemas operativos de computadoras personales
La siguiente categoría es el sistema operativo de computadora
personal. Todos los sistemas operativos modernos soportan la
multiprogramación, con frecuencia se inician docenas de programas al
momento de arrancar el sistema. Su trabajo es proporcionar buen soporte
para un solo usuario. Se utilizan ampliamente para el procesamiento de
texto, las hojas de cálculo y el acceso a Internet. Algunos ejemplos
comunes son Linux, FreeBSD, Windows Vista y el sistema operativo
Macintosh. Los sistemas operativos de computadora personal son tan
conocidos que tal vez no sea necesario presentarlos con mucho detalle.
De hecho, muchas personas ni siquiera están conscientes de que existen
otros tipos de sistemas operativos.
Sistemas operativos de computadoras de bolsillo
Una computadora de bolsillo o PDA (Personal Digital Assitant,
Asistente personal digital) es una computadora que cabe en los bolsillos y
37
realiza una pequeña variedad de funciones, como libreta de direcciones
electrónica y bloc de notas. Además, hay muchos teléfonos celulares muy
similares a los PDAs, con la excepción de su teclado y pantalla. En efecto,
los PDAs y los teléfonos celulares se han fusionado en esencia y sus
principales diferencias se observan en el tamaño, el peso y la interfaz de
usuario. Casi todos ellos se basan en CPUs de 32 bits con el modo
protegido y ejecutan un sofisticado sistema operativo.
Los sistemas operativos que operan en estos dispositivos de bolsillo
son cada vez más sofisticados, con la habilidad de proporcionar telefonía,
fotografía digital y otras funciones. Muchos de ellos también ejecutan
aplicaciones desarrolladas por terceros. De hecho, algunos están
comenzando a asemejarse a los sistemas operativos de computadoras
personales de hace una década. Una de las principales diferencias entre
los dispositivos de bolsillo y las PCs es que los primeros no tienen discos
duros de varios cientos de gigabytes, lo cual cambia rápidamente. Dos
de los sistemas operativos más populares para los dispositivos de bolsillo
son Symbian OS y Palm OS.
Sistemas operativos integrados
Los sistemas integrados (embedded), que también se conocen
como incrustados o embebidos, operan en las computadoras que
controlan dispositivos que no se consideran generalmente como
computadoras, ya que no aceptan software instalado por el usuario.
Algunos ejemplos comunes son los hornos de microondas, las televisiones,
los autos, los grabadores de DVDs, los teléfonos celulares y los
reproductores de MP3. La propiedad principal que diferencia a los
sistemas integrados de los dispositivos de bolsillo es la certeza de que
nunca se podrá ejecutar software que no sea confiable. No se pueden
descargar nuevas aplicaciones en el horno de microondas; todo el
software se encuentra en ROM. Esto significa que no hay necesidad de
protección en las aplicaciones, lo cual conlleva a cierta simplificación. Los
sistemas como QNX y VxWorks son populares en este dominio.
Sistemas operativos de nodos sensores
Las redes de pequeños nodos sensores se están implementando
para varios fines. Estos nodos son pequeñas computadoras que se
comunican entre sí con una estación base, mediante el uso de
comunicación inalámbrica. Estas redes de sensores se utilizan para
proteger los perímetros de los edificios, resguardar las fronteras
nacionales, detectar incendios en bosques, medir la temperatura y la
38
precipitación para el pronóstico del tiempo, deducir información acerca
del movimiento de los enemigos en los campos de batalla y mucho más.
Los sensores son pequeñas computadoras con radios integrados y
alimentadas con baterías. Tienen energía limitada y deben trabajar
durante largos periodos al exterior y desatendidas, con frecuencia en
condiciones ambientales rudas. La red debe ser lo bastante robusta como
para tolerar fallas en los nodos individuales, que ocurren con mayor
frecuencia a medida que las baterías empiezan a agotarse.
Cada nodo sensor es una verdadera computadora, con una CPU,
RAM, ROM y uno o más sensores ambientales. Ejecuta un sistema
operativo pequeño pero real, por lo general manejador de eventos, que
responde a los eventos externos o realiza mediciones en forma periódica
con base en un reloj interno. El sistema operativo tiene que ser pequeño y
simple debido a que los nodos tienen poca RAM y el tiempo de vida de
las baterías es una cuestión importante. Además, al igual que con los
sistemas integrados, todos los programas se cargan por adelantado; los
usuarios no inician repentinamente programas que descargaron de
Internet, lo cual simplifica el diseño en forma considerable. TinyOS es un
sistema operativo bien conocido para un nodo sensor.
Sistemas operativos en tiempo real
Otro tipo de sistema operativo es el sistema en tiempo real. Estos
sistemas se caracterizan por tener el tiempo como un parámetro clave.
Por ejemplo, en los sistemas de control de procesos industriales, las
computadoras en tiempo real tienen que recolectar datos acerca del
proceso de producción y utilizarlos para controlar las máquinas en la
fábrica. A menudo hay tiempos de entrega estrictos que se deben
cumplir. Por ejemplo, si un auto se desplaza sobre una línea de
ensamblaje, deben llevarse a cabo ciertas acciones en determinados
instantes. Si un robot soldador realiza su trabajo de soldadura antes o
después de tiempo, el auto se arruinará. Si la acción debe ocurrir sin
excepción en cierto momento (o dentro de cierto rango), tenemos un
sistema en tiempo real duro. Muchos de estos sistemas se encuentran en
el control de procesos industriales, en aeronáutica, en la milicia y en áreas
de aplicación similares. Estos sistemas deben proveer garantías absolutas
de que cierta acción ocurrirá en un instante determinado.
Sistemas operativos de tarjetas inteligentes
Los sistemas operativos más pequeños operan en las tarjetas
inteligentes, que son dispositivos del tamaño de una tarjeta de crédito que
39
contienen un chip de CPU. Tienen varias severas restricciones de poder
de procesamiento y memoria. Algunas se energizan mediante contactos
en el lector en el que se insertan, pero las tarjetas inteligentes sin contactos
se energizan mediante inducción, lo cual limita en forma considerable las
cosas que pueden hacer. Algunos sistemas de este tipo pueden realizar
una sola función, como pagos electrónicos; otros pueden llevar a cabo
varias funciones en la misma tarjeta inteligente. A menudo éstos son
sistemas propietarios.
40
Otro concepto clave de casi todos los sistemas operativos es el
sistema de archivos. Como se dijo antes, una de las funciones principales
del sistema operativo es ocultar las peculiaridades de los discos y demás
dispositivos de E/S, presentando al programador un modelo abstracto
limpio y agradable de archivos independientes del dispositivo. Sin duda
se requieren las llamadas al sistema para crear los archivos, eliminarlos,
leer y escribir en ellos. Antes de poder leer un archivo, debe localizarse en
el disco para abrirse y una vez que se ha leído información del archivo
debe cerrarse, por lo que se proporcionan llamadas para hacer estas
cosas.
41