Computación para Ingenieros

Anuncio
Tema III. Software operativo y
de desarrollo
Objetivo: El alumno conocerá y entenderá la evolución y la situación
actual que éste presenta. Asimismo distinguirá los diferentes tipos de
programas (software) necesarios tanto para operar la máquina como para
realizar desarrollos y aunado a esto tendrá las bases para seleccionar
aquel software que le permita resolver un problema.
3.1 Evolución del software y su situación actual
Software
Es la estructura lógica de una computadora,
todo lo intangible, es decir, son los
programas
de
aplicación,
sistemas
operativos que no son tangibles para el
usuario.
(Voz ingl.). 1. m. Inform. Conjunto de programas,
instrucciones y reglas informáticas para ejecutar
ciertas tareas en una computadora.
Diccionario de la Real Academia de la Lengua Española.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Clasificación
Según su función
 Software de base
 Software aplicativos
 Por su uso o estandarización
 El software aplicativo
 El software a la medida
 El software de acuerdo al cliente
 Libre y propietario
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Software de Base
Software básico que controla una computadora.
El sistema operativo tiene tres grandes funciones:
•Coordina
•Manipula
•Organiza los archivos
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Sistema Operativo
Los sistemas operativos controlan diferentes procesos de la
computadora. Un proceso importante es la interpretación de los
comandos que permiten al usuario comunicarse con la computadora.
Algunos intérpretes de instrucciones están basados en texto y exigen que
las instrucciones sean tecleadas. Otros están basados en gráficos, y
permiten al usuario comunicarse señalando y haciendo clic en un icono.
Por lo general, los intérpretes basados en gráficos son más sencillos de
utilizar.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Evolución
Sistemas por Lotes
Estos sistemas se diseñaron en la década de 1950 para controlar
las computadoras mainframe. Cada programa a ejecutarse se
llamaba tarea. Un programador que deseaba ejecutar una tarea
enviaba una solicitud a la sala de operaciones junto con tarjetas
perforadas para el programa y los datos. El programador no tenía
ningún control o interacción con el sistema. Un operador
procesaba las tarjetas perforadas. Si el programa era satisfactorio,
el resultado se enviaba al programador , de lo contrario, se
enviaba un listado de error.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Tarjeta Perforada
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Evolución
Sistemas de Tiempo Compartido
Para utilizar los recursos del sistema de computación eficientemente, se introdujo la
multiprogramación. La idea es mantener varias tareas en memoria y sólo asignar un
recurso a una tarea que lo necesite con la condición de que el recurso está disponible.
La multiprogramación trajo la idea del tiempo compartido. Estas dos características
mejoraron en gran medida la eficiencia de un sistema de computación. No obstante,
ésta requería un sistema operativo más complejo. El sistema operativo ahora tenía que
hacer una planificación: asignación de los recursos a los distintos programas y decidir
cuál programa debería utilizar cuál recurso y cuándo. Durante esta época, la relación
entre una computadora y un usuario también cambió. El usuario podía interactuar
directamente con el sistema sin pasar por el operador. Un nuevo término también se
acuñó: proceso. Una tarea es un programa a ejecutar; un proceso es un programa que
está en la memoria en espera de recursos.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Evolución
Sistemas personales
Cuando las computadoras personales se introdujeron, había una
necesidad de un sistema operativo de este tipo de computadora.
Durante esta época, se introdujeron los sistemas operativos
monousuario tales como DOS (Disk Operating System)
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Sistemas paralelos
La necesidad de una mayor velocidad y eficiencia condujo al diseño
de los sistemas paralelos: varios CPU en la misma máquina. Cada
CPU podía utilizarse para servir a un programa o a una parte de un
programa, lo cual significa que muchas tareas pueden lograrse en
paralelo en vez de en forma serial. El sistema operativo para estos
sistemas es más complejo que en aquellos con un solo CPU.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Sistema de Procesamiento Paralelo
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Sistemas Distribuidos
Una tarea realizada previamente por completo en una computadora
ahora podía compartirse entre computadoras que podían estar a
miles de kilómetros de distancia. Un programa puede ejecutarse
parcialmente en una computadora y parcialmente en otra si éstas
están conectadas mediante un conjunto de redes interconectadas
como Internet. Además, los recursos pueden distribuirse. Un
programa puede necesitar archivos localizados en distintas partes
del mundo.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Sistema
Operativo
Interfaz de
usuario
Administrador
de memoria
Administrador
de procesos
Administrador
de dispositivos
Administrador
de archivos
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Ejemplos de Sistemas Operativos
MS-DOS
Windows
Linux
Unix
BSD
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
MS-DOS
•Apareció en los años 70’s
• No es multiusuario o multitarea
• Se regía por medio de comandos
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Windows
Aparición el 20 de noviembre de 1985
Dispone de una interfaz gráfica que facilita el manejo de los
procedimientos: cada comando puede ser visualizado en una
pantalla mediante una imagen que lo representa.
Mayor difusión en el mercado actual, y su imponente
popularidad se torna elemento indispensable para la inserción de
todo nuevo usuario informático.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
LINUX
•Aparición en 1991.
•Creado por Linus Torvalds
•Sistema informático libre, gratuito
y de código fuente abierto.
•Flexibilidad de configuración
•Estabilidad
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
XFCE
LOOKINGLASS
GNOME
ICEWM
ENLIGHTENMENT
KDE
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Personajes que ya hicieron historia
Richard Stallman
Licencia GNU
Dennis Ritchie
Unix
Robert Pike
Linus Torvalds
Linux
Bryan Kerniganh
Dos
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
¿Qué es LINUX?
Linux es el núcleo de un sistema
operativo libre, desarrollado y lanzado
al mundo por Linus Benedict Torvalds en
1991.
Torvalds eligió distribuir Linux con una
licencia de software de código libre
denominada GNU General Public
License (GPL).
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Uno de los primeros conceptos que aparecen al iniciarse en Linux es
el concepto de distribución.
Una distribución es un agrupamiento del núcleo del sistema
operativo Linux (la parte desarrollada por Linus Torvalds) y otra serie
de aplicaciones de uso general o no tan general. En principio las
empresas que desarrollan las distribuciones de Linux están en su
derecho al cobrar una cierta cantidad por el software que ofrecen,
aunque en la mayor parte de las ocasiones se pueden conseguir
estas distribuciones desde Internet, de revistas o de amigos, siendo
todas estas formas gratuitas y legales.
Ing. Tanya Arteaga Ricci
Ing. Tanya I. Arteaga Ricci | F.I. 2009 (R)
3.2 Software de base: sistemas operativos, lenguajes y traductores
Richard Matthew Stallman
Fundador del proyecto GNU
Creador Emacs
Compilador GCC
Creador de las licencias GNU:
GPL, LGPL
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Libertades del Software Libre
Libertad 0: la libertad de usar el
programa, con cualquier propósito.
Libertad 1: la libertad de estudiar cómo
funciona el programa, y adaptarlo a tus
necesidades.
Libertad 2: la libertad de distribuir copias,
con lo que puedes ayudar a tu vecino.
Libertad 3: la libertad de mejorar el
programa y hacer públicas las mejoras a
los demás, de modo que toda la
comunidad se beneficie.
WWW
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Núcleo y lo demás…
Software
Drivers
Colores
Kernel
Shell
Vi
Modo
gráfico
Hardware
gcc
http://bellard.org/jslinux/
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
UNIX
• Principios de los años setentas.
• Creado por Ken Thompson y Dennis
Ritchie.
• Capacidad de soportar
Multiprogramación.
• Capacidad de tiempo compartido.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
BSD
• Berkeley Software Distribution.
• En 1977 Bill Joy, entonces un estudiante
de grado en Berkeley, grabó y envió cintas
del primer BSD.
• Nacido a partir de los aportes realizados a
ese sistema por la Universidad de
California en Berkeley.
• Manejo de memoria virtual paginado por
demanda.
• Control de trabajos.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Ciclo de Vida del Software
El software primero se desarrolla por un
grupo de desarrolladores/programadores. Por
lo general, está en uso durante algún tiempo
antes de que se requiera hacerle
modificaciones. Las modificaciones a menudo
son necesarias debido a errores encontrados
en el software, a cambios en las normas o
leyes, o a cambios en la compañía misma. El
software debe modificarse antes para su uso
posterior. Estos dos pasos, usar y modificar,
continúan hasta que el software se vuelve
obsoleto.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Desarrollo del Sistema
Análisis
Diseño
Imple –
menta –
ción
Pruebas
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Fase de Análisis
El proceso de desarrollo comienza con
la fase de análisis, la cual muestra qué
debe hacer el paquete. En esta fase, el
analista de sistemas define los requisitos
que especifican lo que el sistema
propuesto va a lograr.
Los requisitos por lo general se
establecen en los términos que el
usuario comprende.
Definición
del Usuario
Definición de las
necesidades
Definición de
los requisitos
Definición de
los métodos
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Fase de Análisis
Para poder identificar y definir bien un problema es conveniente
responder a las siguientes preguntas:
 ¿Qué entradas se requieren?
Tipo de datos con los cuales se trabaja y cantidad
 ¿Cuál es la salida deseada?
Tipo de datos de los resultados y cantidad
 ¿Qué método produce la salida deseada?
 Requisitos o requerimientos adicionales y restricciones a la
solución.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Fase de Diseño
La fase de diseño define cómo
logrará el sistema lo que se definió
en la fase de análisis. En la fase de
diseño, se determinan los sistemas y
Se
ayuda
de
dos
características en esta etapa:
Modularidad
el diseño de archivos y/o bases de
datos se completa.
Herramientas
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Fase de
Implementación
Herramientas
En la fase de
implementación se
crean los problemas
reales.
Codificación
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Fase de Prueba
Una vez que los programas se han
escrito, deben probarse. La fase de
prueba puede ser muy tediosa y
consumir parte del tiempo de desarrollo
del programa. Los programadores son
completamente responsables de probar
sus programas. En los proyectos de
desarrollo grandes, con frecuencia hay
especialistas llamados Ingenieros de
Pruebas quienes son responsables de
probar el sistema como un todo.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Calidad de Software
“La calidad del software es el grado con el que un sistema,
componente o proceso cumple los requerimientos especificados y las
necesidades o expectativas del cliente o usuario”. (IEEE, std. 6101990).
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Calidad de Software
Software
que
satisface
los
requerimientos
explícitos
e
implícitos del usuario, está bien
documentado, cumple con las
normas
operativas
de
la
organización y se ejecuta de
manera eficiente en el hardware
para el cual se desarrolló.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Calidad del Software
Operabilidad
Eficiencia
Fiabilidad
Facilidad de uso Pertinencia
Precisión
Seguridad
Capacidad de
mantenimiento
Capacidad de
transferencia
Capacidad de
corrección
Interoperabilidad
Capacidad de pruebas
Flexibilidad
Variabilidad
Portabilidad
Reutilización del
código
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Lenguaje de programación
Cualquier lenguaje artificial que puede utilizarse para definir una
secuencia de instrucciones para su procesamiento por una
computadora.
Conjunto de normas «lingüísticas» que
permiten escribir un programa y que éste sea
entendido por la computadora y pueda ser
trasladado a computadoras similares para
su funcionamiento en otros sistemas.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Lenguaje de bajo nivel
Lenguaje de programación que la
computadora puede entender a la
hora de ejecutar programas, lo que
aumenta su velocidad de ejecución,
pues no necesita un intérprete que
traduzca cada línea de instrucciones.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Lenguaje Ensamblador
M:
DATO:
INICIO:
EQU $00
EQU $01
ORG $100
LDY #$1000
LDS #$03FF
LDAA #$00
LDAB DATO,Y
LDX #$000A
IDIV
;CARGAR EN A EL DATO CERO
;EL ENTERO SE QUEDA EN IX Y EL RESIDUO EN
D
XGDX
LDAA #$06
MUL
STAA M,Y
;D TIENE LA PARTE ENTERA E IX EL RESIDUO
; EL RESIDUO QUEDA EN D
;CARGO EN MEMORIA EL DATO QUE SE QUIERE
PASAR A DECIMAL
FIN:
SUMA:
ADDD M,Y
XGDX
LDAA DATO,Y
CMPA #$64
BHS SUMA
XGDX
STD $18,Y
END
BRA INICIO
LDAB #$C0
ABX
STX $18,Y
BRA FIN
;TENEMOS EL RESULTADO EN D
;CAMBIA EL DATO DE D A IX
;HACE LA OPERACION DATO-64
;SI DATO >= 64, BRINCA
;CAMBIO IX A D
;RESULTADO PARA NUMEROS MENORES DE 64H
;SE HACE LA SUMA DE AJUSTE MAYOR A 64H
;DATO EN DECIMAL
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Lenguaje de alto nivel
Lenguaje de programación en el que las instrucciones enviadas para
que la PC ejecute ciertas órdenes son similares al lenguaje humano.
Dado que la PC no es capaz de reconocer estas órdenes, es necesario
el uso de un intérprete que traduzca el lenguaje de alto nivel a un
lenguaje de bajo nivel que el sistema pueda entender.
#include <stdio.h>
main( ){
printf (“%f”,42/2);
}
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
C
C++
Java
VB
.NET
ASP
PERL
PHP
Delphi
…
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Compilador
Un compilador es un programa que permite traducir el código
fuente de un programa en lenguaje de alto nivel, a otro
lenguaje de nivel inferior (típicamente lenguaje de máquina).
De esta manera un programador puede diseñar un programa
en un lenguaje mucho más cercano a como piensa un ser
humano, para luego compilarlo a un programa más
manejable por una computadora.
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Creando un programa en C
hola.obj
hola.c
compilador
#include <stdio.h>
main()
{
printf(“hola mundo”);
}
0101010101010
101
1010111010111
0110
1010010011100
010
0101010101010
101
0101010101010
100
hola.exe
enlazador
0101010101010
101
1010111010111
0110
1010010011100
010
0101010101010
101
0101010101010
100
Compilación
Ing. Tanya Arteaga Ricci
3.2 Software de base: sistemas operativos, lenguajes y traductores
Intérprete
Es un programa capaz de analizar y ejecutar
programas escritos en un lenguaje de alto nivel.
Los intérpretes se diferencian de los compiladores en
que los primeros sólo realizan la traducción a medida
que sea necesaria, típicamente, instrucción por
instrucción y normalmente no guardan el resultado de
dicha traducción.
Ing. Tanya Arteaga Ricci
Compilados VS
Interpretados
3.2 Software de base: sistemas operativos, lenguajes y traductores
Lenguaje
Compilado/interpretado
ADA
Lenguaje compilado
BASIC
Lenguaje interpretado
C
Lenguaje compilado
C++
Lenguaje compilado
Cobol
Lenguaje compilado
Fortran
Lenguaje compilado
Java
Lenguaje intermediario
MATLAB
Lenguaje interpretado
LISP
Lenguaje intermediario
Pascal
Lenguaje compilado
PHP
Lenguaje interpretado
Perl
Lenguaje interpretado
Ing. Tanya Arteaga Ricci
3.3 Software aplicativo: a la medida y de propósito general
Software Aplicativo
Programa informático diseñado para facilitar al usuario la realización
de un determinado tipo de trabajo.
Posee ciertas características que le diferencia de un S.O., como por
ejemplo, suele resultar una solución informática para la
automatización de ciertas tareas complicadas como puede ser la
contabilidad o la gestión de un almacén.
Ing. Tanya Arteaga Ricci
3.3 Software aplicativo: a la medida y de propósito general
Software a la medida
Son
ciertas
aplicaciones
desarrolladas ‘a medida’ que
ofrecen una gran potencia, ya
que,
están
exclusivamente
diseñadas para resolver un
problema en específico.
Ing. Tanya Arteaga Ricci
3.3 Software aplicativo: a la medida y de propósito general
Software de propósito general
Son paquetes integrados de
aplicaciones, como por ejemplo:
software
que
incluyen
varias
•Procesadores de Texto
•Hoja de Cálculo
•Base de datos
Ir a Tema IV
Ing. Tanya Arteaga Ricci
Descargar