Title: The software development process
1- The software development process
2Software 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
3Nature 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 tuned
according to the 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. e.g. 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 its hardware. e.g. A washing
machine. - Real Time They have in their specifications
timing requirements and usually hold a reactive
nature. e.g. A radar control system. - Distributed They execute their constituent parts
in different processors, and hence use networks
as elements for communication. e.g. Messenger,
Dropbox, etc.
4Objectives 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.
5Basic elements in a software development project.
Working lines
6Scalability.
- 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 realize 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.
7Tecnolgical keys in model driven development
processes.
IterativeDevelopment
VisualModeling
Frameworks
ExecutableModels
AutomatedRequirements-Based Testing
Bi-unicity Model-Code
8Main 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.
9Levels of maturity of development processes.
- 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.
10Linear process model.
- Tunnel process
- No process
- No control
- Just for small projects.
11The waterfall model
Time
Requirements Analysis
Analysis
Design
Advance
Code implementation
Modules test
Debugging
Integration
System tests
Maintenance
High cost error recovery
Implementation
12Problems 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...
13Spiral 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.
14Characteristics 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.
15N minicascade.
- Cycles in an iterative process reproduce
basically a cascade process, but subject to much
simpler objectives.
Analysis
Design
Coding
N times
Test
16Discovery of requirements
17Planning the iterations
18Development 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.
19Use 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
Design
Tests
Specifi- cation
Use Cases
20Architecture
- 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.
21ROPES (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).
22Time scales of the process.
1 year
Key Concepts
Secondary Concepts
Macrocycle
Design Concepts
Deployment Optimization
4-6 weeks
Microcycle
Nanoc.
1-2 days
23A microcycle iteration in the ROPES process.
Identify specify the required properties of
the application
24Detailed phases in the microcycle spiral.
Translation
Test
Modulestest
Integration Test
Coding
Successive prototypes
Validation
Detailed design
Party
Mechanisticdesign
Analysis of requirements
Design
Architecturaldesign
System engineering
Object analysis
Análisis
25Fase 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.
26Sub-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.
27Subfase 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.
28Subfase 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.
29Fase 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.
30Subfase 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.
31Subfase 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.
32Fase 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.
33Fase 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.
34Gestió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)
35Distribución del trabajo de desarrollo entre las
fases.
36Sinchronization management / technical
development.
Iteration
Result
Phase
Preliminar iteration
Viability Study
Sketch
Architecture iteration
Preparation
Architecture prototype
Architecture iteration
Architecture prototype
Development iteration
Development prototype
Development iteration
Construction
Development prototype
Development iteration
alpha/beta version
Delivery Iteration
Transfer
Beta version
Delivery Iteration
Fully deployed
Time