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

Post on 19-Jul-2016

91 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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

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)

top related