desarrollo de software: procesos y estándares s01: desarrollo de software

21
Desarrollo de software: procesos y estándares 01: Desarrollo de software Eugenio Jacobo Hernández Valdelamar 2014

Upload: jacobo-hernandez-v

Post on 19-Jul-2016

86 views

Category:

Documents


2 download

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.

TRANSCRIPT

Page 1: Desarrollo de software: procesos y estándares S01: Desarrollo de software

Desarrollo de software:procesos y estándares

01: Desarrollo de software

Eugenio Jacobo Hernández Valdelamar

2014

Page 2: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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

Page 3: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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

Page 4: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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.

Page 5: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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.

Page 6: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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.

Page 7: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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

Page 8: Desarrollo de software: procesos y estándares S01: Desarrollo de software

Sep, 2014 EJHV - Desarrollo de sw: P y E 8

Desarrollo de software

Lenguaje(s) deprogramación

Idea / problema / necesidad

Herramienta(s)

Programa

Page 9: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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)

Page 10: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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/

Page 11: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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)

Page 12: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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

Page 13: Desarrollo de software: procesos y estándares S01: Desarrollo de software

Sep, 2014 EJHV - Desarrollo de sw: P y E 13

http://abdulazeem.wordpress.com/2010/02/21/software-developer-life-cycle/

Page 14: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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)

Page 15: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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.

Page 16: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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).

Page 17: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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%”.

Page 18: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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

Page 19: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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)

Page 20: Desarrollo de software: procesos y estándares S01: Desarrollo de software

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?

Page 21: Desarrollo de software: procesos y estándares S01: Desarrollo de software

Sep, 2014 EJHV - Desarrollo de sw: P y E 21

Referencias

● Introduction to OOP (page)● Teach Yourself Programming in Ten Years (

page)