tcc - engenharia de software baseada em componentes

91
SOCIEDADE EDUCACIONAL DE SANTA CATARINA - SOCIESC INSTITUTO SUPERIOR TUPY - IST Juliano Tiago Rinaldi ARTEFATOS GERADOS NOS PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE CATALYSIS E UML COMPONENTS: UM ESTUDO EXPLORATÓRIO COMPARATIVO Joinville 2011/1

Upload: juliano-tiago-rinaldi

Post on 12-Apr-2017

556 views

Category:

Software


0 download

TRANSCRIPT

Page 1: TCC - Engenharia de Software Baseada em Componentes

SOCIEDADE EDUCACIONAL DE SANTA CATARINA - SOCIESC

INSTITUTO SUPERIOR TUPY - IST

Juliano Tiago Rinaldi

ARTEFATOS GERADOS NOS PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE

CATALYSIS E UML COMPONENTS: UM ESTUDO EXPLORATÓRIO COMPARATIVO

Joinville

2011/1

Page 2: TCC - Engenharia de Software Baseada em Componentes

JULIANO TIAGO RINALDI

Artefatos gerados nos processos de desenvolvimento de software Catalysis e UML

Components

Trabalho de Conclusão de Curso apresentado aoInstituto Superior Tupy - IST, como requisito par-cial para a obtenção de grau de Bacharel de En-genharia da Computação, sob a orientação doprofessor Paulo Rogério Pires Manseira.

Joinville

2011/1

Page 3: TCC - Engenharia de Software Baseada em Componentes

RINALDI J. T.. Artefatos gerados nos processos de desenvolvimento de soft-

ware Catalysis e UML Components

Joinville: SOCIESC, 2011/1.

Page 4: TCC - Engenharia de Software Baseada em Componentes

JULIANO TIAGO RINALDI

Trabalho de Diplomação sob o tíulo Ar-tefatos gerados nos processos de desen-volvimento de software Catalysis e UMLComponents, apresentado por Juliano Ti-ago Rinaldi, e aprovado em 07 de julhode 2011, em Joinville, pela banca exami-nadora constituída conforme abaixo:

Luiz Carlos Camargo - [IST - SOCIESC]

Paulo Rogério Pires Manseira - [IST - SOCIESC]

Salvador Antônio dos Santos - [IST - SOCIESC]

Page 5: TCC - Engenharia de Software Baseada em Componentes

Dedico este trabalho ao meu pequenogrande filho Elyan, que me ensinou umnovo jeito de viver.

Page 6: TCC - Engenharia de Software Baseada em Componentes

AGRADECIMENTO

Agradeço a várias pessoas que participaram diretamente e indiretamente deste trabalho paratorná-lo realizado. Primeiramente, à minha esposa Janaina, por me apoiar e sacrificar-se quasesozinha nos cuidados com nosso pequeno filho Elyan; à minha mãe, que sempre acreditouno meu potencial e me deu forças para conquistar minhas vitórias; ao meu orientador, PauloManseira, por compartilhar seu enorme conhecimento de engenharia de software e dedicar seutempo em revisar e melhorar este trabalho; aos meus colegas de turma, que foram companhei-ros durante todo o curso; à professora Glaci Gurgacz, por sua dedicação e cobrança para quealunos realizassem um trabalho de conclusão de curso de ótima qualidade; ao professor LuizCarlos Camargo, pelo auxílio, esclarecimento e motivação apresentada sobre este trabalho.

Page 7: TCC - Engenharia de Software Baseada em Componentes

"Só sei que nada sei"

Sócrates (470 a.C. - 399 a.C.)

Page 8: TCC - Engenharia de Software Baseada em Componentes

RESUMO

A engenharia de software trouxe organização e foco na qualidade para a construção desoftwares. Criada a menos de 50 anos. Com o passar dos anos, as maneiras de desenvol-ver softwares foram se ramificando, criando processos específicos para cada tipo de software,ou mesmo, objetivos de softwares, chegando em um momento que a engenharia de softwarepropôs a construção de softwares componentizados. Esta nova forma de construir softwaretrouxe benefícios à engenharia, que por fim, deu-se o nome de Engenharia de Software Ba-seada em Componentes (ESBC). A ESBC é um ramo da engenharia de software com focona reutilização de softwares, que através de componentes moduláveis proporcionam aplica-ções mais robustas e confiáveis. Dentro da ESBC, existem diferentes tipos de processos desoftwares para construção de aplicações baseadas em componentes, com isto, o objetivo destetrabalho é apresentar o estudo de dois processos, Catalysis e UML Components, e, diante disto,fazer uma comparação entre etapas e artefatos gerados nestes processos, para identificar qualoferece subsídios para uma melhor especificação de software baseado em componentes. Apesquisa aplicada foi de caráter exploratório, utilizando como estratégia um estudo comparativoentre as etapas e artefatos dos processos citados.

Conclui-se, que é de grande importância a construção de softwares moduláveis, pois comisso, além da arquitetura do software manter uma estrutura flexível em forma de componentesde negócios, possibilita a evolução do software sem interferir no todo, aplicando a manutençãosomente no componente desejado. Por fim, o reuso de componentes trazem maior confiançapara a aplicação, pois como os componentes já estão desenvolvidos e operando em outrossoftwares, são considerados maduros, com bugs já corrigidos, proporcionando um aumento daqualidade do software.

Palavras-chave: Engenharia de Software. ESBC. Catalysis. UML Components.

Page 9: TCC - Engenharia de Software Baseada em Componentes

ABSTRACT

Software engineering has brought organization and focus on quality for software construc-tion. Established less than 50 years. Over the years, the ways of developing software has beenbranching out, creating specific processes for each type of software, or even targets of softwares.With this, it was a time that software engineering has proposed building componentized software.This new way of building software has brought benefits to engineering, which eventually gavethe name of Component-based software engineering (CBSE), with a focus on software reuse.Within the CBSE, there are different types of software processes for building component-basedapplications, thus, the objective of this paper is to present the study of two processes, Cataly-sis and UML Components, and before that, make a comparison between steps and artifactsgenerated in these processes, to identify which provides resources for a better specification ofcomponent-based software. The applied research was exploratory, using a comparative studybetween steps and artifacts of the processes mentioned.

The conclusion, which has a great importance about modular software construction, be-cause, beyond the software architecture to maintain a flexible structurein order to build businesscomponents, enables the software evolution without interfering the complete software, applyingthe maintenance only in the desired component. Finally, the components reuse bring greaterconfidence to the application, because as components are already developed and operating inother software are considered mature, with fixed bugs, providing a software quality increase.modeling software.

Keywords: Software Engineering. CBSE. Catalysis. UML Components.

Page 10: TCC - Engenharia de Software Baseada em Componentes

LISTA DE ILUSTRAÇÕES

−Figura 1 Primeiras cinco áreas do conhecimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

−Figura 2 Últimas seis áreas do conhecimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

−Figura 3 Disciplinas relacionadas a engenharia de software . . . . . . . . . . . . . . . . . . . . . . . 22

−Figura 4 Modelo de processo em cascata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

−Figura 5 Modelo de processo incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

−Figura 6 Modelo de desenvolvimento rápido de aplicações (RAD) . . . . . . . . . . . . . . . . . 30

−Figura 7 Modelo prototipagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

−Figura 8 Modelo espiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

−Figura 9 Modelo de processo unificado (RUP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

−Figura 10 Atividades da metodologia Extreme Programming (XP) . . . . . . . . . . . . . . . . . . 36

−Figura 11 Modelo de processo da metodologia SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

−Figura 12 Metodologia Crystal - mapa da família . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

−Figura 13 Processo da ESBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

−Figura 14 Modelo de processo da ESBC completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

−Figura 15 Modelo de escopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

−Figura 16 Modelo de construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

−Figura 17 Princípios do Catalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

−Figura 18 Modelo de processo Catalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

−Figura 19 Domínio do sistema com foco no cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

−Figura 20 Diagrama de mapa conceitual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

−Figura 21 Diagrama de contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

−Figura 22 Diagrama de cenário de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

−Figura 23 Diagrama de tipo e operações do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

−Figura 24 Modelo da plataforma requerida do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

−Figura 25 Diagrama de arquitetura técnica do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

−Figura 26 Diagrama de arquitetura interna de componente . . . . . . . . . . . . . . . . . . . . . . . . . 58

−Figura 27 Modelo de Processo UML Components baseado no RUP . . . . . . . . . . . . . . . . 61

−Figura 28 Etapas e artefatos gerados no processo UML Components . . . . . . . . . . . . . . 61

−Figura 29 Três estágios do processo UML Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

−Figura 30 Modelo conceitual de negócio ou domínio da aplicação . . . . . . . . . . . . . . . . . . 64

−Figura 31 Exemplo - diagrama de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

−Figura 32 Exemplo - narrativa gerada de um caso de uso . . . . . . . . . . . . . . . . . . . . . . . . . . 65

−Figura 33 Exemplo - diagrama de classes representando o modelo de tipo de negócio 67

Page 11: TCC - Engenharia de Software Baseada em Componentes

−Figura 34 Exemplo - diagrama de classes representando o modelo de especificação de

interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

−Figura 35 Ilustração de um componente que oferece interface de implementação . . . 70

−Figura 36 Ilustração de um componente com interface provided e required . . . . . . . . . 70

−Figura 37 Modelo de arquitetura de componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

−Figura 38 Modelo de domínio do sistema no processo Catalysis . . . . . . . . . . . . . . . . . . . . 75

−Figura 39 Modelo de domínio do sistema no processo UML Components . . . . . . . . . . . 76

−Figura 40 Análise gráfica da comparação de artefatos da etapa Especificação de Ne-

gócio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

−Figura 41 Análise gráfica da etapa de Especificação de Negócio . . . . . . . . . . . . . . . . . . . 78

−Figura 42 Análise gráfica da comparação de artefatos da etapa Especificação de Sis-

tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

−Figura 43 Análise gráfica da etapa de Especificação de Sistema . . . . . . . . . . . . . . . . . . . 82

−Figura 44 Análise gráfica da comparação de artefatos da etapa Arquitetura de Compo-

nentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

−Figura 45 Análise gráfica da etapa de Arquitetura de componentes . . . . . . . . . . . . . . . . . 85

−Figura 46 Análise gráfica comparativa das etapas genéricas . . . . . . . . . . . . . . . . . . . . . . . 86

Page 12: TCC - Engenharia de Software Baseada em Componentes

LISTA DE QUADROS

−Quadro 1 Geração de etapas genéricas entre os processos Catalysis e UML Compo-

nents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

−Quadro 2 Etapas genéricas relacioados aos artefatos dos processos Catalysis e UML

Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

−Quadro 3 Informações captadas pelos artefatos na especificação de negócio . . . . . 77

−Quadro 4 Informações captadas pelos artefatos na especificação de sistema . . . . . 80

−Quadro 5 Informações captadas pelos artefatos na arquitetura de componentes . . 84

Page 13: TCC - Engenharia de Software Baseada em Componentes

LISTA DE SIGLAS

ABNT Associação Brasileira de Normas Técnicas

CASE Computer-aided Software Engineering

COTS Commercial Off-The-Shelf

ECP Bacharelado em Engenharia da Computação

ERP Enterprise Resource Planning

ESBC Engenharia de Software Baseada em Componentes

IST Instituto Superior Tupy

NATO Nato Science Committe

RAD Rapid Application Development

RUP Rational Unified Process

SWEBOK Software Engineering Body of Knowledge

TCC Trabalho de Conclusão de Curso

UML Unified Modeling Language

XP Extreme Programming

Page 14: TCC - Engenharia de Software Baseada em Componentes

SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2 ENGENHARIA DE SOFTWARE BASEADA EM COMPONENTES . . . . . . . . . . . 19

2.1 ENGENHARIA DE SOFTWARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.1.2 Processos de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.2 MODELOS DE PROCESSOS DE SOFTWARE . . . . . . . . . . . . . . . . . . . . 27

2.2.1 Modelo em cascata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.2.2 Modelo incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.2.3 Rapid Application Development . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2.4 Prototipagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.2.5 Modelo espiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.2.6 Rational Unified Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.3 METODOLOGIAS ÁGEIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.3.1 Extreme programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.3.2 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2.3.3 Crystal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.4 REUSO DE SOFTWARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.4.1 ESBC como solução de reuso de software . . . . . . . . . . . . . . . . . . . . 41

2.4.2 Processo da ESBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2.4.3 Componentes de prateleira (COTS) . . . . . . . . . . . . . . . . . . . . . . . . 44

3 CATALYSIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.1 MODELO DE ESCOPO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.2 MODELO DE CONSTRUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3.3 PRINCÍPIOS FUNDAMENTAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.4 PROCESSO CATALYSIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.4.1 Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

3.4.2 Especificação do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.4.3 Arquitetura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3.4.4 Arquitetura interna dos componentes . . . . . . . . . . . . . . . . . . . . . . . 57

4 UML COMPONENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.1 PROCESSO UML COMPONENTS . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.1.1 Identificação de Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.1.2 Interação entre Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

4.1.3 Especificação de Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Page 15: TCC - Engenharia de Software Baseada em Componentes

5 COMPARATIVO ENTRE ARTEFATOS CATALYSIS E UML COMPONENTS . . . . . . 72

5.1 DEFINIÇÕES DE CRITÉRIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

5.2 ESPECIFICAÇÃO DE NEGÓCIO . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

5.3 ESPECIFICAÇÃO DE SISTEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

5.4 ARQUITETURA DE COMPONENTES . . . . . . . . . . . . . . . . . . . . . . . . 82

6 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Page 16: TCC - Engenharia de Software Baseada em Componentes

16

1 INTRODUÇÃO

Uma vez que o mercado de software está mudando a forma de desenvolvimento de sis-

temas, para Sommerville (2007), os métodos ágeis vêm recebendo uma grande atenção nos

últimos anos, devido aos seus objetivos de desenvolvimento rápidos e interativos de aplicações.

Esta nova visão desencadeou, em muitas empresas, a filosofia “comprar, em vez de construir

softwares” (CLEMENTS, 1995 apud PRESSMAN, 2006), chamados de Commercial Off-The-

Shelf (COTS) componentes comerciais de prateleira. Percebe-se, portanto, que o domínio dos

conceitos e técnicas de desenvolvimento de software baseado em componentes torna-se pre-

missa para qualquer profissional da área.

Com o avanço das linguagens de software, criou-se o conceito de Orientação a Objetos na

década de 1960, que evolui a partir de então. Este recurso desdobra-se, a partir de 1968 para o

desenvolvimento de componentes, permitindo o amadurecimento dos estudos na reutilização de

software. O desenvolvimento de software voltado para orientação a objeto possibilita abordar

a relação dos objetos abstratos com o conceito, definição, e comportamento no mundo real,

facilitando a compreensão de sistemas complexos estruturando-os em objetos comunicáveis. A

flexibilidade destes sistemas foi tão ascendente que as novas linguagens de desenvolvimento

tiveram que se adaptar ao novo paradigma. Atualmente o desenvolvimento de componentes

implica em desenvolvimento orientado a objeto, onde os próprios processos e metodologias

especificam como requisito de conhecimento a análise orientada a objeto.

A Engenharia de Software Baseada em Componentes (ESBC) foi criada para padronizar o

processo de descoberta, reuso, e aplicação de componentes dentro da engenharia de software.

De forma conceitual, especifica um macro processo para todas as metodologias de desenvolvi-

mento de componentes.

Para Pressman (2006), a ESBC é um ramo da engenharia de software que contempla duas

atividades: engenharia de domínio e desenvolvimento baseado em componentes. A engenharia

de domínio determina processos para elaborar o projeto de software baseado em componentes,

bem como explana técnicas para coleta de componentes funcionais reusáveis e comportamento

de dados. Já o desenvolvimento é a etapa de produção do software.

Por meio dos processos e técnicas da ESBC, constroem-se componentes moduláveis de

grande qualidade que impactam diretamente em rápido desenvolvimento de novos softwares.

O objetivo é tornar componentes reutilizáveis para desenvolvimento de futuros sistemas com

domínios de aplicações semelhantes.

Software é um produto diferenciado, onde qualidade não obrigatoriamente é sinônimo de

alto preço. Os profissionais que desejam o patamar de alta qualidade com baixo preço preci-

Page 17: TCC - Engenharia de Software Baseada em Componentes

17

sam buscar formas de desenvolver softwares reutilizáveis (DIJKSTRA, 1972 apud PRESSMAN,

2006).

Seguindo essa linha de pensamento, a questão que surge é: Como produzir software de

qualidade, reutilizando o máximo de funcionalidades já desenvolvidas e testadas? Esta per-

gunta deixa muitas dúvidas tanto no âmbito acadêmico quanto no empresarial.

Os projetos de reutilização de software são poucos publicados no mundo acadêmico de-

vido à complexidade do processo de análise de sistema e arquitetura do software. Professores

acadêmicos sentem a necessidade de um material mais palpável para transpor a teoria para a

prática da ESBC aos seus alunos. Dentre as bibliografias pesquisadas, os autores dos livros

da engenharia de software publicam seus trabalhos sobre ESBC de modo conceitual, servindo

para os leitores como base teórica de desenvolvimento de software baseado em componentes,

porém, não se encontra atualmente nas bibliografias conhecidas, algum material mais consis-

tente, que pudesse apresentar as etapas e artefatos de processos ligados a ESBC. Com isso,

este trabalho tem por objetivo geral compreender e comparar artefatos dos processos Cataly-

sis e UML Components da engenharia de software baseado em componentes. Para atingi-lo,

foram formulados os seguintes objetivos específicos: conhecer o processo da engenharia de

software baseada em componentes; conceituar a importância da reutilização de software; re-

latar metodologias de desenvolvimento de software baseado em componentes; compreender a

construção de artefatos para modelagem de software basedo em componentes e analisar os

artefatos gerados de cada etapa na especificação de componentes. A metodologia utilizada

neste trabalho consiste em uma pesquisa de natureza exploratória sobre o tema engenharia

de software baseada em componentes. Em um segundo momento desenvolveu-se um estudo

comparativo entre as etapas e artefatos de cada processo. Na compação dos artefatos, foram

gerados critérios de avaliação através de perguntas, sendo assim, o objetivo é focado em obter

quais as informações que os artefatos de cada processo pode responder sobre a especificação

de um software. Em sequência, através da análise do referencial teórico, deu-se comentários

sobre pontos positivos e negativos do material gerado para especificação de um sistema base-

ado em componentes.

Este trabalho está estruturado em 5 capítulos. Inicia-se com o referencial teórico sob o tí-

tulo de Engenharia de Software Baseada em Componentes, onde explõe sobre a engenharia de

software, modelos de processos de software, metodologias ágeis, ESBC e Reuso de Software.

No capítulo 3, apresenta-se o processo Catalysis. Será abordado, processo, etapas e artefatos

do desenvolvimento de software baseado em componentes através do Catalysis. Logo após, no

capítulo 4, o trabalho é dedicado a sintetizar os artefatos e as etapas do processo de desenvol-

vimento de sistemas utilizando UML Components. Enfim, no capítulo 5, trata-se dos critérios de

Page 18: TCC - Engenharia de Software Baseada em Componentes

18

avaliação e do comparativo entre artefatos Catalysis e UML Components, que descreverá uma

análise sobre os artefatos pertencentes as etapas dos processos apresentados neste trabalho.

A comparação teve como requisito, a compreensão do referencial teórico e os critérios de ava-

liação descritos no capítulo. Por fim, a conclusão descreve as dificuldades encontradas, bem

como o aprendizado extraído deste trabalho, deixando para trabalhos futuros, sugestões de

desenvolvimento de software baseado em componentes utilizando os processos apresentados

neste trabalho.

Adiante, o trabalho inicia com o referencial teórico, explicando sobre a engenharia de soft-

ware baseada em componentes, que agrupa as definições da engenharia de software, conceito

de software, processos e reuso de softwares.

Page 19: TCC - Engenharia de Software Baseada em Componentes

19

2 ENGENHARIA DE SOFTWARE BASEADA EM COMPONENTES

Este capítulo objetiva formular conceitos bases para compreensão da engenharia de soft-

ware baseada em componentes. Para isso, explana um referencial teórico extenso sobre pontos

importantes e necessários que cabem à engenharia de software.

2.1 ENGENHARIA DE SOFTWARE

A engenharia de software está centralizada como uma engenharia de cunho econômico,

com perspectivas de desenvolvimento de software com custos adequados e alta qualidade.

(SOMMERVILLE, 2007). Em outro ponto de sua bibliografia, Sommerville (2007) especifica

engenharia de software como uma disciplina da engenharia relacionada a todo conhecimento

necessário para produção de software, considerando desde estágios primários de especificação

até a manutenção e operação do sistema.

Bauer, Naur e Randel (apud PRESSMAN, 2006, p. 17) descrevem na conferência Nato

Science Committe (NATO), que “Engenharia de Software é a criação e a utilização de sólidos

princípios de engenharia a fim de obter softwares econômicos que sejam confiáveis e que tra-

balhem eficientemente em máquinas reais”.

Já a IEEE (1993), desenvolveu uma abordagem mais abrangente sobre engenharia de

software: “É a aplicação de uma abordagem sistemática, disciplinada e quantificável, para o

desenvolvimento, operação e manutenção do software [...]”.

Pádua (2009) compreende que a engenharia de software se preocupa com o software como

um produto, ou seja, determina subsídios para que o software seja projetado para solucionar

um problema.

Na busca do conceito de engenharia de software em um dicionário de português, encontra-

se apenas o termo engenharia. Ferreira (2010) conceitua o termo como:

Arte de aplicar conhecimentos científicos e empíricos e certas habilitações es-pecíficas à criação de estruturas, dispositivos e processos que se utilizam paraconverter recursos naturais em formas adequadas ao atendimento das neces-sidades humanas.

Esta descrição é considerada muito genérica ao se tratar dos princípios da engenharia

de software, pois esta trata de um produto intangível quanto a materiais físicos. Na procura

nos dicionários de língua inglesa uma possível definição sobre engenharia de software, não foi

encontrado assunto específico para descrevê-la, se trata de um conceito direcionado, ligado á

tecnologia, e ainda pouco explorado, menos de 50 anos de existência.

Page 20: TCC - Engenharia de Software Baseada em Componentes

20

Segundo Bruegge e Dutoit (1999), a engenharia de software é uma atividade de modela-

gem. Os engenheiros de software lidam com complexidade de sistemas através da modelagem

e arquitetura de software cujo o propósito é focar na solução do problema de uma forma acei-

tável, sendo que muitas vezes, esta pesquisa é conduzida através da experimentação. Os

processos iniciais começam com a coleta de dados; catalogando e absorvendo todas as infor-

mações do projeto. Na sequência, deve-se organizá-las e formalizá-las em conhecimento. A

aquisição de conhecimento não é linear, já que uma única peça de dados pode invalidar mo-

delos completos de sistema. Ao adquirir o conhecimento e tomar decisões sobre o sistema e

domínio da aplicação, os engenheiros de software necessitam entender o contexto e razões da

aplicação para não só atingir, mas superar as expectativas do cliente.

Os engenheiros de software ficam limitados pelos orçamentos e prazos do projeto. O de-

safio encontrado para maioria dos engenheiros é arquitetar a solução do sistema com custos e

prazos reduzidos, garantindo qualidade no processo de desenvolvimento e garantia de entrega.

Utiliza-se de recursos como construção de diagramas, estruturas de dados e conceitos tecnoló-

gicos, e deve deixar detalhes irrelevantes da funcionalidade para outras áreas do conhecimento

(BRUEGGE; DUTOIT, 1999, p. 5).

Enquanto alguns autores discutem o termo engenharia de software com foco em soluções

e processos para a área de desenvolvimento de software, a Software Engineering Body of Kno-

wledge (SWEBOK) se preocupa com a área acadêmica, definindo áreas de estudo, conforme

a figura 1 e 2, que por sua vez, determinam as disciplinas de conhecimento na engenharia de

software. Seus objetivos são mais estruturais. Caracterizada por conteúdos e tópicos de es-

tudo que devem ser tratados em um curso relacionado à engenharia de software. A SWEBOK

demonstra uma visão universal sobre a engenharia de software e relaciona suas semelhanças

e interações com outras disciplinas do conhecimento (figura 3) (ABRAN et al., 2004).

A denominação de engenharia de software foi proposta no ano de 1968 em uma conferência

organizada para a discussão da “crise de software”. O fenômeno da crise do software foi qualifi-

cado quando começaram a surgir novos hardwares de computadores construídos com circuitos

integrados. O poder de processamento de um computador da época construído com circui-

tos integrados foi tão ascendente que softwares considerados até então não realizáveis, foram

considerados propostas viáveis. Começaram a surgir demandas de softwares com grandeza e

complexidade muito superior aos produzidos da época. O desenvolvimento destes softwares

comprovou a inexperiência das equipes para construção de aplicações complexas que impac-

tavam diretamente em anos de atraso de entrega do software, e custos exorbitantes ao final do

projeto. A manutenção do software se tornava uma tarefa para heróis, e o desempenho era in-

satisfatório, percebeu-se que todo o trabalho desenvolvido não caberia á evolução do sistema.

Page 21: TCC - Engenharia de Software Baseada em Componentes

21

[!htbp]

Figura 1: Primeiras cinco áreas do conhecimentoFonte: Abran et al. (2004, c. 1, p. 8)

Page 22: TCC - Engenharia de Software Baseada em Componentes

22

Figura 2: Últimas seis áreas do conhecimentoFonte: Abran et al. (2004, c. 1, p. 9)

Figura 3: Disciplinas relacionadas a engenharia de softwareFonte: Abran et al. (2004, c. 12, p. 1)

Page 23: TCC - Engenharia de Software Baseada em Componentes

23

Estava intitulada a crise do software. Novos conceitos técnicos e métodos eram necessários

para assegurar o desenvolvimento de software de maneira controlada, através desta necessi-

dade foi criado a então engenharia de software (PRESSMAN, 2006).

Todos os autores concordam que engenharia de software tem objetivo em construir softwa-

res de qualidade, com custos adequados e processos bem definidos. Para entender os objetivos

da engenharia de software precisamos conhecer definitivamente o que é software, e como ele

é construído em um processo de desenvolvimento de software.

2.1.1 Software

Software é abstrato e intangível, sem limite quanto à física dos materiais. Está qualificado

como uma área complexa da engenharia que facilmente se expande e torna-se de difícil com-

preensão (SOMMERVILLE, 2007).

Pressman (2006) conceitua software como instruções ou programas de computadores que

quando executados fornecem as características, funções e desempenho desejados. São estru-

turas de dados que permitem aos programas manipular adequadamente a informação. Devem

ainda fazer parte do software, os documentos que descrevem operações e uso dos programas.

Para Pádua (2009), software é a parte programável de um sistema de informática, sendo

considerado elemento central de estruturas complexas e ao mesmo tempo flexíveis, que trazem

funções, utilidade e valor ao sistema.

O software não pode ser pesado ou medido em unidades físicas, de forma estrutural é en-

tendido como uma série de instruções lógicas adequadas para executar uma função no sistema.

Ele não trabalha sozinho, aliás, necessita de muitos outros componentes trabalhando em con-

junto para lhe dar a condição de execução das tarefas. Por outro lado, o software não executa

tarefas, pois esta responsabilidade é diretamente dedicada ao processador da máquina, que

necessita ser alimentado para executar as ações. O processador precisa receber instruções

para saber o que fazer; neste momento entra o alimento, ou seja, o software, que contém uma

série de lógicas utilizadas pelo processador para traduzir a ação á tomar no sistema.

Software, sob o ponto de vista de Wang (2008), é a compilação de códigos de uma certa

linguagem de programação, composta por algoritmos de dados logicamente transpassados para

um computador responsável pela execução do sistema. Além do arcabouço lógico, fazem parte

do software a documentação da aplicação, manuais do usuário, especificação e concepção do

sistema, testes de verificação e validação de requisitos, e mecanismos de manutenção.

O Software está em constante evolução; ninguém da década de 50 poderia prever que tal

tecnologia tornar-se-ia tão necessária em nossos dias. Hoje somos dependentes de muitas

Page 24: TCC - Engenharia de Software Baseada em Componentes

24

aplicações; os softwares são usados para tratar negócio, ciência, engenharia, assegurar vidas,

lazer e muito mais (PRESSMAN, 2006).

Para esse autor, a indústria de Software tornou-se um fator dominante nas economias dos

países industrializados. O programador que mantinha o conhecimento por inteiro do software foi

substituído por uma equipe de especialista em software, cada um preocupado com uma parte

da tecnologia necessária para produzir uma aplicação complexa.

É importante entender que software não é apenas um programa de computador. Som-

merville (2007) explica que há outros artefatos inclusos no escopo de um sistema. Dados de

documentação e configuração são partes necessárias para que uma aplicação opere correta-

mente. Estas informações fazem parte de um software. Os engenheiros de software constroem

suas aplicações como um produto de software, incluem no escopo todas as informações e mão

de obra necessária para que o produto entre em operação. O autor propõe a divisão do produto

de software em dois caminhos.

a) Produtos genéricos. São produtos de softwares desenvolvido por uma organização que visa

vendê-los no mercado a qualquer cliente interessado. Dentre os produtos de software,

qualifica-se um produto genérico como, por exemplo: um processador de texto, de fácil

instalação e utilização por diversas pessoas.

b) Produtos sob encomenda. São produtos diferenciados, produzidos por uma organização

que atende diretamente um cliente específico. O produto final deve apoiar o cliente na

melhoria de processos ou mesmo na resolução de problemas. Classifica-se produto sob

encomenda, como um simples Enterprise Resource Planning (ERP) customizado a de-

terminado cliente.

É notável a diferença entre os tipos de produtos de software. Este fato se estende também

para a especificação dos requisitos de sistema. Nos produtos genéricos, a própria organização

gerencia e cria seus requisitos, já nos produtos encomendados, a especificação do sistema

fica com o cliente, que deve transpassar suas necessidades em forma de requisitos para a

organização desenvolver o produto necessário.

Após a compreensão do que é um software, há a necessidade de entender como ele é

construído, que por sua vez, estrutura-se através de processos de software.

2.1.2 Processos de software

O processo de software para Sommerville (2007) é um conjunto de ferramentas e atividades

para confeccionar um produto de software. Os processos para serem executados dependem

Page 25: TCC - Engenharia de Software Baseada em Componentes

25

de pessoas com capacidades intelectuais e criativas. Por esse motivo, a automatização do

processo de software tem conseguido um sucesso limitado.

Baetjer (apud PRESSMAN, 2006, p. 16) comenta que:

[...] O processo é um diálogo no qual o conhecimento, que deve ser transfor-mado em software é reunido e incorporado ao software. [...] É um processointerativo no qual a própria ferramenta serve como meio de comunicação, comcada nova rodada de diálogo explicitando mais conhecimento útil do pessoalenvolvido.

Interpretando o comentário de Baetjer (1998), conclui-se que processos de software são

interativos, e necessitam das pessoas em equipe para assim aplicar e adquirir o conhecimento

útil ao software.

Aplicando um conceito simples sobre processos, o melhor encaixe à definição vem de Pá-

dua (2009), que resume processos como “um conjunto de passos parcialmente ordenados,

constituídos por atividades, métodos, práticas e transformações, usado para atingir uma meta”.

O autor abrange simplificadamente o tema por definição técnica, transparecendo um entendi-

mento global sobre os processos existentes nas indústrias. Quando o referido autor trata da

engenharia de software, define processo listando apenas algumas práticas de forma sucinta,

como atividades de desenvolvimento, manutenção, aquisição e contratação de software.

Abran et al. (2004, p. 6) entende que o processo de software está preocupado com a defi-

nição, implementação, avaliação, medição, gestão, mudança e melhoria do processo da enge-

nharia de software. O autor ainda explana que o processo de software está dividido em quatro

subáreas.

a) A primeira subárea apresenta processo de implementação e mudança: considerado como

infraestrutura de processo, gestão do ciclo do processo de software, modelo de imple-

mentação e mudanças de processos.

b) A segunda subárea apresenta a definição do processo. Inclui temas como ciclo de vida de

modelos de softwares, ciclo de vida do processo de software, definições de processos,

adaptação e automação de processos.

c) A terceira subárea é a avaliação do processo. Nela são apresentados modelos de processo

de avaliação e métodos de avaliação do processo.

d) A quarta subárea descreve as medidas de processos e produtos. O processo de engenharia

de software abrange a medição geral dos produtos, bem como a medição do processo

em geral. Fazem parte desta subárea, processos de medição, medição de produtos de

software, qualidade dos resultados das medições, modelos de informação e técnicas de

medição do processo.

Page 26: TCC - Engenharia de Software Baseada em Componentes

26

Pressman (2006) descreve como o processo é aplicado na engenharia de software e ex-

plana que o processo une as camadas de tecnologia, possibilitando o desenvolvimento racional

do software como produto. No contexto gerencial, dá subsídios para administração e controle

dos projetos de software, já no contexto técnico define como as ferramentas e técnicas são

aplicadas. O produto do trabalho são modelos, documentos, dados, relatórios, formulários, etc.

A estrutura básica do processo de software é definida por um arcabouço de atividades que são

aplicadas a qualquer projeto de software independente de tamanho ou complexidade. Cada

atividade é justificada por ações, composta por tarefas individuais que são responsáveis pela

execução de parte do trabalho determinado pela ação. Projetos são distintos, e sua produção

também segue processos diferenciados. De qualquer forma, a maior parte dos projetos cons-

truídos tem início através das atividades de um processo genérico, conforme descrito a seguir:

a) Comunicação. Envolve comunicação e colaboração com os stakeholders (clientes), que

cooperam na definição de requisitos e atividades afins para seguimento do projeto.

b) Planejamento. É a parte primordial para o sucesso do projeto. Define plano de trabalho,

tarefas técnicas á serem desenvolvidas, riscos prováveis, recursos necessários, produto

do trabalho e o cronograma, que quanto mais previsível, melhor será a condução do

projeto.

c) Modelagem. A modelagem é um processo de transformação do conceito para o modelo.

Nesta etapa, o engenheiro de software deve traduzir os requisitos em estrutura de mode-

los de sistema.

d) Construção. Essa etapa pode ser considerada como a mais importante. É nela que real-

mente são gerados o código e os testes unitários necessários para revelar erros. Neste

ponto, o produto começa a ser confeccionado para executar as funções definidas pelos

requisitos dos sistema.

e) Implantação. Dependendo do processo de desenvolvimento de software, esta atividade pode

ser apenas um incremento de software entregue ao cliente, ou a entrega final do projeto.

O cliente avalia a aplicação recebida e fornece um feedback sobre os serviços prestados.

No campo das engenharias, cada procedimento preza por seguir um processo determinado.

O objetivo é garantir qualidade, ou mesmo, garantia de entrega do produto ou projeto. Para isto,

existem os modelos de processos, que por sua vez, na engenharia de software são imprescin-

díveis para construção de uma aplicação. Adiante, aborda-se sobre os modelos de processos

dentro da engenharia de software.

Page 27: TCC - Engenharia de Software Baseada em Componentes

27

2.2 MODELOS DE PROCESSOS DE SOFTWARE

Modelos de processos de software fornecem informações e práticas úteis para colaborar

com o trabalho da engenharia de software, são baseados em um conjunto de atividades, ações,

tarefas, marcos, produtos de software, garantia de qualidade e controle de modificações dos

projetos. Cada modelo de processo determina um foco central do fluxo de trabalho, o qual

estabelece como os processos serão inter-relacionados (PRESSMAN, 2006).

Sommerville (2007) entende que os modelos de processos representam uma visão restrita

e parcial do processo aplicado à organização, devido ao foco central de cada processo na

computação, existem modelos genéricos de processos, os quais são bases para todo projeto

de engenharia de software, sendo flexíveis quanto a adaptações e mudanças para processos

mais específicos. Para esse autor, sob a perspectiva de arquitetura de modelo genérico; pode

ser considerado um framework.

Adiante serão abordados os modelos de processos mais conhecidos da engenharia de

software.

2.2.1 Modelo em cascata

Sommerville (2007) define o modelo de processo em cascata, como um encadeamento de

uma fase após a outra, uma sequência de estágios de desenvolvimento do software (figura 4).

Como regra do modelo, uma fase não pode começar antes que a fase anterior tenha terminado.

Assim, este modelo torna-se inflexível quanto a mudanças de escopo e requisitos de sistema.

Figura 4: Modelo de processo em cascataFonte: Sommerville (2007, p. 44) com adaptações

Page 28: TCC - Engenharia de Software Baseada em Componentes

28

É comum identificar problemas com requisitos, principalmente durante a codificação quando

aparecem problemas mais dispendiosos de solução. Os projetos de software são limitados a

custos de produção. Por este motivo, a redução de tempo de projeto interfere nas iterações dos

processos, que posteriormente gerará um maior tempo de retrabalho. É normal, neste tipo de

modelo, acontecer de suspender etapas do desenvolvimento, e retomar as pendências no final

do projeto ou mesmo ignorá-las, isto significa que o cliente não receberá a funcionalidade em

estado completo.

Em fase final do projeto de software, quando colocado em uso direto com o cliente; - etapa

considerada crítica pelo modelo - aparecem os erros e omissões nos requisitos do software, e,

para contornar, inicia-se a manutenção do software sem previsão de fim. Porém o modelo de

cascata tem alguns benefícios, como a documentação produzida em cada fase do processo.

Pressman (2006) entende que, nos dias de hoje, o modelo em cascata é inadequado aos

processos de desenvolvimento de sistemas. O desenvolvimento de softwares atuais, frequen-

temente muda de requisitos e altera escopos inteiros de projeto com frequência, isto invalidaria

parte do sistema em desenvolvimento sobre modelo em cascata. No entanto, o autor ainda

afirma, de certo modo, que seria possível utilizar o modelo em cascata caso o software fosse

definido com requisitos fixos e o trabalho prosseguir sem problemas inesperados.

2.2.2 Modelo incremental

O modelo incremental combina elementos do modelo em cascata com a abordagem ite-

rativa. Funciona em forma de estágios (figura 5) e, a cada estágio, produz um incremento de

entrega de software com novas funcionalidades. As entregas geram reconhecimento do status

do produto, e o cliente sente-se atendido por colaborar com o software em desenvolvimento.

Após as iterações serem finalizadas e entregues, planejam-se os próximos requisitos que farão

parte do novo incremento, que propõe alterar o software para satisfazer as necessidades do cli-

ente de forma eficaz. O cliente recebe o incremento do sistema funcional, podendo executar as

funções dos requisitos já entregues. O processo de iterações é repetido até que o sistema fique

completo. O modelo incremental é particularmente útil para lidar com sistemas que necessitam

de mudanças nos requisitos, e sistemas que tendem a evoluir em grande escala (CRNKOVIC;

LARSSON, 2002, p. 93).

Uma vantagem no modelo incremental é a gerência de riscos técnicos, uma vez que a com-

pilação do código fonte do software é executada em períodos mais curtos, conforme a definição

do incremento, garante uma visão funcional da aplicação para a equipe de desenvolvimento.

Isto serve como motivação e progresso do projeto, minimiza riscos de integração entre os mó-

dulos do sistema e eleva a qualidade do processo (WANG, 2008, p. 85).

Page 29: TCC - Engenharia de Software Baseada em Componentes

29

Figura 5: Modelo de processo incrementalFonte: Crnkovic e Larsson (2002, p. 94)

2.2.3 Rapid Application Development

Para Sommerville (2007), o desenvolvimento rápido de aplicações (RAD) é um modelo de

processo de software incremental que enfatiza um ciclo de desenvolvimento curto. O modelo

de processo Rapid Application Development (RAD) prevê o uso de softwares baseado em com-

ponentes para minimizar o prazo de entrega do produto.

Se um software pode ser modularizado permitindo que cada função principal seja concluída

em menos de três meses, este software, é um candidato a utilizar como processo de desenvol-

vimento de software o modelo RAD. Ainda, o projeto pode ser dividido em equipes RAD, e ao

fim de cada fase, as equipes integram as partes moduláveis do software para formar apenas

um sistema. Em sequência, aborda-se as fases do processo RAD (figura 6):

a) Modelagem de negócio. O objetivo desta fase é obter o conhecimento do negócio do siste-

mas. Para a modelagem de negócio são feitas algumas perguntas: Quais informações

definem o processo de negócio? Quais informações são geradas? O que gera elas? Para

onde vai estas informações? Quem será responsável por processá-las?

b) Modelagem de dados. São mapeados quais informações serão necessárias para funciona-

mento do negócio. Esta fase utiliza-se de conhecimento técnico para definir as caracte-

rísticas dos objetos de dados que compõe a aplicação.

c) Modelagem de processos. Os objetos de dados definidos na fase de modelagem de da-

dos são transformados em prioridades para gerar fluxo de informações necessárias para

implementar uma função de negócio.

d) Geração de aplicações. No processo RAD, a linguagem de programação deve como requi-

sito utilizar as técnicas de quarta geração. O objetivo principal é reutilizar os componentes

de programas existentes ou criar componentes reutilizáveis.

Page 30: TCC - Engenharia de Software Baseada em Componentes

30

Figura 6: Modelo de desenvolvimento rápido de aplicações (RAD)Fonte: Sommerville (2007)

e) Testes. Como o desenvolvimento é baseado em componentes, entende-se que muitos mó-

dulos já estão testados, porém, para novos componentes, os testes são imprecindíveis

em conjunto com as interfaces da aplicação.

2.2.4 Prototipagem

Como a maioria dos modelos de processos da engenharia de software, a prototipagem tam-

bém tem início com a comunicação (figura 7). Engenheiros e clientes se reúnem para definir os

requisitos gerais do sistema. Como esta fase pode gerar muitas dúvidas quanto às necessida-

des do cliente e funcionalidades do sistema, dá-se início ao protótipo do sistema (PRESSMAN,

2006, p. 42).

O protótipo é uma versão preliminar e intencionalmente incompleta do propósito do sistema.

As equipes que utilizam o modelo de prototipagem como processo de engenharia de software,

acabam desenvolvendo a aplicação sobre a base do protótipo, que por esta vez, é gradual-

mente melhorada até encontrar um nível de aceitabilidade para se transformar no produto final.

Esta abordagem pode ser perigosa. Quando todo o sistema repousa sobre um núcleo inicial

do software com objetivos de protótipo, poderão ocorrer surpresas desafiadoras. Como o pro-

tótipo sofre mudanças desde o início do projeto para suprir uma visão funcional do sistema,

são injetados códigos para satisfazer os novos requisitos em teste. Estas alterações funcionais

Page 31: TCC - Engenharia de Software Baseada em Componentes

31

Figura 7: Modelo prototipagemFonte: Pressman (2006, p. 43) com adaptações

nem sempre estão planejadas nos projetos, evidenciando um núcleo de sistema com possíveis

problemas, como lentidão, segurança e extensibilidade (CRNKOVIC; LARSSON, 2002, p. 95).

Os mesmos autores afirmam que o protótipo deve servir apenas como um mecanismo para

identificar requisitos de software, e quando capturados, o protótipo deve deixar de existir, criando

uma nova estrutura arquitetada para a aplicação real.

2.2.5 Modelo espiral

Pressman (2006, p. 44) entende que o modelo espiral derivou da combinação de dois outros

processos: prototipagem e cascata.

Esse modelo foi concebido primordialmente para responder aos pontos fracos do modelo

em cascata, a melhoria principal do processo foi a implantação de alternativas para gerenciar

riscos do projeto, e se adaptar a mudanças nos requisitos durante o desenvolvimento de soft-

ware. O modelo se concentra sobre rotações de fases e atividades do processo, seguindo

sempre de forma incremental em ordem de prioridade. Cada rodada é composta por quatro

fases. Na figura 8 exemplifica dois projetos em execução sobre o modelo espiral, P1 está na

atividade de análise de riscos associados aos requisitos, e P2 na fase da arquitetura do produto.

Na primeira fase, a equipe define restrições, objetivos e buscam alternativas para problemas

propostos. Durante a segunda fase a equipe foca no gerenciamento de riscos associados com

as soluções definidas na primeira fase. Na terceira fase, a equipe necessita implementar um

protótipo ou parte do sistema de forma que possam validar à funcionalidade. Na última fase, a

preocupação da equipe é planejar a próxima rodada com base nos resultados produzidos na

Page 32: TCC - Engenharia de Software Baseada em Componentes

32

rodada atual. Geralmente realiza-se uma revisão envolvendo todos os participantes do projeto,

incluindo desenvolvedores, clientes e usuários (BRUEGGE; DUTOIT, 1999, p. 477).

Cada rodada inclui as seguintes atividades:

a) Determinar os objetivos.

b) Especificar restrições.

c) Gerar alternativas.

d) Identificar os riscos.

e) Resolver os riscos.

f) Desenvolver e avaliar o produto no próximo nível.

Figura 8: Modelo espiralFonte: Bruegge e Dutoit (1999, p. 478)

Um grande problema que atinge a engenharia de software é o gerenciamento de risco.

Nesta condição, o modelo espiral torna-se realista por tratá-lo com atenção a cada ciclo do

processo. Conforme o projeto de software progride, o processo no modelo espiral cresce em

conjunto tornando-se um avanço compartilhado (PRESSMAN, 2006).

2.2.6 Rational Unified Process

O modelo de processo Rational Unified Process (RUP) de tradução processo unificado da

Rational, foi proposto na década de 90 por James Rumbaugh, Grady Booch e Ivar Jacobson.

Page 33: TCC - Engenharia de Software Baseada em Componentes

33

No início da década, esses autores constituíram um modelo combinando as melhores caracte-

rísticas dos métodos de modelagem de sistemas existentes, e opiniões de outros especialistas

no assunto. O resultado foi a Unified Modeling Language (UML) linguagem de modelagem uni-

ficada. Porém a UML não é um processo, ela apenas fornece tecnologia necessária para apoiar

modelos e arquitetura de sistemas na engenharia de software. Cinco anos mais tarde, nova-

mente Rambaugh, Booch e Jacobson coletaram algumas métricas da UML com a junção de

melhores práticas dos processos existentes de software, e criaram o processo unificado.

O modelo tem ênfase na comunicação com o cliente, esta afirmação pode ser melhor es-

clarecida com o uso de diagramas de casos de uso, sendo um método da UML de levantamento

de requisitos utilizado no processo unificado. O cliente é muito importante para o processo, ele

deve estar sempre próximo de todas as atividades de desenvolvimento da aplicação. A arqui-

tetura do sistema deve suprir as funcionalidades com base nas necessidades do cliente, para

isto, a aplicação deve permitir receber mudanças de requisitos e alterações de escopo de forma

flexível (PRESSMAN, 2006).

Sommerville (2007) explica que o RUP está dividido em quatro fases discretas:

a) Concepção. Objetivo de identificar todas as entidades externas, como pessoas e sistemas

que farão de certo modo interação com a aplicação. Esta fase também prevê a definição

de interação dos autores com o sistema, como casos de uso simplificados.

b) Elaboração. Objetivo de absorver o entendimento do domínio do problema e transpassar aos

integrantes da equipe. Determinar a arquitetura do sistema, framework, plano de projeto,

riscos, e evoluir os requisitos.

c) Construção. Objetivo de construir o software. Esta fase deve abordar o desenvolvimento,

testes e documentação da aplicação.

d) Transição. Objetivo de transferir o software da fábrica para os usuários finais. Nesta fase

acontece a implantação do sistema, onde a aplicação deverá funcionar corretamente em

seu ambiente operacional.

Pádua (2009) explica como o processo unificado é executado.

a) Abstrai requisitos e funcionalidades através de diagramas de casos de uso.

b) Tem objetivos claros de arquitetura de sistema centralizada.

c) Seu processo segue de forma interativa e incremental.

O ciclo de vida da aplicação, com base no RUP, deve herdar as características do modelo

espiral por se tratar de ciclos de desenvolvimento.

Page 34: TCC - Engenharia de Software Baseada em Componentes

34

Uma das diferenças do RUP em relação aos outros processos, são as atividades divididas

em subprocessos chamados de fluxos de trabalho. As fases definem divisões gerenciais, e

as atividades de fluxos de trabalho atingem metas bem definidas como: requisitos, análise,

desenho, implementação e testes.

A figura 9 demonstra como segue o modelo de processo unificado. Ele pode ser descrito

em duas dimensões, ou ao longo de dois eixos:

a) O eixo horizontal representa o tempo e demonstra o processo expresso em termos de ciclos,

fases, iterações e marcos.

b) O eixo vertical representa o aspecto estático do processo. Descrito em termos de atividades,

artefatos, colaboradores do projeto e fluxos de trabalho.

Figura 9: Modelo de processo unificado (RUP)Fonte: Rational (2001, p. 3)

2.3 METODOLOGIAS ÁGEIS

Marsic (2009) entende que metodologia ágil é uma filosofia de desenvolvimento focada

em resultados, funciona de forma iterativa, e conta com gerência de riscos e mudanças. Sua

principal característica, é envolver ativamente os clientes no processo de desenvolvimento da

aplicação. Quando se trata de artefatos produzidos, atende-se absolutamente os mínimos ne-

cessários para o projeto.

Page 35: TCC - Engenharia de Software Baseada em Componentes

35

Sommerville (2007) explica as causas da criação da metodologia ágil. Segundo ele, na

década de 80 e 90 o desenvolvimento de software praticamente se baseava em rigorosos pro-

cessos de especificação, planejamento, garantia de qualidade formalizada e métodos de análise

através de ferramentas Computer-aided Software Engineering (CASE). Esta visão se dava em

consequência de softwares críticos de grande escala necessários naquela época. Contudo,

quando aplicado os mesmos processos de desenvolvimento em empresas de pequena e mé-

dio porte, observou-se um grande atraso nas fases do projeto. O tempo gasto nos processos

iniciais até a chegada do desenvolvimento e teste, ultrapassava-os em conjunto. Os problemas

geraram insatisfação para a comunidade dos desenvolvedores na década de 90, e então, na

luta para resolvê-los, criaram os conhecidos métodos ágeis. O foco proposto era a concentra-

ção total no software como aplicação funcional no cliente, em vez de árdua documentação e

detalhamento de projeto

Mais tarde, em fevereiro de 2001, dezessete figuras importantes da tecnologia ligadas à

metodologias ágeis, se reuniram no estado de Utah (EUA) para discutirem maneiras de criar

softwares mais compreensíveis para o cliente, além de serem mais rápidos de desenvolvimento.

Estas pessoas então identificaram alguns princípios para as metodologias ágeis, com isso, foi

criado o manifesto ágil (BECK et al., 2001).

Os princípios estão destacados a seguir:

a) Nossa maior prioridade é satisfazer o cliente através da entrega contínua e antecipada de

software com valor agregado.

b) Mudanças nos requisitos são bem-vindas, inclusive as incluídas ao mais tardar do desen-

volvimento. Processos ágeis tiram proveito de mudanças visando vantagem competitiva

para o cliente.

c) Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com

preferência à menor escala de tempo.

d) Pessoas de negócios e desenvolvedores devem trabalhar diariamente em equipe por todo o

projeto.

e) Construir projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte

necessário e confie na equipe para executar o trabalho.

f) O método mais eficiente e eficaz de transmitir informações entre uma equipe de desenvolvi-

mento é através de conversa face a face.

g) Software funcionando é a medida primária de progresso.

Page 36: TCC - Engenharia de Software Baseada em Componentes

36

h) Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvol-

vedores e usuários devem ser capazes de manter um ritmo constante de proveito.

i) Atenção contínua à excelência técnica e boa arquitetura aumentam a agilidade.

j) Simplicidade é essencial.

k) As melhores arquiteturas, requisitos e análises emergem de equipes auto-organizáveis.

l) Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e

ajusta seu comportamento para o progresso.

Como este trabalho não tem objetivos específicos de detalhar as metodologias ágeis, adi-

ante serão conceituadas algumas metodologias ágeis de maior abrangência nos dias atuais.

2.3.1 Extreme programming

Dentre as metodologias ágeis, o XP possui uma característica bem diferenciada, chamada

de programação em pares, onde dois desenvolvedores trabalham na mesma máquina lado a

lado, fornecendo apoio de validação e verificação em tempo real no código desenvolvido. Dentre

as atividades realizadas na metodologia XP (figura 10), destaca-se a atividade de requisitos

de software, que são expressos em histórias de usuários, que por fim acabam se tornando

várias tarefas. Já na etapa de desenvolvimento, antes de qualquer implementação das novas

funcionalidades, o desenvolvedor primeiramente escreve os testes unitários.

Figura 10: Atividades da metodologia XPFonte: Wells (2009)

Page 37: TCC - Engenharia de Software Baseada em Componentes

37

Assim que os testes unitários estejam programados para validar as funcionalidades, a me-

todologia indica a próxima etapa de desenvolvimento: a implementação das funcionalidades

da tarefa, porém, no início desta fase ainda não temos código desenvolvido, com isto, o teste

começa reprovando a funcionalidade, e o desenvolvedor programará o código até que seja fun-

cional (SOMMERVILLE, 2007).

Desde o primeiro uso da metodologia, observaram-se benefícios agregados à equipe de

desenvolvimento e ao produto final por meio da satisfação do cliente. O XP prevê entregas

de software com frequência em ciclos pequenos de tempo, de forma iterativa e incremental.

Valoriza o trabalho em equipe, onde gerentes, clientes e desenvolvedores são todos parceiros

de igual grau hierárquico, porém com diferentes responsabilidades (WELLS, 1999-2009).

2.3.2 Scrum

Schwaber e Sutherland (2010) explicam que a metodologia Scrum é determinada para o

controle de processos empíricos otimizado, trabalhando de forma iterativa e incremental.

Martins (2007) expõe Scrum como um processo para gerenciar e controlar projeto de de-

senvolvimento de softwares, ainda o autor explica que Scrum é uma metodologia ágil, e se

concentra realmente no que é importante, focando na gerência de projetos com atruibuto de va-

lor ao produto desenvolvido e, prazo e custos propostos no planejamento. O modelo do Scrum

é representado na figura 11.

Figura 11: Modelo de processo da metodologia SCRUMFonte: Martins (2007, p. 270) com adaptações

O Scrum não é apenas uma metodologia ágil, é considerado um framework, que consiste

na junção de pessoas na formação de times. Os integrantes deste time estão divididos em

três papéis; scrum master, responsável por garantir que o processo seja compreendido pela

equipe seguindo regras e práticas do Scrum; product owner, responsável pelo gerenciamento

Page 38: TCC - Engenharia de Software Baseada em Componentes

38

do product backlog e prioridades; time, conjunto de desenvolvedores que transformam o product

backlog em incrementos entregáveis no sistema a cada sprint. O time não está limitado a

ter apenas programadores, entre os membros são encontrados pessoas com conhecimentos

específicos como: controle de qualidade, análise de negócios, arquitetura, projeto de interface

de usuário e banco de dados.

Como metodologia ágil, o Scrum entrega seus incrementos de software através de iterações

no processo. O product backlog é uma lista com requisitos priorizados de tudo que pode ser

necessário á aplicação, já o sprint backlog é uma lista de tarefas para transformar ítens do

product backlog em uma sprint. A sprint é o prazo de um mês ou menos de duração de esforço

de desenvolvimento que gera uma iteração e incremento no software.

Uma prática utilizada pelo Scrum é empregar eventos com duração fixa, os time-boxes

sendo a reunião de planejamento da release, reunião de planejamento da sprint, a sprint, revi-

são da sprint, retrospectiva da sprint e daily scrum. Dentre os eventos, o daily scrum recebe

destaque pela quebra do paradigma que reunião deve-se durar muito tempo. Seu objetivo pro-

põem fazer uma reunião diariamente de no máximo quinze minutos no mesmo horário e mesmo

local. Nesta reunião os participantes devem responder três perguntas:

a) O que realizou desde a última reunião?

b) O que vai fazer antes da próxima reunião?

c) Quais os obstáculos estão em seu caminho?

O daily scrum não é uma reunião de status. Ela tem por objetivo a comunicação, eliminar

outras reuniões, identificar e remover impedimentos para o desenvolvimento.

O Scrum, sem dúvida, ganha novos admiradores a cada dia, suas regras garante uma

qualidade controlada aliada ao prazo de entrega bem definido. A equipe luta como um time,

unindo forças para manterem suas metas e batalhas para conquistarem a vitória. O resultado

do projeto, construído através da metodologia Scrum, é prazo certo, custo reduzido, qualidade

controlada e satisfação do cliente.

2.3.3 Crystal

Cockburn (2000) relata que Crystal não é necessariamente uma metodologia, e sim uma

família de metodologias. O autor explica o funcionamento do Crystal através do mapa família na

figura 12. Para cada projeto de software, na etapa de planejamento, estimasse uma quantidade

de pessoas para suprir o ciclo de desenvolvimento, este parâmetro define o movimento no

eixo X, ou seja, movendo para a direita no mapa Crystal. Este procedimento navegará pelas

Page 39: TCC - Engenharia de Software Baseada em Componentes

39

colunas que contém a quantidade de pessoas relacionadas com a necessidade de cada projeto,

ao encontrar a coluna que satisfaz a condição do projeto, lhe retornará uma cor que propõe

a metodologia adequada para uso. Entretanto, o Crystal não trata somente do número de

pessoas, há também a relação de custos e riscos do projeto, esta necessidade de mensuração

se dá ao eixo Y, ou seja, movendo para cima. Encontramos os seguintes enquadramento de

custos e riscos do projeto:

a) Confort. Confortável, poucos riscos e recursos financeiros sustentáveis.

b) Discretionary money. Discreto, onde custos e riscos devem serem calculados com mais

ênfase.

c) Essential money. Essencial, orçamento limitado, riscos altos.

c) Life. Projeto com riscos extremos, deve ser desenvolvido por especialistas.

Figura 12: Metodologia Crystal - mapa da famíliaFonte: Crystal (2010)

As duas regras mais comuns para a família Crystal são: O processo de desenvolvimento

do projeto deve usar o modelo incremental com incrementos de quatro meses ou menos, e a

equipe deve realizar antes e após o projeto, oficinas de reflexão das expectativas esperadas e

resultados obtidos.

Page 40: TCC - Engenharia de Software Baseada em Componentes

40

2.4 REUSO DE SOFTWARE

Segundo Sommerville (2007), a engenharia de software baseada em reuso de software é

uma abordagem de desenvolvimento que visa a maximizar a reutilização das funcionalidades

de software já existente. Na concepção de reutilização de software, classifica-se como reuso

de um produto completo incorporado a outro software através de configurações, adaptações e

integrações. Seguindo esta linha de raciocínio, na visão de componentes, define-se como a

reutilização de subsistemas incorporados ao domínio da aplicação e reutilização de objetos e

funções especificados como rotinas operacionais, servindo de execução para uma determinada

tarefa interna no sistema.

O reuso apresenta como vantagem a redução de custos totais no desenvolvimento, pois

poucos componentes de software terão a necessidade de serem especificados, projetados,

implementados e validados, ficando somente com o trabalho de adaptações das interfaces e

integração dos subsistemas. Reuso de software não tem somente como benefício a redução

de custos de desenvolvimento. Abaixo são pontuados alguns ítens para firmar a real vantagem

desta prática.

a) Confiança aumentada. Considerada devido à expectativa de um software estar experimen-

tado, testado, estável e funcional. O software reusável deve estar estruturado para compor

todas estas qualidades.

b) Conformidade com padrões. Os softwares produzidos para fins de reutilização são estrutu-

rados das melhores práticas de software, chamado de Design Patterns. Este benefício

garante extensibilidade e qualidade das funcionalidades.

c) Desenvolvimento acelerado. Ganho de velocidade com desenvolvimento por apenas tratar

de integração e adaptação de subsistemas na aplicação. O software final ganha o mer-

cado em prazo reduzido.

No entanto, há custos evidentes com o reuso, como, por exemplo, ao buscar no mercado um

componente para suprir uma necessidade no sistema há de certo modo um custo significativo

em entendimento do componente ser adequado para a situação, gastos com conhecimento das

funcionalidades do componente, e se o componente é confiável e extensível assegurando que

não haverá problemas futuros.

Na engenharia de software, o reuso é apoiado por algumas práticas que geram base es-

trutural para reutilização. As mais frequentes usadas são: Design Patterns, desenvolvimento

baseado em componentes, framework de aplicações, sistemas orientados a serviços, integra-

ção de COTS, bibliotecas de programa, geradores de programa e desenvolvimento de software

Page 41: TCC - Engenharia de Software Baseada em Componentes

41

orientado a aspectos. O reuso pode ser incluso em todos os processos de software devido a

grande gama de práticas possíveis. Porém nem sempre ele é tratado como vantagem, a auto

estima dos engenheiros de softwares de não reutilizar este benefício, leva-o a criar sempre uma

nova aplicação partindo do zero. Isto evidencia a enorme quantidade de tempo para entrega

de um projeto. Trazendo a discussão para o contexto atual, vale dizer que a ESBC veio para

solucionar grande parte destes problemas (SOMMERVILLE, 2007).

2.4.1 ESBC como solução de reuso de software

A ESBC surgiu no final da década de 1990, ou seja, pouco mais de 20 anos. É uma área que

envolve alta complexidade para desenvolvimento de softwares, pois trata de analisar o software

com objetivos de reuso, em partes ou totalmente. Teve início quando o desenvolvimento de

softwares orientado a objetos se tornara especialista; as classes dos objetos eram criadas de tal

forma que para utilizá-las deveria conhecê-las detalhadamente, o desenvolvimento era focado

para aplicações especialistas dos clientes, o qual não tinha êxito quanto ao reuso de software

(SOMMERVILLE, 2007).

Essa área dedica-se a trabalhar com componentes de softwares, englobando as atividades

de: definição, implementação, integração ou composição de componentes independentes desa-

coplados do sistema. Sommerville (2007) explica que os softwares estão cada vez mais se tor-

nando complexos, e os clientes cada vez mais exigentes quanto às garantias de confiabilidade

e rapidez no recebimento do produto. Uma das saídas para tal comportamento da atualidade

é utilizar e reusar componentes em maior escala do que reimplementar as funcionalidades no

sistema. Dessa forma, o produto ganharia a qualidade e estabilidade de um componente já

implementado e maduro, também reduziria o tempo de desenvolvimento do sistema como um

todo. Sommerville (2007) define alguns pontos cruciais para um projeto de sucesso usando

ESBC.

a) Componentes independentes completamente especificados e documentados. As interfaces

devem ser bem definidas e coerentes com cada conjunto de classes. O componente deve

ter uma clara separação entre interfaces e implementação para que possa ser substituído

do sistema sem causar mudança alguma.

b) Padrões de componentes para compatibilidade entre os sistemas. Se o desenvolvimento

seguir os padrões de componentes, o componente escrito em certa linguagem poderá

ser usado em qualquer outra que aceite estes padrões. Para isso acontecer, no mínimo a

arquitetura do componente deverá dispor das interfaces de implementação.

Page 42: TCC - Engenharia de Software Baseada em Componentes

42

c) Middleware como fornecedor para integração de componentes. Trata-se de uma aplicação

que gerencia a integração entre os componentes independentes e distribuídos. O mid-

dleware fica responsável pela manipulação da comunicação, fornece apoio à alocação de

recursos, gerenciamento de transações, proteção e concorrência dos componentes.

d) Processo de desenvolvimento através da ESBC. Todo desenvolvimento deve seguir os pro-

cessos da ESBC com foco em reuso de software.

Como todo projeto não está livre de riscos, a seguir estão listados alguns problemas que

devem ser evitados e levados a sério.

a) Confiabilidade de componentes. Sommerville (2007) deixa claro em sua literatura, que com-

ponentes são fechados quanto ao seu código fonte, considerados caixas pretas na área

da engenharia de software. Neste caso, não tem como detectar um possível problema no

componente através da análise do código fonte. O sistema que recebeu a implementação

do componente poderá comportar-se de uma maneira diferente da proposta na documen-

tação, e a causa poderia ser uma falha no componente. Este é um dos maiores desafios

da ESBC. A solução para o problema perante à ESBC é criar componentes maduros livres

de falhas e documentar suas funcionalidades e comportamentos esperados.

b) Certificação de componentes. Totalmente relacionada à confiabilidade do componente. Se-

gundo Sommerville (2007), infelizmente ainda hoje não há uma instituição que garanta

que um componente se comportará em todos os parâmetros conforme seu funcionamento

proposto.

c) Previsão de propriedade emergente. Refere-se ao propósito das funcionalidades dos com-

ponentes. Muitos componentes são desenvolvidos com foco em sistemas especialistas,

e quando são reutilizados em outros projetos, acabam limitando os novos sistemas.

d) Compromissos de requisitos. Na busca de componentes que suprirão as necessidades dos

requisitos, há a necessidade de um método de análise estruturado e sistemático para

ajudar o projetista selecionar e configurar componentes. Deve dar muita atenção aos

requisitos, uma prática para eleger componentes é juntar os requisitos similares e assim

analisar um componente que atenda o conjunto de requisitos (SOMMERVILLE, 2007).

2.4.2 Processo da ESBC

O processo da ESBC, como na maioria dos processos da engenharia de software, inicia-se

com as definições dos requisitos do sistema, que é uma abordagem geral das funcionalidades e

Page 43: TCC - Engenharia de Software Baseada em Componentes

43

necessidades da aplicação. Na etapa seguinte, dá-se início à arquitetura e análise do sistema.

Após esta etapa, em vez de passar para o detalhamento das tarefas do projeto, a equipe es-

tuda e interpreta dentre os requisitos quais são adequados à junção de operações e quais são

dependentes uns dos outros, para assim separá-los em negócios bem definidos. Além deste

estudo, Sommerville (2007) explique que a equipe deve gerar os seguintes questionamentos:

a) Componentes comerciais prontos para uso, chamados de COTS, estão disponíveis para

implementar o requisito?

b) Componentes reusáveis, internamente desenvolvidos e aprimorados em outros projetos con-

cluídos, estão disponíveis para implementar o requisito?

c) As interfaces dos componentes disponíveis possuem compatibilidade com o sistema a ser

construído?

Após ocorrer a avaliação dos requisitos que serão atendidos com uso de componentes

COTS ou internos, o processo ganha novas atividades: busca de componentes, seleção de

componentes e validação de componentes. Esta etapa do processo pode ser resumida con-

forme a figura 13.

Figura 13: Processo da ESBCFonte: Sommerville (2007, p. 298)

Por fim, o processo passa para o desenvolvimento baseado em componentes, seguindo as

atividades de: qualificação, adaptação, composição e atualização. Os requisitos não atendidos

pelos componentes disponíveis, receberão as implementações com objetivo de futuro reuso do

software (PRESSMAN, 2006).

Adiante, na figura 14 ilustra um modelo genérico de processo da engenharia de software

baseada em componentes. O modelo se divide-se em duas partes:

a) Engenharia de domínio. Define o conceito de negócio do software, usado para analisar a

aplicação em forma de requisitos, coleta de componentes existentes e reutilização código

gerado.

Page 44: TCC - Engenharia de Software Baseada em Componentes

44

b) Desenvolvimento baseado em componentes. Define a arquietura do software baseada em

componentes, framework, padrões de projeto e comportamentos.

Figura 14: Modelo de processo da ESBC completoFonte: Pressman (2006, p. 666)

2.4.3 Componentes de prateleira (COTS)

As empresas, que desenvolvem componentes comerciais de prateleira, têm a finalidade

de comercializar software como um subsistema ou componente. Elas são especializadas em

desenvolver softwares componentizados, estruturam suas aplicações e funcionalidades em mó-

dulos de fácil integração e extensão por meio de interfaces. Os componentes desenvolvidos

partem de um domínio definido de aplicação ou funcionalidade específica.

Para o uso do componente adquirido, o pacote comercial deve dispor de interfaces bem

documentadas para que a aplicação implemente a integração com o componentes e possibilite

a extensão de novas funcionalidades. Algumas empresas também comercializam seus compo-

nentes em conjunto com o código fonte, porém este negócio envolve contratos de garantia de

Page 45: TCC - Engenharia de Software Baseada em Componentes

45

propriedade da empresa desenvolvedora, sendo utilizado apenas para interpretação e conheci-

mento interno da arquitetura do componente.

As vantagens de utilizar COTS, na aplicação em desenvolvimento, estão relacionadas com

o reuso de componentes, cujos benefícios mais evidentes são a redução de custo e entrega do

projeto. Um projeto de software pode utilizar vários componentes COTS de diversos fornece-

dores, como pré-requisito os componentes deverão dispor de interfaces, e serem compatíveis

com a plataforma de desenvolvimento (SOMMERVILLE, 2007).

Contudo, trabalhar com componentes de terceiros possibilita em maior escala os problemas

imprevistos. A falta de controle sobre a funcionalidade e desempenho do componente, pode

invalidar um requisito do sistema. A dificuldade de suporte e entendimento das funcionalidades

poderão gerar desconforto e abandono do recurso. De qualquer forma, os pontos positivos de

utilizar COTS sobressaem os pontos negativos, visto que tratam dos fatores de maior impacto

nos projetos, tempo e custo (SOMMERVILLE, 2007).

Apresentou-se nesta, etapa do trabalho, a estrutura conceitual da engenharia de software

com objetivo de reuso de software, porém, não foi comentado até o momento, sobre como

construí-los em um processo definido dentro da ESBC. No próximo capítulo, será contextuali-

zado o processo de desenvolvimento de software Catalysis que, por sua vez, tem objetivo de

construir softwares componentizados e reutilizáveis.

Page 46: TCC - Engenharia de Software Baseada em Componentes

46

3 CATALYSIS

Catalysis fornece um processo sistemático para a construção de modelos precisos no de-

senvolvimento de componentes (D’SOUZA, 1998). Em outras palavras, determina métodos

para construir softwares componentizados para reuso. Este termo foi ditado na literatura de

1992 pelos autores Desmond D’Souza e Alan Wills. É derivada da palavra catálise, significando

um processo em que reações ocorram de forma mais eficaz. Esta definição foi estudada e com-

provada pela área química. Porém, no contexto da modelagem de sistemas e desenvolvimento

de software, o nome descreve uma abordagem que torna o processo de desenvolvimento mais

repetitivo, escalável e eficaz (CATALYSIS, 1998).

Para D’Souza e Wills (1998), o método Catalysis é um conjunto de padrões de processos.

Eles justificam que como todos os processos, não há um processo individual que englobe to-

das as necessidades de um projeto. Para isso, sempre há mesclas de atividades e conceitos

de outros processos embutidos. Embora, possua esta complexidade, o processo Catalysis é

composto por um núcleo simples, abrangendo três níveis de modelo de escopo (domínio de

negócio, especificação de sistema, arquitetura do componente), três construções básicas de

modelagem (colaboração e comportamento, tipo, refinamento), e a aplicação de três princípios

fundamentais (abstração, precisão, partes plugáveis). O passo seguinte é analisar e modelar

o sistema em volta do núcleo. Esses autores ressaltam algumas características que o modelo

Catalysis prescreve para construção de um software bem elaborado.

a) Baseado em componentes: Desenvolvimento através da construção de produtos a partir de

kits de componentes interoperáveis. Pode-se separar o projeto de componentes em três

grandes áreas: kit de arquitetura, define normas de interconexão comum; desenvolvi-

mento de componentes, especificação cuidadosa e arquitetura de software reutilizáveis;

montagem do produto, rápido desenvolvimento de produtos finais a partir de componen-

tes.

b) Ciclos curtos: Recomendam a utilização do modelo RAD princípio de desenvolvimento rá-

pido de aplicações. Trabalhando com ciclos curtos de desenvolvimento, o projeto recebe

um andamento mais palpável, com visões bem definidas de cada fase, isto agrega bene-

fícios à equipe, que, por sua vez, é motivada a mover-se para próxima fase.

c) Desenvolvimento em fases: Construção de uma pequena fatia do sistema o mais cedo possí-

vel, a fim de obter feedback antecipado do cliente e construção do restante gradualmente

em torno do núcleo.

Page 47: TCC - Engenharia de Software Baseada em Componentes

47

d) Grau variável de rigor: Descrever as pós-condições dos casos de uso em um estilo formal, ou

opcionalmente em linguagem natural. O mais alto rigor na descrição ajudará a encontrar

problemas mais cedo.

e) Fase de análise robusta: A construção de modelos de negócios e requisitos, no processo

Catalysis, abrange mais do que no estilo convencional. No Catalysis, as decisões impor-

tantes estão centralizadas em diagramas. Como resultado, há menos trabalho posterior

na fase de concepção e manutenção do ciclo de vida do software.

f) Maturidade organizacional: Dependendo da maturidade da equipe, existem diferentes for-

mas de adotar o processo Catalysis. Se o time está acostumado a um processo repetitivo

com resultados definidos e prazos curtos, a adoção do processo é plenamente aconse-

lhável, caso contrário, a equipe deve começar a aprender as notações técnicas do Cataly-

sis, de modo a serem capazes de se comunicar com eficácia com todos os integrantes.

Neste contexto, a equipe ousaria criar novas aplicações e migrar seus projetos para novos

conceitos moduláveis, utilizando de todos os artifícios e benefícios do desenvolvimento

baseado em componentes.

Além das características, D’Souza e Wills (1998) expõem o modelo Catalysis em métodos

e técnicas utilizadas na engenharia de software. Os métodos são abordados para diversos

objetivos:

a) Desenvolvimento de software baseado em componentes. Definir com precisão interfaces

independentes para implementação, construir arquitetura de componentes e conectores,

garantir a conformidade do componente com os conectores.

b) Integridade da arquitetura do componente. Precisão nas especificações abstratas e garantia

dos objetivos de negócio.

c) Projeto orientado a objetos. Código legível, técnicas de caso de uso para transformar modelo

conceitual em código orientado a objeto centrado em interfaces.

d) Reengenharia. Técnicas para compreensão de software já existentes e concepção de novos

softwares utilizando o legado funcional.

Ao se tratar de um processo de desenvolvimento de software utilizando o Catalysis, são

permitidas inúmeras variações. Como o foco do modelo é disponibilizar formas precisas de

construir componentes e sistemas moduláveis, não existe somente um processo definido. Para

este trabalho, o processo utilizado terá base em D’Souza (1998), que explana um processo de

maior abrangência nas empresas que atualmente utilizam o Catalysis. Desta forma, a seguir,

Page 48: TCC - Engenharia de Software Baseada em Componentes

48

será desmembrado o núcleo do Catalysis em três formas de descrever como utilizar o modelo

e o processo abordado.

3.1 MODELO DE ESCOPO

Os modelos utilizam-se de intenso uso da diagramação UML para satisfazer todas as eta-

pas definidas no processo. Entretanto, alguns diagramas UML sofreram alterações para se

adaptar ao contexto do processo de especificação (OLIVEIRA; PAULA, 2009). Como mencio-

nado anteriormente, uma parte do núcleo do Catalysis é composta por três níveis no modelo de

escopo. Na figura 15 exemplifica a estrutura do modelo.

Figura 15: Modelo de escopoFonte: D’Souza (1998, p. 5)

O primeiro item do escopo, determina a concentração no domínio do problema ou de ne-

gócio. Nele estão inclusos todos os conceitos relevantes coletados através das reuniões de

requisitos feito com o cliente, bem como deve ser mapeado todo o problema e identificar o

domínio da aplicação.

No segundo item do escopo, fica centrado na especificação do componente ou do sistema

em conjunto com comportamentos externamente visíveis. Nesta modelagem, haverá a neces-

sidade de identificar as fronteiras, construir diagramas, e firmar todas suas ligações com outros

objetos. O objetivo de um componente é sempre estar desacoplado da aplicação, sendo imple-

mentado apenas através do uso de suas interfaces públicas conectadas ao sistema.

No terceiro e último item do escopo, define-se o projeto interno do componente e a arqui-

tetura lógica do sistema. Nesta etapa do processo, há a preocupação de especificar o com-

Page 49: TCC - Engenharia de Software Baseada em Componentes

49

portamento de cada objeto, sua comunicação e colaboração através de mensagens, interfaces

externamente disponíveis e interfaces necessárias para o funcionamento. Nos requisitos não

funcionais define-se qual a tecnologia a ser utilizada, desempenho e confiabilidade (D’SOUZA;

WILLS, 1998).

3.2 MODELO DE CONSTRUÇÃO

Há três níveis no modelo de construção para o processo Catalysis. Conforme na figura 16,

estão representados como: colaboração ou comportamento, tipo e refinamento. A colaboração

representa os aspectos mais importantes do projeto, pois envolve as descrições de objetos e

suas interações entre os grupos, com objetivo de definir um conjunto de ações que desempe-

nharão trocas de mensagens, nela está contido os resumos e detalhes das interações entre os

participantes. Para o tipo, se concretiza de forma bem definida a tipagem, atributos e operações

visíveis externamente de um objeto. Já para o refinamento, é entendido como uma relação

aprofundada entre conceitos definidos; a abstração de diferentes pontos de vistas devem ser

mantidos e respeitados, porém em níveis de detalhes diversos. Um sinônimo usual para o refi-

namento é dado como aperfeiçoamento, onde o detalhamento é aprofundado a cada tentativa

de melhoria. Em Catalysis, o refinamento consiste em captar detalhes e abstrair o conteúdo

proposto através de refatorações dos requisitos já especificados, finalmente, este repetitivo pro-

cesso garante o código de execução em conformidade com os requisitos que o cliente solicitou

(D’SOUZA; WILLS, 1998).

Figura 16: Modelo de construçãoFonte: D’Souza (1998, p. 6)

Page 50: TCC - Engenharia de Software Baseada em Componentes

50

3.3 PRINCÍPIOS FUNDAMENTAIS

Neste tópico apresentam-se os princípios necessários para se efetuar um projeto, usando o

Catalysis como processo de modelagem e desenvolvimento do sistema. Na figura 17, é repre-

sentado um modelo contemplando os três níveis de princípios restritos: princípios de abstração,

precisão e partes plugáveis de componentes moduláveis que devem ser respeitados na cons-

trução da arquitetura do sistema.

Figura 17: Princípios do CatalysisFonte: D’Souza (1998, p. 7)

O princípio de abstração tem foco na complexidade dos componentes. A abstração é utili-

zada para descrever somente partes do sistema considerado de maior escala e complexidade,

deixando detalhes não relevantes para outra etapa do projeto. Em um projeto como um fluxo de

decisões, algumas decisões serão tomadas através de outras já especificadas, gerando uma

dependência estrutural. Neste caso, como exemplo, não haveria sentido de criar tabelas de

banco de dados antes de estabelecer as funcionalidades do sistema. O exemplo demonstra a

inconsistência do projeto se tratado em ordem incorreta de eventos, consequentemente invali-

dando o modelo do processo de software. No entanto, percebe-se que a abstração de qualquer

informação pertinente ao sistema tem sua posição ordenada dentro do processo. Encontra-se

em um projeto de desenvolvimento baseado em componentes algumas abstrações importantes,

que incluem o modelo de negócio e regras, requisitos, modelo geral de interação e arquitetura

do componente (D’SOUZA; WILLS, 1998).

No princípio da precisão, a preocupação de analistas e arquitetos é especificar o máximo

de funcionalidades possíveis para compor a aplicação. Como qualquer grupo de pessoas em

discussão sobre um determinado assunto, há divergências entre cada integrante, e em um

projeto de software isto não é diferente. Quantas vezes grupos de analistas e arquitetos de

amplo conhecimento técnico discutem exigências sobre um produto, e saem com diferentes

Page 51: TCC - Engenharia de Software Baseada em Componentes

51

interpretações do problema a ser resolvido, mesmo que cerquem todas as lacunas passíveis

de erros sempre existe um ou outro profissional que está em desacordo com a solução. Mas

para um projeto de componentes, as dúvidas e desacordos devem serem sanadas, para isso

a precisão das informações são refinadas ao máximo. Entra neste conceito a abstração do

sistema, fornecendo aos colaboradores do projeto uma visão mais próxima da funcionalidade

em execução. De qualquer forma, a insegurança quanto ao real funcionamento do requisito

só é sanada quando o código for escrito. Consegue-se, com este princípio, expor as lacunas

e inconsistências do projeto o mais cedo possível, permitindo uma reação da equipe contra os

riscos identificados; os requisitos permanecem em monitoramento e testes através dos modelos

desenvolvidos ao longo do projeto, servindo para auditoria, validação e verificação; por fim, a

precisão das informações necessitam de um apoio ferramental, através das ferramentas Cases

que controlam as informações de fluxo, alterações, controle de versões, e disseminação dos

dados (D’SOUZA; WILLS, 1998).

No último princípio do Catalysis, está especificado que os componentes devem ser cons-

truídos como partes plugáveis. Esta abordagem pode ser considerada a mais importante entre

todos os princípios, pois um componente deve ser plugável e adaptável o suficiente para po-

der agrupar-se a outros componentes, ou ter suas funcionalidades estendidas para evolução

do sistema. Os ganhos com este método de desenvolvimento são enormes, começando com

a modularização de funcionalidades, confiança no módulo já estável que apenas é plugado

ao sistema, reutilização de classes, uso de frameworks e padrões de desenvolvimento. Para

softwares construídos sem a utilização de componentes bem definidos, primeiramente são in-

flexíveis e representam uma deficiência quanto a mudança de requisitos, forçando a alteração

bruta do código fonte da aplicação, e as vezes até impactando em outras funcionalidades que

estavam totalmente livre de erros. Um componente bom, é aquele que pode plugar-se a uma

grande variedade de outros componentes. Porém, para isto acontecer, só faz sentido se no pro-

jeto do componente foi exatamente previsto quais interfaces de conexões integram com outros

componentes plugáveis (D’SOUZA; WILLS, 1998).

3.4 PROCESSO CATALYSIS

Conforme se verificou até aqui, o Catalysis, através de seus modelos e artefatos, disponibi-

liza uma alternativa de estruturar um processo que se adapte a realidade das empresas, nessa

perspectiva D’Souza e Wills (1998) aborda na figura 18 um típico processo que normalmente é

utilizado como modelo de desenvolvimento Catalysis nas indústrias de softwares. Tem-se assim

o ponto de partida para compreensão da construção de softwares e componentes utilizando Ca-

Page 52: TCC - Engenharia de Software Baseada em Componentes

52

talysis. É importante destacar que, neste trabalho, aborda-se o modelo de processo Catalysis

apresentado a seguir.

Figura 18: Modelo de processo CatalysisFonte: D’Souza (1998, p. 76)

3.4.1 Requisitos

Softwares são sistemas de computadores que implicitamente abstraem as regras de negó-

cios para tratar de um objetivo específico, para tal análise, buscam-se subsídios para identificar

as necessidades que uma aplicação deve conter. Pode-se afirmar, então, que requisitos de sis-

tema ajudam a identificar e compreender o problema, bem como possibilita soluções propostas

para enfrentá-lo. Em outro ponto de vista, requisitos são dispostos para compor as funcionalida-

des do sistema, neste conceito, nos permite mapear entre visões internas e a visão natural para

um cliente. Neste processo, requisitos estão desmembrados em duas atividades agrupadoras,

o modelo de domínio, e o contexto do sistema. Uma aplicação é centralizada em um modelo

de domínio, também conhecido como modelo de negócio ou domínio do problema. O domínio

deve sempre refletir a visão do cliente (figura 19), como exemplo, um sistema de contas a pagar,

é de domínio financeiro.

Nas fábricas de softwares, quando os profissionais estão desenvolvendo suas aplicações,

primeiramente necessitam conhecer quais os objetivos do software, assim como suas funcio-

nalidades captadas através dos requisitos. Em sequência, buscam entender o software, e para

isso vão atrás de profissionais que nem sempre são relacionados com a área de tecnologia da

informação, mas sim que contenham o conhecimento do domínio e negócio da aplicação, isto

é necessário pois os engenheiros de software estão preocupados com a construção do soft-

Page 53: TCC - Engenharia de Software Baseada em Componentes

53

Figura 19: Domínio do sistema com foco no clienteFonte: D’Souza (1998, p. 77)

ware e muitas vezes desconhecem regras conceituais de outras áreas do conhecimento como:

contábeis, logística, etc. É inviável, em questão de tempo e custo, um engenheiro saber to-

das as regras de cada sistema desenvolvido, porque uma fábrica de software normalmente não

escolhe produto de negócio para desenvolver, apenas aceita o desafio e concretiza o desenvol-

vimento do sistema. Por outro lado, existem empresas especializadas em desenvolvimento de

sistemas com domínios específicos, neste caso, o conhecimento do negócio está na empresa e

é frequentemente compartilhado entre todos os integrantes. Para este seguimento de mercado,

a indústria de software é vista como uma especialista no domínio do negócio.

A análise do domínio dedica-se na compreensão do ambiente em que um sistema irá re-

sidir, bem como o papel da aplicação nesse ambiente. Em Catalysis, existem alguns artefatos

para descobrir e refinar qual o domínio da aplicação. O primeiro artefato chama-se mapa con-

ceitual conforme a figura 20, que expõem uma representação informal, entretanto estruturado

de termos relacionados ao domínio. A notação é bem semelhante a um mapa mental, formado

simplesmente de conceitos ou expressões com indicações de linhas interconectadas indicando

a relação entre eles; pode-se também utilizar figuras ou desenhos para uma representação mais

elaborada.

Page 54: TCC - Engenharia de Software Baseada em Componentes

54

Figura 20: Diagrama de mapa conceitualFonte: D’Souza (1998, p. 79) com adaptações

Outro aspecto que se pode ressaltar sobre artefatos de domínio é a construção de dicio-

nários e glossários para o sistema, explicando os termos utilizados na modelagem do domínio.

Conforme os incrementos do projeto avançam, os documentos também recebem novas comple-

mentações. Durante o processo de desenvolvimento do sistema, há riscos quanto à rotatividade

de pessoas, e para sincronizar as informações do projeto atual com novos colaboradores, os

dicionários e glossários servem como base teórica e resolução de dúvidas para conhecimento

dos termos usados no desenvolvimento da aplicação.

O diagrama de contexto (figura 21) fica com a responsabilidade de representar a colabora-

ção entre o sistema e objetos. Envolve a compreensão do papel do sistema em desempenhar

suas funcionalidades no contexto de negócios. Frente a isso, deve-se observar que o diagrama

deixa explícito a interação dos participantes, seus papéis e suas ações perante o sistema. O

objetivo deste diagrama é captar todas estas informações para mapear o foco do sistema, ou

seja, o domínio da aplicação.

3.4.2 Especificação do sistema

Após a fase de requisitos, segue o processo de detalhamento de cada requisito através

de análise e documentação. Os analistas possuem as responsabilidades de transpassarem o

conhecimento de negócio para o detalhamento técnico. Os artefatos, que até agora eram so-

mente detalhamento de negócio, dão lugar à especificação de operação dos objetos, protótipos

de funcionalidades, especificação de interface do usuário, relatórios e outras funcionalidades

que foram definidos para o sistema. A especificação do sistema, neste processo, é represen-

tada pelos diagramas de cenário de uso, tipos e operações. O produto principal desta fase é a

especificação do sistema em um único tipo de objeto como um componente.

Page 55: TCC - Engenharia de Software Baseada em Componentes

55

Figura 21: Diagrama de contextoFonte: D’Souza (1998, p. 79) com adaptações

Na figura 22 encontra-se um exemplo de como utilizar o diagrama de cenário de uso. O

diagrama sempre é construído através de uma situação ou ação que possa ser efetuada no

sistema. Como se constata, este diagrama aloca vários conceitos de artefatos já apresentados,

o uso da colaboração entre os objetos é necessário para expressar o fluxo das mensagens, os

tipos e operações também estão presentes no diagrama. Contudo, o objetivo do diagrama é

detalhar a sequência de interações realizadas entre os participantes.

Outro diagrama pertencente à especificação do sistema está exemplificado na figura 23.

O diagrama em estudo fornece uma especificação centrada em um único tipo («type»). Para

que isso aconteça, a descrição do modelo se baseia em termos de tipos de objetos, atributos e

associações. O produto do diagrama é agrupar a especificação do sistema em um componente

específico de negócio.

3.4.3 Arquitetura do sistema

O processo Catalysis, abordado neste trabalho, possui uma etapa de definição de plata-

forma do sistema em conjunto com arquitetura técnica e lógica. Nesta fase, são detalhados

diagramas para fins de reconhecimento e limitação do ambiente de implantação, bem como,

molda-se os diagramas de comunicação entre os componentes sendo gerenciados através de

transações.

Como exemplo, na figura 24, representa-se um modelo de plataforma do sistema requerido.

A arquitetura física é, muitas vezes, negligenciada nos projetos pela incapacidade dos profis-

sionais de prever certamente o ambiente e arquitetura necessária para o bom funcionamento

Page 56: TCC - Engenharia de Software Baseada em Componentes

56

Figura 22: Diagrama de cenário de usoFonte: D’Souza (1998, p. 81) com adaptações

Figura 23: Diagrama de tipo e operações do sistemaFonte: D’Souza (1998, p. 82) com adaptações

Page 57: TCC - Engenharia de Software Baseada em Componentes

57

do sistema. Nessa perspectiva, deve ser iniciada mais precocemente possível, observando a

evolução do projeto e readequando sua estrutura. O sistema é composto por serviços agre-

gados às funcionalidades para a execução da aplicação como um todo. Por este motivo, há a

necessidade de apontar cada comunicação entre os componentes externos. Neste exemplo,

foi utilizada uma arquitetura em camadas centralizada em um servidor, existindo uma camada

separada para visualização, responsável pela interface do usuário; e outra camada para tratar

de dados requisitados através de transações. O modelo apresentando tem objetivo de definir e

estudar sobre a escalabilidade, desempenho, transmissão das informações, segurança, e entre

outros requisitos não funcionais mapeados no sistema.

Figura 24: Modelo da plataforma requerida do sistemaFonte: D’Souza (1998, p. 83)

A arquitetura técnica ou lógica consiste em uma partição do comportamento da aplicação

em componentes separados com base em critérios de reutilização de software, poder-se-ia dizer

mais, que ela implementa a camada de negócio próprio como uma coleção de componentes de

colaboração mantendo os tipos de objetos originais, porém, agora dividido entre componentes

especificados para construção e componentes COTS. (figura 25). Assim, é facilmente verificá-

vel que o diagrama se propõe a especificar as dependências entre os componentes, como a

interface do usuário, servidores, objeto de negócios, bancos de dados, middlewares, serviço de

log, exceções, padrões de projeto e ferramentas. Da mesma forma, pode-se dizer ainda que o

diagrama serve para definir a tecnologia da arquitetura de componentes utilizadas, tais como:

JavaBeans, COM - Microsoft, CORBA, etc.

3.4.4 Arquitetura interna dos componentes

No modelo de processo de desenvolvimento de sistemas, utilizando o Catalysis, prezou-

se, até agora, em estruturar a base da aplicação conceitual e técnica, transportando as regras

de negócios e visão sistêmica para a arquitetura do software. É de importância acrescentar

ainda que os modelos e diagramas criados, servem de guia para reforçar os objetivos de mo-

Page 58: TCC - Engenharia de Software Baseada em Componentes

58

Figura 25: Diagrama de arquitetura técnica do sistemaFonte: D’Souza (1998, p. 84)

dularização dos componentes do sistema. Em contrapartida, não foi abordado nos diagramas

anteriores um modelo que definisse o código de implementação, ou mesmo como utilizar as im-

plementações das interfaces para comunicação dos componentes. Com o intuito de esclarecer

esta etapa do projeto, o processo determina como auxílio o uso da diagramação exemplificada

na figura 26.

Figura 26: Diagrama de arquitetura interna de componenteFonte: D’Souza (1998, p. 86)

Como se vê, no diagrama de arquitetura interna, os componentes individuais já estão es-

tabelecidos com suas classes internas. Neste contexto a modelagem do digrama necessita

expor o nível de interfaces de comunicação entre os componentes, respeitando os requisitos

Page 59: TCC - Engenharia de Software Baseada em Componentes

59

de colaboração e comportamentos especificados nas etapas anteriores do processo. Em ou-

tras palavras, cada componente da aplicação tem de ser concebido internamente como um

conjunto de classes que implementam as interfaces necessárias externamente. O projeto re-

sultante deve possibilitar a avaliação da arquitetura dos tipos de objeto, ou seja, a avaliação da

colaboração entre os componentes atualmente definidos, com o propósito de validar a coerência

da arquitetura baseada em componentes.

Neste capítulo abordou-se sobre as etapas e artefatos gerados no processo Catalysis. Adi-

ante apresenta-se outro processo que idealiza a construção de softwares baseados em compo-

nentes. Da mesma forma que o Catalysis, o processo seguinte chamado de UML Components

é composto de etapas e artefatos para especificação de componentes de software, gerando

como objetivo um software baseado em componentes reutilizáveis.

Page 60: TCC - Engenharia de Software Baseada em Componentes

60

4 UML COMPONENTS

O processo de desenvolvimento de software UML Components, derivou-se de um conjunto

de conhecimento de dois personagens da área da engenharia de software: John Cheesman e

John Daniels, que tiveram a idéia de utilizar alguns artefatos da linguagem UML para construir

um novo tipo de processo de desenvolvimento de software baseado em componentes, com foco

na reutilização e modularização de software. Isto somente foi exposto à indústria de software

com a publicação do livro “UML Components - A Simple Process for Specifying Component-

Based Software” no ano 2000. Como o desenvolvimento baseado em componentes já não era

uma novidade, alguns anos antes, em 1998, o autor Clemens Szyperski havia publicado seu

livro “Component Software - Beyond Object-Oriented Programming” que serviu de base para os

posteriores desenvolvimentos de processos de software com foco na reutilização de software

(CHESSMAN; DANIELS, 2001).

De modo geral, o modelo de processo de desenvolvimento UML Components maximizou

forças para a especificação do software. Facilitou a etapa de desenvolvimento do código fonte,

e posteriormente deu subsídios para agilizar outras etapas em sequência, simplificando os in-

crementos no desenvolvimento da aplicação.

O desenvolvimento baseado em componentes, é diferente das abordagens anteriores dos

processos de software, na essência da especificação do software, há a necessidade de pla-

nejar a arquitetura do sistema desde o início do projeto, visando modularizar a aplicação em

componentes. Um componente tem uma responsabilidade bem definida no sistema, por este

motivo, a aplicação é uma reunião de vários componentes integrados através de interfaces de

comunicação. Quando um sistema é composto pela integração de componentes, as interfaces

dos componentes significam dependências de baixo acoplamento, ou seja, facilmente um com-

ponente pode ser trocado por outro sem causar grande impacto no código fonte, bastando, para

o novo componente, implementar as interfaces que o sistema dispõem.

4.1 PROCESSO UML COMPONENTS

Chessman e Daniels (2001) afirmam que o processo de desenvolvimento de software base-

ado em componentes utilizando o método UML Components, tem base estruturada no processo

RUP (2.2.6). Na figura 27 exemplifica as fases do processo RUP padrão. Poder-se-ia dizer que

o processo UML Components não está preso ao processo RUP. Como o núcleo é composto por

uma sequência de etapas e artefatos da UML, pode-se utilizar, de outros processos de software

para gerenciamento de riscos e workflow.

Page 61: TCC - Engenharia de Software Baseada em Componentes

61

Figura 27: Modelo de Processo UML Components baseado no RUPFonte: Chessman e Daniels (2001, p. 27)

O método UML Components depende de algumas etapas básicas para ser utilizado em um

processo de desenvolvimento de software. Chessman e Daniels (2001) explicam as etapas e

os artefatos necessários para o desenvolvimento do software (figura 28).

Figura 28: Etapas e artefatos gerados no processo UML ComponentsFonte: Chessman e Daniels (2001, p. 32)

Page 62: TCC - Engenharia de Software Baseada em Componentes

62

Na etapa de especificação de requisitos, encontra-se a tarefa de modelagem do conceito

do negócio, também compreendida como definição do domínio da aplicação. Nela, deve-se

criar um vocabulário contendo os termos utilizados no projeto, para que os profissionais da

área técnica e os clientes estejam entendendo as palavras mencionadas nas discussões. Ainda

na especificação, está incluso os diagramas de casos de uso, que por sua vez, delimitam os

aspectos funcionais dos requisitos do sistema. O caso de uso tem uma importância muito

grande, pois esclarece as interações do usuário com o sistema.

O modelo de tipo de negócio está entre as etapas de especificação de requisitos e arquite-

tura do sistema. Ele propõe formalizar o conceito de negócio captando exatamente os aspectos

e regras do domínio da aplicação. Já a especificação de interface está diretamente relacionada

com a arquitetura do sistema. Ela visa definir o contrato entre as classes para especificar a

comunicação entre os objetos. Na especificação de componentes, faz-se uso das interfaces já

especificadas. O objetivo é definir as necessidades dos componentes, ou seja, quais objetos

necessitam se comunicar para seu funcionamento, e definir quais suas ações serão disponibili-

zadas. Na geração dos artefatos da arquitetura dos componentes, fica com a responsabilidade

de descrever como tudo funcionará em conjunto, bem como, a interação entre os componentes.

O processo UML Components implementa três grandes estágios no desenvolvimento de

software baseado em componentes: identificação de componentes, interação entre componen-

tes e especificação de componentes (figura 29). Desta forma, ele pode ser utilizado sob a

supervisão de outros processos, desde que mantenham a compatibilidade com o workflow de

sua etapas. O princípio básico de desenvolvimento para o método, é restringir a codificação do

sistema de forma incremental.

4.1.1 Identificação de Componentes

Neste estágio, são gerados os artefatos: modelo de conceito de negócio ou domínio da

aplicação, e modelo de casos de uso. Seu objetivo é identificar conceitualmente um conjunto

inicial de classes respeitando o domínio da aplicação, e um conjunto inicial de funcionalidades

para pré-definir os componentes do sistema. Com estes dois passos, dá-se início a arquitetura

dos componentes.

O modelo de tipo de negócio é um artefato intermediário na transição deste estágio, no qual

as interfaces de negócio estão formadas por estes tipos. Ele também é usado posteriormente

na fase de especificação de componentes, como matéria-prima, para o desenvolvimento de

modelos de informação de interface.

Neste primeiro estágio, além de identificar as classes e objetos conceituais do sistema,

também efetua um primeiro filtro nas operações que precisarão ser suportadas pelo sistema.

Page 63: TCC - Engenharia de Software Baseada em Componentes

63

Figura 29: Três estágios do processo UML ComponentsFonte: Chessman e Daniels (2001, p. 34)

De qualquer forma, as funcionalidades mapeadas apenas receberão um nome de identificação,

pois, assinaturas e outros detalhes serão adicionados em um estágio posterior.

Nos tópicos a seguir estão descritos os artefatos pertencentes a esta fase.

a) Modelo Conceitual de Negócio.

Conforme o título do modelo, percebe-se que ele está relacionado com o conceito de

negócio ou domínio da aplicação. Além disso, há que se atentar sobre o modelo, que

não é considerado um modelo de software lógico, mas sim, um modelo expressando as

informações existentes no domínio do problema em forma de negócio.

O objetivo principal do diagrama de domínio da aplicação, é capturar conceitos e identi-

ficar relacionamentos entre o mundo real do negócio e a aplicação em desenvolvimento.

No processo da UML Components, este artefato é representado através do diagrama

de classe da UML (figura 30), porém, o modelo idealiza a divisão de escopo do soft-

ware em partes independentes. Uma boa prática para construção do modelo, é usar

um estereótipo «concept» para cada classe, com isto, fica claro para toda a equipe de

desenvolvimento que o diagrama trata do modelo conceitual do sistema.

Este modelo, tipicamente serve para capturar classes conceituais e suas associações.

Quando se trata de associação de papéis no sistema, pode ou não terem a multiplicidades

Page 64: TCC - Engenharia de Software Baseada em Componentes

64

Figura 30: Modelo conceitual de negócio ou domínio da aplicaçãoFonte: Chessman e Daniels (2001, p. 43) com adaptações

especificadas no modelo, também, há a possibilidade de colocar somente os atributos

mais importantes para esclarecer o relacionamento do negócio.

b) Modelo de Caso de Uso.

Segundo Bezerra (2006) o modelo de casos de uso é composto de atores, sistemas, sub-

sistemas e do relacionamento entre eles. O diagrama tem em especial função, a especi-

ficação de uma sequência de interações do sistema e agentes externos que o compõe.

O diagrama de caso de uso mostra as ações e operações que um ator executa sobre

o sistema (figura 31), sem revelar a estrutura e o comportamento interno da aplicação.

Além do diagrama, faz parte do modelo, a descrição de cada caso de uso gerado (figura

32). As narrativas de cada caso, detalham as operação executadas pelo ator. Ainda den-

tro das narrativas, uma boa prática é representar as pré e pós condições do caso de uso

selecionado, assim como, representar um fluxo alternativo de execução da operação caso

houver exceção.

Para Chessman e Daniels (2001) o modelo de casos de uso oferece a modelagem da

interação entre usuário e sistema. Os autores ainda explicam que na linguagem UML,

não há uma especificação bem definida de como construir os diagramas de casos de uso

e suas narrativas, assim, é possível adaptar o diagrama para uma visão que melhor seja

compreendida pela equipe de desenvolvimento.

Os participantes de um diagrama de casos de uso são: atores e funcionalidades do sis-

tema. Um ator é uma entidade que interage com o sistema, normalmente na representa-

ção de uma pessoa, porém, também é possível o ator ser um outro sistema de software,

Page 65: TCC - Engenharia de Software Baseada em Componentes

65

Figura 31: Exemplo - diagrama de casos de usoFonte: Chessman e Daniels (2001, p. 46) com adaptações

Figura 32: Exemplo - narrativa gerada de um caso de usoFonte: Chessman e Daniels (2001, p. 46)

Page 66: TCC - Engenharia de Software Baseada em Componentes

66

de qualquer forma, estes detalhes são ocultados, permanecendo somente as ações e

operações representadas por cada um deles perante o sistema. Dito de outra forma, o

sistema é visto como uma caixa preta, que aceita estímulos de atores e gera respostas

representadas na narrativa do caso de uso.

É importante distinguir entre o ator e o mecanismo de comunicação executado por ele no

sistema. Como exemplo, uma televisão contém um aplicativo que responde ações execu-

tadas por um controle remoto. No exemplo, o ator é uma pessoa qualquer. Ela aperta um

botão do controle para satisfazer uma ação desejada, neste caso, o botão apertado foi o

desligar. O sistema responde a ação do usuário e desliga a televisão. No diagrama de

caso de uso, não se deve preocupar com o mecanismo de comunicação, representado

no exemplo, pelo controle remoto que funciona através da comunicação de um sensor

infravermelho com a televisão. O modelo apenas deve-se focar nos estímulos e respos-

tas da operação executada pelo ator, não se atendo ao o meio físico da comunicação

(CHESSMAN; DANIELS, 2001).

4.1.2 Interação entre Componentes

A etapa de interação entre componentes, se responsabiliza por examinar a forma de como

as operações do sistema serão realizadas. Para concretizar o objetivo desta etapa, dá-se início

a busca de informações que os objetos compartilham em comum. Uma boa prática é começar

com a definição da colaboração dos componentes.

Nos artefatos, utiliza-se com rigor os modelos de interação para obter o nível aprofundado

das operações do componente. Quanto mais interações são consideradas, mais informações

são extraídas sobre as operações comuns que poderão ser reutilizadas. Através desta aná-

lise, é possível identificar as responsabilidades das classes, tornando-os mais claras quanto a

compreensão, e facilidade com a manutenção futura do componente.

O comportamento dos objetos, para se ter um componente desacoplado, deve ser arqui-

tetado de forma que reduza ao máximo as dependências fixas entre outros objetos. Para isto,

os objetos devem ser construídos de forma que se comuniquem através de notificações de

mensagens pelas interfaces implementadas nos componentes. O intuito da interação entre

componentes é identificar e validar o funcionamento das operações das classes reunidas em

um sistema.

Quando identificado a estrutura básica de interação, deve haver um agrupamento das clas-

ses em colaboração, confirmando as operações através da comunicação entre elas. Essa ca-

deia de ações e funcionalidades, farão parte das regras de negócios a ser implementado no

sistema.

Page 67: TCC - Engenharia de Software Baseada em Componentes

67

A seguir, estão descritos os artefatos pertencentes a esta fase.

a) Modelo de Tipo de Negócio.

O modelo apresentado, trata de definir a especificação de tipos de dados no sistema. Os

artefatos gerados são modelados através do diagrama de classes, com foco na tipagem

de dados, pois seu propósito é muito diferente do modelo conceitual. Neste modelo, a

geração de artefatos está direcionada em definir e separar cada tipo de classe e suas

propriedades relevantes para o entendimento.

Naturalmente, muitas classes identificadas neste modelo terão os mesmos nomes das

classes do modelo conceitual, porém, eles não representam a mesma coisa. Por exem-

plo, o modelo conceito de negócio pode conter uma classe chamada “cliente”, que repre-

senta o conceito de cliente no âmbito empresarial. Em contrapartida, a classe “cliente” no

modelo de tipo de negócio, representa a classe cliente com seus atributos e operações

para entendimento do software.

Para representar as classes no modelo do tipo de negócio utiliza-se do estereótipo «type»

(figura 33). O modelo pretende representar com precisão as informações sobre o negócio

com o qual o sistema precisa se preocupar. Isto significa extrair e refinar as classes

do modelo conceitual, para remover redundância na arquitetura do sistema. Ainda no

artefato gerado, há a possibilidade de utilizar a generalização, associações e todos as

funções prescritas no diagrama de classes na linguagem UML (CHESSMAN; DANIELS,

2001).

Figura 33: Exemplo - diagrama de classes representando o modelo de tipo de negócioFonte: Chessman e Daniels (2001, p. 49)

b) Modelo de Especificação de Interface.

Chessman e Daniels (2001) justificam que o modelo de especificação de interface é sub-

sidiado pelo conjunto de todas as especificações apresentadas até esta etapa. Seu foco

Page 68: TCC - Engenharia de Software Baseada em Componentes

68

é definir com precisão o que as interfaces dos componentes disponibilizam de operações

(provided), e quais os serviços necessários para funcionamento do componente (requi-

red).

Praticamente uma especificação de interface é composta de tipo de interface própria;

modelo de informações contendo atributos e associações de papéis; tipos de dados inter-

nos; assinaturas das operações; e especificação das pré e pós condições. Cada interface

tem seu próprio ponto de vista sobre a informação em que se preocupa. Por esta razão,

para distinguir o diagrama de especificação de interface de outros diagramas, utiliza-se o

estereótipo «interface type».

Uma forma de organizar um componente é separar as interfaces pela similaridade do

negócio, esta tarefa gera um grupo de interfaces, chamado de pacote. O pacote pode im-

portar informações de especificações de outros pacotes já existentes, isto é comum nas

linguagens orientada a objetos. Como exemplo, na figura 34, apresenta um pacote cha-

mado de ICustomerMgt, que importa as informações de tipos de dados de outro pacote

qualquer.

Figura 34: Exemplo - diagrama de classes representando o modelo de especificação de inter-face

Fonte: Chessman e Daniels (2001, p. 56)

Um dos objetivos da modelagem de componentes, é definir especificações de interfaces

para oferecer operações e representar as necessidades do componente. Tomando como

válida essa afirmação, entende-se que as interfaces são criadas para definirem contrato

Page 69: TCC - Engenharia de Software Baseada em Componentes

69

de relação entre os componentes. O sistema, não sabe de forma alguma os dados e

comportamentos das classes que implementam as interfaces, apenas, conhece as as-

sinaturas contratuadas pela interface, com isso, a aplicação se importa somente com a

chamada de assinatura dos métodos, confiando que a codificação desenvolvida nas clas-

ses, executará o propósito designado pelo método.

4.1.3 Especificação de Componentes

Nesta etapa, é considerado o último estágio do desenvolvimento de software baseado em

componentes utilizando o método UML Components. A fase prevê desenvolver uma especi-

ficação mais detalhada das operações e restrições do sistema. As interfaces ganham maior

atenção na definição dos estados possíveis que os objetos manterão perante os componentes,

e para reforçar esta análise, também são previstos especificar as pré e pós condições dos obje-

tos e componentes. Levando em conta estas atividades, possibilitam fundamentar a captura de

regras de negócios e restrições do sistema ainda não mapeados.

As pré e pós condições dos objetos e componentes, fazem referência aos tipos do modelo

de informação das interfaces. As restrições na especificação de um componente, determina

como as definições de tipos de interfaces correspondem ao contexto do componente. A arqui-

tetura do componente não deve ser alterada significativamente nesta fase, pois estas tarefas de

detalhamento somente devem ser realizadas assim que a arquitetura esteja estável e todas as

operações das interfaces tiverem identificadas.

O ato de escrever as regras precisas para cada objeto, componente, e operação, pode

ajudar a descobrir parâmetros em falta e pendentes do escopo do sistema. Mas a ênfase desta

atividade está no preenchimento de detalhes com objetivo de gerar um quadro estável entre a

arquitetura do sistema e compreensão da equipe de desenvolvimento.

Adiante, estão descritos os artefatos que fazem parte desta fase (CHESSMAN; DANIELS,

2001).

a) Modelo de Especificação de Componentes.

Verificou-se, até aqui, que a grande maioria dos modelos e diagramas, eram construídos

de artefatos unitários. Na especificação de componentes, este conceito, modifica-se para

geração de artefatos com a agregação de um conjunto de interfaces pertencentes ao

componente.

Em meio á linguagem UML, o conceito de componente, é voltado para o mundo da im-

plementação e implantação de software. Dentro desse domínio, um componente é muito

flexível, podendo acomodar muitas interfaces para definir um componente de negócio.

Page 70: TCC - Engenharia de Software Baseada em Componentes

70

Como implantação, o componente pode-se ser tratado como um módulo instalado no

sistema, e ser responsável por executar uma determinada tarefa.

Na figura 35 do modelo apresentado, pode-se observar que o componente oferece uma

interface de implementação para se relacionar com outros componentes ou sistema. Esta

interface para alguns autores é chamada de provided (figura 36), porém, na bibliografia de

Chessman e Daniels (2001), está representada pelo estereótipo «offers». Essa especifi-

cação de oferenda de demanda de funcionalidades é detalhada mais adiante no modelo

de arquitetura de componentes.

Figura 35: Ilustração de um componente que oferece interface de implementaçãoFonte: Chessman e Daniels (2001, p. 60) com adaptações

Além das interfaces provides de um componente, existe também em sua especificação

as interfaces requires, exemplificado conforme a figura 36. O componente CustomerMgr

necessita de um outro componente que implemente a interface IDBConnection, servindo

como conexão de banco dados. As interfaces, por prática de padrão de desenvolvimento,

recebem a vogal “I” no início do nome; também, devem possuir nomes relativos aos obje-

tivos do contrato de negócio.

Figura 36: Ilustração de um componente com interface provided e requiredFonte: Chessman e Daniels (2001, p. 60) com adaptações

b) Modelo de Arquitetura de Componentes.

Page 71: TCC - Engenharia de Software Baseada em Componentes

71

Por fim, mas não menos importante, chega-se a tarefa de especificar a arquitetura do

componente. Esta fase tem apoio em todos os artefatos criados no processo de espe-

cificação, porém, se assemelha em maior profundidade com o modelo de especificação

de interface. Assim como o processo de desenvolvimento é incremental, o processo de

especificação também o é, por este motivo, a construção da arquitetura do componente

começa desde as primeiras decisões tomadas na etapa inicial do projeto.

Neste modelo de diagrama, do ponto de vista da linguagem UML, o componente é con-

siderado uma caixa preta com especificação de oferendas e demandas de operações.

O termo utilizado para oferenda na UML é tratado como provide, e para o de demanda,

como require.

A arquitetura de componentes define um contexto no qual as dependências de uso das

interfaces de especificações dos componentes estão ligadas. Assim, em vez de uma

série de especificações de componentes independentes, tem-se uma arquitetura de com-

ponentes individuais (figura 37), ligadas entre interfaces provided e required.

Figura 37: Modelo de arquitetura de componentesFonte: Chessman e Daniels (2001, p. 100) com adaptações

Através deste último modelo, conclui-se a especificação de um sistema baseado em com-

ponentes. Como foco do trabalho, e mesmo na bibliografia utilizada, o processo de UML

Components cuida da especificação de componentes, deixando o desenvolvimento para

outros processos.

Page 72: TCC - Engenharia de Software Baseada em Componentes

72

5 COMPARATIVO ENTRE ARTEFATOS CATALYSIS E UML COMPONENTS

Com a base teórica dos autores apresentados neste trabalho, buscou-se analisar os artefa-

tos gerados entre cada etapa dos dois processos envolvidos: Catalysis e UML Components. A

pesquisa executada foi de caráter exploratório, que possibilitou estudar exaustivamente o tema

a fim de obter a compreensão dos processos de engenharia de software para fins de reutilização

de software.

Nos dois processos da ESBC, apresentados neste trabalho, conforme a bibliografia utili-

zada, analisou-se somente as etapas de especificação de software baseado em componentes.

Com isto, o desenvolvimento de código não foi incluso no escopo. O trabalho proporcionou

compreender como especificar um sistema baseado em componentes com objetivo de reutiliza-

ção de código, para isto, foram abordados além dos conceitos teóricos, artefatos relacionados

a modelos e diagramas construídos em cada fase.

Neste capítulo, serão identificadas e exploradas as etapas em comum para os processos

Catalysis e UML Components. Também, serão analisados os artefatos gerados para a etapa

em estudo. O objetivo é compreender, para cada fase, qual dos dois processos tem uma melhor

abordagem para detalhar a especificação do projeto. A análise foi definida através da interpre-

tação das bibliografias estudadas em cada processo e definição de critérios estabelecidos, e,

para o demonstrativo do estudo comparativo, foram gerados exemplos, como modelos e diagra-

mas de referências para entendimento da comparação dos artefatos discutidos nas bibliogra-

fias utilizadas. Por fim, será dada uma conclusão baseada nas pontuações obtidas através da

aplicação dos critérios avaliadores, possibilitando a identificação do processo que trouxe uma

melhor visão de especificação de software sob a visão deste trabalho.

5.1 DEFINIÇÕES DE CRITÉRIOS

Primeiramente para analisar os artefatos, identificou-se a necessidade de relacionar as

etapas dos dois processos. Esta análise trata de identificar um título genérico das etapas em

comum dos processos abordados, e busca demonstrar meios de atingir o objetivo de cada fase

através da geração de artefatos. No quadro 1 apresenta o relacionamento de ambos processos

com uma definição gerérica de etapas dos processos.

De posse das etapas genéricas estabelecidas entre os processos, apresenta-se no quadro

2 os artefatos gerados em cada etapa genérica. Este mapeamento de artefatos no modelo

genérico de processo, define a relação de comparação entre os artefatos do processo Catalysis

e UML Components.

Page 73: TCC - Engenharia de Software Baseada em Componentes

73

Etapas GenéricasCatalysis Etapa Genérica UML Components

Identificação de requisi-tos

Especificação de negó-cio

Identificação de requisi-tosIdentificação de compo-nentes

Especificação de soft-ware

Especificação do sis-tema

Especificação de soft-wareInteração de componen-tes

Arquitetura e desenhode componentes

Arquitetura de compo-nentes

Arquitetura e especifica-ção de componentes

Arquitetura interna decomponentes

Quadro 1: Geração de etapas genéricas entre os processos Catalysis e UML ComponentsFonte: O Autor

Em sequência, cada artefato de cada processo foi analisado individualmente através de

bibliografia e interpretação de modelo. Com isto, cada artefato demonstrou informações úteis a

que ele se propõe em sua etapa, sendo assim, gerou-se um repositório de dados para definições

de perguntas objetivas com propósito de comparar um artefato, com outro similar do processo

analisado. As perguntas estão detalhadas mais a frente, nas etapas do processo genérico.

A análise final para identificar que melhor processo de desenvolvimento de software base-

ado e componentes constrói uma especificação de software mais clara e robusta, se dá através

da pontuação das perguntas executadas sobre os artefatos de cada processo na etapa gené-

rica. O processo que possuir o maior número de respostas positivas sobre seus artefatos, será

considerado o processo que melhor especifica um sistema de software baseado em componen-

tes.

5.2 ESPECIFICAÇÃO DE NEGÓCIO

Como em todo o processo de desenvolvimento de software, na primeira fase, acontece

a concepção do negócio. A equipe de desenvolvimento se esforça para modelar o conceito

de negócio da aplicação. Neste sentido, observa-se que ambos processos começam com a

modelagem de domínio da aplicação. Como já discutido no referencial teórico, o domínio da

aplicação ou domínio do problema, tem objetivo de identificar o domínio de negócio do software

em construção. O negócio tem foco no mundo real, e deve ser compreendido pelo cliente.

Page 74: TCC - Engenharia de Software Baseada em Componentes

74

Etapas e ArtefatosArtefatos Catalysis Etapa Genérica Artefatos UML Components

Mapa conceitual oumapa mental

Especificação de negó-cio

Diagrama de conceito denegócio ou domínio daaplicação

Diagrama de contextoGlossário e dicionário determos do projeto

Diagrama de casos deuso e narrativasGlossário e dicionário determos do projeto

Diagrama de cenário deuso

Especificação do sis-tema

Diagrama de tipos e ope-rações

Diagrama de tipos e ope-rações

Diagrama de classespara especificação deinterfaces

Modelo da plataforma re-querida do sistema

Arquitetura de compo-nentes

Diagrama de classespara especificação decomponentes

Modelo da arquiteturatécnica do sistemaModelo da arquitetura in-terna de componentes

Modelo da arquitetura decomponentes

Quadro 2: Etapas genéricas relacioados aos artefatos dos processos Catalysis e UML Compo-nents

Fonte: O Autor

Page 75: TCC - Engenharia de Software Baseada em Componentes

75

Ainda na fase de especificação de negócio, aborda-se a identificação e captação de requisi-

tos do sistema que, mais tarde, são responsáveis por definir as funcionalidades que a aplicação

possuirá. A seguir, explica-se o objetivo de cada artefato gerado nesta fase pelos dois proces-

sos abordados.

O Catalysis mantém três formas de coletar informações para definir o modelo de negócio:

diagrama de mapa conceitual, diagrama de contexto do sistema, e dicionário de termos do pro-

jeto. O diagrama de mapa conceitual prevê construir um artefato com foco no cliente, ou seja,

que o cliente compreenda o conceito de negócio que será atribuído ao sistema. O diagrama

de contexto do sistema preocupa-se com o papel da aplicação no contexto do ambiente que

será implantado. Neste diagrama, além dos objetos conceituais que retratam o mundo real,

também identificam-se algumas interações e propriedades que os objetos potencialmente po-

derão necessitar. O diagrama de contexto permite uma visão de domínio da aplicação e serve

como modelo de captação de requisitos para o sistema. Já os dicionários ficam com a res-

ponsabilidade de esclarecer os termos utilizados no projeto, para que a equipe técnica fale na

mesma língua que a de negócio. Na figura 38, há uma representação dos artefatos gerados

para construção do domínio do sistema. Embora D’Souza e Wills (1998) expõem a possibili-

dade de utilizar casos de uso para coleta de requisitos, não será aceito para este trabalho, pois

o caso de uso não foi especificado no processo apresentado para o Catalysis.

Figura 38: Modelo de domínio do sistema no processo CatalysisFonte: D’Souza (1998, p. 78) com adaptações

O UML Components, por sua vez, trata esta fase utilizando artefatos da linguagem UML

chamados: modelo conceitual de negócio, diagrama de casos de uso e dicionários de termos.

O artefato de negócio possui o objetivo de retratar conceitualmente o mundo real do negócio

em que a aplicação será utilizada. O diagrama representa classes de UML (figura 30), com

estereótipo «concept» para descrever cada entidade de negócio. Permite ainda atribuir proprie-

Page 76: TCC - Engenharia de Software Baseada em Componentes

76

dades e multiplicidade entre as classes conceituais, porém, de forma alguma, este modelo está

relacionado ao objetivo de arquitetura do sistema, apenas, seu foco é identificar o domínio da

aplicação. Ainda, faz parte desta etapa o artefato dicionário de termos, que ajuda a descre-

ver informações sobre o termos comentados no projeto. A figura 39 exemplifica os artefatos

gerados para o domínio do sistema.

Figura 39: Modelo de domínio do sistema no processo UML ComponentsFonte: O Autor

Na captação de requisitos, o processo UML Components utiliza do diagrama de casos de

uso da linguagem UML. O artefato gerado detalha as funções do sistema em níveis de ações,

definindo pré e pós condições para tarefa executada. Desta forma, além de especificar as

ações que o ator executa sobre o sistema, também detalha a narrativa passo a passo de como

a ação acontece. Ainda, na narrativa, são expressos fluxos alternativos em caso de exceções,

resguardando uma alternativa de saída para a operação falha.

No quadro 3 representa as perguntas formuladas para a comparação dos artafatos sobre os

dois processos abordados na etapa genérica de especificação de negócio. Também, na figura

40, demonstra a quantificação gráfica sobre o critério de perguntas aplicadas nos artefatos dos

processos Catalysis e UML Components.

Figura 40: Análise gráfica da comparação de artefatos da etapa Especificação de NegócioFonte: O Autor

Page 77: TCC - Engenharia de Software Baseada em Componentes

77

Especificação de negócioRequisito comparado Catalysis UML Components

Pergunta 1: Demonstrana visão do cliente oconceito de negócio daaplicação

Diagrama de mapa con-ceitual

Diagrama de conceito denegócio

Pergunta 2: Permite cap-tar funcionalidades dosistema

Diagrama de contexto dosistema

Diagrama de casos deuso

Pergunta 3: Permite de-finir multiplicidade entreobjetos conceituais

Diagrama de mapa con-ceitual

Diagrama de conceito denegócio

Pergunta 4: Permite ex-pressar a ação que umator executa

Diagrama de mapaconceitual, diagrama decontexto do sistema

Diagrama de casos deuso

Pergunta 5: Permiteidentificar atributos nomodelo de negócio

Diagrama de mapaconceitual, diagrama decontexto do sistema

Diagrama de conceito denegócio

Pergunta 6: Permite re-lacionamento entre obje-tos conceituais

Diagrama de mapaconceitual, diagrama decontexto do sistema

Diagrama de conceito denegócio

Pergunta 7: Possui in-formações sobre termostécnicos e de negócios

Dicionário de termos doprojeto

Dicionário de termos doprojeto

Quadro 3: Informações captadas pelos artefatos na especificação de negócioFonte: O Autor

Page 78: TCC - Engenharia de Software Baseada em Componentes

78

Analisando os artefatos gerados entre os processos, entende-se que os artefatos do Cataly-

sis, no quesito modelagem de domínio, têm vantagens sobre os da UML Components. Apesar

da similaridade entre eles, o processo Catalysis permite refinar as informações com mais de-

talhamento, pois aplica três construções de diagramas para determinar o domínio do sistema,

mas, na captação de requisitos, utiliza-se de um mesmo artefato para identifica-los. Já o pro-

cesso UML Components propõe uma definição de negócio apenas com o diagrama de classes

de negócio e os dicionários de termos, porém, quando se trata de captar requisitos, no UML

Components há um artefato de melhor qualidade. Os casos de uso, além de identificar os re-

quisitos do sistema, detalham em narrativa como será o procedimento de execução (D’SOUZA;

WILLS, 1998).

Como este trabalho define critérios para identificar o processo que possui os artefatos de

melhor qualidade para uma especificação de software, demonstra-se nesta etapa genérica de

especificação de negócio através da figura 41, um gráfico que representa a relação destes

critérios aplicados sobre os dois processos. Com o resultado expresso na figura 41, pode-se

constatar uma maior qualidade dos artefatos do processo Catalysis para a etapa genérica de

especificação de negócio.

Figura 41: Análise gráfica da etapa de Especificação de NegócioFonte: O Autor

5.3 ESPECIFICAÇÃO DE SISTEMA

Nesta etapa, a comparação entre processos foi definida através da similaridade dos artefa-

tos que objetivam a especificação técnica do sistema. A proposta desta fase é identificar como, e

Page 79: TCC - Engenharia de Software Baseada em Componentes

79

por quem, as operações do sistema serão efetuadas, definir as classes de colaboração, depen-

dências e possíveis interfaces. Cada objeto definido nos artefatos desta fase deve receber uma

responsabilidade única de negócio, para posteriormente noutra etapa do processo, agrupar-se

a outros objetos de negócio similares, tornando-se componentes moduláveis. É imprescindí-

vel compreender que nesta etapa, os requisitos anteriormente captados se transformarão em

modelos técnicos de funcionalidades.

Entende-se que dois artefatos do processo Catalysis possuem objetivos de especificação

de sistema, são: diagrama de cenário de uso, e diagrama de tipo e operações. No diagrama

de cenário de uso, acontece o detalhamento técnico sobre o requisitos de negócio coletados.

A construção deste diagrama tem foco nas ações ou situações do ator perante a execução de

uma tarefa no sistema. Similar à narrativa do diagrama de casos de uso da UML, o diagrama

possui uma narrativa (figura 22) de operações realizadas. No entanto, este artefato não está

diretamente relacionada com a coleta de requisitos, nesta fase, possui objetivos de verificação

e validação de operações realizadas no sistema.

O segundo diagrama cotado para esta fase, chama-se diagrama de tipos e operações. O

artefato focaliza na junção de classes colaborativas, pois pretende agrupar as classes em um

único objeto. Para isto, há a necessidade de especificar propriedades e operações que poderão

ser acessadas externamente. A idéia de um objeto tipado segundo o diagrama, é estruturar em

um único objeto o conceito de negócio completo. O artefato após construído, por se tratar de

um agrupamento técnico de classes contendo um objetivo específico de negócio, dá subsídios

para a arquitetura de componente e reutilização de código.

No processo UML Components, esta fase contempla dois artefatos: diagrama de classes

como modelo de tipo de negócio, e diagrama de especificação de interface. No artefato dia-

grama de tipo de negócio, prevê estabelecer tipos de objetos através da abstração dos requisi-

tos do sistema. O tipo, como dito, é um conjunto de classes, atributos, operações, e colaboração

de objetos centrado em um tipo de negócio. O diagrama visa representar com precisão as infor-

mações herdadas do modelo conceitual de negócio, refinando e removendo redundâncias das

operações do sistema. Como o artefato tem base na linguagem UML, dispõe das funcionalida-

des de generalização, composição, agregação, entre outras.

Outro artefato desta fase, gerado pelo processo UML Components, é o diagrama de especi-

ficação de interface, que tem objetivo de definir as interfaces de comunicação entre os objetos,

nesse contexto as interfaces recebem uma certa identificação, como provided - interface que

disponibiliza operações e funcionalidades, e required - interface que necessita de operações

e funcionalidades. As interfaces, possuem as assinaturas dos métodos, ou seja, fazem um

contrato entre os objetos que utilizarão as operações do componente. Outra tarefa do arte-

Page 80: TCC - Engenharia de Software Baseada em Componentes

80

fato, é ajudar a definir a hierarquia de pacotes. A especificação destas interfaces influencia na

arquitetura final do componente (D’SOUZA; WILLS, 1998).

No quadro 4, demonstra a aplicação de critérios de comparação entre os artefatos sele-

cionados na estapa genérica de especificação e sistema sobre os dois processos Catalysis e

UML Componentes. Em sequência, apresenta-se na figura 42, um gráfico resumo quantitativo

do resultado obtido sobre a aplicação destes critérios.

Especificação de sistemaRequisito comparado Catalysis UML Components

Pergunta 1: Permitetransformar regras denegócio em especifica-ção de software

Diagrama de tipos e ope-rações, diagrama de ce-nário de uso

Diagrama de tipos e ope-rações

Pergunta 2: Permite a in-teração entre objetos

Diagrama de cenário deuso, diagrama de tipos eoperações

Diagrama de tipos e ope-rações, diagrama de es-pecificação de interfaces

Pergunta 3: Permite ajunção de classes paraatribuir um conceito denegócio

Diagrama de tipos e ope-rações

Diagrama de tipos e ope-rações, diagrama de es-pecificação de interfaces

Pergunta 4: Permite de-talhar operações de umafuncionalidade

Diagrama de cenário deuso

Não possui nesta fase

Pergunta 5: Permiteidentificar e atribuir in-terfaces conceituais aosobjetos

Diagrama de tipos e ope-rações

Diagrama de tipos e ope-rações, diagrama de es-pecificação de interfaces

Pergunta 6: Permiteidentificar e atribuir res-ponsabilidade de objetos

Diagrama de cenário deuso, diagrama de tipos eoperações

Diagrama de tipos e ope-rações, diagrama de es-pecificação de interfaces

Pergunta 7: Permite tiparobjetos

Diagrama de tipos e ope-rações

Diagrama de tipos e ope-rações, diagrama de es-pecificação de interfaces

Quadro 4: Informações captadas pelos artefatos na especificação de sistemaFonte: O Autor

Na análise dos artefatos para esta fase do processo, identificou-se no processo Catalysis

um artefato similar a um caso de uso, ou seja, podendo, de certo modo, ser utilizado ainda

na captação de requisitos na fase anterior de especificação de negócio, porém, este artefato é

Page 81: TCC - Engenharia de Software Baseada em Componentes

81

Figura 42: Análise gráfica da comparação de artefatos da etapa Especificação de SistemaFonte: O Autor

muito mais completo, contendo narrativa detalhada do procedimento, em conjunto com atores,

sistemas e operações, todos relacionados. Nota-se também, que sua estrutura tem base no

diagrama de sequência da UML, que demonstra de forma técnica a execução de uma operação,

e o tempo de vida que o objeto está em memória até o encerramento. O artefato ainda sofre um

complemento, ou seja, é suprido pelo segundo artefato, o diagrama de tipo e operações, que dá

ênfase no relacionamento e tipagem dos objetos, e especifica os métodos que serão expostos

através de implementação de interfaces. Por fim, o diagrama converge para uma única classe

que mais tarde tomará a estrutura de um componente (D’SOUZA; WILLS, 1998).

Já no processo UML Components, o diagrama de classes de tipo de negócio tem foco na

especificação das classes de negócios, contendo atributos, relacionamento e multiplicidade dos

objetos no sistema. Mas, o artefato gerado não demonstra as operações técnicas necessárias

para entendimento da execução de uma tarefa feita por um ator, com isso, entende-se que

o artefato mantém o objetivo de especificar a estrutura de classes do sistema, tornando-se

insuficiente para uma especificação completa de sistema, neste ponto de vista, os artefatos

do Catalysis se manteram superior, porém no UML Componentes ainda possui um segundo

artefato, o diagrama de especificação de interface, que expressa as necessidades de contratos

entre os módulos e componentes do sistema. Ele define quais interfaces serão necessárias

para construir um software componentizado e comunicável.

Conforme a aplicação de critérios nesta fase de especificação de sistema, que através de

perguntas direcionadas à qualidade que os artefatos podem expressar sobre informações do

sistema, obteve-se na figura 43 o resultado expresso em gráfico. Através da análise gráfica da

figura 43, apesar da pontuação quase idêntica entre os processos, justifica-se que nesta etapa

genérica os artefatos do UML Componentes se mostraram superior aos artefatos do Catalysis,

Page 82: TCC - Engenharia de Software Baseada em Componentes

82

com isto, evidencia uma melhor especificação de sistema nesta etapa pelos artefatos UML

Componentes.

Figura 43: Análise gráfica da etapa de Especificação de SistemaFonte: O Autor

5.4 ARQUITETURA DE COMPONENTES

Interpretando os dois processos abordados neste trabalho, define-se esta fase como uma

validação de arquitetura, ou seja, tem maior atenção em verificar a coerência dos componen-

tes e menos atenção com a construção da arquitetura. Segundo as bibliografias estudas ao

decorrer deste trabalho, explicam que a arquitetura começa desde a criação dos primeiros dia-

gramas, e de forma incremental, é acrescentado novos detalhes, para que aos poucos aconteça

a evolução da arquitetura do sistema baseado em componentes.

Mesmo com objetivos primordiais de validação, os dois processos ainda delimitam tare-

fas para finalização do componente, como: plataforma requerida para o sistema, visão da ar-

quitetura técnica, especificação de componentes e arquitetura interna do componente. Estes

diagramas são essenciais para concluir a arquitetura do sistema baseado em componentes.

A etapa de arquitetura de componentes no processo Catalysis dispõe de três importan-

tes diagramas: modelo de plataforma requerida do sistema, diagrama de arquitetura técnica

do sistema e diagrama de arquitetura interna do sistema. Percebe-se um diferencial entre os

processos, pois no Catalysis há preocupação com requisitos de ambiente e plataforma de funci-

onamento que outros processos da engenharia de software não dão atenção. No diagrama de

Page 83: TCC - Engenharia de Software Baseada em Componentes

83

plataforma requerida desenha-se o ambiente em que o sistema irá operar, assim como as ne-

cessidades de serviços e transações que comunicarão externamente com a aplicação. Com o

modelo planejado, pode-se efetuar estudos sobre as limitações de escalabilidade, desempenho,

transmissão de dados, segurança e outros requisitos não funcionais.

O artefato de arquitetura técnica do sistema, utiliza dos conceitos aplicados no diagrama

de plataforma requerida do sistema, pois de certa forma, é composto por um detalhamento

das dependências internas do sistema, que por sua vez, é representado pelos componentes

interconectados através das interfaces. Este artefato permite uma visão detalhada sobre as

dependências internas e externas dos componentes.

No último artefato do Catalysis que trata da arquitetura interna do sistema, aborda cla-

ramente a comunicação entre os componentes através das interfaces. Neste diagrama tam-

bém está planejado a visualização do código necessário para a implementação das interfaces,

tornando-se simples a codificação do fonte com base no diagrama (D’SOUZA; WILLS, 1998).

Para o processo UML Components, considerou-se para esta fase dois diagramas: diagrama

de classes para especificação de componentes e diagrama da arquitetura de componentes. O

primeiro artefato diz respeito a agregação de interfaces pertencentes ao componente, agora,

nesta fase, deve-se estar especificado as interfaces que o componente dispõe e os que ele

necessita. Este artefato se propõe a demonstrar as interfaces provided e required para que no

diagrama de arquitetura de componentes faça as ligações necessárias.

A arquitetura do sistema no processo UML Components é finalizada pela geração do arte-

fato de arquitetura de componente, que demonstra os componentes separados em conceitos

de negócios. Neste diagrama, o modelo de componentes ganha uma visão das necessidades

de colaboração entre cada componente, usando a tipagem das interfaces em provided e re-

quired definindo as interfaces que oferecem funcionalidades e as interfaces que necessitam de

funcionalidades.

No quadro 5 há a representação do comparativo dos critérios aplicados sobre os artefatos

na etapa genérica de arquitetura de componente. Além do quado, demonstra-se na figura 44

a quantificação das respostas obtidas sobre os critérios aplicados nos artefatos dos processos

Catalysis e UML Componentes nesta etapa de arquitetura de componentes.

Em análise realizada sobre esta etapa do processo genérico, conforme os dados gerados

sobre os critérios analisados, identifica-se que novamente o pocesso Catalysis possui qualidade

superior de seus artefatos comparados aos artefatos da UML Components. Isto é evidenciado

na figura 45, que demonstra o resultado da análise nesta etapa. O Catalysis manteve um

número maior de pontuação sobre o UML Components, sendo assim, sobre o ponto de vista

Page 84: TCC - Engenharia de Software Baseada em Componentes

84

Arquitetura de componentesRequisito comparado Catalysis UML Components

Pergunta 1: Define re-quisitos para o ambientede implantação do sis-tema

Diagrama da plataformarequerida do sistema

Não possui no processo

Pergunta 2: Deixa claroas interfaces Providede Required dos compo-nentes

Não possui no processo Diagrama de classespara especificaçãode componentes, dia-grama da arquitetura decomponentes

Pergunta 3: Demons-tra a interação entre oscomponentes

Diagrama da plataformarequerida do sistema, di-agrama da arquiteturatécnica do sistema, dia-grama da arquitetura in-terna de componentes

Diagrama de classespara especificaçãode componentes, dia-grama da arquitetura decomponentes

Pergunta 4: Permite de-finir a implementação decódigo das interfaces

Diagrama da arquiteturainterna de componentes

Não possui no processo

Pergunta 5: Permite de-finir dependências comcomponentes e serviçosexternos

Diagrama da plataformarequerida do sistema, di-agrama da arquiteturatécnica do sistema

Diagrama da arquiteturade componentes

Pergunta 6: Permite de-finir interfaces de comu-nicação ente os compo-nentes

Diagrama da arquiteturainterna de componentes

Diagrama de classespara especificação decomponentes

Quadro 5: Informações captadas pelos artefatos na arquitetura de componentesFonte: O Autor

Page 85: TCC - Engenharia de Software Baseada em Componentes

85

Figura 44: Análise gráfica da comparação de artefatos da etapa Arquitetura de ComponentesFonte: O Autor

dos critérios estabelecidos, a etapa de arquitetura de componentes é melhor especificada pelos

artefatos do processo Catalysis.

Neste estudo desta etapa e dos artefatos para os dois processos, considerou-se que os

artefatos gerados para o Catalysis e o UML Components deveriam ser integrados, pois para o

Catalysis, possui diagramas relacionados com a arquitetura de ambiente e arquitetura interna de

componente com foco na implementação, e para o UML Components, possui diagrama de espe-

cificação de componentes e diagrama de arquitetura de componentes com foco na definição de

dependências das interfaces required e provided. Entende-se que um diagrama complementa

o outro, sendo o ideal utilizar de ambos artefatos. Porém, nem sempre é aceitável, como os ar-

tefatos fazem parte de processos separados, a utilização dos artefatos depende da flexibilidade

do projeto em utilizar integração de processos e artefatos diferenciados.

Figura 45: Análise gráfica da etapa de Arquitetura de componentesFonte: O Autor

Page 86: TCC - Engenharia de Software Baseada em Componentes

86

Por fim, a escolha do processo como melhor ferramenta para especificação do sistema ba-

seado em componentes, teve princípio na definição e aplicação de critérios comparativos entre

os artefatos de cada processo em uma etapa genérica. A escolha do processo ocorreu através

da coleta de pontuações pertinentes a análise comparativa, em sequência, foi construído um

gráfico representativo, conforme expressado na figura 46. Com isto, percebe-se que o Catalysis

manteve uma maior pontuação em duas etapas genéricas: especificação de negócio e arquite-

tura de componentes, e o processo UML Components teve maior pontuação somente sobre a

etapa de especificação de sistema. De qualquer forma, UML Components, apenas ficou com

um ponto acima que o Catalysis na etapa de especificação de sistema, simbolizando a forte

aproximação do Catalysis até mesmo nesta etapa.

Figura 46: Análise gráfica comparativa das etapas genéricasFonte: O Autor

Como este trabalho usou-se de um estudo exploratório, e definições de critérios para espe-

cificação do melhor processo para especificação de software baseado em componentes, pode-

se afirmar, que o processo que mais obteve pontuação foi o Catalysis, com isto, considera-se o

Catalysis como o processo que possui melhores artefatos para especificar um software baseado

em componentes.

Portanto, segundo os critérios deste trabalho exploratório, entre os processos Catalysis e

UML Componentes para especificação de software baseado em componentes, os melhores

artefatos para esta especificação encontra-se no processo Catalysis. Porém para se ter uma

visão detalhada de qual realmente processo é o melhor, deve-se constuir um software, gerando

todos os artefatos para ambos os processos, e assim coletar todas informações na prática,

para assim evidenciar os pontos fortes e fracos de cada processo, chegando a uma conclusão

técnica com maior rigor.

Page 87: TCC - Engenharia de Software Baseada em Componentes

87

6 CONCLUSÃO

Este trabalho teve como objetivo aprimorar os conhecimentos de engenharia de software

baseada em componentes e reutilização de software. A engenharia de software, propriamente

dita, preza pela economia, seja de mão de obra, de materiais ou de tempo. Porém isto não

quer dizer que a qualidade será reduzida para os projetos, pelo contrário, a meta sempre é

atingir os maiores níveis de qualidade com custos reduzidas. Esta visão de economia se aplica

ao contexto deste trabalho, que apresenta e descreve os processos da engenharia de software

com foco em economia, ou seja, através da reutilização de software e sua modularização em

componentes, desta forma, é possível construir softwares de maneira acelerada economizando

tempo e custos, e com qualidade superior aos processos prescritivos.

A pesquisa realizada teve caráter exploratório, trazendo muitas vantagens através do estudo

exaustivo dos processos de software baseados em componentes. Neste trabalho foi possível

compreender a especificação de um sistema composto de componentes, bem como, a arquite-

tura interna e externa de componentes. Apesar do trabalho não ter foco no desenvolvimento de

código fonte, adquiriu-se o conhecimento sobre o uso de interfaces de negócios, que por sua

vez, tem uma grande importância no desenvolvimento de software por se tratar de um contrato

entre classes da aplicação, que mais tarde na implementação, recebem as qualificações de

requeridas required necessidade de implementação de uma interface, ou oferecidas provided,

que disponibilizam interfaces para outras classes implementar.

O trabalho possibilitou a obtenção de conhecimentos gerais da engenharia de software.

O estudo, sem dúvida, agregou o conhecimento sobre os diferentes tipos de processos da

engenharia de software, identificando qual processo melhor se encaixa em um determinado

projeto de software.

Os dois processos abordados neste trabalho: Catalysis e UML Components, foram devi-

damente compreendidos e explanados através das bibliografias chave, que, por sua vez, foram

desenvolvidas pelos autores criadores destes processos. No estudo comparativo, foi possí-

vel relacionar os processos em etapas semelhantes e definir critérios de comparação, com a

ajuda da compreensão adquirida no referencial teórico. Com isto, analisou-se cada artefato ge-

rado nas etapas similares, com objetivo de identificar dentre os artefatos, qual melhor processo

poderia ser utilizado para a especificação do sistema de software baseado em componentes.

Sendo assim, através da aplicação dos critérios, entende-se que o processo Catalysis possui os

artefados de melhor qualidade para a especificação de um software baseado em componentes.

Em se tratando de propostas futuras, este trabalho trouxe subsídios para construção da es-

pecificação de um software baseado em componentes sobre o ponto de vista de dois processos:

Page 88: TCC - Engenharia de Software Baseada em Componentes

88

Catalysis e UML Components. Deixa-se como desafio e como proposta futura, a especificação

de um software baseado em componentes e com objetivo de reuso de software utilizando os

processos, etapas e artefatos apresentados neste trabalho. Também, como outras sugestões:

a construção de um software componentizado utilizando os processos Catalysis e UML Com-

ponents, ou mesmo, agregar um ou mais processos ao comparativo explorado neste trabalho.

Na construção deste trabalho, aconteceram muitos imprevistos, dificuldades e necessida-

des, começando pelo escopo do trabalho, que, por sua vez, estava baseado em um estudo de

caso comparativo entre dois processos: Catalysis e UML Components, sendo que neste es-

copo, haveria a construção da especificação de um sistema contendo todas as modelagens dos

artefatos do processo Catalysis e do processo UML Components com objetivo de documen-

tar as etapas e identificar qual processo melhor geraria a especificação. Ainda neste escopo,

o trabalho visava se transformar em um livro de engenharia de software baseado em compo-

nentes. Apesar da proposta tentadora de manter o escopo inicial, levaria uma demanda de

tempo enorme, que não seria possível terminar em um único semestre acadêmico. Com isto,

mudou-se de escopo.

O segundo escopo de trabalho, é este apresentado. O comparativo entre os processos

continuou, porém, teve base na compreensão do referencial teórico. Se tornou uma pesquisa

exploratória, com fins de entender e interpretar o processos da engenharia de software baseada

em componentes. O livro proposto no primeiro escopo, ficará para projetos futuros.

As dificuldades encontradas foram diversas, começando pela metodologia de trabalhos aca-

dêmicos. Inicialmente, escreveu-se parte do trabalho na ferramenta Microsoft Word, porém,

grande maioria dos acadêmicos estavam construindo seus trabalhos de conclusão de curso so-

bre a ferramenta LATEX que, enfim, mostrou-se superior. Começou-se o estudo da ferramenta

LATEX. Como a faculdade IST nos disponibiliza-ra um modelo de TCC para LATEX com a me-

todologia da ABNT inclusa, relativamente a primeira impressão do modelo foi apenas de que

seria necessário escrever o trabalho, porém, infelizmente a realidade foi outra, o modelo LATEX

demonstrou estar desatualizado com as novas versões do LATEX, por este motivo, a metodologia

ficou desconfigurada, trazendo dificuldades aos alunos que estão enfrentando problemas com

a metodologia no LATEX. Enfim, usando o LATEX, o trabalho mantém uma qualidade visual su-

perior, porém, com os problemas encontrados, algumas definições das normas da Associação

Brasileira de Normas Técnicas (ABNT) estão em desacordo no trabalho apresentado.

Outras dificuldades estão relacionadas com as bibliografias, pois a instituição possui pou-

cos materiais sobre ESBC, ou seja, são apenas alguns capítulos em livros de engenharia de

software. Com isto, buscou-se material externo, o qual se encontrou somente em inglês, que

exigiu um maior tempo para compreensão do assunto.

Page 89: TCC - Engenharia de Software Baseada em Componentes

89

Outro ponto negativo durante o trabalho, foi a concorrência entre estudo, trabalhos e provas

do semestre letivo cursado, que interferiu fortemente no atraso da primeira entrega do Trabalho

de Conclusão de Curso (TCC).

Por fim, apesar das dificuldades, houve os ganhos, que foram muito maiores, estes, chamam-

se de conhecimento e experiência, que será levado para a vida, agora, com responsabilidade

de um engenheiro.

Page 90: TCC - Engenharia de Software Baseada em Componentes

90

REFERÊNCIAS

ABRAN, A. et al. Swebok: Guide to the Software Engineering Body of Knowledge. Los Alamitos,CA, USA: IEEE, 2004.

BAETJER, H. Software as capital. IEEE Computer Society Press, p. 85, 1998.

BAUER, F.; NAUR, P.; RANDEL, B. Software engineering: A report on conference a sponsoredby the nato science committee. In: Scientific Affairs Division. Brussels: NATO, 1969.

BECK, K. et al. Manifesto for Agile Software Development. 2001. Disponível em: <http:/-/agilemanifesto.org/>. Acesso em: 01 fev. 2011.

BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. [S.l.: s.n.], 2006.

BRUEGGE, B.; DUTOIT, A. H. Object-Oriented Software Engineering: Conquering Complexand Changing Systems. USA: Carnegie Mellon University, School of Computer SciencePittsburgh, 1999.

CATALYSIS. Catalysis Enterprise Components with UML. 1998. Disponível em: <http://www-.catalysis.org/>. Acesso em: 19 mar. 2011.

CHESSMAN, J.; DANIELS, J. UML Components: A Simple Process for SpecifyingComponent-Based Software. [S.l.]: United States of America and Canada, 2001.

CLEMENTS, P. C. From Subroutines to Subsystems: Component Based Software Development.[S.l.: s.n.], 1995.

COCKBURN, A. Agile Software Development. [S.l.]: Highsmith Series Editors, 2000.

CRNKOVIC, I.; LARSSON, M. Building Reliable Component-Based Software Systems.Norwood, MA.: Artech House, INC, 2002.

CRYSTAL. 2010. DevX is a division of Internet.com. 17424.jpg. Largura: 851 pixels. Altura: 631pixels. 57KB. Formato JPEG. Disponível em: <http://assets.devx.com/articlefigs/17424.jpg>.Acesso em: 13 fev. 2011.

DIJKSTRA, E. W. The Humble Programmer. [S.l.]: ACM Turing Award Lecture, 1972. 859-866 p.

D’SOUZA, D. Objects, Components, and Frameworks with UML: The Catalysis Approach. [S.l.]:ICON Computing, a Platinum Company, 1998.

D’SOUZA, D.; WILLS, A. C. Objects, Components, and Frameworks with UML: The CatalysisApproach. [S.l.]: Addison Wesley Longman, 1998.

FERREIRA, A. B. de H. Dicionário Aurélio Eletrônico. [S.l.]: V. 5.0, 2010.

IEEE, S. C. Software engineering. IEEE Standard 610, 12 1993.

MARSIC, I. Software Engineering. [S.l.]: Department of Electrical and Computer Engineering,2009.

MARTINS, J. C. C. Técnicas Para Gerenciamento de Projetos de Software. [S.l.]: Brasport,2007.

Page 91: TCC - Engenharia de Software Baseada em Componentes

91

OLIVEIRA, F. C. de; PAULA, L. L. de. Engenharia de Software Baseada em Componentes: UmaAbordagem Prática em Ambientes Web. [S.l.]: Universidade de Brasília Instituto de CiênciasExatas Departamento de Ciência da Computação, 2009.

PÁDUA, W. de. Engenharia de Software; fundamentos, métodos e padrões. 3. ed. Rio deJaneiro: LTC, 2009.

PRESSMAN, R. S. Engenharia de Software. 6. ed. São Paulo: McGraw-Hill, 2006.

RATIONAL. Rational unified process: Best practices for software development teams. RationalSoftware White Paper, TP026B, Rev 11/01, 2001.

SCHWABER, K.; SUTHERLAND, J. Scrum. [S.l.]: Scrum.org, 2010.

SOMMERVILLE, I. Engenharia de Software. 8. ed. São Paulo: Addison-Wesley, 2007.

WANG, Y. Software Engineering Foundation: A Software Science Perspective. USA: AuerbachPublications, 2008.

WELLS, D. Extreme Programming. 1999–2009. Disponível em: <http://www-.extremeprogramming.org/>. Acesso em: 02 fev. 2011.

WELLS, D. Extreme Programming: A gentle introduction. 2009. Disponível em: <http://www-.extremeprogramming.org/>. Acesso em: 28 jul. 2011.