Etapas y ciclos de vida del software
Etapas del ciclo de vida del software
Fase de panificación: se trazan los objetivos y se valoran las necesidades del proyecto en cuestión. Las tareas iniciales consisten en realizar un estudio de viabilidad, analizar los riesgos que puede comportar el proyecto y planificar todas las fases posteriores. A continuación, se documentan en detalle las funcionalidades, características y objetivos que debe cumplir el ciclo de vida del proyecto.
Fase de Análisis: definimos qué funciones ejecutará el software y cuáles son sus características específicas. Este aspecto es clave a la hora de optimizar la asignación de costes y determinar la envergadura del proyecto.
Diseño y estructura del software: estudiaremos las posibles alternativas y estableceremos la estructura de la base de datos, la lógica del flujo de datos y la interfaz de usuario de la aplicación.
Fase de Desarrollo de un Software: Escoger el lenguaje de programación adecuado a nuestro proyecto y disponer de un equipo de programadores expertos es fundamental. Seguir el código de buenas prácticas permitirá que nuestro proyecto sea fácilmente escalable.
Fase de Pruebas: ponemos a prueba los errores que hayan podido aparecer en las etapas anteriores. Es una fase de corrección, eliminación y perfeccionamiento de posibles fallos, no previsto en los pasos previos.
Fase de Mantenimiento: alguna función puede quedar obsoleta, pueden detectarse algunas limitaciones o que aparezcan propuestas que mejoren la estabilidad del proyecto.
Modelo de ciclo de vida de un software
Modelo en cascada: método de gestión que divide un proyecto en distintas fases secuenciales. Todas ellas funcionan de forma lineal, es decir, que cada parte del proyecto se completa antes de empezar con la siguiente. Este modelo es simple y fácil de usar.
Modelo en V: se basa en la gestión de proyectos de forma lineal, pero consta de una fase descendente (Tareas de diseño y desarrollo) y otra ascendente (Control de calidad).
Modelo de prototipos: permite al usuario obtener una visión previa de las principales características del software, debe ser construido en poco tiempo. Una vez testeada por los usuarios, aparecerán necesidades que se habían pasado por alto y esto conlleva a la realización de nuevas versiones hasta que se desarrolle el sistema o producto final.
Modelo en espiral: conjunto de actividades, en la que cada bucle o iteración representa un conjunto. En un primer momento, se definen los objetivos con el fin de empezar con la fase de desarrollo. A continuación, se evalúan las posibles mejoras, finalizando con la fase de mantenimiento.
Modelo de desarrollo incremental: divide sus tareas en iteraciones, trabajando objetivos en pequeños tramos específicos. Estas iteraciones permiten una fácil administración y están sujetas a cambios y modificaciones según las necesidades que puedan ir surgiendo.
Métodos Ágiles
Scrum: trabajar por ciclos o Sprints, exige equipos multidisciplinares donde cada miembro del equipo puede cumplir varias tareas. Consta de una jerarquía de roles, el equipo se reúne diariamente con el fin de aunar criterios y realizar las adaptaciones necesarias.
Kanban: no existen roles de jerarquía, cada miembro del equipo cumple con sus tareas concretas. No se trabaja por Sprints, ya que el flujo de trabajo es continuo. Los equipos están formados por especialistas, eso permite maximizar la eficiencia del proyecto.
3. Introducción a PHP
PHP (Hypertext Preprocessor): es un lenguaje de código abierto muy popular en el desarrollo web porque puede ser incrustado en HTML. Permite dejar espacios en blanco y comenatarios para comprender mejor el código
EDI (entorno de desarrollo intergrado): aplicación de software que ayuda a los programadores a desarrollar código de software de manera eficiente. Combina capacidades como editar, crear, probar y empaquetar software en una aplicación fácil de usar. Algunos se especializan en un solo lenguaje, asi que se recomienda probar varios.
Servidor: aparato informático que almacena, distribuye y suministra información. Se basan en el modelo “cliente-servidor”.
Variable: espacio de memoria que guarda datos que se pueden modificar, en PHP inician con el signo $, distinge minusculas de mayusculas y no pueden tener caracteres especiales. Suelen ser de ambito local.
Variable local:variable que se crea dentro de una función y a las que solo se pueden acceder mediante esa función, son temporales mientras se procesan datos.
Variable global: Variable a la cual se puede acceder desde cualquier parte del código. Se pone la palabra global antes de la variable y se recomienda en mayuscula para reconocer el alcance.
Variable estatica: variable local dentro de una función que mantiene el valor la proxima vez que se llame.
Variables superglobales: variables predefinidas que son proporcionadas por el entorno de PHP y accesibles desde todas partes. Se nombran con un guin bajo inicial y van en mayusculas. Los hackers las suelen usar para encontrar vulnerabilidades en los sitios web asi que se deben desinfectar.
Índice: punteros de los elementos dentro de una matriz, comienzan en cero y se llaman con [].
Operadores: permiten especificar operaciones matemáticas, lógicas y comparaciones.
Concatenar: permite poner algo despues de otra cosa, las cadenas se concatenan con punto intermedio.
Debil tipado: PHP no requiere que la variable se declare antes de utilizarla, la variable asume el tipo requerido por el contexto.
Constante: espacio de memoria que guarda un dato que no se puede cambiar en el resto del programa, suelen ir en mayusculas y no preceden de $.
Constantes predefinidas: PHP viene preparado con docenas de constantes que no se suelen usar al principio pero son muy utiles.
Función: contiene secciones de código que realizan una tarea concreta, simplifican el programa y lo hacen más legible.
Script: .
Sintaxis básica
echo (constructor que envia texto desde el servidor hasta el navegador) print (constructor parecido a una función, admite un paremetro y tiene un valor de retorno, se una en expresiones complejas) ; (cierra cada comando) ? (pregunta si la variable es TRUE o FALSE) $b ? print "TRUE" : print "FALSE"; echo "Hola"; (imprime lo que va dentro de las comillas) parse error (error común de sintaxis) // (comentario de una linea) /* */ (comentario de varias lineas) $ (va delante de las variables) $username = "Fred"; (guarda lo que esta entre comillas, ya sea string, entero, flotante) echo $username; (llama el contenido de la variable) $current_user = $username (asigna el contenido a otra variable) array(); (constructor de array) $team = array('Bill', 'Mary', 'Mike', 'Chris', 'Anne'); (array con cinco datos tipo string) echo $team[3]; (llama al cuarto dato del array) $oxo = array(array('x', '', 'o'), [matriz de dos dimensiones o anidada array('o', 'o', 'x'), consiste en 3 filas y 3 columnas array('x', 'o', '')); tiene 3 constructores internos en 1 externo] echo $oxo [1] [2]; (muestra el elemento de la segunda fila y tercer columna) '' (cadena que preserva el contenido exacto, no evalua variables) echo 'You have' . $msgs . 'messages.'; (muestra mensaje y concatena cadenas) "" (cadena que evalua e incluye los valores de las variables, también permite redactar comando de varias lineas) echo "You have $msgs messages."; \ (antes de comilla simple para que no sea interpretado) $text = 'My spelling\'s still atroshus'; <<< (permite decclarar varias lineas, preserva saltos de linea y sangrias, END va solo en la primera linea) echo <<< _END ... _END; _ (ayuda a diferenciar etiquetas como _END de variables o funciones) define("NOMBRE", valor); (define una constante, suele ir en mayusculas y llevar comillas, el valor también lleva comillas si es string) echo NOMBRE (llama a una constante, no requiere el signo $) echo "This is line" . __LINE__ . " of file " . __FILE__; (aplicacion de funciones magicas) nombre_funcion(parametro, función o vacio); (llama la función) function nombre_funcion(parametros o variable){ (declara una funcion) conjunto de instrucciones; } function saludar($nombre){ echo "Hola, $nombre"; } global $variable (convierte una variable en global) htmlentities(variable o parametro) (función que desinfecta variables superglobales)
Operadores aritméticos
Operador Descripción Ejemplo + (suma) $j+1 - (resta) $j-6 * (multipli..) $j*11 / (división) $j/4 % (Módulo) $j%9 ++ (incremento) ++$j -- (decremento) --$j ** (potencia) $j**2
Operadores de asignación
Operador Ejemplo Equivalente = $j=15 $j = 15 += $j+=5 $j = $j+5 -= $j-=3 $j = $j-3 *= $j*=8 $j = $j*8 /= $j/=16 $j = $j/16 .= $j.=$k $j = $j.$k %= $j%=4 $j = $j%4
Operadores de comparación
Operador Descripción Ejemplo == (es igual a) $j == 4 != (no es igual a) $j!= 21 > (es mayor que) $j > 3 < (es menor que) $j < 100 >= (es mayor que o igual a) $j >= 15 <= (es menor que o igual a) $j <= 8 <> (no es igual a) $j <> 23 === (es idéntico a) $j === "987" !== (no es idéntico a) !== "1.2e3"
Operadores lógicos
Operadores Descripción Ejemplo && (And, Y) $j==3 && $k==2 and (baja prioridad) $j==3 and $k==2 || (Or, O) $j<5 || $j>10 or (baja prioridad) $j<5 or $j>10 ! (Not,No) !($j==$k) xor (exclusivo) $j xor $k
Constantes mágicas
__LINE__ (número de la linea actual del archivo) __FILE__ (ruta completa del archivo) __DIR__ (directorio del archivo) __FUNCTION__ (nombre de la función) __CLASS__ (nombre de la clase) __METHOD__ (nombre del método de la clase) __NAMESPACE__ (nombre actual del espacio del nombre)
Variables superglobales
$GLOBALS (todas las variables en ambito global) $_SERVER (información de sacripts) $_GET (variable pasada al script mediante método HTTP GET) $_POST (variable pasada al script mediante método HTTP POST) $_FILES (elemento cargado en script mediante método HTTP POST) $_COOKIE (variable pasada al script mediante cookies HTTP) $_SESSION (variable de sesión disponible para script) $_REQUEST (información pasada desde el navegador) $_ENV (variable pasada al script mediante método del entorno)
4. Expresiones y contro de flujo en PHP
Página web dinamica: conjunto de páginas cuyo contenido cambia según la ubicación de los visitantes, acciones pasadas realizadas en el sitio, zonas horarias y má como activar la conexión con la base de datos para permitir funciones interactivas y cambios de contenido.
Expresión: combinación de valores, variables, operadores y funciones que presentan como reultado un valor que puede ser número, cadena o booleano.
Subexpresion: Expresiones que van dentro de parentesis o tienen prioridad de operadores aritmeticos.
Valores booleanos: son constantes predefinidas de PHP TRUE (1), FALSE (NULL).
Declaraciones: combinación de expresiones con otros constructores del lenguaje.
Asociatividad: dirección del procesamiento de los operadores, algunos requieren de derecha a izquierda y otros a la inversa. Otros operadores no tienen asociatividad.
Poco estructurado: si dos operadores son de diferentes tipos PHP los convertirá en el que mejor se adapte a las necesidades.
Conversión implicita: PHP convierte automaticamente valores de un tipo a otro cuando se requiere.
Conversión explicita: se especifica el tipo de dato que se quiere en la salida.
Wordpress: .
Expresiones booleanas
&& AND (poca prioridad) || OR (inclusivo, poca prioridad) XOR (exclusivo) ! (NOT) TRUE FALSE NULL (vacio)
Operadores
Operador Descripción Ejemplo aritmético (matemática básica) $a + $b matriz (unión de matrices) $a + $b asignación (asigna valores) $a = $b+23 bitwise (manipula bits dentro de bytes) 12 ∧ 9 comparación (compara dos valores) $a < $b Ejecución (ejecita el contenido) 'ls -al' incremento/decremento (suma o resta 1) $a++ Lógico (booleano) $a and $b Cadena (concatenación) $a . $b
Condicionales
Condicional: estructura lógica que altera el flujo del programa dependiendo de la respuesta a una pregunta.
condición if
if (condición) { conjunto de instrucciones; }
Condición if else
if (condición) { conjunto de instrucciones; } else { conjunto de instrucciones; }
Condición if elseif else
if (condición_1) { conjunto de instrucciones; } elseif (condición_2) { conjunto de instrucciones; } else { conjunto de instrucciones; }
condición switch
switch (condición) { case "valor_1": conjunto de instrucciones; break; case "valor_2": conjunto de instrucciones; break; case "valor_3": conjunto de instrucciones; break; case "valor_4": conjunto de instrucciones; break; case "valor_5": conjunto de instrucciones; break; }
condición switch default
switch (condición) { case "valor_1": conjunto de instrucciones; break; case "valor_2": conjunto de instrucciones; break; case "valor_3": conjunto de instrucciones; break; case "valor_4": conjunto de instrucciones; break; case "valor_5": conjunto de instrucciones; break; default: conjunto de instrucciones; break; }
operador ?
?: operador al cual se le pasa una expresión junto con dos estados a ajecutar en caso de que sea verdadero o falso respectivamente.
echo condición ? "mensaje_TRUE" : "mensaje_FALSE";
Bucles
bucle while
while (condición) { conjunto de instrucciones; }
bucle do while
do{ conjunto de instrucciones; } while (condición);
bucle for
for (iniciaclización ; condición ; modificación) { conjunto de instrucciones; }
continue
Continue: detiene el procesamiento de la iteración en curso de un bucle y pasa a la siguiente iteración.
-10) { $j--; if ($j == 0) continue; (hace un salto porque divir entre 0 daría error) echo (10/$j) . "< br >"; } ?>
conversión
implicita explicita
Tipos de conversión
Tipo de conversión Descripción (int) (integer) entero (bool) (boolean) booleano (float) (double) (real) decimal (string) cadena (array) matriz (object) objeto
5. Funciones y objetos en PHP
Funciones
Función: conjunto de declaraciones que realizan un cometido específico y opcionalmente proporcionan una valor. Permite escribir menos, disminuye los errores, reduce el tiempo de carga, reduce el tiempo de ejecución y aceptan argumentos. PHP contiene cientos de ellas preconfiguradas o integradas y esto lo hace muy rico.
Objeto: incorpora funciones y datos que utiliza a una estructura llamada clase. Agrupación de funciones y datos.
Biblioteca: conjunto de funciones que se guardan en otro archivo y se extraen con los comandos include y require.
Funciones en PHP
function function_name([parameter [, ...]]) { // statements } echo date("L"); (dia de la semana) phpinfo (información PHP) phpversion (version PHP) echo strrev(" . dlrow olleH"); (invierte la cadena) echo str_repeat("Hip", 2); (repite la cadena) echo strtoupper("hooray!"); (convierte en mayusculas) echo strtolower("aNY Letters"); (convierte en minuscula) echo ucfirst(any letters); (primero en mayuscula) print(5-8); (evalua e imprime) print_r (muestra informacion sobre una variable) ucfirst(strtolower(aNY Letters)); (resuelve de adentro hacia afuera) & (crea hilos para pasar parametros por referencia) global $variable (acceso completo a la variable en todo el programa) include "library.php"; (obtiene archivo y carga el contenido) include_once "library.php"; (obtiene archivo y carga contenido evitando anidamiento) require_once "library.php"; (obligatorio obtener archivo y cargar contenido evitando anidamiento) function_exists (verifica todas las funciones tanto predefinidas como creadas)
Objetos
Objeto: agrupación funciones y datos que utiliza en una estructura llamada clase.
Clase: combinación de datos (propiedades) y código (métodos). Es necesaria antes de usar un objeto.
Instancia u ocurrencia: nuevo objeto basado en una clase.
Propiedades: datos asociados a un objeto (nombre).
Métodos: funciones utilizadas por el objeto (tienen código).
Encapsulación: escribir una clase de manera que solo utiliza sus métodos para manipular sus propiedades, niega el acceso directo a sus datos desde el código externo.
Interfaz del objeto: métodos proporcionados.
Herencia: la nueva clase derivada (subclase) hereda todas las caracteristicas de la clase original (superclase).
class (define clase, requiere nombre, propiedades y métodos) $object = new User; (crea objeto y lo asigna a una clase) $temp = new User('name', 'password'); (crea objeto y pasa parametros a la llamada) $object->property (accede a la propiedad de un objeto) $object->method() (llama a un método de un objeto) class User (declara una clase con nombre User) { public $name, $password; (propiedades) function save_user() (método) { echo "Save User code goes here"; } } $object = new User; (crea objeto) print_r($object); echo "< br>"; (examina un objeto) $object->name = "Joe"; (accede a la propiedad) $object->password = "mypass"; print_r($object); echo "< br>"; (examina el objeto) $object->save_user(); (llama al método) $object2 = clone $object1; (crea instancia de clase y copia caracteristicas) __construct() (pasa argumentos a la clase al crear un objeto) __destruct() (hace labores de limpieza) $this (accede a las propiedades del objeto) Public (ambito público, referencia en cualquier clase) Protected (ambito protegido, referencia solo por su clase y subclases) Private (ambito privado, referencia solo por su clase) static (método que solo se invoca por clase, no accede a propiedades) extends (toma una clase y la extiende (hereda) a una subclase) parent (obtiene acceso al metodo padre) self::method(); (verifica el método de la clase actual) final (evita que subclase anule metodo de superclase)
6. Matrices en PHP
pendiente
7. PHP práctico
pendiente