sábado, 3 de noviembre de 2012

Como marquetear mi profesión

Redes inalámbricas

Instalación y configuración de un ordenador

Instalación y configuración de un ordenador

Mantenimiento correctivo y preventivo

Gran parte de los  problemas que se presentan en los  sistemas de cómputo se pueden evitar o prevenir si se realiza un mantenimiento periódico de cada uno de sus componentes. Se explicará como realizar paso a paso el mantenimiento preventivo y correctivo a cada uno de los componentes del  sistema de cómputo incluyendo periféricos comunes. Se explicarán también las prevenciones y cuidados que se deben tener con cada tipo. 

Limpiar adecuadamente su PC le debe tomar aproximadamente entre 1 hora y 1½ horas, así que asegúrese de tener este tiempo disponible. Antes de comenzar el proyecto de limpiar su PC, desenchufe la PC, espere a que todo el sistema se "enfríe" por unos minutos hasta temperatura ambiente. Asegúrese de tener los materiales adecuados.

Dependiendo del ambiente en que opere su computadora puede determinar cuán periódico debe llevar a cabo la limpieza de la misma. 

Veamos algunos ejemplos de ambientes:

Usuario que no fuma y que no tiene mascotas - cada cinco meses.
Usuario que no fuma y que tiene mascotas - cada cuatro meses.
Usuario que fuma y no tiene mascotas - cada tres meses.
Usuario que fuma y tiene mascotas - cada dos meses.
Negocio con un ambiente de oficinas limpio - cada cinco meses.
Negocio con un ambiente de oficinas limpio; pero muchos usuarios para 
cada PC - cada tres meses.
Negocio que es una fábrica o que permite fumar - cada dos meses.
Escuela de jóvenes adultos - cada tres meses.
Escuelas de niños o adolescentes - mensualmente.
Mantenga la PC libre de polvo.
Antes de llevar a cabo algún tipo de limpieza física a la PC, apáguela.
Mantenga las bebidas y la comida alejadas de la PC.
Limpie el exterior de la PC y los periféricos con un paño suave levemente 
humedecido con agente limpiador no corrosivo o áspero.
Por lo general el monitor se ensucia con las marcas de los dedos. Limpie el 
monitor con (CRT) con limpiador para cristales.


Mantenimiento correctivo


El mantenimiento del computador es aquel que debemos realizar al computador cada cierto tiempo, bien sea para corregir fallas existentes o para prevenirlas.
El periodo de mantenimiento depende de diversos factores: ¡a cantidad de horas diarias de operación, el tipo de actividad (aplicaciones) que se ejecutan, el ambiente donde se encuentra instalada (si hay polvo, calor, etc.), el estado general (si es un equipo nuevo o muy usado), y el resultado obtenido en el último mantenimiento.
Una PC de uso personal, que funcione unas cuatro horas diarias, en un ambiente favorable y dos o menos años de operación sin fallas graves, puede resultar aconsejable realizar su mantenimiento cada dos o tres meses de operación, aunque algunas de las actividades de mantenimiento pudieran requerir una periodicidad menor.
En cambio si la PC se usa más de 4 horas diarias, tiene mucho tiempo de operación, se recomienda hacer un mantenimiento por lo menos una vez al mes.
No debe considerarse dentro de esta actividad la limpieza externa y el uso sistemático de cubiertas protectoras de polvo, insectos y suciedad ambiental, ni tampoco la realización de copias de seguridad (backup), o la aplicación de barreras anti-virus, proxies o cortafuegos (firewalls) que dependen de las condiciones específicas de operación y entorno ambiental.

El Mantenimiento Correctivo que se observa se planificará, dentro de ¡a emergencia que se presente y teniendo en cuenta la prestación de los servicios, para lo cual deberá recurrirse a las autoridades de los Establecimientos para determinar el momento Oportuno de su ejecución, a no ser que pueda ser incluido dentro del tiempo establecido para el plan de Mantenimiento Preventivo.

Utilitarios

Los VIRUS
Los VIRUS informaticos son programas del ordenador y interfieren en el hardware y en el sistema operativo. Tambien es un programa que se copia automáticamente y que tiene por objeto alterar el normal funcionamiento de la computadora, sin el permiso o el conocimiento del usuario. Los virus pueden destruir, de manera intencionada, los datos almacenados en un ordenador, aunque también existen otros más "benignos", que solo se caracterizan por ser molestos.

Todo sobre Software

Software

Se conoce como software al equipamiento lógico o soporte lógico de un sistema informático, comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos, que son llamados hardware.
Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas; tales como el procesador de texto, que permite al usuario realizar todas las tareas concernientes a la edición de textos; el software de sistema, tal como el sistema operativo, que, básicamente, permite al resto de los programas funcionar adecuadamente, facilitando también la interacción entre los componentes físicos y el resto de las aplicaciones, y proporcionando una interfaz con el usuario.
El anglicismo "software" es el más ampliamente difundido, especialmente en la jerga técnica, el término sinónimo "logical", derivado del término francés "logiciel", es utilizado en países y zonas de habla francesa.




Los procesadores de texto están incluidos en la categoría de software de aplicación. Las imágenes son capturas de pantalla de OpenOffice (arriba) y KWord (abajo).


Clasificación del software


Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos se puede clasificar al software en tres grandes tipos:
  • 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, controladores, 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)
    • Videojuegos
    • Software médico
    • Software de cálculo Numérico y simbólico.
    • Software de diseño asistido (CAD)
    • Software de control numérico (CAM)
Proceso de creación del software

Se define como proceso al conjunto ordenado de pasos a seguir para llegar a la solución de un problema u obtención de un producto, en este caso particular, para lograr un producto software que resuelva un problema específico.
El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. Por ejemplo la creación de un sistema operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (por ejemplo, la resolución de una ecuación de segundo orden), éste puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño (líneas de código) o costo: de «pequeño», «mediano» y «gran porte». Existen varias metodologías para estimarlo, una de las más populares es el sistema COCOMO que provee métodos y un software (programa) que calcula y provee una aproximación de todos los costos de producción en un «proyecto software» (relación horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado, etc.).
Considerando los de gran porte, es necesario realizar complejas tareas, tanto técnicas como de gerencia, una fuerte gestión y análisis diversos (entre otras cosas), la complejidad de ello ha llevado a que desarrolle una ingeniería específica para tratar su estudio y realización: es conocida como Ingeniería de Software.
En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea. Aunque, siempre en casos de mediano y gran porte (y a veces también en algunos de pequeño porte, según su complejidad), se deben seguir ciertas etapas que son necesarias para la construcción del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicación, de acuerdo a la metodología o proceso de desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso).
Los «procesos de desarrollo de software» poseen reglas preestablecidas, y deben ser aplicados en la creación del software de mediano y gran porte, ya que en caso contrario lo más seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos, y con variedad de fallos inaceptables (fracasan, en pocas palabras). Entre tales «procesos» los hay ágiles o livianos (ejemplo XP), pesados y lentos (ejemplo RUP), y variantes intermedias. Normalmente se aplican de acuerdo al tipo y porte del software a desarrollar, a criterio del líder (si lo hay) del equipo de desarrollo. Algunos de esos procesos son Programación Extrema (en inglés eXtreme Programming o XP), Proceso Unificado de Rational (en inglés Rational Unified Process o RUP), Feature Driven Development (FDD), etc.
Cualquiera sea el «proceso» utilizado y aplicado al desarrollo del software (RUP, FDD, XP, etc), y casi independientemente de él, siempre se debe aplicar un «modelo de ciclo de vida».
Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que lo retrasan y un 26% son totalmente exitosos.
Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal causa de fallos y fracasos es la falta de aplicación de una buena metodología o proceso de desarrollo. Entre otras, una fuerte tendencia, desde hace pocas décadas, es mejorar las metodologías o procesos de desarrollo, o crear nuevas y concientizar a los profesionales de la informática a su utilización adecuada. Normalmente los especialistas en el estudio y desarrollo de estas áreas (metodologías) y afines (tales como modelos y hasta la gestión misma de los proyectos) son los ingenieros en software, es su orientación. Los especialistas en cualquier otra área de desarrollo informático (analista, programador, Lic. en informática, ingeniero en informática, ingeniero de sistemas, etc.) normalmente aplican sus conocimientos especializados pero utilizando modelos, paradigmas y procesos ya elaborados.
Es común para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen «metodologías propias», normalmente un híbrido de los procesos anteriores y a veces con criterios propios.
El proceso de desarrollo puede involucrar numerosas y variadas tareas, desde lo administrativo, pasando por lo técnico y hasta la gestión y el gerenciamiento. Pero, casi rigurosamente, siempre se cumplen ciertas etapas mínimas; las que se pueden resumir como sigue:
  • Captura, elicitación , especificación y análisis de requisitos (ERS)
  • Diseño
  • Codificación
  • Pruebas (unitarias y de integración)
  • Instalación y paso a producción
  • Mantenimiento
En las anteriores etapas pueden variar ligeramente sus nombres, o ser más globales, o contrariamente, ser más refinadas; por ejemplo indicar como una única fase (a los fines documentales e interpretativos) de «análisis y diseño»; o indicar como «implementación» lo que está dicho como «codificación»; pero en rigor, todas existen e incluyen, básicamente, las mismas tareas específicas.
En el apartado 4 del presente artículo se brindan mayores detalles de cada una de las etapas indicadas.


Etapas en el desarrollo del software

Captura, análisis y especificación de requisitos

Al inicio de un desarrollo (no de un proyecto), esta es la primera fase que se realiza, y, según el modelo de proceso adoptado, puede casi terminar para pasar a la próxima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de carácter evolutivo).
En simple palabras y básicamente, durante esta fase, se adquieren, reúnen y especifican las características funcionales y no funcionales que deberá cumplir el futuro programa o sistema a desarrollar.
Las bondades de las características, tanto del sistema o programa a desarrollar, como de su entorno, parámetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esté esta etapa. Esta es, probablemente, la de mayor importancia y una de las fases más difíciles de lograr certeramente, pues no es automatizable, no es muy técnica y depende en gran medida de la habilidad y experiencia del analista que la realice.
Involucra fuertemente al usuario o cliente del sistema, por tanto tiene matices muy subjetivos y es difícil de modelar con certeza o aplicar una técnica que sea «la más cercana a la adecuada» (de hecho no existe «la estrictamente adecuada»). Si bien se han ideado varias metodologías, incluso software de apoyo, para captura, elicitación y registro de requisitos, no existe una forma infalible o absolutamente confiable, y deben aplicarse conjuntamente buenos criterios y mucho sentido común por parte del o los analistas encargados de la tarea; es fundamental también lograr una fluida y adecuada comunicación y comprensión con el usuario final o cliente del sistema.
El artefacto más importante resultado de la culminación de esta etapa es lo que se conoce como especificación de requisitos software o simplemente documento ERS.
Como se dijo, la habilidad del analista para interactuar con el cliente es fundamental; lo común es que el cliente tenga un objetivo general o problema que resolver, no conoce en absoluto el área (informática), ni su jerga, ni siquiera sabe con precisión qué debería hacer el producto software (qué y cuantas funciones) ni, mucho menos, cómo debe operar. En otros casos menos frecuentes, el cliente «piensa» que sabe precisamente lo que el software tiene que hacer, y generalmente acierta muy parcialmente, pero su empecinamiento entorpece la tarea de elicitación. El analista debe tener la capacidad para lidiar con este tipo de problemas, que incluyen relaciones humanas; tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicación y comprensión.
Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema, este es el caso más sencillo para el analista.
Las tareas relativas a captura, elicitación, modelado y registro de requerimientos, además de ser sumamente importante, puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo; al proceso y metodologías para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingeniería de Software, pero dada la antedicha complejidad, actualmente se habla de una Ingeniería de requisitos , aunque ella aún no existe formalmente.
Hay grupos de estudio e investigación, en todo el mundo, que están exclusivamente abocados a idear modelos, técnicas y procesos para intentar lograr la correcta captura, análisis y registro de requerimientos. Estos grupos son los que normalmente hablan de la Ingeniería de requisitos; es decir se plantea ésta como un área o disciplina pero no como una carrera universitaria en si misma.
Algunos requisitos no necesitan la presencia del cliente, para ser capturados o analizados; en ciertos casos los puede proponer el mismo analista o, incluso, adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales). Por citar ejemplos probables: Algunos requisitos sobre la arquitectura del sistema, requisitos no funcionales tales como los relativos al rendimiento, nivel de soporte a errores operativos, plataformas de desarrollo, relaciones internas o ligas entre la información (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos, etc. Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o más sencilla operatividad; etc.
La obtención de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo; normalmente a medida que se captura la información, se la analiza y realimenta con el cliente, refinándola, puliéndola y corrigiendo si es necesario; cualquiera sea el método de ERS utilizado. EL analista siempre debe llegar a conocer la temática y el problema que resolver, dominarlo, hasta cierto punto, hasta el ámbito que el futuro sistema a desarrollar lo abarque. Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas áreas o disciplinas de trabajo (que no son específicamente suyas); así por ejemplo, si el sistema a desarrollar será para gestionar información de una aseguradora y sus sucursales remotas, el analista se debe compenetrar en cómo ella trabaja y maneja su información, desde niveles muy bajos e incluso llegando hasta los gerenciales. Dada a gran diversidad de campos a cubrir, los analistas suelen ser asistidos por especialistas, es decir gente que conoce profundamente el área para la cual se desarrollará el software; evidentemente una única persona (el analista) no puede abarcar tan vasta cantidad de áreas del conocimiento. En empresas grandes de desarrollo de productos software, es común tener analistas especializados en ciertas áreas de trabajo.
Contrariamente, no es problema del cliente, es decir él no tiene por qué saber nada de software, ni de diseños, ni otras cosas relacionadas; sólo se debe limitar a aportar objetivos, datos e información (de mano propia o de sus registros, equipos, empleados, etc) al analista, y guiado por él, para que, en primera instancia, defina el «Universo de Discurso», y con posterior trabajo logre confeccionar el adecuado documento ERS.
Es bien conocida la presión que sufren los desarrolladores de sistemas informáticos para comprender y rescatar las necesidades de los clientes/usuarios. Cuanto más complejo es el contexto del problema más difícil es lograrlo, a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan.
Cuando esto no sucede es muy probable que se genere un conjunto de requisitos erróneos o incompletos y por lo tanto un producto de software con alto grado de desaprobación por parte de los clientes/usuarios y un altísimo costo de reingeniería y mantenimiento. Todo aquello que no se detecte, o resulte mal entendido en la etapa inicial provocará un fuerte impacto negativo en los requisitos, propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto más tardía sea su detección (Bell y Thayer 1976)(Davis 1993).
Procesos, modelado y formas de elicitación de requisitos
Siendo que la captura, elicitación y especificación de requisitos, es una parte crucial en el proceso de desarrollo de software, ya que de esta etapa depende el logro de los objetivos finales previstos, se han ideado modelos y diversas metodologías de trabajo para estos fines. También existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos.
El estándar IEEE 830-1998 brinda una normalización de las «Prácticas Recomendadas para la Especificación de Requisitos Software».
A medida que se obtienen los requisitos, normalmente se los va analizando, el resultado de este análisis, con o sin el cliente, se plasma en un documento, conocido como ERS o Especificación de Requisitos Software, cuya estructura puede venir definida por varios estándares, tales como CMMI.
Un primer paso para realizar el relevamiento de información es el conocimiento y definición acertada lo que se conoce como «Universo de Discurso» del problema, que se define y entiende por:
Universo de Discurso (UdeD): es el contexto general en el cual el software deberá ser desarrollado y deberá operar. El UdeD incluye todas las fuentes de información y todas las personas relacionadas con el software. Esas personas son conocidas también como actores de ese universo. El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software.
A partir de la extracción y análisis de información en su ámbito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software.
El objetivo de la Ingeniería de requisitos (IR) es sistematizar el proceso de definición de requisitos permitiendo elicitar, modelar y analizar el problema, generando un compromiso entre los ingenieros de requisitos y los clientes/usuarios, ya que ambos participan en la generación y definición de los requisitos del sistema. La IR aporta un conjunto de métodos, técnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo más seguros, veraces, completos y oportunos posibles, permitiendo básicamente:
  • Comprender el problema
  • Facilitar la obtención de las necesidades del cliente/usuario
  • Validar con el cliente/usuario
  • Garantizar las especificaciones de requisitos
Si bien existen diversas formas, modelos y metodologías para elicitar, definir y documentar requerimientos, no se puede decir que alguna de ellas sea mejor o peor que la otra, suelen tener muchísimo en común, y todas cumplen el mismo objetivo. Sin embargo, lo que si se puede decir sin dudas es que es indispensable utilizar alguna de ellas para documentar las especificaciones del futuro producto software. Así por ejemplo, hay un grupo de investigación argentino que desde hace varios años ha propuesto y estudia el uso del LEL (Léxico Extendido del Lenguaje) y Escenarios como metodología, aquí se presenta una de las tantas referencias y bibliografía sobre ello. Otra forma, más ortodoxa, de capturar y documentar requisitos se puede obtener en detalle, por ejemplo, en el trabajo de la Universidad de Sevilla sobre «Metodología para el Análisis de Requisitos de Sistemas Software».
Una posible lista, general y ordenada, de tareas recomendadas para obtener la definición de lo que se debe realizar, los productos a obtener y las técnicas a emplear durante la actividad de elicitación de requisitos, en fase de Especificación de Requisitos Software es:
  1. Obtener información sobre el dominio del problema y el sistema actual (UdeD).
  2. Preparar y realizar las reuniones para elicitación/negociación.
  3. Identificar/revisar los objetivos del usuario.
  4. Identificar/revisar los objetivos del sistema.
  5. Identificar/revisar los requisitos de información.
  6. Identificar/revisar los requisitos funcionales.
  7. Identificar/revisar los requisitos no funcionales.
  8. Priorizar objetivos y requisitos.
Algunos principios básicos a tener en cuenta:
  • Presentar y entender cabalmente el dominio de la información del problema.
  • Definir correctamente las funciones que debe realizar el Software.
  • Representar el comportamiento del software a consecuencias de acontecimientos externos, particulares, incluso inesperados.
  • Reconocer requisitos incompletos, ambiguos o contradictorios.
  • Dividir claramente los modelos que representan la información, las funciones y comportamiento y características no funcionales.

Diagrama de tareas para captura y análisis de requisitos.


Clasificación e identificación de requerimientos

Se pueden identificar dos formas de requisitos:
  • Requisitos de usuario: Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar, así como las restricciones bajo las que debe operar.
  • Requisitos de sistema: Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle. Sirven como contrato.
Es decir, ambos son lo mismo, pero con distinto nivel de detalle.
Ejemplo de requisito de usuario: El sistema debe hacer préstamos Ejemplo de requisito de sistema: Función préstamo: entrada código socio, código ejemplar; salida: fecha devolución; etc.
Se clasifican en tres los tipos de requisitos de sistema:
  • Requisitos funcionales
Los requisitos funcionales describen:
  • Los servicios que proporciona el sistema (funciones).
  • La respuesta del sistema ante determinadas entradas.
  • El comportamiento del sistema en situaciones particulares.
  • Requisitos no funcionales
Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej. cotas de tiempo, proceso de desarrollo, rendimiento, etc.)
Ejemplo 1. La biblioteca Central debe ser capaz de atender simultáneamente a todas las bibliotecas de la Universidad
Ejemplo 2. El tiempo de respuesta a una consulta remota no debe ser superior a 1/2 s
A su vez, hay tres tipos de requisitos no funcionales:
  • Requisitos del producto. Especifican el comportamiento del producto (Ej. prestaciones, memoria, tasa de fallos, etc.)
  • Requisitos organizativos. Se derivan de las políticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej. estándares de proceso, lenguajes de programación, etc.)
  • Requisitos externos. Se derivan de factores externos al sistema y al proceso de desarrollo (Ej. requisitos legislativos, éticos, etc.)
  • Requisitos del dominio.
Los requisitos del dominio se derivan del dominio de la aplicación y reflejan características de dicho dominio.
Pueden ser funcionales o no funcionales.
Ej. El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicación de Bibliotecas de España (LIBE). Ej. El sistema de biblioteca no podrá acceder a bibliotecas con material censurado.

Diseño del sistema

En ingeniería de software, el diseño es una fase de ciclo de vida del software. Se basa en la especificación de requisitos producido por el análisis de los requerimientos (fase de análisis), el diseño define cómo estos requisitos se cumplirán, la estructura que debe darse al sistema de software para que se haga realidad.
El diseño sigue siendo una fase separada del la programación o codificación, esta ultima corresponde a la traducción en un determinado lenguaje de programación de las premisas adoptadas en el diseño.
Las distinciones entre las actividades mencionadas hasta ahora no siempre son claras cómo se quisiera en las teorías clásicas de ingeniería de software. El diseño, en particular, puede describir el funcionamiento interno de un sistema en diferentes niveles de detalle, cada una de ellos se coloca en una posición intermedia entre el análisis y codificación.
Normalmente se entiende por "diseño de la arquitectura" al diseño de "muy alto nivel", que sólo define la estructura del sistema en términos de la módulos de software de que se compone y las relaciones macroscópicas entre ellos. A este nivel de diseño pertenecen fórmulas como cliente-servidor o “tres niveles”, o, más generalmente, las decisiones sobre el uso de la arquitectura de hardware especial que se utilice, el sistema operativo, DBMS, Protocolos de red, etc.
Un nivel intermedio de detalle puede definir la descomposición del sistema en módulos, pero esta vez con una referencia más o menos explícita al modo de descomposición que ofrece el particular lenguaje de programación con el que el desarrollo se va a implementar, por ejemplo, en un diseño realizado con la tecnología de objetos, el proyecto podría describir al sistema en términos de clases y sus interrelaciones.
El diseño detallado, por último, es una descripción del sistema muy cercana a la codificación (por ejemplo, describir no sólo las clases en abstracto, sino también sus atributos y los métodos con sus tipos).
Debido a la naturaleza "intangible" del software, y dependiendo de las herramientas que se utilizan en el proceso, la frontera entre el diseño y la codificación también puede ser virtualmente imposible de identificar. Por ejemplo, algunas herramientas CASE son capaces de generar código a partir de diagramas UML, los que describen gráficamente la estructura de un sistema software.

Codificación del software

Durante esta etapa se realizan las tareas que comúnmente se conocen como programación; que consiste, esencialmente, en llevar a código fuente, en el lenguaje de programación elegido, todo lo diseñado en la fase anterior. Esta tarea la realiza el programador, siguiendo por completo los lineamientos impuestos en el diseño y en consideración siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa.
Es común pensar que la etapa de programación o codificación (algunos la llaman implementación) es la que insume la mayor parte del trabajo de desarrollo del software; sin embargo, esto puede ser relativo (y generalmente aplicable a sistemas de pequeño porte) ya que las etapas previas son cruciales, críticas y pueden llevar bastante más tiempo. Se suele hacer estimaciones de un 30% del tiempo total insumido en la programación, pero esta cifra no es consistente ya que depende en gran medida de las características del sistema, su criticidad y el lenguaje de programación elegido. En tanto menor es el nivel del lenguaje mayor será el tiempo de programación requerido, así por ejemplo se tardaría más tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C.
Mientras se programa la aplicación, sistema, o software en general, se realizan también tareas de depuración, esto es la labor de ir liberando al código de los errores factibles de ser hallados en esta fase (de semántica, sintáctica y lógica). Hay una suerte de solapamiento con la fase siguiente, ya que para depurar la lógica es necesario realizar pruebas unitarias, normalmente con datos de prueba; claro es que no todos los errores serán encontrados sólo en la etapa de programación, habrán otros que se encontrarán durante las etapas subsiguientes. La aparición de algún error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de diseño antes de continuar la codificación.
Durante la fase de programación, el código puede adoptar varios estados, dependiendo de la forma de trabajo y del lenguaje elegido, a saber:
  • Código fuente: es el escrito directamente por los programadores en editores de texto, lo cual genera el programa. Contiene el conjunto de instrucciones codificadas en algún lenguaje de alto nivel. Puede estar distribuido en paquetes, procedimientos, bibliotecas fuente, etc.
  • Código objeto: es el código binario o intermedio resultante de procesar con un compilador el código fuente. Consiste en una traducción completa y de una sola vez de éste último. El código objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora. Se trata de una representación intermedia entre el código fuente y el código ejecutable, a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequeño intérprete intermedio [a modo de distintos ejemplos véase EUPHORIA, (intérprete intermedio), FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (intérprete) y BASIC (intérprete puro, intérprete intermedio, compilador intermedio o compilador puro, depende de la versión utilizada)].
    • El código objeto no existe si el programador trabaja con un lenguaje a modo de intérprete puro, en este caso el mismo intérprete se encarga de traducir y ejecutar línea por línea el código fuente (de acuerdo al flujo del programa), en tiempo de ejecución. En este caso tampoco existe el o los archivos de código ejecutable. Una desventaja de esta modalidad es que la ejecución del programa o sistema es un poco más lenta que si se hiciera con un intérprete intermedio, y bastante más lenta que si existe el o los archivos de código ejecutable. Es decir no favorece el rendimiento en velocidad de ejecución. Pero una gran ventaja de la modalidad intérprete puro, es que el esta forma de trabajo facilita enormemente la tarea de depuración del código fuente (frente a la alternativa de hacerlo con un compilador puro). Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programación elegido lo permite), es decir inicialmente trabajar a modo de intérprete puro, y una vez depurado el código fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el código ejecutable completo, con lo cual se agiliza la depuración y la velocidad de ejecución se optimiza.
  • Código ejecutable: Es el código binario resultado de enlazar uno o más fragmentos de código objeto con las rutinas y bibliotecas necesarias. Constituye uno o más archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente también parte en una memoria virtual), y proceder a su ejecución directa. Por lo anterior se dice que el código ejecutable es directamente «inteligible por la computadora». El código ejecutable, también conocido como código máquina, no existe si se programa con modalidad de «intérprete puro».





Todo sobre Hardware

Hardware

El término hardware (pronunciación AFI: [ˈhɑːdˌwɛə] ó [ˈhɑɹdˌwɛɚ]) se refiere a todas las partes tangibles de un sistema informático; sus componentes son: eléctricos, electrónicos, electromecánicos y mecánicos. Son cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado; contrariamente, el soporte lógico es intangible y es llamado software. El término es propio del idioma inglés (literalmente traducido: partes duras), su traducción al español no tiene un significado acorde, por tal motivo se la ha adoptado tal cual es y suena; la Real Academia Española lo define como «Conjunto de los componentes que integran la parte material de una computadora». El término, aunque sea lo más común, no solamente se aplica a las computadoras; del mismo modo, también un robot, un teléfono móvil, una cámara fotográfica o un reproductor multimedia poseen hardware (y software).
La historia del hardware de computador se puede clasificar en cuatro generaciones, cada una caracterizada por un cambio tecnológico de importancia. Una primera delimitación podría hacerse entre hardware básico, el estrictamente necesario para el funcionamiento normal del equipo, y complementario, el que realiza funciones específicas.
Un sistema informático se compone de una unidad central de procesamiento (UCP/CPU), encargada de procesar los datos, uno o varios periféricos de entrada, los que permiten el ingreso de la información y uno o varios periféricos de salida, los que posibilitan dar salida (normalmente en forma visual o auditiva) a los datos procesados.




Hardware típico de una computadora personal.
1. Monitor
2. Placa base
3. CPU
4. Memoria RAM
5. Tarjeta de expansión
6. Fuente de alimentación
7. Unidad de disco óptico
8. Disco duro, Unidad de estado sólido
9. Teclado
10. Ratón/Mouse


Historia

La clasificación evolutiva del hardware del computador electrónico está dividida en generaciones, donde cada una supone un cambio tecnológico muy notable. El origen de las primeras es sencillo de establecer, ya que en ellas el hardware fue sufriendo cambios radicales. Los componentes esenciales que constituyen la electrónica del computador fueron totalmente reemplazados en las primeras tres generaciones, originando cambios que resultaron trascendentales. En las últimas décadas es más difícil distinguir las nuevas generaciones, ya que los cambios han sido graduales y existe cierta continuidad en las tecnologías usadas. En principio, se pueden distinguir:
  • 1ª Generación (1945-1956): electrónica implementada con tubos de vacío. Fueron las primeras máquinas que desplazaron los componentes electromecánicos (relés).
  • 2ª Generación (1957-1963): electrónica desarrollada con transistores. La lógica discreta era muy parecida a la anterior, pero la implementación resultó mucho más pequeña, reduciendo, entre otros factores, el tamaño de un computador en notable escala.
  • 3ª Generación (1964-hoy): electrónica basada en circuitos integrados. Esta tecnología permitió integrar cientos de transistores y otros componentes electrónicos en un único circuito integrado impreso en una pastilla de silicio. Las computadoras redujeron así considerablemente su costo, consumo y tamaño, incrementándose su capacidad, velocidad y fiabilidad, hasta producir máquinas como las que existen en la actualidad.
  • 4ª Generación (futuro): probablemente se originará cuando los circuitos de silicio, integrados a alta escala, sean reemplazados por un nuevo tipo de material o tecnología.
La aparición del microprocesador marca un hito de relevancia, y para muchos autores constituye el inicio de la cuarta generación. A diferencia de los cambios tecnológicos anteriores, su invención no supuso la desaparición radical de los computadores que no lo utilizaban. Así, aunque el microprocesador 4004 fue lanzado al mercado en 1971, todavía a comienzo de los 80's había computadores, como el PDP-11/44,con lógica carente de microprocesador que continuaban exitosamente en el mercado; es decir, en este caso el desplazamiento ha sido muy gradual.
Otro hito tecnológico usado con frecuencia para definir el inicio de la cuarta generación es la aparición de los circuitos integrados VLSI (Very Large Scale Integration), a principios de los ochenta. Al igual que el microprocesador, no supuso el cambio inmediato y la rápida desaparición de los computadores basados en circuitos integrados en más bajas escalas de integración. Muchos equipos implementados con tecnologías VLSI y MSI (Medium Scale Integration) aún coexistían exitosamente hasta bien entrados los 90.


Clasificación del hardware

Una de las formas de clasificar el hardware es en dos categorías: por un lado, el "básico", que abarca el conjunto de componentes indispensables necesarios para otorgar la funcionalidad mínima a una computadora; y por otro lado, el hardware "complementario", que, como su nombre indica, es el utilizado para realizar funciones específicas (más allá de las básicas), no estrictamente necesarias para el funcionamiento de la computadora.
Así es que: un medio de entrada de datos, la unidad central de procesamiento (C.P.U.), la memoria RAM, un medio de salida de datos y un medio de almacenamiento constituyen el "hardware básico".
Los medios de entrada y salida de datos estrictamente indispensables dependen de la aplicación: desde el punto de vista de un usuario común, se debería disponer, al menos, de un teclado y un monitor para entrada y salida de información, respectivamente; pero ello no implica que no pueda haber una computadora (por ejemplo controlando un proceso) en la que no sea necesario teclado ni monitor; bien puede ingresar información y sacar sus datos procesados, por ejemplo, a través de una placa de adquisición/salida de datos.
Las computadoras son aparatos electrónicos capaces de interpretar y ejecutar instrucciones programadas y almacenadas en su memoria; consisten básicamente en operaciones aritmético-lógicas y de entrada/salida. Se reciben las entradas (datos), se las procesa y almacena (procesamiento), y finalmente se producen las salidas (resultados del procesamiento). Por ende todo sistema informático tiene, al menos, componentes y dispositivos hardware dedicados a alguna de las funciones antedichas; a saber:
  1. Procesamiento: Unidad Central de Proceso o CPU
  2. Almacenamiento: Memorias
  3. Entrada: Periféricos de entrada (E)
  4. Salida: Periféricos de salida (S)
  5. Entrada/Salida: Periféricos mixtos (E/S)
Desde un punto de vista básico y general, un dispositivo de entrada es el que provee el medio para permitir el ingreso de información, datos y programas (lectura); un dispositivo de salida brinda el medio para registrar la información y datos de salida (escritura); la memoria otorga la capacidad de almacenamiento, temporal o permanente (almacenamiento); y la CPU provee la capacidad de cálculo y procesamiento de la información ingresada (transformación).
Un periférico mixto es aquél que puede cumplir funciones tanto de entrada como de salida; el ejemplo más típico es el disco rígido (ya que en él se lee y se graba información y datos).


 



Microcontrolador Motorola 68HC11 y chips de soporte que podrían constituir el hardware de un equipo electrónico industrial.

Hardware gráfico

El hardware gráfico lo constituyen básicamente las tarjetas gráficas. Dichos componentes disponen de su propia memoria y unidad de procesamiento, esta última llamada unidad de procesamiento gráfico (o GPU, siglas en inglés de Graphics Processing Unit). El objetivo básico de la GPU es realizar los cálculos asociados a operaciones gráficas, fundamentalmente en coma flotante, liberando así al procesador principal (CPU) de esa costosa tarea (en tiempo) para que éste pueda efectuar otras funciones en forma más eficiente. Antes de esas tarjetas de vídeo con aceleradores por hardware, era el procesador principal el encargado de construir la imagen mientras la sección de vídeo (sea tarjeta o de la placa base) era simplemente un traductor de las señales binarias a las señales requeridas por el monitor; y buena parte de la memoria principal (RAM) de la computadora también era utilizada para estos fines.
Dentro de ésta categoría no se deben omitir los sistemas gráficos integrados (IGP), presentes mayoritariamente en equipos portátiles o en equipos prefabricados (OEM), los cuales generalmente, a diferencia de las tarjetas gráficas, no disponen de una memoria dedicada, utilizando para su función la memoria principal del sistema. La tendencia en los últimos años es integrar los sistemas gráficos dentro del propio procesador central. Los procesadores gráficos integrados (IGP) generalmente son de un rendimiento y consumo notablemente más bajo que las GPU de las tarjetas gráficas dedicadas, no obstante, son más que suficiente para cubrir las necesidades de la mayoría de los usuarios de un PC.
Actualmente se están empezando a utilizar las tarjetas gráficas con propósitos no exclusivamente gráficos, ya que en potencia de cálculo la GPU es superior, más rápida y eficiente que el procesador para operaciones en coma flotante, por ello se está tratando de aprovecharla para propósitos generales, al concepto, relativamente reciente, se le denomina GPGPU (General-Purpose Computing on Graphics Processing Units).
La Ley de Moore establece que cada 18 a 24 meses la cantidad de transistores que puede contener un circuito integrado se logra duplicar; en el caso de los GPU esta tendencia es bastante más notable, duplicando, o aún más, lo indicado en la ley de Moore.
Desde la década de 1990, la evolución en el procesamiento gráfico ha tenido un crecimiento vertiginoso; las actuales animaciones por computadoras y videojuegos eran impensables veinte años atrás.



 





Reglas de un buen técnico


1. Nunca demuestres miedo o inseguridad: 

Lo peor que puedes hacer, incluso en una situación difícil (como que se esté quemando el equipo en las manos) es demostrar miedo o . Debes estar 100% de lo que haces, cómo lo haces, por qué lo haces y qué podrías provocar. No siempre se puede estar 100% seguro de algo, en dicho caso trata de evitar los procesos peligrosos e irte siempre desde lo más fácil a lo más difícil.

Probablemente durante tu trabajo no sepas hacer algo o no estés seguro de un proceso, incluso en un momento así jamás demuestres inseguridad o miedo. Creo que ha sido una de las claves de mi éxito, lo seguro que me escucho y veo al hacer algo (así no tenga la menor idea en lo que me estoy metiendo), todo es parte de la experiencia.

2. Aprende a desarmar, armar y reparar impresoras:

El aprender a reparar impresoras te enseña 4 cosas fundamentales:
# Encontrar la forma exacta de desarmar un componente sin llegar a partirlo o partir una pieza.
# Tener paciencia al desarmar algo, no siempre puedes desbaratarlo en el tiempo que quieres.
# Si algo se parte (una pieza plástica) sabrás usar acrílico y un rotomatic para rehacer la pieza partida.
# Aprendes que todas las piezas de todos los componentes encajan en un solo lugar y sueles encontrar ese lugar de manera rápida.

Cuando aprendes a desarmar impresoras aprendes a desarmar prácticamente cualquier cosa que se te cruce en frente, sin dañar el aparato por su puesto .

3. Aprende sobre distintos sistemas operativos:

No tienes que ser un experto en uno o varios sistemas, si así fuese el caso trabaja como asesor de seguridad en una empresa propia, ganarás más . La idea es saber un poco o más allá sobre distintos sistemas operativos, quedarte conociendo solo Windows sería algo muy pobre.

4. Sé sincero, pero no digas toda la verdad:

En el juego del cliente - técnico debes ser sincero, pero no revelar absolutamente toda la verdad ya que el usuario no la necesita a menos que la pregunte, por ejemplo, si le quitaste un Trojano al pc del cliente no le vas a decir:


“Señor(a) su computador tenía un Trojano, el cual abre puertas traseras en su pc, a su vez éste logró descargarse un Rootkit, infectó su sistema y causó algunos daños, un atacante pudo controlar todo el computador de manera remota. Lo quité ejecutándo HijackThis, eliminando las entradas maliciosas…..”


Eso no lo necesita saber el cliente, le enredarás la cabeza, te mirará con cara de “ok, pero quedó bien?” “ajá… a mi no me importa, se salvaron los datos?” “este está fumado”. Algo más corto, sincero pero sin revelar toda la verdad es así:

“Su computador tenía un Trojano, seguramente por descargar algún programa infectado, aceptar algo desde MSN o por navegar en una página infectada. Al final me costó mucho quitarlo pero parece estar todo mejor, trate de no aceptar cosas extrañas de MSN….”




5. Aprende de electrónica:


Un computador no es solo Windows como tampoco es solo panel de control. No puedes llamarte técnico si no sabes por lo menos lo básico de electrónica, tomando en cuenta que la mayoría de los componentes del computador son electrónicos ¿Cómo puedes llamarte técnico si no sabes reparar ninguno de esos componentes?. Amigo, recuerda, no es solo saber instalar windows, programas, descargar música, saber desarmar un pc y ya .

6. Aprende sobre las redes:


No puedes ser buen técnico si no sabes hacer una red, las reglas, los lineamientos, el orden, topología, componentes….. Recuerda, no todo es WIndows, panel de control, mozilla y Messenger, existe un más allá.

7. Manten la calma, nunca entres en pánico:

Yo he tenido muchas experiencias malas que me han enseñado a mantener la calma siempre. Solía sucederme que luego de hacerle mantenimiento a un pc no encendía más… en aquel tiempo cuando me sucedía eso me ponía pálido y sudaba frío, era bastante incómodo. Imagino que más de uno habrá pensado que o le dañé el pc o no sabía lo que hacía.

Lo cierto es que era un grave error el entrar en pánico, temblaba y demás. Procura no asustar al cliente, si no enciende el pc verificala nuevamente, aprieta los cables e intenta de nuevo, si lo haces sin verte nervioso el cliente ni se dará cuenta que el computador se está quemando y no se preocupará.

8. Métele miedo al cliente:

A esto me refiero a que adviertas al cliente de las cosas que podrían suceder si hace algo, tal vez exagerando un poco. Por ejemplo, mucha gente no tiene una emulación a tierra en el toma corriente lo cual es peligroso pero no quiere decir que se va a dañar su computador en 1 hora.

Para que el cliente haga caso de colocarle tierra al toma suelo decirles que se les puede quemar el disco duro y perder todos sus datos sin posibilidad de recuperación; realmente esto no es falso, podría pasar, pero tampoco es sumamente común. En muchos casos los datos se pueden salvar y como podrán imaginarse, el disco no se quema pero si sufre daños.

Advertirle al cliente de manera exagerada les hace entender que deben ser responsables, creeme, te lo agradecerán .

9. Instala lo básico:


Luego de lidiar con muchos casos me ha llegado a pasar muchas veces que llego a la casa de un cliente y me dice “envié el computador la semana pasada a donde un técnico y me dejó la máquina lenta, ese técnico es malo no lo llamaré más”. Cuando reviso el computador me encuentro con 2 antivirus, miles de barras en el explorador, un firewall, un antispyware, un tema personalizado transparente… etc, etc, etc…. Probablemente el técnico no sea malo pero comete un error al instalar todo ese conjunto de programas sin preguntarle al usuario primero.

El cliente es un contador que usa solo excel y le interesa que excel y a lo mucho MSN abran rápido. Le pregunto qué le gusta de los programas y qué no, normalmente a ese tipo de clientes no le gusta un sistema tan personalizado; les molesta. Quito todo lo innecesario (barras, colores, transparencias, uno de los antivirus) y dejo lo que “me pareca conveniente”.

10. No dejes que nadie le ponga precio a tu trabajo.


Debe ser por mi fomar de hablarle al cliente o no se por qué (la forma de tratarlos la gana con la experiencia), pero solo 1 vez en mi vida y cuando recien comenzaba me dijeron algo como “pero el otro técnico me cobra menos, deberías cobrar igual”

A parte de ser una falta de respeto hacia ti es desvalorar tu trabajo. Que NADIE llegue a valorar tu trabajo porque eso lo debes hacer tu y solo tu. Si quieres cobrar 100 dolares por un mantenimiento (algo un poco caro para mi país) puedes hacerlo siempre y cuando:
# Le adviertas al cliente del precio antes de realizar el trabajo.
# Realices un trabajo impecable y digno del precio.
# Entregues una factura y con ella, una garantía limitada de X número de días.
# Buena atención.

En base a eso y alguna otra cosa que quieras agregar tu sacas el precio de tu trabajo, sea mucho o poco el cliente pagará cualquier precio si es un trabajo bien hecho (sino preparate para la maldición de Tutankamon que te echará el cliente por estafarlo).

Recuerda, nadie va a valorar lo que haces, solo tu.

11. El cliente siempre tiene la razón.

Digas lo que digas, patalees lo que patalees, el cliente siempre tiene la razón. Si el cliente dice que antes tenía Norton como antivirus, que es el mejor y que no le gustan los otros… amigo, instalale norton o tendrás problemas.

Si el cliente dice que antes de formatear su multifuncional imprimía de tal o cual forma y ahora no, busca las 1000 formas de hacer que haga lo que hacía antes porque… El cliente siempre tiene la razón..

12. Busca siempre nuevas soluciones a problemas cotidianos.

Una de las mejores cosas que puedes hacer en tus ratos libres es buscar nuevas soluciones a problemas comunes que se te presentan con los clientes y sus computadores, si logras conseguir las soluciones apropiadas ellos te lo agradecerán.
Estos son los 12 consejos que da un humilde servidor que ha reparado computadores por relativo poco tiempo (desde los 12 años y actualmente tengo 20 años), ha pasado las de Caín, ha desarmado, armado y arreglado miles de componentes de computadores, muchos especiales otros no tanto y que ha tratado con muchos tipos de clientes; desde los que quieren pasarte por encima hasta los que no dejan de joderte hasta que todo quede como estaba.

Presentacion

Esta página se dedicará exclusivamente en los conociemientos de los pasos o las reglas de como ser un buen técnico en reparaciones/ensamblajes de un ordenador:



Temas a desarrollar:

-Reglas de un buen técnico.

-Todo sobre Hardware.

-Todo sobre Software.

-Utilitarios.

-Mantenimiento correctivo y preventivo.

-Instalación y configuración de un ordenador.

-Redes inalámbricas.

-Como marquetear mi profesión.

-Otros.