La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Julio Medina Computadores y Tiempo Real Santander, 2013 Advanced Computing G80 The software development process.

Presentaciones similares


Presentación del tema: "Julio Medina Computadores y Tiempo Real Santander, 2013 Advanced Computing G80 The software development process."— Transcripción de la presentación:

1 Julio Medina Computadores y Tiempo Real Santander, 2013 Advanced Computing G80 The software development process

2 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 1 Software development process. A software development process is the specification of a sequenced set of activities performed by a collaborating set of workers resulting in a coherent set of project artifacts, one of which is the desired software system. The objective of a process is to make predictable the amount of effort required to: Predict and evaluate costs Attain and keep a certain level of quality Predict the time needed for development

3 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 2 Nature of software applications There is no unique and universal optimum development process. It is an asset of an enterprise that needs to be configured and tune according to nature of the product and the level of experience of the company. Kinds of applications that impact in the development process: Monoprocessor: They execute in a single computer. They do not communicate with other nodes and usually neither with other applications. i.e. a word processor. Embedded: They execute in a particularly restricted computer whose external interfaces follow the metaphors and behavioral patterns of a different purpose device. They usually are co-design with the hardware. i.e. A washing machine. Real Time: They have in their specifications timing requirements and are usually hold a reactive nature. i.e. A radar control system. Distributed: They execute their constituent parts in different processors, and hence use networks as elements for communication. i.e. Messenger, Dropbox, etc.

4 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 3 Objectives of a development process To be a project template that guides practitioners along the sequence of tasks that are required and the products that must be generated. To improve quality of the final product: Reduce the number of failures Lower the severity of defects Enhance reusability Improve the stability of the development and the cost of maintenance. Improve predictability of the project regarding: The amount of work required The time needed for its development Generate the proper information for the various stakeholders so that they can make an effective monitoring of the process.

5 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 4 Basic elements in a project. Activity Product Results Work in Realize Create Generate Use Worker/Role Guide Pattern Defects & problems Management & Configuration Working Plan Planning Development Tools Define Plan Organize Support Especify Formalize Identify Gestiona Working lines

6 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 5 Scalability. Scalability is an important property in a project since they may have very different dimensions. It describes how linearly it varies the effort required to realice a project with regard to its complexity. When the project complexity increases: The required levels of abstraction rise They increase the needs for communication between project teem members. It becomes harder to find/discover errors. The ideal is to have a linear growing of the effort, not an exponential one. Some means to achieve scalability: Arrange different time scales for the generation of the activities. Include specific options in guides and forms tailored to the characteristics of the projects.

7 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 6 Tecnolgical keys in model driven development processes. Frameworks Iterative Development Visual Modeling Executable Models Bi-unicity Model-Code Automated Requirements- Based Testing

8 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 7 Main tasks in a software development process. Understand the application objectives in its domain. Formulate a working plan Create and manage the documentation. Catch the requirements. Design and build the product. Test and validate the product. Delivery and maintenance of the product.

9 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 8 Primitive: There is not. Programmed: It has a sequence of stages defined as well as the documents that will be delivered out of each. Systematic: It is formulated in a systematic way. Administrated: It includes criteria to quantify the performance of each phase and of the full process. Optimized: There are control parameters that enable the optimization of resources and labors needed for each project. Levels of maturity of development processes.

10 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 9 Linear process model. Tunnel process: No process No control Just for small projects.

11 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 10 The waterfall model Requirements Analysis Analysis Design Code implementation Modules test Integration System tests Maintenance Implementation Time Advance Debugging High cost error recovery

12 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 11 Cost of development phases for a typical application Maintenance 67% Integration tests 7º Modules Test 8% Coding 7% Design 5% Specification 3º Analysis 3º Problems of the waterfall process. The real test is performed when all is designed and done. It assumes that before starting the process the product is fully defined. When mismatches/errors are discovered in the maintenance phase, the problem is to be adapted to the solution, not vice versa...

13 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 12 Spiral process The application is made in successive phases by evolving from simpler to more complex systems. In technology, as in nature, complex systems have arisen as evolution of simpler ensembles. Object oriented programming facilitates evolutionary programming: Prototypes may be designed with only some objects. And/or with limited functionality.

14 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 13 Characteristics of an iterative process An iterative process is conceived as the construction of successive executable prototypes that go evolving from basic requirements up to the final fully functional desired system. This strategy tends to post the more risky problems early. Along the development process, real (partially working) prototypes are shown to the users and clients: The user faces the product in a real experience. The client participates as a collaborator in the project. The teem is continuously motivated with closer in time objectives. The integration of components/modules is progressive. Progress is measured/monitored in a tangible way, not on paper.

15 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 14 N minicascade. Cycles in an iterative process reproduce basically a cascade process, but subject to much simpler objectives. Analysis Design Coding Test N times

16 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 15 Appearance of requirements

17 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 16 Planning the iterations

18 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 17 Development process used by Rational (RUP). Rational proposed a development process based on three criteria: Guided by the “Use Cases”. Centered on the “Architecture”. Following an “Iterative and Incremental” strategy.

19 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 18 Use Cases The use cases describe the intended functionality of the application. They are used as transversal references that guide all phases along the development process: Specification Analysis Design Verification & Test Analysis DesignTests Specifi- cation Use Cases

20 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 19 An architecture defines the global structure of an application, and gets expressed by the data structures and algorithms. It is responsible for the integrity, uniformity, simplicity, reusability and esthetics of the final product. An architecture offers a global view of the application by formulating the strategy, but leaving the tactical decisions to the development. Qualities of a good architecture are: Simplicity  Elegance Intelligibility  Well defined abstraction levels Clear separation between interfaces and implementation at each level. Architecture

21 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 20 ROPES (Rapid Object-Oriented Process for Embedded Systems) It is a variant of RUP meant for the development of medium/large real-time and embedded applications Though it is applicable as a general purpose process, it emphasizes the aspects of real-time and embedded systems. The process is described as a sequence of activities that are to be followed by set of workers, each with a particular rol, to generate a coherent set of products, one of which is the desired software system. It follows a continuous evolutionary strategy (what goes fine remains, what fails is removed).

22 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 21 Time scales of the process. Macrocycle Microcycle Nanoc. Secondary Concepts Key Concepts Design Concepts Deployment & Optimization 1 year 4-6 weeks 1-2 days

23 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 22 A microcycle iteration in the ROPES process. Identify & specify the required properties of the application Elaboration of the modules for the prototype Optimize the model to Satisfy the QoS requirements Test Party A n alysis Design Translation ROPES Microcycle Planning and evaluation of the iteration Assembly & test of the application prototype

24 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 23 Detailed phases in the microcycle spiral. Party Análisis Design Translation Test Analysis of requirements System engineering Object analysis Architectural design Mechanistic design Detailed design Coding Modules test Integration & Test Validation Successive prototypes

25 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 24 Fase Party Es la fase de organización y reflexión de cada ciclo de iteración: En el primer ciclo se formulan: La planificación general. El ámbito del proyecto. El plan de gestión de configuraciones. El plan de reuso. El conjunto de casos de usos básicos. En los posteriores ciclos, se organiza la iteración que se inicia, e incluye: La planificación. La propuesta de arquitectura. La secuencia de actividades El objetivo del prototipo que se va a desarrollar.

26 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 25 Sub-phase Análisis de Requerimientos (Análisis) Se identifican y detallan los casos de uso concretos que van a ser implementados en el prototipo actual. Existen dos modos para describir un caso de uso: A través de un conjunto de escenarios que describen las posibles situaciones de interacción entre agentes y sistema. Mediante especificación detallada del caso de uso a través de métodos formales (lenguaje Z, lógica temporal, diagramas de estados UML, o diagramas de actividad UML, etc.) o incluso informales (texto). Productos de esta fase son: Diagramas de clases de uso. Diagramas secuencias. Diagramas de estados. Descripciones textuales.

27 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 26 Subfase Ingeniería de Sistemas (Análisis). Consiste en el diseño al mas alto nivel de la arquitectura de la aplicación. Trata de identificar los grandes elementos estructurales (subsistemas y componente) y definir su especificación. Es una fase optativa, requerida si el sistema es complejo, o si va a ser desarrollado por varios grupos. Actividades básicas de esta fase son: Definir la arquitectura de subsistemas. Definir las interfaces de los subsistemas y los protocolos de interacción. Definir como los subsistema colaboran para realizar al sistema. Descomponer los casos de uso del sistema en casos de usos y requerimientos de los subsistemas. Los principal producto son: Los diagramas de subsistemas. La especificación de requerimientos de los subsistemas.

28 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 27 Subfase Análisis de Objetos (Análisis). Implementa los casos de uso a través de la definición de conjuntos de objetos y de colaboraciones entre ellos. Las clases de objetos se organizan mediante carpetas en función del dominio al que corresponde su semántica. Debe implementarse la funcionalidad esencial y dejar para el diseño los aspectos inducidos por los requerimientos de QoS. El análisis debe ser verificado en nanociclos a través de herramientas de ejecución del modelo o con diagramas de secuencias relativos a la implementación de los casos de uso. Los productos generados en esta fase son diagramas de clases organizados por dominios y diagramas de secuencias que documentan sus colaboraciones.

29 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 28 Fase Diseño Arquitectural. De acuerdo con las características de la aplicación, se elabo- ran las vistas que corresponden a los aspectos arquitecturales: Vista de Subsistemas y Componentes. Vista de Concurrencia y Recursos. Vista de Distribución. Vista de Seguridad y Fiabilidad. Vista de Despliegue. Esta fase se realiza fundamentalmente incorporando patrones conocidos relativos a los aspectos que se desean optimizar. Los productos que se generan en esta fase son diagramas de clases que representan la estructura y diagramas de secuencias que describen las colaboraciones.

30 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 29 Subfase Diseño de Mecanismos Hace referencia a la optimización de colaboraciones entre objetos. Es similar a la fase de diseño arquitectural salvo que su ámbito se reduce a solo un grupo muy reducido de clases. Dado que las posibilidades de colaboración son muy reducidas, debe abordarse buscando patrones ya conocidos. Los productos que genera son también diagramas de clases y diagramas de colaboración. En este nivel suelen ser útiles los diagramas de estados.

31 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 30 Subfase Diseño Detallado. Concierne con la elaboración interna de los los objetos y clases cuya funcionalidad e interfaces han sido definidos en las fases anteriores. Su ámbito se reduce a cada clase de forma independiente. Los aspectos típicos que se diseñan y optimizan, son: Estructuras de datos. Elaboración y descomposición de algoritmos. Optimización de la máquina de estados de la clase. Implementación de las asociaciones. Aspectos relativos a la visibilidad y encapsulación. Garantizar el cumplimiento en fase de ejecución de las precondiciones (en particular de los rangos de las variables y parámetros). Esta fase da lugar a una definición completa de los elementos estructurales de las clases y de sus operaciones y métodos a través de diagramas de estados y actividad.

32 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 31 Fase Transducción y Elaboración Hace referencia a la construcción correcta de los elementos que se han diseñado. Incluye las tareas: Generación del código: codificación en lenguaje fuente (ya sea ma- nualmente o automáticamente), compilación, enlazado, e instalación en el entorno de ejecución. La prueba de que el código opera correctamente. Los productos básicos de esta fase son: Código fuente generado de los elementos diseñados. Plan de prueba del funcionamiento del código. Informe de los módulos generados. Componentes compilados y probados.

33 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 32 Fase Test Concierne con la construcción del prototipo planificado para la iteración y su validación. Se compone de dos fases: Integración y prueba que hace referencia al acoplamiento de los elementos arquitecturales del prototipo. Validación que hace referencia a la comprobación de que el prototipo satisface (o no) la funcionalidad y características de QoS previstas. Los principales productos que se generan son: Plan de integración e informe de los resultados que se obtienen. Plan de validación e informe de los resultados que se obtienen. Elaboración y prueba de un prototipo ejecutable. Informe de errores y defectos.

34 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 33 Gestión de un proyecto orientado a objetos Desde el punto de vista de la gestión, las fases de un proyecto son: Estudio de oportunidad: (Estudio del mercado, especificación del producto y definición del alcance del producto). Fase de Elaboración. (Especificación detallada, Planificación de las actividades, Diseño y Validación de la arquitectura) Fase de Construcción. (Diseño detallado de clases, Codificación e Integración de los componentes) Fase de Transferencia: (Fabricación del prototipo final, fabricación industrial, soporte técnico y mantenimiento)

35 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 34 Distribución del trabajo de desarrollo entre las fases.

36 Santander, 2013 Advanced Computing: The Software Development Process J.L. Medina 35 Sincronización entre gestión y desarrollo técnico. Tiempo Iteración preliminar Iteración de arquitectura Iteración de desarrollo Iteración de transferencia Transferencia Construcción Elaboración Estudio de Oportunidad Maqueta Prototipo de arquitectura Prototipo de desarrollo Versión beta Generación IteraciónResultadoFase


Descargar ppt "Julio Medina Computadores y Tiempo Real Santander, 2013 Advanced Computing G80 The software development process."

Presentaciones similares


Anuncios Google