Professional Documents
Culture Documents
A cada dia que passa os softwares se tornam mais robustos e com diversas
funcionalidades que antigamente não eram necessárias, conseqüentemente aumentam o tempo
de desenvolvimento, mão de obra empregada, custos, e sem falar que a qualidade exigida é
muito maior ao término do desenvolvimento.
O papel da engenharia de software é de fundamental importância para o processo de
desenvolvimento de sistemas, onde através de suas metodologias podemos destacar que todos
os processos são bem planejados e definidos para acompanhar todo o projeto.
O ICONIX é uma das metodologias de desenvolvimento de softwares a qual
abordaremos nesse trabalho. Falaremos sobre seu surgimento, conceitos, históricos, principais
características e aplicações.
c
£Ê
Ê
Na década de 90 os engenheiros de software descobriram as vantagens de se utilizar
metodologias para desenvolver softwares em comparação com processos utilizados (Método
de Booch, Método Objectory e Técnica de modelagem de Objetos (OMT)), perceberam que a
existência de um modelo é apontada como um dos primeiros passos em direção ao
gerenciamento e a melhoria do processo, a partir daí surgiram várias metodologias de
desenvolvimento de software.
Dentre tantas outras temos o Iconix desenvolvido em 1993 por Doug Rosemberg e
Kendall Scott da ICONIX Software Engineering, utiliza padrão UML e o seu processo é
interativo e incremental, uniu os pontos fortes de cada método, são eles:
OMT ± Modelo de Objetos do Domínio do Problema;
Objectory ± Modelo de Domínio de Solução dirigida pelo usuário;
Booch ± Modelos a nível de projeto detalhados.
Ê
O ICONIX é uma metodologia de desenvolvimento de software que reúne um
conjunto de processos que mostram as visões dinâmicas e estáticas de um sistema que serão
desenvolvidas de maneira incremental.
Sua metodologia é bastante prática e simples, onde podemos defini-la como
intermediária entre a complexidade do RUP (Rational Unified Process) e a simplicidade do
XP (Extreme Programming), porém sem deixar a desejar em nenhum aspecto.
É recomendada para desenvolvimento de softwares de pequeno ou médio porte e não
tem como característica forte a documentação, mas se destaca como um excelente processo de
análise de software.
É importante destacar sua alta performance no aspecto rastreabilidade, seus requisitos
são revistos periodicamente para estarem sempre alinhados com as necessidades do cliente,
sem falar que a cada fase do projeto novos objetos podem ser definidos.
·
Este processo de desenvolvimento possui dois principais setores:
D
Demonstra o desenvolvimento do sistema sem a participação do usuário, onde é
incrementado durante as interações do modelo dinâmico.Utiliza o Modelo de Domínio e o
Diagrama de Classe.
D
Demonstra a interação do usuário com o sistema. Utiliza Diagrama de Casos de Uso,
Diagrama de Robustez e Diagrama de Seqüência.
Tem como objetivo identificar os objetos no mundo real e todas as relações que
possam existir entre eles, geralmente se utiliza o diagrama de classe de alto nível que é
definido como ³ ´.
No ICONIX não podemos deixar de citar a diferença entre um que
descreve o comportamento e um descreve uma regra para tal comportamento.
´
Neste processo descrevem-se os casos de uso, com o fluxo principal das ações,
podendo ou não conter o fluxo alternativo e as exceções. Abordamos também a análise de
robustez, onde para cada caso de uso identificamos os objetos do cenário e atualizamos os
.
!
Ê "
O ICONIX não oferece um grande suporte para esta fase, pois segundo a maioria dos
autores existem muitas bibliotecas que falam a respeito, sem falar que se precisa escolher a
linguagem para o desenvolvimento que é bem particular dos desenvolvedores, mas ele nos
orienta com algumas dicas para o procedimento, que são:
# Ê Ê$
D
É essencial para dirigir a fase de g a partir dos casos de uso, basicamente o
modelo de domínio consiste em descobrir objetos de um problema do mudo real, é preciso
tentar descobrir o maior número possível de classes existentes no problema para qual se
pretende desenvolver o
.
Lembrando que o modelo de domínio não retratará o cenário completo para o problema que se
pretende resolver, algumas classes serão excluídas e outras serão encontradas ou modificadas.
% " D
Não tentar descobrir operações para as classes do modelo de domínio, pois, ainda não ha
informações suficientes para isso, é melhor esperar pela análise robusta e o diagrama de
seqüência.
Não tentar construir o Modelo de Domínio pensando em reutilização de código, prefira
primeiramente atender os requisitos do usuário.
Não usar nomes difíceis para as classes. Procurar usar nomes óbvios e legíveis, isso será bom
para todo o desenvolvimento do projeto.
Evitar utilizar design patterns prematuramente; devemos nos preocupar em atender os
requisitos do usuário, o uso de padrões deve ficar mais claro durante a análise robusta.
Existem vários papeis como, por exemplo, criar um diagrama Robusto de acordo com a
descrição do caso de uso, refinar o modelo estático, refinar a descrição dos casos de uso,
identificar novos objetos.
Esta fase tem o objetivo, integrar a parte de análise com a parte de projeto, assegurando que a
descrição dos casos de uso estão corretas. A Análise Robusta focaliza construir um modelo
U
analisando as narrativas de texto de caso de uso, identificando um conjunto de objetos que
participarão de cada caso de uso.
&'
l
Representa o artefato principal do produto de g , descrevendo uma seqüência particular
de funcionamento, que tem como objetivo construir um modelo dinâmico entre o usuário e o
sistema exibindo o comportamento do sistema em tempo de execução de forma detalhada,
devemos utilizar os objetos e suas interações identificadas na análise robusta, temos por
obrigação o detalhar cada fluxo de ação.
% "
Não fazer um diagrama de seqüência para cada caso de uso. É preciso mostrar os objetos e a
responsabilidade de cada um;
Atualizar o modelo estático transformando-as em diagrama de classe agrupadas em pacotes de
caso de uso. Nesse momento estaremos trocando o espaço do problema pelo espaço da
solução do problema;
Não focalizar os métodos mais importantes (mostrem o real funcionamento do sistema) e
gastar tempo em definir métodos get() e set(). Devemos explorar o comportamento dinâmico
do sistema, alocar atributos é métodos as classes.
(
A
!
"
#$ %&'
(
)
*+
+
,
-.
)
/
&
# $ 0A
"
#$
.
"
1.
$
"
2