Download UT01. Entornos de Desarrollo. Desarrollo de software

Document related concepts
Transcript
ENTORNOS DE
DESARROLLO
UD1. Conceptos básicos
Índice
Conceptos de programa informático, aplicación
informática y lenguajes de programación
Tipos de lenguajes de programación
Características de lenguajes
Obtención Código Ejecutable
Fases del desarrollo
Roles que interactúan en el desarrollo
Conceptos fundamentales


Software: Conjunto de programas elaborados por el hombre, que
controlan la actuación de la computadora, haciendo que ésta siga en sus
acciones una serie de pasos lógicos predeterminados.
Software intermediario entre hardware y hombre
Conceptos fundamentales

Ejercicio: Clasifica las distintas aplicaciones en los tipos de software vistos
anteriormente:

Linux

Accesorios de Windows

NetBeans

Excel

Clic

Java

Símbolo de Sistema

AutoCad

Windows XP
Concepto de programa
Un sistema informático puede operar según las
instrucciones de un programa almacenado.
“Un programa informático es un conjunto de
instrucciones escritas en un lenguaje de
programación, que aplicadas sobre un conjunto de
datos resuelven un problema o parte del mismo.”
Programa y componentes del sistema
informático

Para ejecutar un programa se necesita:



CPU (repite un ciclo de instrucción hasta terminar un programa)
Memoria RAM (o memoria principal, almacena las instrucciones y los datos que se están
procesando)
Los dispositivos de Entrada y Salida (permiten la introducir los programas a la RAM,
almacenar los programas de manera permanente – disco duro-
Las instrucciones de un programa entran en el sistema a través de la Entrada/Salida (por
ejemplo, disco duro o pen-drive) se cargan en memoria principal y la CPU será la
encargada de ejecutarlas.
Se distinguen las fases principales:
Fase de búsqueda de instrucción: Localizar una instrucción de la RAM y llevarla a la CPU
Fase de decodificación: Se averigua qué acciones se deben realizar con dicha instrucción.
Fase de ejecución de instrucción: se ordena la realización de las acciones que llevan
asociadas las instrucciones.
Programa y componentes del sistema
informático





Tipos de instrucciones:
Instrucciones de transferencia de datos: permiten mover datos e
instrucciones de un lugar a otro del sistema. Se les debe indicar
origen y destino.
Instrucciones aritmético-lógicas: son las operaciones básicas,
aritméticas (suma, resta, multiplicación, división) y lógicas (AND, OR,
NOT). Están basadas en el álgebra de Boole.
Instrucciones de control de flujo: aunque por norma general las
instrucciones se ejecutan de forma secuencial, una tras otra, a veces
según ciertas condiciones se producen saltos, bien para repetir
varias veces las mismas instrucciones o para saltarse una parte.
Instrucciones de entrada-salida: necesarias para permitir la
comunicación entre CPU y periféricos.
Programa y componentes del sistema
informático

La mayoría de las instrucciones realizan operaciones sobre uno o
varios operandos, por lo tanto, la propia instrucción debe incluir
alguna forma de localizar dichos operandos. Es lo que se conoce
como modos de direccionamiento, y sin profundizar en este
aspecto, de manera general son estos:




Implícito: No se especifica pero se sabe que es el último valor que se
acaba de calcular.
Inmediato: El valor del operando aparece tal cual en la instrucción.
Directo: En la instrucción aparece una dirección de memoria que
contiene al operando.
Indirecto: La instrucción contiene una dirección de memoria que contiene
la verdadera dirección del operando.
Unidades sistema informático
Ejecución de un programa

¿Qué valores habrá en las posiciones de memoria
13,14 y 15?
Conceptos fundamentales


Algoritmo: es la forma de resolver un problema, los pasos a seguir para
resolver un problema estándar.
Algoritmo para averiguar si un año es
bisiesto
Conceptos fundamentales

Lenguaje de programación: es un lenguaje diseñado para describir el
conjunto de acciones consecutivas que un equipo debe ejecutar.
Tipos de lenguajes de programación

Nivel de abstracción:
Bajo Nivel: Lenguaje ensamblador
 Medio Nivel: C
 Alto Nivel: Java, Ruby


Propósito:
Propósito general: C
 Propósito específico: Csound (composición de música)
 Programación de sistemas: C
 Scripts: JavaScripts, bash,

Tipos de lenguajes de programación

Evolución Histórica:
 1GL:
Código máquina
 2GL: Lenguaje ensamblador
 3GL: C, Java, etc
 4GL: Mathematica, SQL, etc
 5GL: Prolog

Manera de ejecutarse:
 Compilados
 Interpretados
 Mixtos
Tipos de lenguajes de programación

Manera de abordar la tarea a realizar:



Paradigma de programación





Imperativo: Cómo hay que realizar la tarea. C
Declarativo: Qué hay que hacer. Prolog
Procedural: C, Pascal
Orientada a objetos: Java, python, C#
Funcional: Evaluando funciones recursivamente. Lisp, Scala,Matlab
Programación lógica: Expresa que computar desde la lógica matemática.
Prolog
Lugar de ejecución


Cliente: Javascript
Servidor: PHP
Características de lenguajes más
difundidos
Características de lenguajes más
difundidos

BASIC: Para comenzar a aprender a programar
Características de lenguajes más
difundidos

COBOL: Negocios  Crear Software Gestión para
manejar grandes cantidades de datos
Características de lenguajes más
difundidos

FORTRAN: Ingeniería, operaciones matemáticas, …
Características de lenguajes más
difundidos

Ensamblador: Cercano al código máquina (MOVE, ADD,
JUMP)
Características de lenguajes más
difundidos

C: Fácil de aprender, permite control ordenador,
transportable gracias a ANSI C
Características de lenguajes más
difundidos

C++: Desarrollo a partir de C++, permite POO (uso en
proyectos de mayor envergadura)
vídeo (Dennis Ritchie
explicando el S.O. unix
y su programación)
Características de lenguajes más
difundidos

Java
Características de lenguajes más
difundidos

PHP: Lenguaje de programación para desarrollo de
páginas webs
Características de lenguajes más
difundidos

Python: Lenguaje de programación de alto nivel. Sintaxis
limpia. Multiparadigma
Características de lenguajes más
difundidos

Ejercicio:
Investiga programas que estén realizados con el lenguaje
Python
 Encuentra ofertas de trabajo relacionadas con dicho
lenguaje
 Importancia de Python en la actualidad

Lenguajes Ciclo DAM
Primero
• SQL
• JAVA
• bash
Segundo
• Python
• JAVA
• c# .NET
• XML
• SQL
•HTML
•CSS
•JavaScript
Ofertas de Trabajo




Busca ofertas de trabajo relacionadas con nuestro
sector. Establece distintos niveles: nivel local,
provincial, nacional (y si se pudiese, internacional).
¿Que perfiles son los más demandados en cada
nivel?
¿Cuáles son los requisitos que se piden
normalmente?
Conclusiones obtenidas
Obtención del código ejecutable



Código fuente: Programas escritos en un determinado lenguaje de
programación.
Código objeto: Código que resulta de la compilación del código fuente.
Código ejecutable: Código obtenido del proceso de enlazar todos los
archivos de código objeto con un programa llamado enlazador.
Obtención del código ejecutable
 Traductores:
Programas que traducen los
programas en código fuente, escritos en
lenguajes de alto nivel, a programas escritos
en lenguaje máquina
Lenguaje de
Alto Nivel
Traductor
Compilador
=
Intérprete
Lenguaje
Máquina
Obtención del código ejecutable
 Compiladores:
El programa original (fichero
fuente) sólo se traduce una vez, creando un
nuevo archivo (fichero ejecutable) que puede
ejecutarse cuantas veces se desee.
Obtención del código ejecutable
 Intérpretes:
El programa es traducido cada vez
que se va a ejecutar. No producen un código
objeto como los compiladores. Lee el código como
está escrito y lo ejecuta al instante.
Obtención del código ejecutable
 Compilador+Intérprete:
JAVA
Obtención del código ejecutable
 Razona
las ventajas/desventajas de los
compiladores e intérpretes
Obtención del código ejecutable


Depuradores: Es un programa independiente del
editor, el compilador y el enlazador. Suele estar
integrado con los otros tres, de modo que desde el
entorno de programación se puede lanzar cualquiera
de los programas, pero también se puede usar por
separado.
El depurador es una herramienta fundamental para
localizar y corregir los errores en tiempo de
ejecución.
Fases del desarrollo de una aplicación



El desarrollo de un software o de un conjunto de aplicaciones pasa por
diferentes etapas desde que se produce la necesidad de crear un software
hasta que se finaliza y está listo para ser usado por un usuario.
Ciclo de vida del programa
Hay más de un modelo de etapas de desarrollo, vamos a estudiar uno de
los modelos más extendidos y completos, el modelo en cascada
Las fases o etapas son:







Análisis.
Diseño.
Codificación
Pruebas
Documentación
Explotación.
Mantenimiento
Fases del desarrollo de una aplicación





Análisis: En esta fase se establece el producto a
desarrollar
Existir gran comunicación entre el cliente y el analista
 Conocer todas las necesidades que precisa la
aplicación.
Desarrollo de prototipos para saber con más
precisión sus requerimientos.
Es importante que haya una comunicación bilateral,
aunque el cliente puede pretender que la
comunicación sea unilateral, es necesario un contraste
y consenso por ambas partes para llegar a definir
los requisitos verdaderos del software.
Informe ERS (Especificación de Requisitos Software)
Fases del desarrollo de una aplicación




Diseño: En esta fase se alcanza con mayor precisión una
solución optima de la aplicación, teniendo en cuenta los
recursos físicos del sistema (tipo de ordenador, periféricos,
comunicaciones, etc…) y los recursos lógicos. (sistema
operativo, programas de utilidad, bases de datos, etc…)
Se define por lo tanto el entorno que requerirá el sistema,
aunque también se puede establecer en sentido contrario, es
decir, diseñar el sistema en función de los recursos de los que
se dispone.
En la fase de diseño se crearán los diagramas de casos de uso
y de secuencia para definir la funcionalidad del sistema.
Se especificará también el formato de la información de
entrada y salida, las estructuras de datos y la división
modular. Con todo esto se obtiene el denominado cuaderno
de carga.
Fases del desarrollo de una aplicación
Codificación:
 Consiste en traducir los resultados obtenidos a
un determinado lenguaje de programación,
teniendo en cuenta las especificaciones
obtenidas en el cuaderno de carga. Se deben
de realizar las pruebas necesarias para
comprobar la calidad y estabilidad del
programa.
 No se está exento de necesitar un reanálisis o
rediseño al encontrar un problema al programar
el software

Fases del desarrollo de una aplicación



Pruebas
Comprobar la calidad y estabilidad del programa. Por una parte,
la codificación tiene que ser exitosa y el software no debe contener
errores, y por otra parte, el software hace lo que debe hacer.
En general, las pruebas las realiza, personal diferente al que
codificó la aplicación, con una amplia experiencia en programación,
personas capaces de saber en qué condiciones un software puede
fallar de antemano sin un análisis previo.
Pruebas unitarias: Sirven para comprobar que cada módulo realice bien
su tarea.
Pruebas de interconexión: Sirven para comprobar en el programa el buen
funcionamiento en conjunto de todos sus módulos.
Pruebas de integración: Sirven para comprobar el funcionamiento correcto
del conjunto de programas que forman la aplicación. (el funcionamiento de
todo el sistema)
Fases del desarrollo de una aplicación

Documentación





Documentación para el usuario
Documentación técnica
Explotación: En esta fase se realiza la implantación de la
aplicación en el sistema o sistemas físicos donde van a funcionar
habitualmente y su puesta en marcha para comprobar el buen
funcionamiento.
Actividades a tener en cuenta o realizar:
 Instalación del/los programa/s.
 Pruebas de aceptación al nuevo sistema.
 Conversión de la información del antiguo sistema al nuevo (si hay
una aplicación antigua)
 Eliminación del sistema anterior.
Al final de esta fase se debe de completar la información al usuario
respecto al nuevo sistema y su uso.
Fases del desarrollo de una aplicación


Mantenimiento: Esta es la fase que completa el ciclo de vida y en
ella nos encargaremos de solventar los posibles errores o
deficiencias de la aplicación. Existe la posibilidad de que ciertas
aplicaciones necesiten reiniciar el ciclo de vida.
 Mantenimiento correctivo: Consiste en corregir errores no
detectados en pruebas anteriores y que aparezcan con el uso
normal de la aplicación.
 Mantenimiento adaptativo: Consiste en modificar el programa a
causa de cambio de entorno gráfico y lógico en el que estén
implantados.
 Mantenimiento perfectivo: Consiste en una mejora sustancial de
la aplicación al recibir por parte de los usuarios propuestas
sobre nuevas posibilidades y modificaciones de las existentes.
Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo
de vida, debiendo proceder de nuevo al desarrollo de cada una de
sus fases para obtener un nuevo producto.
Roles que interactúan en el desarrollo





Analista de sistemas: Su objetivo consiste en realizar un estudio del
sistema para dirigir el proyecto en una dirección que garantice las
expectativas del cliente determinando el comportamiento del sistema.
Diseñador de software: Realiza, en función del análisis de un software, el
diseño de la solución que hay que desarrollar.
Analista programador: Se suele llamar “desarrollador”, domina una visión
más amplia de la programación, aportando una visión general del
proyecto más detallada, diseñando una solución más amigable para la
codificación y participando activamente en ella.
Programador: Se encarga de manera exclusiva de crear el resultado del
estudio realizado por analistas y diseñadores. Escribe el código fuente del
software.
Arquitecto de software: Cohesiona todo el proceso de desarrollo. Conoce
e investiga los frameworks y tecnologías revisando que todo el
procedimiento se lleva a cabo de la mejor forma y con los recursos más
apropiados.
Ejercicio Ciclos de vida

Investiga sobre los siguientes ciclos de vida: Modelo
Evolutivo, Modelo en Espiral
 Fases
 Ventajas
 Inconvenientes
 Sistemas
en los que se usa
Ruegos y Preguntas