Desenvolvimento de Programas
Aplicando Orientação por Objetos,
Linguagem de Modelagem e
Processo de Engenharia de Software
Cláudio Alessandro de Carvalho Silva
Orientador: Marco Lúcio Bittencourt
DPM-FEM-UNICAMP
Conteúdo

Introdução
 Desafios
do Desenvolvimento de Software
 Breve Histórico

Características do Conjunto de Software Anterior

Novos Requerimentos


Design e Programação Orientados por Objetos,
UML e Rational Unified Process.
Descrição do Desenvolvimento Atual
Desafios do Desenvolvimento de
Software




Demanda por: automação de processos,
manipulação de grande volume dados, atualização
freqüente e novas funcionalidades.
Softwares científicos e de engenharia: aumento da
complexidade dos problemas concorre com o
aumento da potência computacional. Demandas por
eficiência, confiabilidade, visualização de dados
complexos e interfaces com padrões industriais.
Ambiente de pesquisa: inclusão e modificação de
métodos e algoritmos é necessidade constante.
Condições necessárias: eficiência na
coordenação de grupos de trabalho, arquitetura
flexível de software e gerenciamento de mudanças.
Histórico

LNCC

Mestrado e doutorado: Marco Lúcio

Trabalhos de iniciação científica

Mestrado e doutorado: Cláudio
Características do Conjunto de
Software Anterior





Programação orientada por objetos em C++.
Separação entre interface gráfica e núcleo de solução
numérica.
ACDP: tratamento e notificação de erros e exceções, leitura de
dados, manipulação de bancos de dados.
DS: estruturas de dados básicas (matrizes, vetor, arrays,
string). Métodos de solução de sistemas lineares.
SOLVER: versão h do método de elementos finitos 2D e 3D
para problemas estruturais lineares. Implementação baseada
na generalização de elementos, funções de forma, regras de
integração e materiais.




OPT: análise de sensibilidade e otimização de problemas
estruturais lineares. Sensibilidade à variação de parâmetros
discretos e à variação da forma do domínio. Implementação
baseada na generalização de variáveis de projeto,
funcionais de performance e campos de velocidades.
SAT 2D: geração de geometrias, interface para geração de
malhas e definição de parâmetros do problema, visualização
de resultados.
ADAPT: estimador de erros e refinamento de malhas em
problemas estruturais lineares 2D.
Geradores de malha: FRONTAL (2D e refinamento), GID
(2D/3D e visualização de resultados).
Novos Requerimentos




Tratar novos tipos de problemas e implementar novos métodos de
solução: não-linearidades estruturais, Navier-Stokes, difusãoconvecção, versão p do método de elementos finitos, soluções
multi-nível de sistema de sistemas lineares, otimização de
parâmetros discretos, forma e topologia em problemas nãolineares.
Estabelecer uma arquitetura flexível de programas para pesquisa
e desenvolvimento.
Conjunto de aplicativos: manipulação de geometrias (incluindo
interfaces com padrões de trocas de dados), definição do
problema e geração de malhas, solução e otimização,
visualização.
Resultado: aumento da complexidade do conjunto de software
leva à necessidade de procedimentos de projeto, implementação e
gerenciamento.
Design e Programação Orientados por
Objetos, UML e Rational Unified
Process



Orientação por objetos: técnica de modelagem de
conhecimento baseada na definição de entidades,
responsabilidades e relacionamentos.
Como a programação orientada por procedimentos se
compara à programação orientada por objetos? A POO
permite construir sistemas mais robustos.
Por que é necessário modelar? Um modelo é uma
simplificação da realidade. Portanto, construímos modelos
para melhor entender o sistema em desenvolvimento pois há
limites na habilidade humana em compreender sistemas
complexos.

UML:
 linguagem
de modelagem de sistemas orientados por
objetos e intensivos em software
 fusão de três técnicas estabelecidas de design (Booch,
Jacobson e Rumbaugh)
 tem como objetivo permitir a visualização, especificação,
documentação (e construção) de sistemas intensivos em
software em diversos domínios (negócios,
telecomunicações, pesquisa científica, transporte,
serviços baseados na Web)
 composta por entidades, relações e diagramas usados
em modelagem estática (estrutural) e dinâmica
(comportamento) da arquitetura de um sistema


Arquitetura: conjunto de decisões sobre organização do
sistema de software; seleção dos elementos estruturais e
interfaces; comportamento, ou seja, a colaboração entre
componentes; subsistemas; estilo. A arquitetura não é
apenas relacionada como estrutura e comportamento. Mas
também com uso, funcionalidade, performance, resiliência,
reutilização, restrições econômicas e tecnológicas, etc.
A UML é apenas uma linguagem de modelagem e
portanto é apenas uma parte de um método (processo)
de desenvolvimento de software.
Rational Unified Process


Processo de engenharia de software. Fornece uma abordagem
disciplinada para atribuição de tarefas e responsabilidades
dentro de uma organização de desenvolvimento de software.
Iterativo: repetição de ciclos de requerimentos, análise/design,
implementação e testes:
Sistemas de software complexos: é impossível desenvolver
corretamente todas as etapas de uma só vez.
 Permite maior flexibilidade em acomodar novos requerimentos,
identificar e atacar riscos o mais cedo possível.




Controle: gerenciamento dos requerimentos (captura,
execução, mudança) e controle de alterações, de modo a
garantir uma compreensão comum das funcionalidades
esperadas.
Focado no desenvolvimento da arquitetura do sistema de
software. Dirigido por use cases.
O processo é suportado, automatizado, por um conjunto de
ferramentas: Requisite Pro, Rose, Soda, etc.
Sincronização das Etapas
Desenvolvimento Atual






Requerimentos: necessidades e visão.
Use cases: seqüência de ações que o sistema executa
levando a um resultado de valor para o usuário.
Use case realizations: definição de objetos e
responsabilidades que implementem o respectivo use case.
Análise e Design
Sincronização com componentes e geração automática de
código.
Primeira iteração: definição de uma arquitetura inicial,
revisão do design e da documentação dos pacotes Ds, Solver
e Opt, sincronização com código, implementação piloto
(solução de problemas estruturais lineares). Definição de
formatos de entrada e saída de dados.
Use Cases
Arquitetura Inicial
Use case Realizations
Design
Sincronização com Código
Download

Desenvolvimento de Programas Aplicando Orientação