Conceptos fundamentales

 

 

Participantes y papeles

El desarrollo de un sistema de software requiere la colaboración de muchas personas con diferentes formaciones o intereses. El ciente ordena y paga el sistema. Los diseñadores contruyen, el gerente del proyecto planea y calcula el presupuesto del proyecto y coordina a los desarrolladores y al cliente. Los usuarios finales son apoyados por el sistema.

Sistemas y modelos

Sistema se refiere a realidad subyacente, y Modelo es cualquier abstracción de la realidad. Un distribuidor de pasajes para transporte en bus es un sistema. Los planos para el distribuidor, los esquemas de su alambrado eléctrico y los modelos de objetos de su software son modelos del distribuidor de pasajes.

Productos de trabajo

Nos referimos a un producto de trabajo para el consumo interno del proyecto como producto de trabajo interno. Nos referimos a un producto de trabajo para un cliente como una entrega. Por lo general, las entregas están especificadas en un contrato que enlaza a los desarrolladores con el cliente. En el ej. de distribuidor de pasajes, los manuales de operación y mantenimiento que necesita la compañía de buses son entregas. los distribuidores de pasajes y su software también. Los prototipos de demostración, escenarios de prueba y resultados producidos por los desarrolladores para el gerente del proyecto son productos de trabajo interno, a menos que estén especificados en el contrato como artículos que serán entregados al cliente.

Actividades, tareas y recursos

Una actividad es un conjunto de tareas que se realizan con un propósito específico. ej. la obtención de requerimientos es una actividad cuyo propósito es definir con el cliente lo que hará el sistema. La actividad puede estar compuesta por otras actividades o fases.

Una tarea representa una unidad atómica de trabajo que puede ser administrada: un gerente la asigna a un desarrollador, el desarrollador la realiza y el gerente supervisa el avance y terminación de la tarea. Las tareas consumen recursos, dan como resultados productos de trabajo y dependen de productos de trabajo que son producidos por otras tareas.

Los recursos son bienes que se usan para realizar el trabajo. Incluyen tiempo, equipo y mano de obra. Cuando se planea un proyecto, un gerente divide el trabajo en tareas y les asigna recursos.

Objetivos, requerimientos y restricciones

Un objetivo es un principio de alto nivel que se usa para guiar el proyecto. Los objetivos definen los atributos del sistema que son importantes. Proyectos diferentes tienen objetivos diferentes. El objetivo principal del distribuidor de pasajes es producir un sistema que sea altamente confiable (es decir, que funcione en forma correcta la mayor parte del tiempo). Una buena parte de la complejidad en el desarrollo de software viene de objetivos mal definidos.

Los requerimientos son características que debe tener el sistema. Un requerimiento funcional es un área de funcionalidad que debe soportar el sistema y, en cambio, un requerimiento no funcional es una restricción sobre la operación del sistema.

Proporcionar al usuario información sobre los pasajes es un requerimiento funcional. Proporcionar retroalimentación en menos de un segundo es un requerimiento no funcional. Proporcionar un sistema confiable es un objetivo de diseño. Producir un sistema a bajo costo es un objetivo gerencial. Otras restricciones incluyen que se requiera una plataforma de hardware específica para el sistema o compatibilidad retrospectiva con un sistema heredado que el cliente no quiere retirar.

Notaciones, métodos y metodologías

Una notación es un conjunto de reglas gráficas o textuales para representar un modelo El alfabeto romano es una notación para representar palabras. El UML (Lenguaje de modelado unificado) es una notación orientada a objetos para la representación de modelos. Z es una notación para la representación de sistemas basado en la teoría de conjuntos.

Un método es una técnica repetible para la resolución de un problema específico. Un algoritmo de ordenamiento (ej. QSort) es un método para ordenar elementos de una lista. La administración de la fundamentación es un método para la justificación de los cambios. La administración de la configuración es un método para el seguimiento de los cambios del software.

Una metodología es una colección de métodos para la resolución de una clase de problemas. El proceso de desarrollo de software unificado, la técnica de modelado de objetos, la metodología Booch o la de OMT, son metodologías orientadas a objetos para el desarrollo de software. Las metodologías de desarrollo de software descomponen el proceso en actividades. El proceso de desarrollo de software unificado también incluye una actividad de análisis y trata al diseño del sistema y al del objeto como una sola actividad llamada diseño e incluye una actividad de captura de requerimientos para la obtención y modelado de requerimientos.

Actividades de desarrollo de Ingeniería del Software

Las actividades de desarrollo incluyen:

  • Obtención de requerimientos
  • Análisis
  • Diseño del sistema
  • Diseño de objetos
  • Implementación

Obtención de requerimientos

Durante la obtención de requerimientos, el cliente y los desarrolladores definen el propósito del sistema. El resultado de esta actividad es una descripción del sistema en términos de actores y casos de uso. Los actores representan las entidades externas que interactúan con el sistema. Incluyen papeles como los usuarios finales, otra computadora con la que necesite tratar el sistema (por ejemplo, un banco de computadoras central, una red) y el ambiente (ejemplo, un proceso químico). Los casos de uso son secuencias de eventos generales que describen todas las acciones posibles entre un actor y el sistema para un fragmento de funcionalidad dado.

Análisis

Durante el análisis, los desarrolladores tratan de producir un modelo del sistema que sea correcto, completo, consistente, claro, realista y verificable. Los desarrolladores transforman los casos de uso producidos durante la obtención de requerimientos en un modelo de objeto que describa por completo al sistema. Durante esta actividad, los desarrolladores transforman los casos de uso producidos durante la obtención de requerimientos en un modelo de objeto que describa por completo al sistema. El resultado del análisis es un modelo de objeto comentado con atributos, operaciones y asociaciones.

Diseño del sistema

Los desarrolladores definen los objetivos de diseño del sistema y descomponen el sistema en subsistemas que pueden realizar los equipos individuales. Los desarrolladores también seleccionan estrategias para la construcción del sistema, como la plataforma de hardware y software en la que se ejecutará el sistema, la estrategia de almacenamiento de datos persistentes, el flujo de control global, la política de control de acceso y el manejo de las condiciones de frontera. El resultado de un diseño de sistema es una descripción clara de cada una de estas estrategias, una descomposición en subsistemas y un diagrama de organización que representa el mapeo en hardware y software del sistema.

Diseño de objetos

Los desarrolladores definen objetos personalizados para cubrir el vacío entre el modelo de análisis y la plataforma de hardware y software definida durante el diseño del sistema. Esto incluye definir con precisión los objetos e interfaces de subsistemas, la selección de componentes hechos, la reestructuración del modelo de objeto para lograr los objetivos de diseño, tales como extensibilidad o comprensión, y la optimización del modelo de objetos para el desempeño. El resultado de la actividad de diseño de objetos es un modelo de objetos detallado, comentado con restricciones y descripciones precisas para cada elemento.

Implementación

Los desarrolladores traducen el modelo de objetos en código fuente. Esto incluye la implementación de los atributos y métodos de cada objeto y la integración de todos los objetos de forma tal que funcionen como un solo sistema. La implementación cubre el vacío entre el modelo de diseño de objetos detallado y el conjunto completo de archivos de código fuente (por ej. en Java) que pueden ser compilados juntos.

Explore un resumen de conceptos fundamentales de Ingeniería del Software en:

http://www.slideshare.net/viejoGus/conceptos-i-sw

Bibliografía

  • Bruegge/Dutoit (2002). Ingeniería de software orientado a objetos. Prentice-Hall, primera edición.
  • Pressman, Roger S. (2006). Ingeniería del Software. Un enfoque práctico. McGraw-Hill, sexta edicion.
  • Sommerville, Ian (2005). Ingeniería del Software. Pearson. Séptima edición. Consultado junio 4 de 2010, en: http://www.software-engin.com

 

Este artículo está licenciado bajo Creative Commons Attribution Non-commercial No Derivatives 3.0 License

REDA - OVAISw