Upload
jacobo-hernandez-v
View
76
Download
2
Embed Size (px)
DESCRIPTION
EJHV. México , 2014. Curso para maestría MCC y MSI FAR. Sesión 01: Desarrollo de software. Terminología básica. Conocimientos y habilidades de programación.
Citation preview
Desarrollo de software:procesos y estándares
01: Desarrollo de software
Eugenio Jacobo Hernández Valdelamar
2014
Sep, 2014 EJHV - Desarrollo de sw: P y E 2
Contenido
● Terminología: Software, programas, aplicaciones y sistemas
● ¿Cómo se desarrolla el software?● ¿Qué se necesita?● Programas y programadores● Curvas de aprendizaje● No solo basta con programar● Comentarios finales
Sep, 2014 EJHV - Desarrollo de sw: P y E 3
Temario
Situación nacional e internacional
Procesos dedesarrollo de
software
Modelos de mejora del proceso -
Personal,adquisición,desarrollo,
servicio
Desarrollo desoftware
(qué es,quién lo hace,cómo lo hace
qué hace)
t
Industrializacióndel
desarrollode software
(fábricas ycolaboración)
Calidad
Sep, 2014 EJHV - Desarrollo de sw: P y E 4
Software
● Conjunto de instrucciones que manejan el procesador de una computadora para realizar operaciones específicas.
Sep, 2014 EJHV - Desarrollo de sw: P y E 5
Términos (1)
● Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora.
● Una aplicación es un tipo de programa informático diseñado como herramienta para permitir a un usuario realizar uno o diversos tipos de trabajos.
Sep, 2014 EJHV - Desarrollo de sw: P y E 6
Términos (2)
● Un sistema informático es un sistema que permite almacenar y procesar información; como todo sistema, es el conjunto de partes interrelacionadas: en este caso, hardware, software y recursos humanos.
● El hardware incluye computadoras o cualquier tipo de dispositivo electrónico inteligente, que consisten en procesadores, memoria, sistemas de almacenamiento externo, etc.
● El software incluye al sistema operativo, firmware y aplicaciones, siendo especialmente importante los sistemas de gestión de bases de datos.
● Por último el soporte humano incluye al personal técnico que crean y mantienen el sistema (analistas, programadores, operarios, etc.) y a los usuarios que lo utilizan.
Sep, 2014 EJHV - Desarrollo de sw: P y E 7
En resumen...
Programa
Instalador
Editor
Comunicaciones
Código
...
Aplicación
Aplicación
Aplicación
Hardware
Sistema
Sep, 2014 EJHV - Desarrollo de sw: P y E 8
Desarrollo de software
Lenguaje(s) deprogramación
Idea / problema / necesidad
Herramienta(s)
Programa
Sep, 2014 EJHV - Desarrollo de sw: P y E 9
Herramientas
● Sistema operativo
● Editores de texto/UI
● Compiladores/intepretes
● Máquinas virtuales
● Emuladores
● IDEs (ambientes integrados de desarrollo)
● Librerías
● Repositorio de código (versionamiento)
Sep, 2014 EJHV - Desarrollo de sw: P y E 10
Lenguajes de programación
● Lenguajes imperativos (estructurados)
● Lenguajes orientados a objetos
● Lenguajes visuales
● Lenguajes funcionales
● Lenguajes lógicos
● Lenguajes relacionales
● Lenguajes descriptivos
●
● Ver PDF de paradigmas de programación http://www.lacofa.es/blog/2007/08/22/visualizar-los-paradigmas-de-programacion/
Sep, 2014 EJHV - Desarrollo de sw: P y E 11
Infraestructura
● Lugar de trabajo● Estación de trabajo● Hardware objetivo (PC's, servidor(es), smart
devices, embeded devices)● Comunicaciones (LAN, AP, teléfono)
Sep, 2014 EJHV - Desarrollo de sw: P y E 12
Funciones de un programador
● Análisis y diseño● Planeación● Escritura
● Código fuente● Texto
● Pruebas● Actualización/mejoras● Reparación
http://www.mymajors.com/career/computer-programmers/skills/
De hecho, hay desgloces a detalle del perfil de estos profesionistas
Sep, 2014 EJHV - Desarrollo de sw: P y E 13
http://abdulazeem.wordpress.com/2010/02/21/software-developer-life-cycle/
Sep, 2014 EJHV - Desarrollo de sw: P y E 14
Conocimientos de programación
● Programar implica:
● Conocer y aplicar sintáxis del lenguaje(s)
● Manejo de estructuras de control y organización de código (proyectos, modulos, funciones, procedimientos, clases, métodos)
● Algoritmos
● Organización y consumo de datos (archivos, BD's)
● Multiprocesamiento
● Comunicaciones (TCP/IP)
● Computo distribuido
● Seguridad
● ... y otras tantas cosas que se aprenden en el camino (10 años o más)
Sep, 2014 EJHV - Desarrollo de sw: P y E 15
Curvas de aprendizaje – nueva tecnología
http://www.stephencalenderblog.com/?p=371
Cursing = Maldecir
que en este caso es equivalente a “Tiempo de Implementación”.
Moraleja: lo más nuevo no te hace necesariamente la vida más sencilla.
Sep, 2014 EJHV - Desarrollo de sw: P y E 16
Curvas de aprendizaje – valor de la experiencia
http://keepingitclassless.net/2014/04/learning-curve/
No sabe lo mismo un recién egresado o alguien sumido en la academia, que alguien con experiencia que cumple con eso que piden los de RH: “capacidad de trabajo bajo presión”
Las situaciones críticas y desesperadas son fuente de sabiduría (y cicatrices).
Sep, 2014 EJHV - Desarrollo de sw: P y E 17
Ejército de un solo hombre“Es mi idea”.
“Soy el mejor. Un genio incomprendido.”
“Yo solo sé de esto”.
“Yo no uso librerías de terceros; hago las mías”
“Trabajo mejor solo”.
“Nada como ser tu propio jefe”.
“Yo puedo hacerlo TODO”.
La especificación está en el código (y también la documentación).
Usa “balas de plata” (soluciones mágicas) para problemas imposibles.
“Yo cobro el 100%”.
Sep, 2014 EJHV - Desarrollo de sw: P y E 18
Por qué no basta con "programar"
● Programar "silvestremente" genera los siguientes efectos:
● Código espaguetti (cada quien codifica como quiere/puede)
● Carencia de asignación de nombres descriptivos
– Los controles tienen los nombres por omisión que genera la herramienta
– Mivariable1? ProcesoA? GYUUN123HU.exe? ● Carencia de documentación en el código (comentarios)
● Carencia de capas, módulos u otras abstracciones de diseño
● Algoritmos ineficientes (o no hace lo que debe o lo hace a medias o tarda)
● Carencia de diseño/lógica en la interfaz de usuario
● No hay posibilidad de reusar el código o extenderlo
● Carencia de contención de errores, loggeo (si falla, "Dios sabe")
● Carencia de documentación (técnica, de usuario, etc.)
● Entregas tardías, sobretrabajo
Sep, 2014 EJHV - Desarrollo de sw: P y E 19
Comentarios finales
● Hacer software implica:
● Varios conocimientos
– Téoricos– Técnicos– Contexto
● Infraestructura● Recursos humanos capacitados (tiempo + $)● Necesidades
● Hacer software ¿solo implica programar?
● Depende (complejidad)
Sep, 2014 EJHV - Desarrollo de sw: P y E 20
Tarea
● Situación actual del desarrollo de software
● ¿Qué software consumes?
● ¿Qué produces?
● Si haces software:
– ¿Cómo lo haces tú?– ¿Cómo lo hace tu empresa?– ¿Qué software usas? En qué dispositivo?– ¿Es lo mismo HOY que hace 10 años?
● Si no:
– ¿Qué software compras? ¿cuánto te cuesta?– ¿Cómo sabes cuando necesitas nuevo software?– ¿Por qué no haces softrware?
Sep, 2014 EJHV - Desarrollo de sw: P y E 21
Referencias
● Introduction to OOP (page)● Teach Yourself Programming in Ten Years (
page)