Conceptos

6
Página de 1 6 Galindo García Adrián Eduardo 1CM3 Software Conjunto de programas y rutinas que permiten a la computadora realizar determinadas tareas. Préstamo del inglés software, compuesto por soft ‘blando’ y ware ‘utensilios, objetos’. Término creado por los ingenieros informáticos americanos por analogía a hardware. Según la RAE, el software es un conjunto de programas, instrucciones y reglas informáticas que permiten ejecutar distintas tareas en una computadora. Ingeniería del software La ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan en el desarrollo de los programas informáticos (software). Esta disciplina trasciende la actividad de programación, que es el pilar fundamental a la hora de crear una aplicación. El ingeniero de software se encarga de toda la gestión del proyecto para que éste se pueda desarrollar en un plazo determinado y con el presupuesto previsto. La ingeniería de software, por lo tanto, incluye el análisis previo de la situación, el diseño del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto funcionamiento y la implementación del sistema. o Ing. De software vs Ciencia de la computación Ciencias de la Computación Esta disciplina se ocupa del estudio de sistemas de cómputo incluyendo procesos algorítmicos y principios que involucran el diseño de software y hardware. Los profesionales en ciencias de la computación se encargan del diseño de algoritmos, lenguajes, herramientas y sistemas de software. Diseñan y construyen software, creando soluciones eficientes a problemas del mundo real en campos como la medicina, el comercio, la biología y los negocios. Ingeniería de Software Esta disciplina se ocupa del diseño e implementación de software complejo de una manera confiable y eficiente, aplicando los principios y prácticas de la ingeniería. Los ingenieros de software combinan la experiencia en ciencias de la computación, ingeniería y matemáticas para diseñar, definir y organizar diversos aspectos de un producto software complejo. Los profesionales de esta disciplina están capacitados en todos los aspectos relacionados al ciclo de vida del software, incluyendo temas de costo del proceso de desarrollo. o Ing. De software vs Ing. De sistemas Ingeniería de sistemas es un modo de enfoque interdisciplinario que permite estudiar y comprender la realidad, con el propósito de implementar u optimizar sistemas complejos. Puede verse como la aplicación tecnológica de la teoría de sistemas a los esfuerzos de la ingeniería, adoptando en todo este trabajo el paradigma sistémico. La ingeniería de sistemas integra otras disciplinas y grupos de especialidad en un esfuerzo de equipo, formando un proceso de desarrollo estructurado. Una de las principales diferencias de la ingeniería de sistemas respecto a otras disciplinas de ingeniería tradicionales, consiste en que la ingeniería de sistemas no construye productos tangibles. Mientras que los ingenieros civiles podrían diseñar edificios o puentes, los ingenieros electrónicos podrían diseñar circuitos, los ingenieros de sistemas tratan con sistemas abstractos

description

Conceptos de algoritmia

Transcript of Conceptos

Page 1: Conceptos

Página � de �1 6 Galindo García Adrián Eduardo 1CM3• Software

Conjunto de programas y rutinas que permiten a la computadora realizar determinadas tareas. Préstamo del inglés software, compuesto por soft ‘blando’ y ware ‘utensilios, objetos’. Término creado por los ingenieros informáticos americanos por analogía a hardware. Según la RAE, el software es un conjunto de programas, instrucciones y reglas informáticas que permiten ejecutar distintas tareas en una computadora.

• Ingeniería del software

La ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan en el desarrollo de los programas informáticos (software).

Esta disciplina trasciende la actividad de programación, que es el pilar fundamental a la hora de crear una aplicación. El ingeniero de software se encarga de toda la gestión del proyecto para que éste se pueda desarrollar en un plazo determinado y con el presupuesto previsto. La ingeniería de software, por lo tanto, incluye el análisis previo de la situación, el diseño del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto funcionamiento y la implementación del sistema.

o Ing. De software vs Ciencia de la computación

Ciencias de la Computación

Esta disciplina se ocupa del estudio de sistemas de cómputo incluyendo procesos algorítmicos y principios que involucran el diseño de software y hardware.

Los profesionales en ciencias de la computación se encargan del diseño de algoritmos, lenguajes, herramientas y sistemas de software. Diseñan y construyen software, creando soluciones eficientes a problemas del mundo real en campos como la medicina, el comercio, la biología y los negocios.

Ingeniería de Software

Esta disciplina se ocupa del diseño e implementación de software complejo de una manera confiable y eficiente, aplicando los principios y prácticas de la ingeniería.

Los ingenieros de software combinan la experiencia en ciencias de la computación, ingeniería y matemáticas para diseñar, definir y organizar diversos aspectos de un producto software complejo. Los profesionales de esta disciplina están capacitados en todos los aspectos relacionados al ciclo de vida del software, incluyendo temas de costo del proceso de desarrollo.

o Ing. De software vs Ing. De sistemas

Ingeniería de sistemas es un modo de enfoque interdisciplinario que permite estudiar y comprender la realidad, con el propósito de implementar u optimizar sistemas complejos. Puede verse como la aplicación tecnológica de la teoría de sistemas a los esfuerzos de la ingeniería, adoptando en todo este trabajo el paradigma sistémico. La ingeniería de sistemas integra otras disciplinas y grupos de especialidad en un esfuerzo de equipo, formando un proceso de desarrollo estructurado.

Una de las principales diferencias de la ingeniería de sistemas respecto a otras disciplinas de ingeniería tradicionales, consiste en que la ingeniería de sistemas no construye productos tangibles. Mientras que los ingenieros civiles podrían diseñar edificios o puentes, los ingenieros electrónicos podrían diseñar circuitos, los ingenieros de sistemas tratan con sistemas abstractos

Page 2: Conceptos

Página � de �2 6 Galindo García Adrián Eduardo 1CM3con ayuda de las metodologías de la ciencia de sistemas, y confían además en otras disciplinas para diseñar y entregar los productos tangibles que son la realización de esos sistemas.

Ingeniería de software es la disciplina o área de la informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad.

• Proceso del desarrollo del software

Estructura aplicada al desarrollo de un producto de software. Hay varios modelos a seguir para el establecimiento de un proceso para el desarrollo de software, cada uno de los cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo: se asegura de que los métodos utilizados son apropiados.

El ciclo de vida básico de un software consta de los siguientes procedimientos:

• Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.

• 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 general: requisitos generales de la arquitectura de la aplicación.

• Diseño en detalle: definición precisa de cada subconjunto de la aplicación.

• Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.

• Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.

• Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.

• Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.

• Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.

• Implementación: Se lleva a la practica el software.

• Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo de desarrolladores.

Modelos de Desarrollo de Software

- Modelo de cascada

- Modelo de espiral

- Desarrollo iterativo e incremental

- Desarrollo ágil

- Codificación y corrección

Page 3: Conceptos

Página � de �3 6 Galindo García Adrián Eduardo 1CM3- Orientado a la Reutilización

• Documentación de software

Una buena documentación de software, ya sea un documento de especificaciones para programadores y ensayadores, un documento técnico para usuarios internos, o manuales de software y documentos de ayuda para usuarios finales, ayuda a que la persona que trabaja con el software entienda sus características y funciones. Una buena documentación de usuario es específica, concisa, y relevante, y le brinda toda la información importante a la persona que utiliza el software.

La documentación en un proyecto de software permite :

• Conservar la historia

• Facilita la utilización por parte del usuario

• Garantiza la permanencia

• Disminuye los costos de operación y de ejecución

También es importante para identificar más fácilmente los aspectos y características que forman parte del proyecto.

o Doc. Externa

Documentación localizada aparte del programa (en el sentido de que no forma parte del código) Características Describirá: • Cómo usar el sistema (sin esto aún el sistema más simple resultaría inútil). • Cómo instalar y operar con el sistema. • Los requisitos y el diseño de todo el sistema. • La función del sistema y los procedimientos de prueba, para poderles el mantenimiento. "– La documentación habrá de ser útil durante todo el tiempo de vida del sistema. – No tiene por qué producirse en el mismo orden que el sistema (pueden adelantarse trozos, aunque no es conveniente atrasarlos). – Necesita índices efectivos, para poder encontrar la información. "Puede venir dada en distintos formatos: + Escrito + Informático (base de datos, texto,...) "Documentación de usuario "Conjunto de documentación referida a las funciones del sistema sin hacer referencia al mecanismo de aplicación (construcción) Está orientada a las personas que usarán el sistema (no a quien ha de mantenerlo) Características – Puede (y suele) ser el primer contacto de los usuarios con la aplicación. – Ha de proporcionar una visión inicial precisa del sistema. – Ha de ser una información realista, no propaganda.

Page 4: Conceptos

Página � de �4 6 Galindo García Adrián Eduardo 1CM3

– Estará estructurada según varios grados de detalle, apropiados al estado de cada usuario. De esta forma, se podrá hacer un uso sencillo de ella sin necesidad de leerla toda. "Documentos (destinados al usuario) 1.– Una descripción funcional sobre lo que puede hacer el sistema 2.– Un documento que explique cómo instalar el sistema y adecuarlo a configuraciones particulares de hardware 3.– Un manual introductorio que explique en términos sencillos cómo iniciarse en el sistema 4.– Un manual de referencia que describa con detalle las ventajas del sistema disponibles para el usuario y cómo se pueden usar 5.– Una guía del operador (si ha de haberlo), que explique cómo ha de reaccionar ante situaciones surgidas mientras el sistema se encuentra en uso "Documentación del sistema de información "Describe todos los aspectos del análisis, diseño, implementación y prueba del software (en general, del sistema) Características – Ha de incluir todos los documentos de la aplicación: desde la especificación del sistema (y de requisitos) hasta el último plan de pruebas. – Es esencial para el mantenimiento (es necesario conocer el diseño, la función y las pruebas). – Ha de tener una organización estructurada: ha de pasar de lo más general a lo más detallado, según un esquema formal. – Ha de marcar relaciones y dependencias. Contenido – Ha de estar incluida la documentación referente a cada uno de los pasos del desarrollo del software. – Se puede organizar en: • Especificación del sistema • Plan de viabilidad • Plan de desarrollo del software • Especificación de requisitos • Especificación del diseño • Plan de pruebas • Plan de mantenimiento "

o Documentación Interna

Es la documentación que va incluida con el código. Puede ser de dos tipos: + Complementaria sobre el código • Es útil al estudiar el código • Permite comprender mejor su funcionamiento + Ayudas interactivas • Normalmente destinadas al usuario • Se puede considerar también de usuario Las ayudas interactivas sofisticadas se pueden considerar como una función más del software (interfaz hombre–máquina) "

• Código auto-documentado

Page 5: Conceptos

Página � de �5 6 Galindo García Adrián Eduardo 1CM3“Se ha propuesto que la mejor solución al problema de documentación es usar lenguajes autodocumentados.”[2] Desde la aparición de los lenguajes de alto nivel es posible escribir nombres de rutinas, datos, estructuras, clases y archivos entendibles para seres humanos. Usar nombres sencillos y descriptivos hace la lectura del código mucho más fácil.

Los comentarios deben ser sólo una herramienta para decir lo que no se puede decir en el código. Los lenguajes de programación son eso mismo, lenguajes, expresan instrucciones a seguir. Si alguien conoce el lenguaje, debe ser capaz de entender lo que dice, por lo tanto no es necesario decírselo en otro lenguaje. Debemos decirle en otro lenguaje, solamente lo que no puede entender si lee sólo el código.

Entonces un código auto-documentado es aquel en el que se utilizan variables con las cuales se tratan de explicar para que sirve cada una y de esta forma sea más fácil que algún otro programador al leer el código tenga una idea de lo que se esta haciendo.

• Comentarios efectivos

¿Comentar o no?

Esta pregunta ha traído muchas discusiones entre programadores, ya que los malos comentarios dificultan el trabajo. Pero la verdad es que buenos comentarios pueden prestar mucha ayuda a la hora de depurar el código y a la hora de hacerlo.

Características de un buen comentario

1. No repite el código

2. Explica la intención del código.

3. No es exageradamente largo, ni le falta información.

4. Tiene un estilo fácil de modificar.

Algunos autores dan recomendaciones como éstas:

5. “No llene su código con comentarios de bajo nivel línea por línea”.

6. “Los comentarios son necesarios como párrafos explicativos”.

• Técnicas y buenos hábitos al comentar código

I. Enfóquese en el por qué más que en el cómo.

II. Prepare al lector para lo que sigue.

III. Haga que cada comentario valga la pena.

IV. Documente sorpresas.

V. Eluda abreviaciones.

VI. Diferencie entre comentarios mayores y menores.

VII.Comentar cualquier error o usos indocumentados en un lenguaje o ambiente de desarrollo.

VIII.Justifique las violaciones de un estilo de programación adecuado.

IX. No comente código malo, reescríbalo.

"

Page 6: Conceptos

Página � de �6 6 Galindo García Adrián Eduardo 1CM3Bibliografia

MasAdelante.com, Definición de software y hardware - ¿Qué es software y qué es hardware?, [Online] Disponible en :http://www.masadelante.com/faqs/software-hardware

definicion.de, Ingeniería de Software, [Online] Disponible en : http://definicion.de/ingenieria-de-software/

Universidad Carlos III de Madrid, Departamento de Informática, El Proceso de Desarrollo de Software [Online] Disponible en: http://ocw.uc3m.es/ingenieria-informatica/diseno-de-software-avanzado/material-de-clase-1/01-El_Proceso_de_Desarrollo_de_Software.pdf

kioskea.net , Ciclo de vida del software [Online] Disponible en: http://es.kioskea.net/contents/223-ciclo-de-vida-del-software

Universidad de Almería, Documentación de aplicaciones. Objetivos [Online] Disponible en: http://www.ual.es/~rguirado/posi/1-3_Documentacion.pdf

Karlsauter’s Weblog, Codigo autodocumentado (Self-documenting Code) [Online] Disponible en: http://karlsauter.wordpress.com/2007/10/06/codigo-autodocumentado-self-documenting-code/