ðHwww.oocities.org/br/doutorjason/EngSoft1.htmwww.oocities.org/br/doutorjason/EngSoft1.htm.delayedx/\ÕJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÀ™ŠˆoOKtext/html€X¾:}ˆoÿÿÿÿb‰.HTue, 19 Jun 2007 15:14:11 GMTMozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)en, **\ÕJˆo ENGENHARIA DE SOFTWARE

 

ENGENHARIA DE SOFTWARE

Prof.  Jason

 

 

NOTAS DE AULA 1

 

1- O PRODUTO

 

Os Softwares são programas executados em computadores, porém com a finalidade de serem comercializados.

 

 

1.1 CARACTERÍSTICAS DO SOFTWARE:

 

a)      O software é desenvolvido, mas não é manufaturado no sentido clássico.

b)      O Software não se desgasta

c)      O Software é desenvolvido por encomenda

 

 

 

1.2 APLICAÇÕES DO SOFTWARE

 

O software pode ser dividido nas seguintes aplicações:

 

Software de sistemas

É uma coleção de programas desenvolvidos para servir outros programas.

Ex.  Compiladores(C++, Delphi,...) , protocolos para Internet, etc.

 

Software de tempo real

Monitora, analisa e controla eventos do mundo real à medida que eles ocorrem.

Ex. Softwares de automação para auto forno e laminadores.

 

Software Comercial

As aplicações desta área reestruturam dados existentes de modo a facilitar operações comerciais e de gestão de negócios.

Ex. software para folha de pagamento , controle de estoque, etc.    

 

 Software Embutido

Reside situado nas memórias ROM e é usado para controlar sistemas eletrônicos.

Ex. Controle de teclado para fornos de microondas, Controle de teclado para celulares, etc.

 

Software para computadores pessoais

São desenvolvidos para atuarem como ferramentas adicionais nos PC´s.

Ex. Processadores de texto, Software  para criação de planilhas, Software  para multimídia etc.  

 

Software para Web

Utiliza instruções executáveis (código em Java, html,etc.)  para criação de páginas na Internet. 

Software com inteligência artificial

São desenvolvidos para resolver problemas complexos que não são possíveis de computação ou análises convencionais.

Ex. Softwares meteorológicos e para sondas espaciais.

 

Softwares científicos e para engenharia

São caracterizados por algoritmos que possuem matemática mais complexa.

Ex. Softwares para predição de sinal de  telefonia celular (Software  Ray-Tracing).

 

 

________________________________________

########

NOTAS DE AULA 2

 

 

1.3- SOFTWARE:  UMA CRISE NO HORIZONTE

 

Muitos observadores da indústria do software caracterizam os problemas associados com os softwares atuais (bugs e falhas espetaculares)  como uma crise. Uma das causas desta crise é o aumento da complexidade do software.

 

COMPLEXIDADE DO SOFTWARE

 

À medida que os computadores se tornaram mais sofisticados, em termos de hardware, também seus usuários e os softwares passaram a ser mais complexo.

Uma das técnicas para se vencer esta complexidade é construir programas pequenos (blocos) livres de erros e depois reuni-los (programação estruturada).

 

 

2- O PROCESSO

 

Outra estratégia para vencer a complexidade é utilizar modelos para o desenvolvimento dos softwares, assunto abordado a seguir.

 

2.1 -CICLO DE VIDA DO SOFTWARE    

 

O ciclo de vida do software é um gráfico que contém várias etapas que devem ser seguidas para gerar um produto final melhor.

 

Primeira etapa: Análise

Nesta fase defina-se a melhor maneira de executar a tarefa e que recursos serão necessários.

Ex. Números de programadores, linguagem de programação, hardware, etc. 

 

Segunda etapa : Projeto

Nesta fase determinam-se os Lay-outs das telas e características do software. Nesta etapa realizam-se reuniões com o cliente para eventuais críticas e sugestões ao projeto.

 

 

 

 

Terceira etapa: Código

Existe por todo o resto do ciclo de desenvolvimento e continua quando se faz alterações no código após a entrega.

 

Quarta etapa: Teste

O objetivo desta fase é testar o produto em relação aos requisitos concordados na especificação (Fase de projeto).

 

Quinta etapa: Manutenção

Quando o produto está pronto inicia-se a fase de manutenção. 80% do esforço e dinheiro são gastos nesta fase, principalmente nas soluções de bugs. Nesta etapa é aconselhável possuir uma boa documentação do software.

 

 

CRÍTICAS AO CICLO DE VIDA DO SOFTWARE 

 

Este modelo é o mais antigo e usado, todavia, existem críticas, que são:

 

1-Os projetos reais raramente seguem o fluxo seqüencial que o modelo propõe.

 

2- Em geral é difícil para o cliente estabelecer todos os requisitos na fase inicial(Segunda  etapa :Projeto).

 

3- Uma versão executável do projeto só vai ficar disponível no final do projeto.

 

 

##########

NOTAS DE AULA 3

 

 

2.2     MODELO DA PROTOTIPAGEM

 

É usado quando o cliente e o desenvolvedor não possuem noção dos detalhes do software que será produzido. Estes detalhes são:

Interface do software (Telas)

Adaptabilidade ao sistema operacional (Windows, Linux,...)

Insegurança em relação ao algoritmo

 

ETAPAS

 

1) Neste modelo o cliente e o desenvolvedor encontram-se e definem os objetivos gerais do projeto.

  

2) Um “software rápido” é então desenvolvido.

 

3) O protótipo é avaliado pelo cliente e usado para refinar os requesitos do software.

 

4) Interações ocorrem à medida que o protótipo é ajustado para satisfazer a necessidade do cliente.

  

 

 

CRÍTICAS A PROTOTIPAGEM

 

1-     O protótipo funciona precariamente, portanto um questionamento rigoroso por parte do cliente em relação à qualidade do produto poderá ser realizada.

2-     Um sistema operacional ou uma linguagem de programação poderá ser usada para demonstrar uma possibilidade, porém se não houver cuidado pode se tornar parte integral do sistema.

 

CONCLUSÃO

 

Apesar dos problemas, é importante definir as regras do jogo no início (protótipo). Depois o  protótipo é descartado. Assim o software real é submetido à engenharia com o objetivo de buscar a qualidade.

 

 

 

_________________________________

 

######

NOTAS DE AULA 4

 

2.3- MODELO RAD (Rapid Application Development)

 

O modelo RAD é uma adaptação de alta velocidade do modelo seqüencial linear (ciclo de vida do software), no qual o desenvolvimento acelerado é conseguido com o uso de construção baseada em componentes reusáveis de programas existentes ou na criação destes componentes.

 

 

VANTAGENS

 

1-     Na fase de teste, como uma grande parte dos componentes já foi testada, obtém-se um tempo total de teste reduzido.

2-     Cada segmento do aplicativo pode ser desenvolvido por uma equipe RAD distinta e depois integrada para formar um todo.

 

 

 

DESVANTAGEM

 

O uso do modelo RAD é adequado quando o software faz uso de uma nova tecnologia ou quando exige um alto grau de interoperabilidade com o aplicativo.

 

 

 

 

_________________________________

 

######

NOTAS DE AULA 5

 

 

2.3    MODELO INCREMENTAL

 

Neste modelo os primeiros incrementos, que seguem como base o modelo seqüencial, são versões simplificadas do produto final.

 

Na fase de projeto, um plano é desenvolvido para o próximo incremento.

 

Ao contrário do modelo RAD, este não necessita que o software seja desenvolvido com objetos (componentes). Possuindo um uso mais geral.

 

É útil quando não há mão de obra disponível para uma implementação completa, visando o prazo comercial de entrega ou o sistema exigir um hardware novo, ainda em desenvolvimento.

 

O Primeiro incremento pode ser desenvolvido com menos pessoal, se o produto for bem recebido, então pessoal extra  pode ser adicionado.

 

Exemplo de desenvolvimento de um software de processamento de texto utilizando o modelo incremental:

 

1)O software de  processamento de texto no primeiro incremento poderia efetuar as funções de gestão de arquivos e edição de texto.

 

2) No segundo incremento, verificação gramatical e no terceiro incremento, capacidade avançada de disposição de páginas. 

 

 

 

 

 

 

 

 

_________________________________

 

######

NOTAS DE AULA 6

 

 

2.5  MODELO ESPIRAL

 

 

Apresentado em 1988 em um congresso internacional por Boehm, B. , o modelo espiral é utilizado para sistemas de grande porte. Este paradigma mantém a abordagem sugerida pelo ciclo de vida do software clássico, mas incorpora uma estrutura interativa.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

O primeiro circuito em torno da espiral gera versões mais simples do software. Na extremidade da espiral obtém-se versões mais sofisticadas.

 

Como as linhas de uma espiral são sempre contínuas, o desenvolvimento do software através de suas muitas versões, também não sofre descontinuidade, sendo projetado para um processo interativo, isto é, o software uma vez iniciado o seu desenvolvimento “não para” mais de ser desenvolvido.

 

Por ser um modelo novo, é necessário que este seja mais testado para verificar sua eficácia.

 

 

 

 

 

_________________________________

 

######

NOTAS DE AULA 7

 

 

3          CONCEITOS DE GESTÃO DE PRODUTOS

 

 

Nesta seção serão apresentados os conceitos  e princípios básicos da gestão de projetos de software.

 

 

3.1 DEFINIÇÃO DE GESTÃO DO PRODUTO

 

É o termo que envolve o planejamento, controle de pessoal, controle de processo (modelos de desenvolvimento)   e controle do  produto (eventos que ocorrem à medida que o software evolui de um conceito preliminar para uma implementação operacional). 

 


 

 

3.2. PESSOAL

 

Um estudo publicado por Curtis, B. et al., “A Field Study of the Software Design Process for Large Systems” , para a revista científica IEEE Trans. Software Engineering, vol. SC-31, em  November 1988, demonstra que os vice presidentes de engenharia de 3 importantes empresas de tecnologia, consideram o item de maior importância para um projeto bem sucedido  é obter um Pessoal competente.

 

 

 

3.2.1. OS PARTICIPANTES

 

   

O processo do software é composto por participantes classificados nas categorias :

 

1- Gerente Seniors

 

Definem o aspecto do negócio como empresa, legalmente estabelecida.

Realizam os contratos com o cliente, participação em concorrência, propaganda nos meios de comunicação, compra e aluguel dos escritórios e máquinas.

 

 

2- Gerente de Projetos

 

 Planejam, motivam (encorajando os profissionais a produzir melhor e serem criativos), organizam (permitindo que o conceito inicial seja traduzido em um produto final) e controlam os profissionais que desenvolvem o software.

 

3-     Profissionais

 

Fornecem as aptidões técnicas que são necessárias para o projeto.

 

4-     Clientes

 

Especificam os requisitos para o software

 

5-     Usuários Finais

 

Interagem com o software depois que este é liberado para o uso.

 

 

 

 

 

 

 

 

3.2.3        A EQUIPE DO SOFTWARE

 

A responsabilidade da organização dos profissionais (Programadores) é do gerente de projeto.

 

GERENTE SENIOR -> GERENTE DE PROJETO -> PROFFISIONAIS

 

Mantei em 1981 (  Mantei M.,  “The effect of programming team structures on programming tasks”, CACM, vol.24)  sugere três tipos de organizações  de equipe :

 

1-     Democrática Descentralizada

 

Não possui líder permanente, sendo substituídos periodicamente. A comunicação entre os membros da equipe é horizontal.

 

 

 

2-     Controlada Descentralizada

 

Possui um líder definido e líderes secundários (responsáveis por sub tarefas)

 

 

  

3-     Controlada Centralizada

 

Possui um engenheiro sênior que planeja e revê todas as atividades técnicas das equipes.

Um engenheiro de retaguarda que apóia o engenheiro sênior nas suas atividades e pode substituí-lo , com perda mínima da continuidade do projeto.

 

 

 

 

 

3.2.4        CONCLUSÃO

 

Como resultado da pesquisa de Mantei [1981], obtém-se:

 

1-     A estrutura Democrática Descentralizada resulta em moral elevada e satisfação no trabalho.

2-     A estrutura Democrática Descentralizada é adequada para tratar problemas mais difíceis.

3-     Quando a modularização é alta,  a estrutura Controlada Centralizada ou a Controlada Descentralizada funcionarão bem.

4-     As estruturas Controlada Descentralizada e Controlada Centralizada produzem menos falhas.

 

 

 

 

 

 

_______________________________

 

######

NOTAS DE AULA 8

 

 

3.3. O PRODUTO

 

 

Um gerente de projeto no início do desenvolvimento do software se depara com um dilema de um plano organizado, mas não há informação sólida disponível. Assim sendo a primeira atividade de gestão será o escopo do software.

 

 

3.3.1 O ESCOPO DO SOFTWARE

 

 

 O escopo do software é definido pelas seguintes questões:

 

A) Contexto

 

Define com o software se encaixa no contexto maior (de um sistema maior ou de negócio) e suas restrições.

 

B) Objetivos da Informação

 

Que objetos de dados são necessários como entrada e saída de dados.

 

C) Função e Desempenho

 

Quais são as funções que o software desempenha para transformar os dados de entrada em dados de saída (usa modelos matemáticos ou acesso a banco de dados).

 

   

 

 

 

 

######

________________________________

 

NOTAS DE AULA 9

 

4- Métricas Orientadas ao Tamanho

4.1 Introdução

Medidas do Software

A medição é comum no mundo da Engenharia.

Mede-se Energia, Peso, Temperatura, ...

Infelizmente a medição no mundo da Engenharia de Software, apresentam dificuldades, sendo alvo de muitas controvérsias.

4.2 Medidas do Software

O Software é medido por muitas razões :

1- Indicar a qualidade do produto

2- Avaliar a produtividade das pessoas

3- Formar uma linha básica para estimativa (Custo, número de pessoas que trabalham no desenvolvimento do software,...)

4.3 Tabela de Métricas de tamanho

 

 

A partir dos dados brutos da tabela, um conjunto de métricas de qualidade e produtividade podem ser obtidos.

Medidas podem ser computadas levando em conta todos os projetos de uma empresa,e assim, obter métricas mais precisas

4.4 Formulações

Produtividade = K Linhas de Código / Pessoa Mês

obs: 12K Linhas de Código = 12000 Linhas de Código

Custo = US$ / K Linhas de Código

Qualidade = Defeitos / K Linhas de Código

 

4.5 Críticas aos Modelos Baseados em Linhas de Código (LOC Lines Of Code )

Os Cientístas a favor afirmam que este modelo é simples e é o parâmetro básico para os outros modelos.

Os Cientístas Contra, afirmam que as medidas usando como base Linhas de Código são dependentes da linguagem de Programação e penalizam os programas bem projetados (mais curtos).

Exercício

Calcule a Produtividade, a Qualidade e o Custo para o caso do programa do Laminador 

 

 

 

 

 

 

######

________________________________

 

NOTAS DE AULA 10

 

 

PONTOS POR FUNÇÃO É APLICADO ATRAVÉS DE 3 PASSOS:
 

1) Completar a seguinte tabela:

 

 

 

 

2) Responder as questões 1-14, considerando a escala de 0 a 5:
   

influência    0             1               2              3                  4                 5

                 nenhuma  pouca   moderada   média   significante  essencial

 

 

1. O sistema exige backup e recuperação
    confiáveis? 
2. É requerida comunicação de dados?
3. Existem funções de processamento
    distribuído?
4. O desempenho é crítico?
5. O sistema funcionará num sistema operacional
    existente e intensamente utilizado?
6. São requeridas entrada de dados on-line?
7. As entradas on-line requerem que as
    transações de entrada sejam construídas com
    várias telas e operações?

 

 

8. Os arquivos são atualizados on-line?
 9. Entradas, saídas, arquivos e consultas são
     complexos?
10. O processamento interno é complexo?
11. O código é projetado para ser reusával?
12. A conversão e a instalação estão incuídas
      no projeto?
13. O sistema é projetado para múltiplas
      instalações em diferentes organizações?
14. A aplicação é projetada de forma a facilitar
      mudanças e o uso pelo usuário? 
 

 

 

3) Ajustar os Pontos por Função de acordo com a complexidade
   do sistema, através da seguinte fórmula:
 

 

 

 

 

PRODUTIVIDADE = PF / pessoas-mês
QUALIDADE = erros / PF
CUSTO = $ / PF

 

 

VANTAGENS :

•Independentes da linguagem

•Ideal para aplicações que usam linguagem não   procedimental
•Baseados em dados mais fáceis de serem   conhecidos durante a evolução do projeto

 

 

 

 

######

________________________________

 

NOTAS DE AULA 10

 

 


CASE

 

O termo CASE (Computer- Aided Software Engineering) significa engenharia de software auxiliada por computador. Antigamente, os Ambiente de desenvolvimento de Sistemas (ADS’s) desenvolviam software para outras áreas, mas não se utilizavam de software para fazer o seu trabalho. Com a necessidade de produtividade e qualidade, os ADS’s foram obrigados a desenvolver também software para uso próprio.

Novas linguagens de computador (como as de quarta geração) devem ser projetadas para o analista, e não para o programador. Devem permitir que ele gere telas, relatórios, diálogos e banco de dados, e percorra os banco de dados e atualize-os com técnicas não-procedurais e diferentes daquelas de programação. Devem permitir que ele traduza seus projetos estruturados, construídos preferivelmente em um terminal gráfico, diretamente para código. Não será mais apropriado referir-se a essas como linguagens; devemos chamá-las de ferramentas CASE.

 

Existem dois tipos de ambientes CASE:

Lower CASE: ambientes mais simples, provêm suporte à codificação, teste, depuração e manutenção do código.

 

Upper CASE: são ambientes mais complexos, automatizam diversas tarefas de análise e de projetos de sistemas e são capazes de gerar código automaticamente, a partir das especificações dadas.

 

 

Blocos de construção para o CASE

 

Arquitetura de ambiente

Plataforma de Hardware

Sistema Operacional

Serviços de Portabilidade

Estrutura de Integração

Ferramentas CASE

 

 

 

 

Blocos de construção para o CASE

A arquitetura de ambiente, composta pela plataforma de hardware e pelo suporte do sistema operacional, são bases para o CASE.

 

Os serviços de portabilidade constitui uma ponte entre ferramentas CASE, suas estruturas de integração e a arquitetura de ambiente, permitindo que as ferramentas e a sua estrutura de integração migrem através de diferentes plataformas de hardware e sistemas operacionais sem manutenção adaptativa.

 

 Estrutura de integração é uma coleção de programas especializados que possibilitam que as ferramentas se comuniquem , criem um banco de dados de projetos, exibam a mesma aparência e transmitam a mesma sensação ao usuário final.

 

 

 

 

 

 

 

Classificação das Ferramentas CASE

 

Fase de análise e projeto

Fase de programação

Fase de teste

Documentação

Fase de manutenção

Ferramentas para metodologias alternativas

Ferramentas Diagramáticas

 

 

 

 

Fase de análise de projeto

 

Ferramentas de Coleta: algumas utilizam questionário, outras entrevistas, fornecendo perguntas aos usuários. É importante que elas funcionem em rede de computadores, como são vários usuários devem registrar quem forneceu que informações e a quem elas estão disponíveis para análise ;

Ferramentas de Organização das Informações coletadas: técnicas de coleta apresentam como produto final um texto contendo informações sobre o sistema, essas ferramentas ajudam a análise destes textos permitindo que o analista gere um novo texto com informações corretas e completas;

 

Ferramentas de transformação de textos em diagramas: possuem técnicas de linguagem natural que permitem essa transformação;

 

 

Fase de Programação

 

Ferramentas de Interface: algumas geram a interface a partir de descrições feitas por um projetista, outras permitem a criação interativa da interfaces. Linguagens, como Delphi e VB, trazem essas ferramentas embutidas;

Ferramentas de Controle de consistência na entrada de dados: Uma ferramenta para essa tarefa pode ser gerada a partir de especificações armazenadas junto dos arquivos de dados, pelo projetista .

Geradores de aplicações: geram um código fonte automaticamente, entretanto, geram apenas aplicações de um certo tipo;

 

 

 

 

 

 

 

Fase de teste

 

Existem ferramentas que testam a definição de variáveis, se as operações realizadas sobre estas são compatíveis, se não há mudança de tipos de variáveis, se elas são usadas em algum lugar do programa e se elas se comportam realmente como variáveis ou como constantes.

Há também ferramentas que geram dados de entrada durante o teste funcional dos módulos e algumas verificam se as saídas do módulo correspondem as entradas fornecidas.

As interfaces também podem ser testadas, como por exemplo pode ser verificado se é possível entrar e sair dos menus.

Pode fazer teste de integração verificando a compatibilidade entre os módulos ( as saídas de uns com as entradas de outros).

 

 

Documentação

 

As ferramentas de produção de documentos e de editoração eletrônica dão apoio a quase todos os aspectos de engenharia de software. As ferramentas de documentação geralmente estão ligadas a outras ferramentas CASE, usando-se uma ponte de dados implementada pelo fornecedor da ferramenta técnica. Essas ferramentas podem ser:

Gerador de manuais e Gerador de help

 

 

Fase de Manutenção

 

Engenharia reversa: é permitida a documentação de programas antigos não documentados. As ferramentas capta o código fonte como entrada e gera modelos gráficos de análises de projetos estruturados e outras informações;

Reengenharia: extraídas as informações de análise e projeto a partir de um código já existente, as ferramentas permitirão a reconstrução rápida do sistema no novo ambiente. Essas ferramentas oferecem significativas promessas mas são poucas as ferramentas de qualidade industrial encontradas em uso.

Gerenciador de Links: permite ligar todos os elementos e informações de todas as fases de desenvolvimento.

 

 

 

 

Ferramentas Diagramáticas

 

A diagramação interativa com as ferramentas CASE tem grandes vantagens: acelera significativamente o processo, reforça os padrões, possibilita ao computador executar várias checagens do que está sendo criado, permite automatizar o processo de documentação.

Alguns requisitos devem ser estabelecidos para o bom funcionamento dessas ferramentas, tais como: possibilitar a inclusão de objetos gráficos,de texto nos objetos, a movimentação, eliminação, alinhamento e união dos objetos, além de operações de COPY e PASTE, e outras.

 

 

 

 

Vantagens do CASE

 

Maior qualidade dos produtos finais;

Maior produtividade;

Mais tempo para a tomada de decisão;

Maior flexibilidade para mudanças;

Menos programação;

Melhor documentação;

Manutenção mais fácil e ágil.

 

 

Bibliografia:

PRESSMAN, Roger . Engenharia de Software.

MARTIN, James & McCLURE, Carma. Técnicas Estruturadas e CASE.

www.dcc.fua.br/~tem/newsmamail/case2.html

www.cos.ufrj.br/~randrade/case1.html

Revista Developers, junho 1998.

 

 

 

 

 

 

 

PROGRAMAÇÃO ORIENTADA A OBJETO

Introdução

Existem no mercado muitos livros e outras referências bibliográficas apresentando os conceitos da Tecnologia de Objetos e os benefícios de sua utilização. Além disso, a grande maioria dos softwares comerciais, especialmente os do ambiente Windows, já incorporam características orientadas a objetos. Porém, ainda percebe-se muito ceticismo na comunidade de profissionais de desenvolvimento de sistemas organizacionais. Em parte pela falta de cultura na utilização de metodologias, e muitas vezes por não acreditarem que é possível aplicar os conceitos OO em suas empresas.

São comuns casos em que se aplica análise baseada em objetos para especificação do sistema, mas a implementação é feita em um ambiente que não suporta a orientação a objetos. Em outros casos, parte-se de uma definição tradicional de sistema e o software é construído com uso de algum mecanismo de orientação a objetos, porém sem respeitar uma arquitetura verdadeiramente orientada a objetos. Em ambas as situações, não se obtêm todos os benefícios associados à Tecnologia de Objetos, e as iniciativas acabam sendo consideradas frustrantes ou pouco vantajosas.

A fim de se alcançar tais benefícios, é necessária a aplicação da orientação a objetos em todo o ciclo de desenvolvimento do sistema. Para tanto, obviamente, é preciso um completo entendimento da tecnologia e a obtenção de respostas para questões não abordadas pela bibliografia disponível.

 

 

 

 

 

 

######

________________________________

 

NOTAS DE AULA 11

 

 

Programação Orientada a Objetos

 

Programação orientada a objetos (POO) é uma metodologia de programação adequada ao desenvolvimento de sistemas de grande porte, provendo modularidade e reusabilidade. A POO introduz uma abordagem na qual o programador visualiza seu programa em execução como uma coleção de objetos cooperantes que se comunicam através de mensagens.  Existem alguns aspectos importantes na definição de POO:

Usa objetos, e não funções ou procedimentos como seu bloco lógico fundamental de construção de programas

Objetos comunicam-se através de mensagens

 

 

 

Programação orientada a objetos dá ênfase à estrutura de dados, adicionando funcionalidade ou capacidade de processamento a estas estruturas. Em linguagens tradicionais, a importância maior é atribuída a processos, e sua implementação em subprogramas. Em uma linguagem como Pascal, procedimentos ativos agem sobre dados passivos que foram passados a eles. Em linguagens orientadas a objetos, ao invés de passar dados a procedimentos, requisita-se que objetos realizem operações neles próprios.

Alguns aspectos são fundamentais na definição de programação orientada a objetos, que serão devidamente investigados neste trabalho:

Abstração de dados

Objetos

Mensagens

Classes

Herança

Polimorfismo

 

Objetos

 

Na visão de uma linguagem imperativa tradicional (Pascal, C, COBOL, etc.), os objetos aparecem como uma única entidade autônoma que combina a representação da informação (estruturas de dados) e sua manipulação (procedimentos), uma vez que possuem capacidade de processamento e armazenam um estado local. Pode-se dizer que um objeto é composto de:

 

Propriedades: são as informações, estruturas de dados que representam o estado interno do objeto. Em geral, não são acessíveis aos demais objetos.

 

Comportamento: conjunto de operações, chamados de métodos, que agem sobre as propriedades. Os métodos são ativados (disparados) quando o objeto recebe uma mensagem solicitando sua execução. Embora não seja obrigatório, em geral uma mensagem recebe o mesmo nome do método que ela dispara. O conjunto de mensagens que um objeto está apto a receber está definido na sua interface.

Identidade: é uma propriedade que diferencia um objeto de outro; ou seja, seu nome.

 

Enquanto que os conceitos de dados e procedimentos são freqüentemente tratados separadamente nas linguagens de programação tradicionais, em POO eles são reunidos em uma única entidade: o objeto.


 

 

No mundo real não é difícil a identificação de objetos (em termos de sistemas, objetos são todas as entidades que podem ser modeladas, não apenas os nossos conhecidos objetos inanimados). Como exemplo, em uma empresa pode-se identificar claramente objetos da classe empregado.

 

Um empregado possui uma identidade própria, seu nome: José da Silva. Possui também propriedades como: endereço, idade, dependentes, salário, cargo, entre outras. O comportamento pode ser determinado por operações como: aumentar salário, listar dependentes e alterar cargo. As propriedades somente podem ser manipuladas através das operações definidas na interface do objeto, de modo que a forma de armazenamento das propriedades e a implementação das operações são desconhecidas pelas outras entidades externas (encapsulamento de informações).

 

 

 

 

Benefícios proporcionados pelos objetos:

Uma vez que objetos utilizam o princípio da abstração de dados, o encapsulamento de informação proporciona dois benefícios principais para o desenvolvimento de sistemas:

Modularidade: o código fonte para um objeto pode ser escrito e mantido independentemente da código fonte de outros objetos. Além disso, um objeto pode ser facilmente migrado para outros sistemas.

 

Ocultamento de informação: um objeto tem uma interface pública que os outros objetos podem utilizar para estabelecer comunicação com ele. Mas, o objeto mantém informações e métodos privados que podem ser alterados a qualquer hora sem afetar os outros objetos que dependem dele. Ou seja, não é necessário saber como o objeto é implementado para poder utilizá-lo.

 

Mensagens

 

Um objeto sozinho não é muito útil e geralmente ele aparece como um componente de um grande programa que contem muitos outros objetos. Através da interação destes objetos pode-se obter uma grande funcionalidade e comportamentos mais complexos.

Objetos de software interagem e comunicam-se com os outros através de mensagens. Quando o objeto A deseja que o objeto B execute um de seus métodos, o objeto A envia uma mensagem ao objeto B. Algumas vezes o objeto receptor precisa de mais informação para que ele saiba exatamente o que deve fazer; esta informação é transmitida juntamente com a mensagem através de parâmetros.

Uma mensagem é formada por três componentes básicos:

o objeto a quem a mensagem é endereçada (receptor)

o nome do método que se deseja executar

os parâmetros (se existirem) necessários ao método

Classe

 

"É a definição dos atributos e funções de um tipo de objeto. Cada objeto individual é então criado com base no que está definido na classe. Por exemplo, homo sapiens é um classe de mamífero; cada ser humano individual é um objeto dessa classe."

Objetos de estrutura e comportamento idênticos são descritos como pertencendo a uma classe, de tal forma que a descrição de suas propriedades pode ser feita de uma só vez, de forma concisa, independente do número de objetos idênticos em termos de estrutura e comportamento que possam existir em uma aplicação. A noção de um objeto é equivalente ao conceito de uma variável em programação convencional, pois especifica uma área de armazenamento, enquanto que a classe é vista como um tipo abstrato de dados, uma vez que representa a definição de um tipo.

 

Cada objeto criado a partir de uma classe é denominado de instância dessa classe. Uma classe provê toda a informação necessária para construir e utilizar objetos de um tipo, cada instância pertence a uma classe e uma classe pode possuir múltiplas instâncias. Devido ao fato de todas as instâncias de uma classe compartilharem as mesmas operações, qualquer diferença de respostas a mensagens aceitas por elas, é determinada pelos valores das variáveis de instância.

 

  A existência de classes proporciona um ganho em reusabilidade. pois o código das operações e a especificação da estrutura de um número potencialmente infinito de objetos estão definidos em um único local, a classe. Cada vez que um novo objeto é instanciado ou que uma mensagem é enviada, a definição da classe é reutilizada. Caso não existissem classes, para cada novo objeto criado, seria preciso uma definição completa do objeto.

 

 

Benefícios proporcionados pelas classes:

 

O maior benefício proporcionado pela utilização das classes é a reusabilidade de código, uma vez que todos os objetos instanciados a partir dela incorporam as suas propriedades e seu comportamento.

 

Métodos

 

Um método implementa algum aspecto do comportamento do objeto. Comportamento é a forma como um objeto age e reage, em termos das suas trocas de estado e troca de mensagens.

Um método é uma função ou procedimento que é definido na classe e tipicamente pode acessar o estado interno de um objeto da classe para realizar alguma operação. Pode ser pensado como sendo um procedimento cujo primeiro parâmetro é o objeto no qual deve trabalhar. Este objeto é chamado receptor. Abaixo é apresentada uma notação possível para o envio de uma mensagem (invocação do método)

Construtores são usados para criar e inicializar objetos novos. Tipicamente, a inicialização é baseada em valores passados como parâmetros para o construtor. Destrutores são usados para destruir objetos. Quando um destrutor é invocado, as ações definidas pelo usuário são executadas, e então a área de memória alocada para o objeto é liberada. Em algumas linguagens, como C++, o construtor é chamado automaticamente quando um objeto é declarado. Em outras, como Object Pascal, é necessário chamar explicitamente o construtor antes de poder utilizá-lo.

Um exemplo de utilização de construtores e destrutores seria gerenciar a quantidade de objetos de uma determinada classe que já foram criados até o momento. No construtor pode-se colocar código para incrementar uma variável e no destrutor o código para decrementá-la.

 

Herança

O conceito de herança é fundamental na técnica de orientação a objetos. A herança permite criar um novo tipo de objeto - uma nova classe - a partir de outra já existente.

A nova classe mantém os atributos e a funcionalidade da classe da qual deriva; por isso, dizemos que ela "herda" as características daquela classe. Ao mesmo tempo, ela pode receber atributos e funções especiais não encontrados na classe original. Voltando ao exemplo da janela de um programa Windows, esse tipo de objeto poderia se chamar Janela. Ao criarmos um tipo de objeto para funcionar como caixa de diálogo é uma janela com atributos especiais, como a exibição de botões e opções.

O novo tipo poderia se chamar JanelaDiálogo e herdaria as características da classe Janela, recebendo também os atributos exclusivos de uma caixa de diálogo.
Uma das vantagens da herança é a facilidade de localizar erros de programação. Por exemplo, caso um objeto derivado de outro apresente um erro de funcionamento; se o objeto original funcionava corretamente, é claro que o erro está na parte do código que implementa as novas características do objeto derivado. A herança permite, também, reaproveitar o código escrito anteriormente, adaptando-o às novas necessidades.
Isso é muito importante porque os custos de desenvolvimento de software são muitos elevados. A mão-de-obra altamente especializada é cara; o processo é demorado e sujeito a ocorrências inesperadas.

 

Polimorfismo

 

Polimorfismo refere-se à capacidade de dois ou mais objetos responderem à mesma mensagem, cada um a seu próprio modo. A utilização da herança torna-se fácil com o polimorfismo. Desde que não é necessário escrever um método com nome diferente para responder a cada mensagem, o código é mais fácil de entender. Por exemplo, sem polimorfismo, para inserir um novo empregado, seria necessário o seguinte código:

Colaborador1.InsereColaborador

Gerente1.InsereGerente

Presidente1.InserePresidente

 

Neste caso, Colaborador1, Gerente1 e Presidente1 são objetos das respectivamente das classes Colaborador, Gerente e Presidente. Com o polimorfismo, não é necessário ter um método diferente para cada tipo de objeto. Pode-se simplesmente escrever o seguinte:

Colaborador.Insere

Gerente.Insere

Presidente.Insere

 

Neste exemplo, os três diferente empregados têm três diferentes métodos para ser inseridos, embora o tenha sido utilizado o método com o mesmo nome. No código para esses empregados, seria necessário escrever três métodos diferentes: um para cada tipo de empregado. O mais importante a ser observado é que as três rotinas compartilham o mesmo nome.

Outra forma simples de polimorfismo permite a existência de vários métodos com o mesmo nome, definidos na mesma classe, que se diferenciam pelo tipo ou número de parâmetros suportados. Isto é conhecido como polimorfismo paramétrico, ou sobrecarga de operadores ("overloading"). Neste caso, uma mensagem poderia ser enviada a um objeto com parâmetros de tipos diferentes (uma vez inteiro, outra real, por exemplo), ou com número variável de parâmetros. O nome da mensagem seria o mesmo, porém o método invocado seria escolhido de acordo com os parâmetros enviados.

 

Benefícios proporcionados pelo polimorfismo

 

Legibilidade do código: a utilização do mesmo nome de método para vários objetos torna o código de mais fácil leitura e assimilação, facilitando muito a expansão e manutenção dos sistemas.

Código de menor tamanho: o código mais claro torna-se também mais enxuto e elegante. Pode-se resolver os mesmos problemas da programação convencional com um código de tamanho reduzido.

 

Relações entre Objeto, Classe e Herança

 

Objetos, classes e o mecanismo de herança permitem a definição de hierarquias de abstrações, que facilitam o entendimento e o gerenciamento da complexidade dos sistemas estudados. Isto porque classes agrupam objetos com características iguais, enquanto herança estrutura classes semelhantes.

 Pode-se dizer que a grande vantagem do paradigma de objetos é a possibilidade de expressar diretamente este poder de modelagem conceitual numa linguagem de programação orientada a objetos. Assim, o modelo conceitual proposto durante a etapa de análise não se perde nas etapas de projeto e implementação. O que em geral ocorre é a sua extensão.

 

 

Avaliação da POO

A grande vantagem do paradigma de objetos é o seu caráter unificador: trata todas as etapas do desenvolvimento de sistemas e ambientes sob uma única abordagem. Nesse sentido, podemos ter análise, projeto, programação, banco de dados e ambientes orientados a objetos, eliminando as diferenças de "impedância" entre eles.

 

Vantagens da POO

A POO tem alcançado tanta popularidade devido às vantagens que ela traz. Entre elas podemos citar:

Reusabilidade de código

Escalabilidade de aplicações

Mantenabilidade

 

 

A reusabilidade de código é, sem dúvida, reconhecida como a maior vantagem da utilização de POO, pois permite que programas sejam escritos mais rapidamente. Todas as empresas sofrem de deficiência em seus sistemas informatizados para obter maior agilidade e prestar melhores serviços a seus clientes. Um levantamento feito na AT&T, a gigante das telecomunicações nos EUA, identificou uma deficiência da ordem de bilhões de linhas de código. Uma vez que a demanda está sempre aumentando, procura-se maneiras de desenvolver sistemas mais rapidamente, o que está gerando uma série de novas metodologias e técnicas de construção de sistemas (por exemplo, ferramentas CASE). A POO, através da reusabilidade de código, traz uma contribuição imensa nesta área, possibilitando o desenvolvimento de novos sistemas utilizando-se muito código já existente. A maior contribuição para reusabilidade de código é apresentada pela herança.

 

Escalabilidade pode ser vista como a capacidade de uma aplicação crescer facilmente sem aumentar demasiadamente a sua complexidade ou comprometer o seu desempenho. A POO é adequada ao desenvolvimento de grandes sistemas uma vez que pode-se construir e ampliar um sistema agrupando objetos e fazendo-os trocar mensagens entre si. Esta visão de sistema é uniforme, seja para pequenos ou grandes sistemas (logicamente, deve-se guardar as devidas proporções).

 

O encapsulamento proporciona ocultamento e proteção da informação. Acessos a objetos somente podem ser realizados através das mensagens que ele está habilitado a receber. Nenhum objeto pode manipular diretamente o estado interno de outro objeto. De modo que, se houver necessidade de alterar as propriedades de um objeto ou a implementação de algum método, os outros objetos não sofrerão nenhum impacto, desde que a interface permaneça idêntica. Isto diminui em grande parte os esforços despendidos em manutenção. Além disso, para utilizar um objeto, o programador não necessita conhecer a fundo a sua implementação.

 

O polimorfismo torna o programa mais enxuto, claro e fácil de compreender. Sem polimorfismo, seriam necessárias listas enormes de métodos com nomes diferentes mas comportamento similar. Na programação, a escolha de um entre os vários métodos seria realizada por estruturas de múltipla escolha (case) muito grandes. Em termos de manutenção, isto significa que o programa será mais facilmente entendido e alterado.

A herança também torna a manutenção mais fácil. Se uma aplicação precisa de alguma funcionalidade adicional, não é necessário alterar o código atual. Simplesmente cria-se uma nova geração de uma classe, herdando o comportamento antigo e adiciona-se novo comportamento ou redefine-se o comportamento antigo.

 

Desvantagens da POO

Apesar de das inúmeras vantagens, a POO tem também algumas desvantagens, que incluem:

Apropriação

Fragilidade

Linearidade de desenvolvimento

 

A apropriação é apresentada tanto como uma vantagem como uma desvantagem, porque a POO nem sempre soluciona os problemas elegantemente. Enquanto que a mente humana parece classificar objetos em categorias (classes) e agrupar essas classes em relacionamentos de herança, o que ela realmente faz não é tão simples. Em vez disso, objetos com características mais ou menos similares, e não precisamente definidas, são reunidos em uma classificação. A POO requer definições precisas de classes; definições flexíveis e imprecisas não são suportadas. Na mente humana, essas classificações podem mudar com o tempo. Os critérios para classificar objetos podem mudar significativamente. A apropriação utilizada na POO torna-a muito rígida para trabalhar com situações dinâmicas e imprecisas.

Além disso, algumas vezes não é possível decompor problemas do mundo real em uma hierarquia de classes. Negócios e pessoas têm freqüentemente regras de operações sobre objetos que desafiam uma hierarquia limpa e uma decomposição orientada a objetos. O paradigma de objetos não trata bem de problemas que requerem limites nebulosos e regras dinâmicas para a classificação de objetos.

Isto leva ao próximo problema com POO: fragilidade. Desde que uma hierarquia orientada a objetos requer definições precisas, se os relacionamentos fundamentais entre as classes chave mudam, o projeto original orientada a objetos é perdido. Torna-se necessário reanalisar os relacionamentos entre os objetos principais e reprojetar uma nove hierarquia de classes. Se existir uma falha fundamental na hierarquia de classes, o problema não é facilmente consertado. A mente humana adapta-se continuamente, e geralmente adequadamente, a situações novas. Ela encontra maneiras de classificar objetos no ambiente automaticamente. Enquanto a nossa mente tem essa capacidade, os ambientes POO não são tão bem equipados.

Em virtude dessa fragilidade, a POO requer análise e projeto frontal para assegurar que a solução é adequada. Com isto existe uma tendência em criar uma abordagem linear de desenvolvimento, em vez de cíclica. Infelizmente, alguns problemas são "perversos", o que significa que não se sabe como resolver um problema até efetivamente resolvê-lo. Tais problemas desafiam até mesmo os melhores projetistas e analistas de sistemas. Utilizar a abordagem de Desenvolvimento Rápido de Aplicações (RAD - Rapid Application Development, é utilizada pelo Delphi, SQL-Windows e outros ambientes de desenvolvimento para Windows adequados à prototipagem) com ciclos entre o projeto do protótipo, construção e realimentação do usuário é algumas vezes uma boa maneira de resolver problemas "perversos". Entretanto, a POO necessita de um projeto cuidadoso da hierarquia de classes, o que pode elevar os custos da sua utilização em um ambiente RAD.

 

 

Bibliografia:

 

BIO, Sérgio Rodrigues. Sistemas de Informação: um Enfoque Gerencial. Editora Atlas, 1985.

COAD, Peter; YOURDON, Edward. Análise Baseada em Objetos. Editora Campus, 1992.

COAD, Peter; YOURDON, Edward. Projeto Baseado em Objetos. Editora Campus, 1993.

COUGO, Paulo Sérgio. Modelagem Conceitual e Projeto de Banco de Dados. Editora Campus, 1997.

JONES, Meilir. O Que Todo Programador Deveria Saber Sobre Projeto Orientado a Objeto. Makron Books, 1997.

PRESSMAN, Roger S. Engenharia de Software. Makron Books do Brasil, 1995.

RUMBAUGH, James; BLAHA, Michael; PREMERLANI, William; EDDY, Frederick; LORESEN, Willian. Modelagem e Projetos Baseados em Objetos. Editora Campus, 1994.

INTERNET - ITEI – Istituto de Tecnologia Emergentee de Informação

 

 

__________________________________________________

 

Ferramentas de Gerenciamento de Projeto

 

 

Esta seção apresenta uma descrição sucinta de algumas ferramentas de

gerenciamento de projeto, sendo estas aplicadas no escopo de qualquer projeto (ou seja,

não são específicas para projeto de software). Este estudo foi efetuado visando analisar

as principais características das ferramentas existentes atualmente e, conseqüentemente,

embasar a proposta apresentada. Vale ressaltar que esta lista refere-se apenas a um

pequeno conjunto de ferramentas, existindo ainda diversas outras disponíveis.

 

3.6.1 FastTrack

 

O FastTrack é um software de gerenciamento de projetos, cuja interface é

ilustrada na Figura 14. Este software foi desenvolvido pela AEC software. O FastTrack

6.04a é a última versão do sistema, tendo sido desenvolvido em 1999, sendo que, para a

análise foi utilizada uma versão demo cuja única limitação é a não possibilidade de

salvar um projeto em disco.

 

 

 

O FastTrack tem como objetivo manter o histórico de projetos, atividades,

tarefas e prazos finais. No seu nível mais básico, o FastTrack é simplesmente um

gráfico de linha ao longo do qual são colocadas barras de atividade para representar os

começos e fins destas atividades, sendo este gráfico conhecido como Gráfico de Gantt.

Desta forma, o FastTrack automatiza a construção do gráfico de Gantt, refletindo

o começo e encerramento de atividades de forma gráfica.

Quando uma determinada linha/atividade é alterada no gráfico, automaticamente, dados como o custo de cada atividade e o valor total do projeto são alterados. Pode-se escolher entre 17 tipos diferentes de barras de atividade para denotar informações diferentes.

A qualquer instante é possível mudar o gráfico de Gantt para ver um maior ou

menor período de tempo, mudança estas disponibilizadas através das unidades para

exibição, que podem ser: tempo em horas, dias, semanas, meses, trimestre, ou anos, no

exemplo acima (Figura 14), pode-se notar que o software está usando o período em

semanas.

Em um primeiro instante as entradas de informações são textuais, ou seja, o

nome da tarefa, data de início, data de fim entre outras informações são incluídas na

base, após serem inseridas, pode-se trabalhar com as datas de início e fim das tarefas

diretamente no Gráfico de Gantt. Cada tarefa contém uma barra que representa o

período da atividade, podendo também esboçar as atividades em níveis diferentes, ou

seja, estruturar tarefas de forma hierárquica.

 

 

 

3.6.2 Task Manager

 

 

O Task Manager é um software de gerenciamento de projetos, podendo sua

interface ser visualizada na Figura 15. Este software foi desenvolvido pela Orbisoft,

cujo site encontra-se em http://www.orbisoft.com. A versão pesquisada foi desenvolvida

em 2000 e, atualmente, encontra-se na versão 1.00.729, sendo que, para a análise foi

utilizada uma versão demo, sem nenhuma restrição

 

 

 

 

 

 

 

 

O Task Manager 2000 foi especialmente projetado para ajudar a organizar e

administrar todos os trabalhos e tarefas de maneira simples, seguindo o padrão dos

wizards. Pode ser usado pessoalmente ou em um ambiente de equipe, podendo

administrar pessoal e compartilhar tarefas, trabalhos, e projetos. Este compartilhamento

é efetuado através da disponibilização do banco de dados em um único computador na

rede, através do qual os outros elementos da equipe acessam este computador para

usufruir as informações pertinentes a um determinado projeto.

Este software permite adquirir uma visão rápida de todas as tarefas, controlar

prazos finais, equilibrar automaticamente as cargas de trabalho, previsões de gargalos

de trabalho e tempos. Além disso, o Task Manager 2000 calcula automaticamente o

custo total de desenvolvimento do projeto, com base nos custos de cada pessoa, alocada

para participar do projeto.

Possui uma interface de fácil manuseio, mas é deficiente na parte de

relatórios/gráficos, onde possui alguns gráficos não parametrizados (não se tem opções

de escolher datas, o software demonstra sempre os últimos 5 anos) sobre alocação de

trabalho, custo/mês, tarefas/mês, entre outros. Não aborda gráficos significativos, como

por exemplo, o Gráfico de Gantt ou Gráfico de PERT, gráficos típicos de gerenciamento

de projetos, outro ponto negativo é sua lentidão para troca entre janelas. Possui um help

online, para dirimir qualquer dúvida sobre a aplicação .

 

 

3.6.3 Delegator

 

 

O Delegator é mais um software de gerenciamento de projetos, cuja interface

pode ser visualizada na Figura 16. Este software foi desenvolvido pela Madrigal Soft

Tools Inc, com sede no Canadá, sendo o seu site encontrado em

http://www.madrigalsoft.com. A versão pesquisada foi desenvolvida em 2000 e,

atualmente, encontra-se na versão 3.0, sendo que, para a análise foi utilizada uma

versão demo, sendo limitada para uso de apenas um usuário.

Delegator foi desenvolvido especialmente para gerentes e demais pessoas que

coordenam e administram as atividades de outras pessoas. O Delegator ajuda a localizar

as diversas tarefas dadas as pessoas, cargas de trabalho do pessoal, comunicar

prioridades, desempenho de pessoal com o passar do tempo e administrar projetos

incluindo muitas tarefas e envolvendo várias pessoas.

 

 

 

 

Como uma de suas características pode-se destacar o gráfico de Gantt que é

utilizado para visualizar as tarefas, referenciando os recursos humanos alocados, sendo

distribuídas por períodos de tempo podendo-se visualizar o gráfico por período de dias,

semanas, meses ou trimestre. Além disso, pode-se destacar o help on-line que auxilia no

entendimento da ferramenta.

Como ponto principal do software pode-se ressaltar os três planos do

cronograma que são dispostos no gráfico de Gantt, conforme pode ser visualizado na

Figura 16, ou seja, a barra em amarelo refere -se as datas do plano inicial traçado pelo

gerente para uma determinada tarefa, a barra vermelha refere-se ao plano mais recente

traçado pelo gerente, e por fim a barra de cor azul, faz referência ao cronograma

realmente traçado pela pessoa ou grupo responsável pela tarefa. Através destes três

planos é possível fazer um comparativo do andamento das tarefas, da concepção até a

conclusão da atividade.

Através desta ferramenta é possível gerar relatórios referentes ao histórico de

uma determinada pessoa, histórico de um grupo de pessoas, histórico de um projeto ou

de vários projetos, além de listar tarefas, entre outros. Todos os relatórios são

 

parametrizados por datas a serem definidas pelo usuário, tornando assim, uma

ferramenta de trabalho mais flexível.

Como pontos negativos se pode ressaltar a falta de interatividade do gráfico de

Gantt, pois as tarefas dispostas no gráfico só podem receber entradas de dados de

maneira textual. Além disto, pode-se destacar a falta de dependência entre as tarefas de

um projeto, ou seja, não se pode vincular uma tarefa a outra (estabelecer relação de

precedência).

 

 

3.6.4 Alexys Team

 

Alexsys Team é um sistema de administração de equipe para Windows que

organiza o trabalho de uma equipe ou organização. Através da utilização desta

ferramenta, em uma organização, os gerentes podem administrar o trabalho do grupo de

forma que:

·  o grupo pode nomear tarefas coletivamente entre eles, ou seja, formar grupos

para executarem uma tarefa;

·  os sócios da organização podem interagir e podem tomar decisões;

·  o grupo pode descobrir quando uma tarefa não está procedendo dentro do

planejado.

 

Na instalação desta ferramenta são implantados dois bancos de dados: um banco

de dados novo e um banco de dados de amostra. O banco de dados novo permite aos

gerentes da organização registrar o trabalho de seus subordinados, enquanto o banco de

dados de amostra provê exemplos de como a ferramenta pode ser usada, através do qual

o usuário poderá se embasar para implementar o seu banco de dados.

 

O Alexys Team pode ser visualizado na Figura 17.

As informações pertinentes às atividades são previamente cadastradas em tabelas

anexas, para posteriormente serem referenciadas dentro da estrutura das atividades, ou

seja, cada item da estrutura de uma atividade, possui várias opções pré-definidas para

preenchimento, tornando o trabalho mais fácil e rápido. Além d isto, é possível passar as

informações de uma tarefa via e-mail para outra pessoa envolvida no projeto.

 

 

 

 

 

Como ponto positivo se pode destacar a flexibilidade de configuração do

ambiente de trabalho (cores do ambiente, informações a serem dispostas na tela, ordem

de disposição destas informações, fontes dos textos), ou seja, através de alguns

comandos simples é possível adaptar a área de trabalho ao estilo do usuário.

Outro ponto positivo a ser ressaltado é a possibilidade da criação de gráficos e

relatórios, ou seja, pode-se montar um gráfico ou relatório com qualquer informação

que esteja armazenada no banco de dados do sistema, tornando a ferramenta mais

flexível. Além disso, pode-se optar por vários estilos de gráficos para visualização

destas informações, por exemplo, gráfico de pizza, gráfico de linha, gráfico 3D, gráfico

de área entre outros. Podendo-se também salvar os gráficos e os relatórios em arquivos

anexos para futuras comparações.

Como ponto negativo se pode ressaltar a falta de um gráfico para gerenciamento

de tarefas e cronograma, como por exemplo, gráfico de Gantt e/ou gráfico de PERT,

pois através destes gráficos é possível melhor visualizar a distribuição das tarefas com

relação ao tempo do projeto, tarefas estas que só são listadas textualmente.

 

 

 

 

 

 

 

3.6.5 MS-Project

 

 

MS-Project é uma ferramenta para gerenciamento, organização e controle de

projetos. Para análise foi utilizada a versão 98 completa. A interface do Ms -Project pode

ser visualizada na Figura 18.

 

 

 

 

 

 

 

 

 

 

Figura 18: Interface MS-Project

A principal função do Ms-Project é gerenciar as tarefas em função do tempo.

Utiliza o gráfico de Gantt como o principal gráfico para visualizar tarefas. Através das

linhas pode-se inserir e modificar as descrições, durações, datas de início, datas de

término e outras informações sobre as tarefas. As barras estão preparadas para exibir

graficamente as durações das tarefas em uma escala de tempo.

Para um modo diferente de visualização das tarefas pode-se utilizar o gráfico de

PERT, que possui maior ênfase nas interdependências entre as tarefas.

O software disponibiliza um gráfico de recursos, sendo possível através deste verificar se não há alguém super alocado, ou seja, se algum recurso é atribuído para trabalhar mais horasem determinado período de tempo do que está disponível em seu calendário, podendo

assim, manter bem distribuídas as tarefas entre os seus funcionários.

 

Este software implementa a funcionalidade de efetuar previsões e evitar

problemas de agendamento antes que eles ocorram, considerando as tarefas que

ameaçam “estourar” o orçamento e/ou conflitos de agendamento que possam ultrapassar

o prazo do projeto.

 

Pode-se utilizar a linha de base (baseline) que contém estimativas originais de

custos, recursos e agendamento. Ao comparar as estimativas de sua linha de base com

as estimativas “atuais”, pode-se efetuar as alterações necessárias no plano do projeto.

 

O software possui recurso de hyperlink, onde o navegador da web é iniciado

localizando o endereço web especificado. Pode-se publicar informações do projeto em

estudo em formato HTML e seus gráficos em formato GIF.

Para receber e enviar mensagens do grupo de trabalho, os integrantes da equipe

usam caixa de entrada eletrônica. A caixa de entrada é utilizada pelo gerente do grupo

de trabalho para receber e armazenar respostas às mensagens de atribuição, atualização

e status que são enviados aos integrantes da equipe. Essas caixas de entrada devem estar

conectadas através de correio eletrônico, da Web ou rede interna (intranet ou web

interna). O grupo de trabalho poderá usar mensagens especiais de atribuição,

atualização e status do MS-Project para:

 

·  Atribuir tarefas

·  Aceitar ou recusar uma atribuição de tarefa

·  Solicitar e submeter relatórios de status

·  Enviar e receber atualizações de tarefas

Outro ponto positivo do MS-Project é a flexibilidade na geração de relatórios,

que compreendem um conjunto predefinido de informações detalhadas sobre o projeto,

o MS-Project possui mais de 20 relatórios predefinidos.

 

 

 

3.6.6 SuperProject

 

SuperProject é uma ferramenta destinada ao gerenciamento de projetos,

produzida pela Computer Associates, cuja interface pode ser visualizada na Figura 19.

O software pesquisado refere-se a versão 4.0, e não possui nenhuma restrição a sua

utilização.

O SuperProject é constituído de dois módulos. Um denominado Application

Program Interface que constitui o módulo principal do programa, onde encontra -se a

interface para o gerenciamento de projetos. O segundo módulo, denominado CARealizer

contem um linguagem de desenvolvimento para criar macros e aplicações.

 

 

 

 

 

Este software permite o gerenciamento de recursos, custo e tempo de projetos,

através de gráfico de Gantt e gráfico de PERT. Possui também a possibilidade do

usuário iniciar a criação de um projeto a partir de um template disponível. Quanto aos

relatórios, o SuperProject mostrou-se bastante versátil na construção dos mesmos.

No que se refere as variáveis utilizadas, o SuperProject não demonstrou

nenhuma restrição. Ou seja, pode-se configurar a unidade de tempo que se deseja

trabalhar (hora, dia, mês,...), o calendário (dia e hora) de cada recurso vinculado ao

projeto, dentre outros.

O SuperProject trabalha com diferentes visões do projeto, permitindo que se

visualize os recursos utilizados, ou os custos envolvidos, ou detalhamento das tarefas,

dentre outros.

Como item que o difere dos demais, está sua capacidade de trabalhar com

inclusão de outros projetos ou construir links com projetos externos. A diferença reside

no fato que se optando pela inclusão, o sistema anexará todo o projeto selecionado

como parte integrante de um mesmo projeto. No segundo caso, é permitida a inserção

de um link (vincular duas tarefas) entre projetos distintos. No entanto, esta operação é

permitida somente para projetos residentes em uma mesma máquina.

 

 

 

 

3.7 Análise Comparativa das Ferramentas de Gerenciamento de Projetos

 

 

Com base nas ferramentas de gerenciamento de projeto apresentadas, constatouse

que a maioria destas ferramentas trabalha com o gráfico de Gantt, sendo o gráfico de

PERT implementado em menor escala.

O recurso de baseline é implementado por

apenas duas das ferramentas: MS-Project e Delegator.

 

no que tange os relatórios pode-se destacar a flexibilidade do MS-Project que

oferece inúmeros relatórios aos usuários, sendo que, o software Alexys Team também

oferece bastantes opções neste item.

 

Vale ressaltar que todas as ferramentas apresentam um help para auxílio ao

“uso” da ferramenta, no entanto, destaca-se que o MS-Project expande o help para o

esclarecimento de conceitos vinculados ao gerenciamento de projeto.

 

Com relação ao suporte de trabalho em grupo ou projeto sendo desenvolvido de

forma distribuída apenas duas ferramentas apresentam algum suporte com este fim.

Sendo uma delas o MS-Project que permite salvar o projeto em HTML para

disponibilizar na Web e tem suporte a trabalho em equipe (utilizando recurso de e-mail,

sem uma visão distribuída). A outra ferramenta é o Alexys Team que visa o

gerenciamento do trabalho em equipe, mas assim como o MS-Project, considerando que

a aplicação não está sendo desenvolvida de maneira distribuída.

 

 

 

3.8 Considerações Finais

 

O gerenciamento de projetos é uma tarefa complexa que envolve a análise de

diversos fatores, tais como tempo, recursos e tarefa. Diversos são os instrumentos

existentes para auxiliar ao gerente dentre eles pode-se citar os gráficos de PERT e

Gantt, bem como, as ferramentas apresentadas.

O sucesso do projeto está fortemente atrelado ao efetivo gerenciamento do

processo tornando, portanto, indispensável o uso dos instrumentos citados pelo gerente.

Sendo que o principal objetivo de um gerenciamento de projeto é a busca pela

qualidade do produto e produtividade da empresa/pessoal, e considerando a frase citada

 

 

 

 

 

 

 

 

 

________________________________________________________________

 

“Bem-aventurados os misericordiosos, porque eles alcançarão misericórdia;  Bem-aventurados os limpos de coração, porque eles verão a Deus;”

Mateus 5:  7 e 8