SlideShare una empresa de Scribd logo
1 de 14
1
Ingeniería de software es la aplicación de un 
enfoque sistemático, disciplinado y 
cuantificable al desarrollo, operación y 
mantenimiento de software, y el estudio de 
estos enfoques, es decir, la aplicación de la 
ingeniería al software. Es la aplicación de la 
ingeniería al software, ya que integra 
matemáticas, ciencias de la computación y 
prácticas cuyos orígenes se encuentran en la 
ingeniería. 
2
3 
Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los 
requisitos del cliente y examinar cualquier restricción que se pueda aplicar. 
Diseño y arquitectura 
Se refiere a determinar cómo funcionará de forma general sin entrar en 
detalles. Consiste en incorporar consideraciones de la implementación 
tecnológica, como el hardware, la red, etc. Se definen los casos de uso para 
cubrir las funciones que realizará el sistema, y se transforman las entidades 
definidas en el análisis de requisitos en clases de diseño, obteniendo un 
modelo cercano a la programación orientada a objetos. 
Programación 
Reducir un diseño a código puede ser la parte más obvia del trabajo de 
ingeniería de software, pero no es necesariamente la porción más larga. La 
complejidad y la duración de esta etapa está íntimamente ligada al o a los 
lenguajes de programación utilizados.
Pruebas 
Consiste en comprobar que el software realice correctamente las tareas 
indicadas en la especificación. Una técnica de prueba es probar por separado 
cada módulo del software, y luego probarlo de forma integral, para así llegar 
al objetivo. Se considera una buena práctica el que las pruebas sean 
efectuadas por alguien distinto al desarrollador que la programó, idealmente 
un área de pruebas; sin perjuicio de lo anterior el programador debe hacer 
sus propias pruebas. 
Documentación 
Todo lo concerniente a la documentación del propio desarrollo del software y 
de la gestión del proyecto, pasando por modelaciones (UML), diagramas, 
pruebas, manuales de usuario, manuales técnicos, etc. Todo con el propósito 
de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones 
al sistema. 
Mantenimiento 
Mantener y mejorar el software para enfrentar errores descubiertos y nuevos 
requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del 
software. Alrededor de 2/3 de toda la ingeniería de software tiene que ver 
con dar mantenimiento. Una pequeña parte de este trabajo consiste en 
arreglar errores, o bugs. La mayor parte consiste en extender el sistema para 
hacer nuevas cosas. De manera similar, alrededor de 2/3 de toda la 
Ingeniería civil, Arquitectura y trabajo de construcción es dar mantenimiento. 
4
5
El diseño de los datos 
Trasforma el modelo de dominio de la 
información, creado durante el análisis, en las 
estructuras de datos necesarios para 
implementar el Software. 
El diseño arquitectónico 
Define la relación entre cada uno de los 
elementos estructurales del programa. 
6
El Diseño de la Interfaz 
Describe como se comunica el Software consigo mismo, 
con los sistemas que operan junto con él y con los 
operadores y usuarios que lo emplean. 
El Diseño de procedimientos 
Pero hay que tener en cuenta que el diseño del sistema 
debe servir como guía para las personas involucradas en el 
desarrollo de software Debe proporcionar una imagen 
completa del software desde una perspectiva de 
implementación y se tiene que tener el cuidado de incluir 
todos los requerimientos del sistema. 
Para crear un buen diseño tenemos que basarnos en los 
requerimientos que obtuvimos, hay que considerar los 
datos que se deseen de entradas y salida y como estos 
interactúan en el sistema y en la base de datos, el diseño 
de los procesos del sistema y la interfaz 
7
8
-¿De qué se trata?: Validar un dato es evaluarlo mediante algún proceso que 
compruebe que el mismo cumple con los requisitos necesarios para sernos de 
utilidad a la hora de procesarlo y generar información. 
Tengan en cuenta que: Datos Inútiles = Información Inútil = Malas decisiones. 
-¿Cómo lo hago?: 
A la hora de programar hay que pensar siempre que el usuario no va a hacer lo que 
nosotros creemos, y muchas veces no hará lo que le indiquemos. Es con esa 
mentalidad que debemos pensar para realizar una buena validación y captura de 
Datos, y posterior generación de información fiable. 
Supongamos que tenemos una aplicación que requiere el ingreso de datos 
personales básicos: 
Le pondremos un campo de ingreso de edad*: 
- No debemos dejar que ingrese valores absurdos: 
Ej.: 
- Edad=-1 
-Edad=203(puede llegar a darse el caso pero es muy improbable). 
-Edad=asdf(he visto casos así, cualquier verdura acepta). 
9
los archivos que mantienen almacenada la 
información son creados por diferentes tipos de 
programas de aplicación existe la posibilidad de 
que si no se controla detalladamente el 
almacenamiento, se pueda originar un duplicado 
de información. Esto aumenta los costos de 
almacenamiento y acceso a los datos, además de 
que puede originar la inconsistencia de los datos 
- es decir diversas copias de un mismo dato no 
concuerdan entre sí -, por ejemplo: que se 
actualiza la dirección de un cliente en un archivo 
y que en otros archivos permanezca la anterior. 
10
11
12
Matemáticas: fundamental. Probablemente no necesitas ser un 
genio de las matemáticas, pero es básico saber álgebra, 
geometría y probabilidades. Yo agregaría matemáticas discretas, 
es fundamental saber contar, hablaremos sobre matemáticas 
más adelante en este blog. 
Estimación: Hay que saber estimar, ese es uno de los mayores 
defectos de los programadores, y algo que deben aprender a 
mejorar rápidamente en su carrera. Una buena manera es dividir 
el problema en partes más pequeñas, estimar el esfuerzo de cada 
una, llevar un registro de las estimaciones, y después revisar que 
fue lo que estuvo mal con la estimación, y corregir. Aprender en 
retrospectiva, para ir mejorando las estimaciones. 
Micro economía: en esto estoy totalmente de acuerdo, se deben 
entender los fundamentos de la economía, oferta, demanda, 
costo de oportunidad, etc. Muchos programadores ignoran el 
aspecto económico o no se preocupan del impacto que su 
perfeccionismo pueda tener sobre el negocio. Muchas decisiones 
en un proyecto van a estar influenciada por el dinero. Se debe 
entender la diferencia entre lo perfecto y lo que es relevante para 
el valor del negocio. 
13
Diseño de Interfaces de Usuario: finalmente otra persona será la que use 
tu programa, y hay una manera adecuada de desplegar la información y 
definir las interacciones. Muchas interfaces malas son creadas por 
programadores, que no se preocupan de la importancia de la usabilidad 
y la accesibilidad. No se trata de que se vea lindo, se trata de que sea 
usable, entendible. Hay que aprender el lenguaje de los controles en 
pantalla y saber cuando usar cada control para cada uso específico. 
Lenguajes de Bajo Nivel: C o Assembler. En algún momento aparecen los 
problemas de desempeño, y hay que entender cómo un lenguaje de alto 
nivel nos abstrae de detalles de bajo nivel como punteros, uso de 
memoria, branching, aritmética, representación de la información en 
bits, etc. Cuando uno entiende esto puede llegar a optimizar el código de 
mejor manera. 
Arquitectura de Computadores, o cómo funciona un computador 
internamente. Esto incluye el conocimiento de hardware, redes, sistemas 
operativos. En algún momento se encontrarán con problemas de pagina 
miento, pérdida de paquetes, falla a nivel de hardware, y hay que saber 
como enfrentar esos problemas. 
Programar, programar, programar. Escribir código, leer código. Participar 
en algún proyecto opensource, escribir tu propio código, realizar algún 
code kata (ya veremos que es eso). Leer blogs sobre programación donde 
enseñen alguna técnica, o leer tutoriales sobre un framework, y 
probarlos por ti mismo. 
14

Más contenido relacionado

La actualidad más candente

Gustavo perez ingenieríadesoftware
Gustavo perez ingenieríadesoftwareGustavo perez ingenieríadesoftware
Gustavo perez ingenieríadesoftwaregustavoangel92
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativoKleo Jorgee
 
Campos de acción Ingenieria de Software
Campos de acción Ingenieria de SoftwareCampos de acción Ingenieria de Software
Campos de acción Ingenieria de SoftwareArnold Torres
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de softwareDiaxz Salgado
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwareJORGE MONGUI
 
Portafolios javier chavez
Portafolios javier chavezPortafolios javier chavez
Portafolios javier chavezJavier Chávez
 
Actividad remedial_Maria_Albarran
Actividad remedial_Maria_AlbarranActividad remedial_Maria_Albarran
Actividad remedial_Maria_AlbarranMarijoalbarranb
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremichellchia11
 
Principios Ingenieria
Principios IngenieriaPrincipios Ingenieria
Principios Ingenieriatoryneutral
 
IntroduccióN A La IngenieríA De Software
IntroduccióN A La IngenieríA De SoftwareIntroduccióN A La IngenieríA De Software
IntroduccióN A La IngenieríA De Softwarevirtual
 
El producto y el proceso
El producto y el procesoEl producto y el proceso
El producto y el procesojenmer
 
Diapositivas De Ingenieria De Software
Diapositivas De Ingenieria De SoftwareDiapositivas De Ingenieria De Software
Diapositivas De Ingenieria De Softwarerapa69
 
Herramientas de modelaje de datos
Herramientas de modelaje de datosHerramientas de modelaje de datos
Herramientas de modelaje de datosAndre Gutierrez
 

La actualidad más candente (19)

Gustavo perez ingenieríadesoftware
Gustavo perez ingenieríadesoftwareGustavo perez ingenieríadesoftware
Gustavo perez ingenieríadesoftware
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
4.principios que guían la práctica
4.principios que guían la práctica4.principios que guían la práctica
4.principios que guían la práctica
 
Campos de acción Ingenieria de Software
Campos de acción Ingenieria de SoftwareCampos de acción Ingenieria de Software
Campos de acción Ingenieria de Software
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Portafolios javier chavez
Portafolios javier chavezPortafolios javier chavez
Portafolios javier chavez
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
Mahikel peñuela ing
Mahikel peñuela ingMahikel peñuela ing
Mahikel peñuela ing
 
Actividad remedial_Maria_Albarran
Actividad remedial_Maria_AlbarranActividad remedial_Maria_Albarran
Actividad remedial_Maria_Albarran
 
Ensayo de Diseño de Software
Ensayo de Diseño de SoftwareEnsayo de Diseño de Software
Ensayo de Diseño de Software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
ingenieria de software
ingenieria de softwareingenieria de software
ingenieria de software
 
Principios Ingenieria
Principios IngenieriaPrincipios Ingenieria
Principios Ingenieria
 
IntroduccióN A La IngenieríA De Software
IntroduccióN A La IngenieríA De SoftwareIntroduccióN A La IngenieríA De Software
IntroduccióN A La IngenieríA De Software
 
El producto y el proceso
El producto y el procesoEl producto y el proceso
El producto y el proceso
 
Adsi
AdsiAdsi
Adsi
 
Diapositivas De Ingenieria De Software
Diapositivas De Ingenieria De SoftwareDiapositivas De Ingenieria De Software
Diapositivas De Ingenieria De Software
 
Herramientas de modelaje de datos
Herramientas de modelaje de datosHerramientas de modelaje de datos
Herramientas de modelaje de datos
 

Similar a informatica

Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobarEdwin Alexander
 
Fases en el desarrollo de un programa
Fases en el desarrollo de un programaFases en el desarrollo de un programa
Fases en el desarrollo de un programaHeidiie Hdz
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareT.I.C
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxHawkMartnez
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremarianela0393
 
Planeacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwarePlaneacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwareTtomas Carvajal
 
Ingenieria de software -analizis literario
Ingenieria de software -analizis literarioIngenieria de software -analizis literario
Ingenieria de software -analizis literariodiegos08
 
Analisis y diseño de un sistema de informacion
Analisis y diseño de un sistema de informacionAnalisis y diseño de un sistema de informacion
Analisis y diseño de un sistema de informacionparedes1983
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software'Jorge Martinez
 

Similar a informatica (20)

Análisis de requisitos
Análisis de requisitosAnálisis de requisitos
Análisis de requisitos
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobar
 
ingenieriadesoftware1
ingenieriadesoftware1ingenieriadesoftware1
ingenieriadesoftware1
 
Presentacionsii
PresentacionsiiPresentacionsii
Presentacionsii
 
introducción ingeniería de software
introducción  ingeniería de  softwareintroducción  ingeniería de  software
introducción ingeniería de software
 
Fases en el desarrollo de un programa
Fases en el desarrollo de un programaFases en el desarrollo de un programa
Fases en el desarrollo de un programa
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del Software
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Planeacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwarePlaneacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de software
 
Calidad del diseno
Calidad del disenoCalidad del diseno
Calidad del diseno
 
Proceso de diseño
Proceso de diseñoProceso de diseño
Proceso de diseño
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ingenieria de software -analizis literario
Ingenieria de software -analizis literarioIngenieria de software -analizis literario
Ingenieria de software -analizis literario
 
Analisis y diseño de un sistema de informacion
Analisis y diseño de un sistema de informacionAnalisis y diseño de un sistema de informacion
Analisis y diseño de un sistema de informacion
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 
XXXS
XXXSXXXS
XXXS
 

Último

Linea del tiempo del celular .
Linea del tiempo del celular                   .Linea del tiempo del celular                   .
Linea del tiempo del celular .MiliMili32
 
linea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añoslinea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añosMaraPazCrdenas
 
Home Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosHome Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosDebora Gomez Bertoli
 
El uso de las T I C en la vida cotidiana.
El uso de las T I C en la vida cotidiana.El uso de las T I C en la vida cotidiana.
El uso de las T I C en la vida cotidiana.SEAT
 
La Electricidad y la Electrónica gabriela (1).pdf
La Electricidad y la Electrónica gabriela (1).pdfLa Electricidad y la Electrónica gabriela (1).pdf
La Electricidad y la Electrónica gabriela (1).pdfelabarbosa396
 
Presentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptPresentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptCARLOSAXELVENTURAVID
 
9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf socialesJhonathanRodriguez10
 
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptxRosiClaros
 
Patrones Funcionales de Marjory Gordon.pptx
Patrones Funcionales de Marjory Gordon.pptxPatrones Funcionales de Marjory Gordon.pptx
Patrones Funcionales de Marjory Gordon.pptxErandiCamperoBojorge
 

Último (9)

Linea del tiempo del celular .
Linea del tiempo del celular                   .Linea del tiempo del celular                   .
Linea del tiempo del celular .
 
linea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añoslinea de tiempo television y su avance en los años
linea de tiempo television y su avance en los años
 
Home Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosHome Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todos
 
El uso de las T I C en la vida cotidiana.
El uso de las T I C en la vida cotidiana.El uso de las T I C en la vida cotidiana.
El uso de las T I C en la vida cotidiana.
 
La Electricidad y la Electrónica gabriela (1).pdf
La Electricidad y la Electrónica gabriela (1).pdfLa Electricidad y la Electrónica gabriela (1).pdf
La Electricidad y la Electrónica gabriela (1).pdf
 
Presentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptPresentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.ppt
 
9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales
 
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
 
Patrones Funcionales de Marjory Gordon.pptx
Patrones Funcionales de Marjory Gordon.pptxPatrones Funcionales de Marjory Gordon.pptx
Patrones Funcionales de Marjory Gordon.pptx
 

informatica

  • 1. 1
  • 2. Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software. Es la aplicación de la ingeniería al software, ya que integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería. 2
  • 3. 3 Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar. Diseño y arquitectura Se refiere a determinar cómo funcionará de forma general sin entrar en detalles. Consiste en incorporar consideraciones de la implementación tecnológica, como el hardware, la red, etc. Se definen los casos de uso para cubrir las funciones que realizará el sistema, y se transforman las entidades definidas en el análisis de requisitos en clases de diseño, obteniendo un modelo cercano a la programación orientada a objetos. Programación Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no es necesariamente la porción más larga. La complejidad y la duración de esta etapa está íntimamente ligada al o a los lenguajes de programación utilizados.
  • 4. Pruebas Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo. Se considera una buena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la programó, idealmente un área de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas. Documentación Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML), diagramas, pruebas, manuales de usuario, manuales técnicos, etc. Todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema. Mantenimiento Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniería de software tiene que ver con dar mantenimiento. Una pequeña parte de este trabajo consiste en arreglar errores, o bugs. La mayor parte consiste en extender el sistema para hacer nuevas cosas. De manera similar, alrededor de 2/3 de toda la Ingeniería civil, Arquitectura y trabajo de construcción es dar mantenimiento. 4
  • 5. 5
  • 6. El diseño de los datos Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarios para implementar el Software. El diseño arquitectónico Define la relación entre cada uno de los elementos estructurales del programa. 6
  • 7. El Diseño de la Interfaz Describe como se comunica el Software consigo mismo, con los sistemas que operan junto con él y con los operadores y usuarios que lo emplean. El Diseño de procedimientos Pero hay que tener en cuenta que el diseño del sistema debe servir como guía para las personas involucradas en el desarrollo de software Debe proporcionar una imagen completa del software desde una perspectiva de implementación y se tiene que tener el cuidado de incluir todos los requerimientos del sistema. Para crear un buen diseño tenemos que basarnos en los requerimientos que obtuvimos, hay que considerar los datos que se deseen de entradas y salida y como estos interactúan en el sistema y en la base de datos, el diseño de los procesos del sistema y la interfaz 7
  • 8. 8
  • 9. -¿De qué se trata?: Validar un dato es evaluarlo mediante algún proceso que compruebe que el mismo cumple con los requisitos necesarios para sernos de utilidad a la hora de procesarlo y generar información. Tengan en cuenta que: Datos Inútiles = Información Inútil = Malas decisiones. -¿Cómo lo hago?: A la hora de programar hay que pensar siempre que el usuario no va a hacer lo que nosotros creemos, y muchas veces no hará lo que le indiquemos. Es con esa mentalidad que debemos pensar para realizar una buena validación y captura de Datos, y posterior generación de información fiable. Supongamos que tenemos una aplicación que requiere el ingreso de datos personales básicos: Le pondremos un campo de ingreso de edad*: - No debemos dejar que ingrese valores absurdos: Ej.: - Edad=-1 -Edad=203(puede llegar a darse el caso pero es muy improbable). -Edad=asdf(he visto casos así, cualquier verdura acepta). 9
  • 10. los archivos que mantienen almacenada la información son creados por diferentes tipos de programas de aplicación existe la posibilidad de que si no se controla detalladamente el almacenamiento, se pueda originar un duplicado de información. Esto aumenta los costos de almacenamiento y acceso a los datos, además de que puede originar la inconsistencia de los datos - es decir diversas copias de un mismo dato no concuerdan entre sí -, por ejemplo: que se actualiza la dirección de un cliente en un archivo y que en otros archivos permanezca la anterior. 10
  • 11. 11
  • 12. 12
  • 13. Matemáticas: fundamental. Probablemente no necesitas ser un genio de las matemáticas, pero es básico saber álgebra, geometría y probabilidades. Yo agregaría matemáticas discretas, es fundamental saber contar, hablaremos sobre matemáticas más adelante en este blog. Estimación: Hay que saber estimar, ese es uno de los mayores defectos de los programadores, y algo que deben aprender a mejorar rápidamente en su carrera. Una buena manera es dividir el problema en partes más pequeñas, estimar el esfuerzo de cada una, llevar un registro de las estimaciones, y después revisar que fue lo que estuvo mal con la estimación, y corregir. Aprender en retrospectiva, para ir mejorando las estimaciones. Micro economía: en esto estoy totalmente de acuerdo, se deben entender los fundamentos de la economía, oferta, demanda, costo de oportunidad, etc. Muchos programadores ignoran el aspecto económico o no se preocupan del impacto que su perfeccionismo pueda tener sobre el negocio. Muchas decisiones en un proyecto van a estar influenciada por el dinero. Se debe entender la diferencia entre lo perfecto y lo que es relevante para el valor del negocio. 13
  • 14. Diseño de Interfaces de Usuario: finalmente otra persona será la que use tu programa, y hay una manera adecuada de desplegar la información y definir las interacciones. Muchas interfaces malas son creadas por programadores, que no se preocupan de la importancia de la usabilidad y la accesibilidad. No se trata de que se vea lindo, se trata de que sea usable, entendible. Hay que aprender el lenguaje de los controles en pantalla y saber cuando usar cada control para cada uso específico. Lenguajes de Bajo Nivel: C o Assembler. En algún momento aparecen los problemas de desempeño, y hay que entender cómo un lenguaje de alto nivel nos abstrae de detalles de bajo nivel como punteros, uso de memoria, branching, aritmética, representación de la información en bits, etc. Cuando uno entiende esto puede llegar a optimizar el código de mejor manera. Arquitectura de Computadores, o cómo funciona un computador internamente. Esto incluye el conocimiento de hardware, redes, sistemas operativos. En algún momento se encontrarán con problemas de pagina miento, pérdida de paquetes, falla a nivel de hardware, y hay que saber como enfrentar esos problemas. Programar, programar, programar. Escribir código, leer código. Participar en algún proyecto opensource, escribir tu propio código, realizar algún code kata (ya veremos que es eso). Leer blogs sobre programación donde enseñen alguna técnica, o leer tutoriales sobre un framework, y probarlos por ti mismo. 14