martes, 25 de junio de 2013


Ingeniería de software

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.

La creación del software es un proceso intrínsecamente creativo y la ingeniería del software trata de sistematizar este proceso con el fin de acotar el riesgo del fracaso en la consecución del objetivo creativo por medio de diversas técnicas que se han demostrado adecuadas en base a la experiencia previa.

Tendencias actuales en la ingeniería de software

La ingeniería de software es una disciplina joven y aún está en desarrollo. Las direcciones en que la ingeniería de software se está desarrollando incluyen:

Aspectos

Los aspectos ayudan a los ingenieros de software a lidiar con los atributos de calidad al proporcionar herramientas para añadir o quitar código repetitivo de muchas áreas en el código fuente. Los aspectos describen cómo todos los objetos o funciones deben comportarse en circunstancias particulares. Por ejemplo, los aspectos puede agregar control de depuración, registro o bloqueo en todos los objetos de un tipo particular.
ágil

El desarrollo ágil de software guía a los proyectos de desarrollo de software que evolucionan rápidamente con cambiantes expectativas y mercados competitivos. Los proponentes de este método creen que procesos pesados, dirigidos por documentos (como TickIT, CMM e ISO 9000) están desapareciendo en importancia.Algunas personas creen que las empresas y agencias exportan muchos de los puestos de trabajo que pueden ser guiados por procesos pesados. Conceptos relacionados incluyen la programación extrema, scrum y lean software development.

Experimental

La ingeniería de software experimental es una rama de la ingeniería de software interesada en la elaboración de experimentos sobre el software, en la recolección de datos de los experimentos y en la elaboración de leyes y teorías desde estos datos. Los proponentes de este método defienden que la naturaleza del software es tal que podemos hacer avanzar el conocimiento en software a través de sólo experimentos.

 

Soporte técnico


El soporte técnico es un rango de servicios que proporcionan asistencia con el hardware o software de una computadora, o algún otro dispositivo electrónico o mecánico. En general los servicios de soporte técnico tratan de ayudar al usuario a resolver determinados problemas con algún producto en vez de entrenar o personalizar. En general, el servicio de soporte técnico sirve para ayudar a resolver los problemas que puedan presentárseles a los usuarios, mientras hacen uso de servicios, programas o dispositivos.
Las compañías e instituciones también tienen generalmente soporte técnico interno para empleados, estudiantes y otros asociados.

Tipos de soporte

El soporte técnico se puede dar por distintos tipos de medio, incluyendo el correo electrónico, chat, software de aplicación, faxes, y técnicos, aunque el más común es el teléfono. En los últimos 2 años hay una tendencia a la prestación de soporte técnico en remoto, donde un técnico se conecta al ordenador mediante una aplicación de conexión remota.

   
 
Programador


Un programador es aquella persona que escribe, depura y mantiene el código fuente de un programa informático, es decir, del conjunto de instrucciones que ejecuta el hardware de una computadora para realizar una tarea determinada. La programación es una de las principales disciplinas dentro de la informática. En la mayoría de los países, programador es también una categoría profesional reconocida.

Los programadores también reciben el nombre de desarrolladores de software, aunque estrictamente forman parte de un equipo de personas de distintas especialidades (mayormente informáticas), y siendo que el equipo es propiamente el desarrollador.

 
Especialidades

Programadores de mainframe. Aunque se cree extinta la actividad en los viejos grandes sistemas informáticos, lo cierto es que aún existen muchos en funcionamiento que requieren mantenimiento. Entre sus conocimientos se cuenta COBOL, RPG, JCL, base de datos jerárquicas, etc.

Programadores de "Nuevas Tecnologías". Esta es una rama que gira en torno a Internet, los nuevos servicios como la Web 2.0 y los negocios por medios electrónicos o e-commerce. Entre sus conocimientos destacan lenguajes del lado del servidor como Java, ASP, .NET, JSP, PHP, Ruby, Python o Perl, y lenguajes del lado de cliente como HTML, XHTML, CSS, Javascript ó AJAX (conjunto de tecnologías existentes como XML y Javascript).

Programadores de Firmware y videojuegos. Destacan sus conocimientos de hardware, Microprocesadores, ensamblador y C.

Programadores de sistemas abiertos. Rama asociada a la Arquitectura Cliente-Servidor. Requiere conocimientos de C, Pascal, etc.

Analista de sistemas

 

Analista de Sistema: puede referirse al encargado del desarrollo de aplicaciones en lo que respecta a su diseño y obtención de los algoritmos, así como de analizar las posibles utilidades y modificaciones necesarias de los sistemas operativos para una mayor eficacia de un sistema informático. Otra misión de estas personas es dar apoyo técnico a los usuarios de las aplicaciones existentes.
 

Orígenes


En sus inicios, la industria del software adoptó un enfoque organizativo tayloriano, al igual que la mayoría de las industrias del momento. Bajo tal enfoque, el proceso de construcción de software se concibe como un conjunto de tareas altamente especializadas donde está claramente definido el papel de cada categoría profesional:

El analista tiene como cometido analizar un problema y describirlo con el propósito de ser solucionado mediante un sistema informático.

El diseñador realiza, con base en el análisis, el diseño de la solución

El analista tiene que delimitar el análisis para ver lo que se quiere hacer inicialmente y después darle al usuario nuevas

Perfil tradicional del analista


Los conocimientos que requiere son aquellos relacionados con las técnicas de análisis de sistemas de información:

Conocimiento del paradigma tradicional de la ingeniería del software y del tradicional ciclo de vida del software en cascada.

Modelado funcional: Diagrama de flujo de datos, diagrama de estado, etc.

Modelado de datos y sus técnicas: Diagrama entidad-relación, modelo relacional, etc.

Conocimiento de la tecnología: arquitectura de software, bases de datos, etc

 
 
 

 
Diseño web

El diseño web es una actividad que consiste en la planificación, diseño e implementación de sitios web. No es simplemente una aplicación de diseño convencional, ya que requiere tener en cuenta la navegabilidad, interactividad, usabilidad, arquitectura de la información y la interacción de medios como el audio, texto, imagen, enlaces y vídeo.

El diseño web ha visto amplia aplicación en los sectores comerciales de Internet especialmente en la World Wide Web. A menudo la web se utiliza como medio de expresión plástica en sí. Artistas y creadores hacen de las páginas en Internet un medio más para ofrecer sus producciones y utilizarlas como un canal más de difusión de su obra.
Diseño web aplicado

El diseño de páginas web se trata básicamente de realizar un documento con información hiperenlazado con otros documentos y asignarle una presentación para diferentes dispositivos de salida (en una pantalla de computador, en papel, en un teléfono móvil, etc)

Etapas
 
El diseño visual de la información que se desea editar. En esta etapa se trabaja distribuyendo el texto, los gráficos, los vínculos a otros documentos y otros objetos multimedia que se consideren pertinentes. Es importante que antes de trabajar sobre el computador se realice un boceto o prediseño sobre el papel.
Estructura y relación jerárquica de las páginas del sitio web. Una vez que se tiene el boceto se pasa a 'escribir' la página web. Para esto, y fundamentalmente para manejar los vínculos entre documentos, se eño y obtención de los algoritmos, así como de analizar las posibles utilidades y modificaciones necesarias de los sistemas operativos para una mayor eficacia de un sistema informático.