0% acharam este documento útil (0 voto)
145 visualizações63 páginas

Engenharia de Software 1

O documento discute engenharia de software, abordando tópicos como: 1) Definição de engenharia de software e seus principais paradigmas e processos. 2) Técnicas para coleta de dados como entrevistas e observações no ambiente de usuários. 3) Métodos para desenvolvimento de sistemas como ciclo de vida clássico, prototipação, modelo em espiral e técnicas estruturadas.

Enviado por

Rosana Oliveira
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
145 visualizações63 páginas

Engenharia de Software 1

O documento discute engenharia de software, abordando tópicos como: 1) Definição de engenharia de software e seus principais paradigmas e processos. 2) Técnicas para coleta de dados como entrevistas e observações no ambiente de usuários. 3) Métodos para desenvolvimento de sistemas como ciclo de vida clássico, prototipação, modelo em espiral e técnicas estruturadas.

Enviado por

Rosana Oliveira
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 63

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE
Faculdade de Minas

Sumário

INTRODUÇÃO ........................................................................................................ 4

Software .............................................................................................................. 4
Problemas associados ao software ..................................................................... 5
A Importância do Software .................................................................................. 6
O Papel Evolutivo do Software ............................................................................ 6
APLICAÇÕES DO SOFTWARE ........................................................................... 11

Engenharia de Software: Uma Definição .............................................................. 12

O que é engenharia de Software? ..................................................................... 13


Método baseado na Decomposição de Funções: ............................................. 14
Método baseado na Estrutura de Dados: .......................................................... 14
Paradigmas de Engenharia de Software ........................................................... 15
PROCESSOS DE SOFTWARE ............................................................................ 20

Os desafios da Engenharia de Software ........................................................... 20


TÉCNICAS DE ENTREVISTAS E DE COLETA DE DADOS ................................. 20

Tipos de Entrevistas .......................................................................................... 21


Problemas Fundamentais ................................................................................. 22
Diretrizes Para a Realização de Entrevistas...................................................... 23
Certifique-se de que tem Autorização para Falar com os Usuários .................. 24
Planeje a Entrevista para Fazer Uso Eficiente do Tempo ................................. 26
Utilize Ferramentas Automatizadas que Sejam Adequadas, Mas Não Abuse .. 27
Tente Descobrir quais Informações o Usuário tem mais Interesse ................... 28
Use um Estilo Adequado de Entrevistar ............................................................ 29
Possíveis Formas de Resistência na Entrevista................................................ 30
Outros Problemas ............................................................................................. 32
Formas Alternativas de Coleta de Dados .......................................................... 33
Observações no ambiente ................................................................................ 35
OS PARADIGMAS DA ENGENHARIA DE SOFTWARE ....................................... 38

1
Faculdade de Minas
O Ciclo de Vida Clássico ................................................................................... 38
Prototipação ...................................................................................................... 39
O MODELO ESPIRAL .......................................................................................... 42

TÉCNICAS DE 4A GERAÇÃO (4GT) ................................................................... 44

Modelo por incremento ...................................................................................... 45


Combinando Paradigmas .................................................................................. 46
OS PROCESSOS DE SOFTWARE ...................................................................... 46

Modelos de processos de software ................................................................... 46


Modelo em Cascata .......................................................................................... 47
Desenvolvimento formal de sistemas ................................................................ 48
Desenvolvimento Orientado a Reuso ................................................................ 49
O DESENVOLVIMENTO DE SISTEMAS E AS SUAS ETAPAS ............................ 50

O Desenvolvimento na visão Pressman, ........................................................... 50


Fase de Definição ............................................................................................. 50
Fase de Verificação, Liberação e Manutenção ................................................. 51
TÉCNICA ESTRUTURADA ................................................................................... 52

Análise Estruturada ........................................................................................... 53


Projeto Estruturado ........................................................................................ 61

Programação Estruturada .................................................................................. 62


Desenvolvimento Top-down .............................................................................. 63
Equipes de Programação .................................................................................. 63
Revisões Estruturadas ...................................................................................... 64
REFERÊNCIA BIBLIOGRAFICA .......................................................................... 65

2
Faculdade de Minas
NOSSA HISTÓRIA

A nossa história inicia com a realização do sonho de um grupo de empresários,


em atender à crescente demanda de alunos para cursos de Graduação e Pós-
Graduação. Com isso foi criado a nossa instituição, como entidade oferecendo serviços
educacionais em nível superior.

A instituição tem por objetivo formar diplomados nas diferentes áreas de


conhecimento, aptos para a inserção em setores profissionais e para a participação no
desenvolvimento da sociedade brasileira, e colaborar na sua formação contínua. Além
de promover a divulgação de conhecimentos culturais, científicos e técnicos que
constituem patrimônio da humanidade e comunicar o saber através do ensino, de
publicação ou outras normas de comunicação.

A nossa missão é oferecer qualidade em conhecimento e cultura de forma


confiável e eficiente para que o aluno tenha oportunidade de construir uma base
profissional e ética. Dessa forma, conquistando o espaço de uma das instituições
modelo no país na oferta de cursos, primando sempre pela inovação tecnológica,
excelência no atendimento e valor do serviço oferecido.

3
Faculdade de Minas

INTRODUÇÃO
No inicio da década de 1980, uma reportagem de primeira pagina da revista
Business Week apregoava a seguinte manchete: "Software: A Nova Força
Propulsora". O software amadurecera - tornara-se um tema de preocupação
administrativa. Em meados da década de 1980, uma reportagem de capa da Fortune
lamentava "Uma Crescente Defasagem de Software" e, ao final da década, a
Business Week avisava os gerentes sobre a "Armadilha do Software - Automatizar
ou Não?" . No começo da década de 1990, uma reportagem especial da Newsweek
perguntava: "Podemos Confiar em Nosso Software?" enquanto o Wall Street Journal
relacionava as "dores de parto" de uma grande empresa de software com um artigo
de primeira página intitulado "Criar Software Novo: Era Uma Tarefa Agonizante..." .
Essas manchetes, e muitas outras iguais a elas, eram o anuncio de uma nova
compreensão da importância do software de computador - as oportunidades que ele
oferece e os perigos que apresenta.
O software agora ultrapassou o hardware como a chave para o sucesso de
muitos sistemas baseados em computador. Seja o computador usado para dirigir um
negócio controlar um produto ou capacitar um sistema, o software é um fator que
diferencia. A inteireza e a oportunidade.
Das informações oferecidas pelo software (e bancos de dados relacionados)
diferenciam uma empresa de suas concorrentes. O projeto e a capacidade de ser
"amigável ao ser humano" (human-friendly) de um produto de software diferenciam-
no dos produtos concorrentes que tenham função idêntica em outros aspectos. A
inteligência e a função oferecidas pelo software muitas vezes diferenciam dois
produtos de consumo ou industrias idênticas. E o software que pode fazer a
diferença.

Software
Há 20 anos, menos de 1% do público poderia descrever de forma inteligível o
que significa "software de computador". Hoje, a maioria dos profissionais bem como

4
Faculdade de Minas
a maior parte do público, acham que entendem o que é software. Será que
entendem?
Uma descrição de software num livro didático poderia assumir a seguinte
forma: "Software é: (1) instruções (programas de computador) que, quando
executadas, produzem a função e o desempenho desejados; (2) estruturas de dados
que possibilitam que os programas manipulem adequadamente a informação; e (3)
documentos que descrevem a operação e o uso dos programas". Não há dúvida de
que outras definições, mais completas, poderiam ser oferecidas. Mas precisamos de
algo mais que uma definição formal.
O software é um elemento de sistema lógico, e não físico. Portanto, o
software tem características que são consideravelmente diferentes das do hardware:
O software é desenvolvido e projetado por engenharia, não manufaturado no
sentido clássico.
O software não se desgasta.
A maioria dos softwares é feita sob medida em vez de ser montada a partir de
componentes existentes.

Problemas associados ao software


Existem um conjunto de problemas associados ao software que vários autores
chamam de “crise do software”. Este conjunto de problemas não se limitam ao
software que não funciona adequadamente, mas abrange também problemas
associados a forma de desenvolvimento destes softwares, a forma como é efetuada
a manutenção destes softwares, como atender a demanda por novos softwares e
como desenvolver novos softwares cada vez mais rapidamente.

Os problemas que atingem o desenvolvimento podem ser descritos como:

Estimativas de prazos e de custos que são frequentemente imprecisos;

Produtividade dos profissionais da área que não tem acompanhado a


demanda por novos serviços;

A qualidade do software desenvolvido que é insuficiente.

5
Faculdade de Minas
A Importância do Software

Durante as três primeiras décadas da era do computador, o principal


desafio era desenvolver um hardware que reduzisse o custo de
processamento e armazenagem de dados. Ao longo da década de 1980,

Maior Poder de Computação a


Avanços da Microeletrônica
Custo Baixo

O Software é o mecanismo que possibilita aproveitar e dar vazão a esse potencial

Assombrosa qualidade de armazenamento e processamento

avanços na microeletrônica resultaram em maior poder de computação a um


custo cada vez mais baixo. Hoje, o problema é diferente. O principal desafio
durante a década de 1990 é melhorar a qualidade (e reduzir o custo) de
soluções baseadas em computador - soluções que são implementadas com
software.
O poder de um computador mainframe da década de 1980 agora está a
disposição sobre uma mesa. As assombrosas capacidades de processamento
e armazenagem do moderno hardware representam um grande potencial de
computação. O software é o mecanismo que nos possibilita aproveitar e dar
vazão a esse potencial.

O Papel Evolutivo do Software


O contexto em que o software foi desenvolvido está estreitamente ligado a
quase cinco décadas de evolução dos sistemas computadorizados. O melhor
desempenho de hardware, menor tamanho e custo mais baixo precipitaram o
aparecimento de sistemas baseados em computadores mais sofisticados. Mudamos
dos processadores a válvula para os dispositivos microeletrônicos que são capazes
de processar 200 milhões de instruções por segundo. Em livros populares sobre a

6
Faculdade de Minas
"revolução do computador", Osborne caracterizou uma "nova revolução industrial",
Toffler chamou o advento da microeletrônica de "a terceira onda de mudança" na
história humana e Naisbitt previu que a transformação de uma sociedade industrial
em uma "sociedade de informação" terá um profundo impacto sobre nossas vidas.
Feigenbaum e McCorduck sugeriram que a informação e o conhecimento
(controlados por computador) serão o foco principal de poder no século XXI, e Stoll
argumentou que a "comunidade eletrônica" criada por redes e software e a chave
para a troca de conhecimentos em todo o mundo.
Quando se iniciava a década de 1990, Toffler descreveu uma "mudança de
poder", em que as velhas estruturas de poder (governamental, educacional,
industrial, econômico e militar) se desintegrarão enquanto os computadores e o
software levarão a uma "democratização do conhecimento" .

Primeiros Anos Segunda Era Terceira Era Quarta Era


1950 a 1960 1960 a 1970 1970 a 1980 1980 a 2000
Sistemas de Desktop
Orientação Batch Multiusuário Interativo Sistemas Distribuídos
poderosos
Tecnologias Orientadas à
Distribuição Limitada Tempo Real Hardware de Baixo Custo
Objetos
Software Customizado Banco de Dados Microprocessadores Sistemas Especialistas
Programação Artesanal Produto de Software Impacto de Consumo Computação paralela
Sem Administração
Software House “inteligência” embutida Ferramentas CASE
Específica
Sem Documentação Reutilização
Redes Neurais artificiais

A tabela descreve a evolução do software dentro do contexto das áreas de


aplicação de sistemas baseados em computador. Durante os primeiros anos do
desenvolvimento de sistemas computadorizados, o hardware sofreu continuas
mudanças, enquanto o software era visto por muitos como uma reflexão posterior. A
programação de computador era uma arte "secundaria" para a qual havia poucos
métodos sistemáticos. O desenvolvimento do software era feito virtualmente sem
administração - até que os prazos começassem a se esgotar e os custos a subir
abruptamente. Durante esse período, era usada uma orientação batch (em lote)
para a maioria dos sistemas. Notáveis exceções foram os sistemas interativos, tais
como o primeiro sistema de reservas da American Airlines e os sistemas de tempo
real orientados a defesa, como o SAGE. Na maior parte, entretanto, o hardware

7
Faculdade de Minas
dedicava-se a execução de um único programa que, por sua vez, dedicava-se a
uma aplicação específica.
Durante os primeiros anos, o hardware de propósito geral tornara-se lugar
comum. O software, por outro lado, era projetado sob medida para cada aplicação e
tinha uma distribuição relativamente limitada. O produto software (isto e, programas
desenvolvidos para serem vendidos a um ou mais clientes) estava em sua infância.
A maior parte do software era desenvolvida e, em última análise, usada pela própria
pessoa ou organização. Você escrevia-o, colocava-o em funcionamento e, se ele
falhasse, era você quem o consertava. Uma vez que a rotatividade de empregos era
baixa, os gerentes podiam dormir tranquilos com a certeza de que você estaria lá se
defeitos fossem encontrados. Por causa desse ambiente de software personalizado,
o projeto era um processo implícito realizado no cérebro de alguém, e a
documentação muitas vezes não existia.
Durante os primeiros anos, aprendemos muito sobre a implementação de
sistemas baseados em computador, mas relativamente pouco sobre engenharia de
sistemas de computador. Por justiça, entretanto, devemos reconhecer os muito
surpreendentes sistemas baseados em computador desenvolvidos durante essa
época. Alguns deles permanecem em uso até hoje e constituem feitos que são um
marco de referência e que continuam a justificar a admiração.
A segunda era da evolução dos sistemas computadorizados estendeu-se de
meados da década de 1960 até o final da década de 1970. A multiprogramação e os
sistemas multiusuários introduziram novos conceitos de interação homem-máquina.
As técnicas interativas abriram um novo mundo de aplicações e novos níveis de
sofisticação de software e hardware. Sistemas de tempo real podiam coletar,
analisar e transformar dados de múltiplas fontes, daí controlando processos e
produzindo saída em milissegundos, e não em minutos. Os avanços da
armazenagem on-line levaram à primeira geração de sistemas de gerenciamento de
bancos de dados. A segunda era também foi caracterizada pelo uso do produto de
software e pelo advento das "software houses". O software era desenvolvido para
ampla distribuição num mercado interdisciplinar. Programas para mainframes e
minicomputadores eram distribuídos para centenas e, às vezes, milhares de

8
Faculdade de Minas
usuários. Empresários da indústria, governos e universidades puseram-se
"desenvolver pacotes de software" e a ganhar muito dinheiro.
A medida que o número de sistemas baseados em computador crescia,
bibliotecas de software de computador começaram a se expandir. Projetos de
desenvolvimento internos nas empresas produziram dezenas de milhares de
instruções de programa. Os produtos de software comprados no exterior
acrescentaram centenas de milhares de novas instruções. Uma nuvem negra
apareceu no horizonte. Todos esses programas todas essas instruções tinham de ser
corrigidos quando eram detectadas falhas, alterados conforme as exigências do
usuário se modificavam ou adaptados a um novo hardware que fosse comprado.
Essas atividades foram chamadas coletivamente de manutenção de software. O
esforço despendido na manutenção de software começou a absorver recursos em
índices alarmantes. E, ainda pior, a natureza personalizada de muitos programas
tornava-os virtualmente impossíveis de sofrer manutenção. Uma "crise de software"
agigantou-se no horizonte.
A terceira era da evolução dos sistemas computadorizados começou em
meados da década de 1970 e continua até hoje. Os sistemas distribuídos múltiplos
computadores, cada um executando funções concorrentemente e comunicando-se
um com o outro aumentaram intensamente a complexidade dos sistemas baseados
em computador. As redes globais e locais, as comunicações digitais de largura de
banda (handwidth) elevada e a crescente demanda de acesso "instantâneo" a dados
exigem muito dos desenvolvedores de software.
A terceira era também foi caracterizada pelo advento e generalização do uso
de microprocessadores, computadores pessoais e poderosas estações de trabalho
(workstations) de mesa. O microprocessador gerou um amplo conjunto de produtos
inteligentes de automóveis a fornos de micro-ondas, de robôs industriais a
equipamentos para diagnostico de soro sanguíneo. Em muitos casos, a tecnologia
de software está sendo integrada a produtos por equipes técnicas que entendem de
hardware mas que frequentemente são principiantes em desenvolvimento de
software.
O computador pessoal foi o catalisador do crescimento de muitas empresas
de software. Enquanto as empresas de software da segunda era vendiam centenas

9
Faculdade de Minas
ou milhares de copias de seus programas, as empresas da terceira era vendem
dezenas e até mesmo centenas de milhares de cópias. O hardware de computador
pessoal está se tornando rapidamente um produto primário, enquanto o software
oferece a característica capaz de diferenciar. De fato, quando a taxa de crescimento
das vendas de computadores pessoais se estabilizou em meados da década de
1980, as vendas de software continuaram a crescer.
Na indústria ou em âmbito doméstico, muitas pessoas gastaram mais dinheiro
cm software do que aquilo que despenderam para comprar o computador no qual o
software seria instalado. A quarta era do software de computador está apenas
começando. As tecnologias orientadas a objetos estão rapidamente ocupando o
lugar das abordagens mais convencionais para o desenvolvimento de software em
muitas áreas de aplicação. Autores tais como Feigenhaum, McCorduck e Allman
preveem que os computadores de "quinta geração", arquiteturas de computação
radicalmente diferentes, e seu software correlato exercerão um profundo impacto
sobre o equilíbrio do poder político e industrial em todo o mundo. As técnicas de
"quarta geração" para o desenvolvimento de software já estão mudando a maneira
segundo a qual alguns segmentos da comunidade de software constroem programas
de computador.
Os sistemas especialistas e o software de inteligência artificial finalmente
saíram do laboratório para a aplicação pratica em problemas de amplo espectro do
mundo real. O software de rede neural artificial abriu excitantes possibilidades para
o reconhecimento de padrões e para capacidades de processamento de
informações semelhantes as humanas. Quando nos movimentamos para a quinta
era, os problemas associados ao software de computador continuam a se
intensificar:
A sofisticação do software ultrapassou nossa capacidade de construir um
software que extraia o potencial do hardware.
Nossa capacidade de construir programas não pode acompanhar o ritmo da
demanda de novos programas.
Nossa capacidade de manter os programas existentes é ameaçada por
projetos ruins e recursos inadequados.

10
Faculdade de Minas
Em resposta a esses problemas, estão sendo adotadas práticas de
engenharia em toda a indústria.

APLICAÇÕES DO SOFTWARE
O software pode ser aplicado a qualquer situação em que um conjunto
previamente especificado de passos procedimentais (um algoritmo) tiver sido
definido. O conteúdo de informações e a previsibilidade são fatores importantes na
determinação da natureza de um aplicativo.
Desenvolver categorias genéricas para as aplicações de softwares é uma
tarefa muito difícil. Quanto mais complexo é o sistema, mais difícil é determinar de
forma clara os vários componentes do software.
Pode-se dividir as aplicações em:
Software Básico – que é um conjunto de programas para dar apoio a outros
programas. Tem como característica uma forte interação com o hardware,
operações concorrentes, compartilhamento de recursos, uso por múltiplos usuários
e múltiplas interfaces.
Software de Tempo Real – são programas que monitora, analisa e controla
eventos do mundo real, devendo responder aos estímulos do mundo externo com
restrições de tempo pré-determinadas.
Software Comercial – é a maior área de aplicação de softwares, são
aplicações que gerenciam as operações comerciais de modo a facilitar o
gerenciamento comercial do negócio da empresa, permitindo também a tomada de
decisões.
Software Cientifico e de Engenharia – são caracterizados por algoritmos de
processamento numérico, dependentes da coleta e processamento de dados para
as mais variadas áreas do conhecimento.
Software Embutido – são desenvolvidos para executar atividades muito
específicas e inseridos em produtos inteligentes tanto para atividades comerciais
como para atividades domesticas.
Software de Computador Pessoal – são produtos desenvolvidos para o uso
pessoal do computador, tais como planilhas eletrônicas, processadores de textos,
jogos, etc..

11
Faculdade de Minas
Software de Inteligência Artificial – faz uso de algoritmos não-numéricos para
resolver problemas complexos que não apresentam facilidades computacionais
numéricas ou de análise direta.

Engenharia de Software: Uma Definição

Urna primeira definição de engenharia de software foi proposta por Fritz Bauer
na primeira grande conferencia dedicada ao assunto: "O estabelecimento e uso de
sólidos princípios de engenharia para que se possa obter economicamente um
software que funcione eficientemente cm máquinas reais."
A engenharia de software é uma derivação da engenharia de sistemas e de
hardware. Ela abrange um conjunto de três elementos fundamentais métodos,
ferramentas e procedimentos que possibilita ao gerente o controle do processo de
desenvolvimento do software e oferece ao profissional uma base para a construção
de software de alta qualidade produtivamente.
Os métodos de engenharia de software proporcionam os detalhes de "como
fazer" para construir o software. Os métodos envolvem um amplo conjunto de
tarefas que incluem: planejamento com estimativa de projeto, análise de requisitos
de software e de sistemas, projeto da estrutura de dados, arquitetura de programa e
algoritmo de processamento, codificação, teste e manutenção. Os métodos da
engenharia de software muitas vezes introduzem uma notação gráfica ou orientada a
linguagem especial e introduzem um conjunto de critérios para a qualidade do
software.
As ferramentas de engenharia de software proporcionam apoio automatizado
ou semi-automatizado aos métodos. Atualmente, existem ferramentas para
sustentar cada um dos métodos anotados anteriormente. Quando as ferramentas
são integradas de forma que a informação criada por uma ferramenta possa ser
usada por outra, é estabelecido um sistema de suporte ao desenvolvimento de
software chamado engenharia de software auxiliada por computador (CASE -
Computer-Aided Software Engineering).

12
Faculdade de Minas
O CASE combina software, hardware e um banco de dados de engenharia de
software (uma estrutura de dados contendo importantes informações sobre analise,
projeto, codificação e teste) para criar um ambiente de engenharia de software que
seja análogo ao projeto auxiliado por computador/engenharia auxiliada por
computador para o hardware.
Os procedimentos da engenharia de software constituem o elo de ligação que
mantém juntos os métodos e as ferramentas e possibilita o desenvolvimento racional
e oportuno do software de computador. Os procedimentos definem a sequência em
que os métodos serão aplicados, os produtos (deliverables) que se exige que sejam
entregues (documentos, relatórios, formulários etc.), os controles que ajudam a
assegurar a qualidade e a coordenar as mudanças, e os marcos de referência que
possibilitam aos gerentes de software avaliar o progresso.
A engenharia de software compreende um conjunto de etapas que envolve
métodos, ferramentas e os procedimentos. Essas etapas muitas vezes são citadas
como paradigmas da engenharia de software. Um paradigma de engenharia de
software e escolhido tendo-se como base a natureza do projeto e da aplicação, os
métodos e as ferramentas a serem usados, os controles e os produtos que precisam
ser entregues.

O que é engenharia de Software?

É um conjunto integrado de métodos e ferramentas utilizadas para especificar,


projetar, implementar e manter um sistema.
Segundo Ariadne Carvalho & Thelma Chiossi no livro Introdução à
Computação, a Engenharia de Software é “Uma disciplina que reúne metodologias,
métodos e ferramentas a ser utilizados, desde a percepção do problema até o
momento em que o sistema desenvolvido deixa de ser operacional, visando resolve
problemas inerentes ao processo de desenvolvimento e ao produto de software.”
Pode-se definir como:

13
Faculdade de Minas
Um método é uma prescrição explícita de como chegar a uma atividade
requerida por um modelo de ciclo de vida, visando otimizar a execução das
atividades que foram especificadas.
As ferramentas proporcionam apoio automatizado ou semi-automatizado aos
métodos.
Os Métodos de Desenvolvimento de Sistema se diferenciam pela maneira
como o problema deve ser visualizado e como a solução do problema deve ser
modelada. São eles:

Método baseado na Decomposição de Funções:

Abordagem estruturada caracterizada pela decomposição das funções. Os


tipos de modelos que representam as funções são:
DFD (Diagrama de Fluxo de Dados) – se caracteriza pela decomposição
hierárquica de processos.
MHT (Modelo Hierárquico de Tarefas) – se baseia na decomposição
hierárquica de tarefas.

Método baseado na Estrutura de Dados:


Abordagem baseada na decomposição de um problema a partir dos dados.
Exemplos de tipos de modelos dessa classe:
MER (Modelagem Entidade-Relacionamento)
Técnica de Warnier

Método de Análise baseado na Orientação a Objeto.


Os tipos de modelos que representam essa classe são:

 UML (Unified Process) – notação de modelagem, independente de


processos de desenvolvimento.
 Cenários

14
Faculdade de Minas
Paradigmas de Engenharia de Software
Segundo Roger Pressman, “Paradigmas são os modelos de processos que
possibilitam:
Ao gerente: o controle do processo de desenvolvimento de sistemas de
software,
Ao desenvolvedor: a obter a base para produzir, de maneira eficiente,
software que satisfaça os requisitos preestabelecidos. ”
Os paradigmas especificam algumas atividades que devem ser executadas,
assim como a ordem em que devem ser executadas. A função dos paradigmas é
diminuir os problemas encontrados no processo de desenvolvimento do software, e
deve ser escolhido de acordo com a natureza do projeto e do produto a ser
desenvolvido, dos métodos e ferramenta a ser utilizado e dos controles e produtos
intermediários desejados.
Os paradigmas serão estudados no em outro capitulo.

15
Faculdade de Minas

PROCESSOS DE SOFTWARE
Segundo Ian Sommerville, “Um processo de software é um conjunto de
atividades e resultados associados que levam à produção de um produto de
software.” Embora existam muitos processos de software diferentes, há
atividades fundamentais comuns a todos eles, tais como:
Especificação de software;
Projeto e implementação de software;
Validação de software;
Evolução do software.
A melhoria dos processos de software podem ser implementadas de
diferentes maneiras, como serão estudados posteriormente.

Os desafios da Engenharia de Software

Neste século XXI, os principais desafios serão:


O desafio do legado, que é fazer a manutenção e a atualização dos
softwares atuais, sem apresentar grandes custos e ao mesmo tempo prosseguir
com a prestação dos serviços corporativos essenciais;
O desafio da heterogeneidade, que refere-se a desenvolver técnicas para
construir softwares confiáveis e que sejam flexíveis para lidar com diferentes
tipos de equipamentos e sistemas;
O desafio do fornecimento, que deve apresentar uma redução do tempo
gasto no desenvolvimento e implantação do software sem comprometer a
qualidade.

TÉCNICAS DE ENTREVISTAS E DE COLETA DE DADOS

Este texto apresenta algumas diretrizes para as entrevistas que você fará
durante a fase de análise de sistemas do projeto de desenvolvimento de um
sistema. Provavelmente entrevistará usuários, gerentes, auditores,

20
Faculdade de Minas
programadores e auxiliares que utilizam sistemas já existentes (informatizados
ou manuais) e também várias outras pessoas envolvidas.

Por que fazemos entrevistas durante a análise de sistemas? Porque:


Precisamos coletar informações sobre o comportamento de um sistema
atual ou sobre os requisitos de um novo sistema de pessoas que têm essas
informações armazenadas em algum lugar em suas cabeças.
Precisamos verificar nossa própria compreensão, como analistas de
sistemas, do comportamento de um sistema atual ou dos requisitos de um novo
sistema. Essa compreensão deve ser adquirida através de entrevistas em
combinação com informações coletadas de modo independente.
Precisamos coletar informações sobre o(s) sistema(s) atual(is) para a
execução do estudo de custo/benefício para o novo sistema.

Tipos de Entrevistas
A forma mais comum de entrevista é uma reunião pessoal e direta entre
você (talvez acompanhado por até dois analistas auxiliares do projeto) e um ou
mais interlocutores (entrevistados). Normalmente são efetuadas anotações por
um dos entrevistadores; menos costumeiramente, a entrevista pode ser gravada
ou um(a) secretário(a) tomará notas durante a entrevista.
Pode-se perceber que as informações obtidas em uma entrevista também
podem ser obtidas por outros meios, por exemplo, solicitando-se que os
entrevistados respondam por escrito a um questionário formal, ou solicitando
que descrevam por escrito os requisitos do novo sistema. Também podemos
aumentar as entrevistas pela presença de vários especialistas (que podem até
conduzir a entrevista enquanto o analista de sistemas participa como
assistente), como peritos em indústria/comercio, psicólogos comportamentais e
negociadores. E, finalizando, deve-se lembrar que outros meios de obtenção de
dados (ex.: videocassete, gravadores, etc...) podem ser utilizados para registrar
uma entrevista.
Durante a década de 80, uma forma especializada de entrevista tornou-se
popular em algumas empresas; conhecida como JAD (Joint Application
Development) ou projeto acelerado, ou análise em equipe, e por vários outros

21
Faculdade de Minas
nomes. Ela consiste em uma rápida entrevista e um processo acelerado de
coleta de dados em que todos os principais usuários e o pessoal da análise de
sistemas agrupam-se em uma única e intensiva reunião (que pode prolongar-se
de um dia a uma semana) para documentar os requisitos do usuário. A reunião
costuma ser supervisionada por um profissional experiente e bem treinado que
atua como mediador para encorajar melhores comunicações entre os analistas
de sistemas e os usuários. Frequentemente, este supervisor é apoiado por
algumas pessoas que se dedicam integralmente ao processo. Embora todas
essas variações tenham de fato sido utilizadas, elas são relativamente raras e
não serão discutidas em maiores detalhes neste texto. A entrevista mais
utilizada ainda é a reunião pessoal entre um analista de sistemas e um usuário
final.

Problemas Fundamentais
Inicialmente pode parecer que o processo de entrevistar um usuário seja
uma questão simples e direta. Afinal, o analista e o usuário são pessoas
inteligentes e capazes de expressarem. Os dois são pessoas racionais e ambos
têm o mesmo objetivo: passar informações relativas a um novo sistema proposto
da mente do usuário para a do analista. Qual é o problema?
Na realidade, existem muitos problemas que podem ocorrer. Em muitos
projetos de alta tecnologia, tem-se observado que a maioria dos problemas
difíceis não envolvem hardware nem software, mas sim o pleopleware. Os
problemas de peopleware na análise de sistemas são muitas vezes encontrados
nas entrevistas. Os problemas mais comuns a que você deve estar atento são:
Entrevistar a pessoa errada no momento errado. É muito fácil, por
causa dos problemas e interesses organizacionais, falar com a pessoa que é o
perito oficial na orientação do usuário, que demonstra nada saber a respeito dos
verdadeiros requisitos do sistema; também é possível perder a oportunidade de
falar com o usuário desconhecido que realmente sabe quais são os requisitos.
Mesmo que encontre a pessoa certa, talvez o analista tente entrevistá-la durante

22
Faculdade de Minas
um período em que o usuário não está disponível ou esteja mergulhado sob
outras pressões e emergências.
Fazer perguntas erradas e obter respostas erradas. A análise de
sistemas é, como Tom DeMarco gosta de dizer, uma forma de comunicação
entre estranhos. Os usuários e os analistas de sistemas têm vocabulários
diferentes, experiências básicas diferentes e muitas vezes um diferente conjunto
de pressuposições, percepções, valores e prioridades. Desse modo, é fácil fazer
ao usuário uma pergunta racional sobre os requisitos do sistema e o usuário não
entender absolutamente a pergunta, sem que nenhum dos dois perceba o fato. E
é fácil para o usuário prestar-lhe algumas informações sobre os requisitos e o
analista não entender essas informações, novamente sem que nenhum dos dois
perceba o fato. As ferramentas de modelagem são uma tentativa de fornecer
uma linguagem comum e sem ambiguidades para diminuir esses mal
entendidos. Porém as entrevistas costumam ser realizadas em uma língua
comum (inglês, espanhol, francês, português etc.),portanto o problema é real.
Isso explica porque é tão importante marcar entrevistas subsequentes para
confirmar que ambas as partes entenderam as perguntas e as respostas.
Criar ressentimentos recíprocos. existem algumas razões pelas quais o
usuário pode não se sentir à vontade ou mesmo colocar-se em posição
antagônica na entrevista com um analista de sistema (ex.: porque ele percebe
que o verdadeiro objetivo do novo sistema que o analista está especificando é
tomar-lhe o emprego). E o analista pode ressentir-se do modo como o usuário
está respondendo as perguntas. Em qualquer caso, o ressentimento pode surgir
entre as duas partes, tornando a comunicação muito mais difícil.

Não existe um modo mágico de garantir que esses problemas não


ocorrerão; eles são a consequência das interações pessoa-a-pessoa, e cada
uma dessas interações é única. Contudo, as sugestões dadas a seguir podem
ajudar a reduzir a probabilidade desses problemas; fora isso, dependerá de
prática para melhorar cada vez mais em cada entrevista subsequente.

Diretrizes Para a Realização de Entrevistas

23
Faculdade de Minas
As seguintes diretrizes podem ser de grande auxílio na direção de
entrevistas bem-sucedidas com o usuário.

Desenvolva um Plano Geral de Entrevistas

Antes de tudo, é extremamente importante que o analista descubra quem


deve ser entrevistado. Caso contrário, desperdiçará o tempo de todos e criará
um enorme tumulto, por falar com pessoas erradas sobre coisas erradas.
Isso requer que obtenha um organograma da empresa que mostre as
pessoas da organização usuária, bem como a hierarquia entre elas. Se não
existir um organograma formal, encontrar alguém que saiba como a organização
funciona e pedir ajuda. Se o organograma existir, certificar-se de que esteja
correto e atualizado; as empresas muitas vezes modificam-se com muito mais
frequência do que o ciclo editorial anual em que os diagramas são produzidos!
O fato de conhecer o esquema organizacional não diz necessariamente
com quem o analista deve entender-se; às vezes, a pessoa que mais sabe a
respeito de algum aspecto de um sistema é um funcionário administrativo ou
burocrata que sequer aparece no organograma. Muitas vezes existem três níveis
de usuários em uma organização grande e complexa (o usuário verdadeiro, o
usuário supervisor operativo e o usuário supervisor executivo) e é muitas vezes
de grande importância falar com todos os três níveis.
Em muitos casos também é importante conversar com os usuários na
sequência adequada e na combinação certa. Por vezes o analista poderá saber
em que sequência os usuários deverão ser entrevistados face a seu
conhecimento geral da organização e por vezes os próprios usuários lhe dirão
uma vez que saibam que serão entrevistados.

Certifique-se de que tem Autorização para Falar com os Usuários

Em algumas organizações informais não haverá restrições na escolha dos


usuários com quem falar ou sobre como as entrevistas serão marcadas. Porém

24
Faculdade de Minas
isso não é comum em empresas grandes; é politicamente perigoso vagar pela
organização usuária realizando entrevistas sem prévia autorização.
Na maioria dos casos, a autorização virá ou do encarregado de um setor
usuário (um departamento ou divisão) ou do representante da empresa que
estará auxiliando o projeto de desenvolvimento do sistema. Em qualquer caso,
os usuários têm legítimas razões em querer aprovar, antecipadamente, quem
será entrevistado:
Eles podem saber que alguns usuários não serão capazes de
compreender ou exprimir bem os requisitos do sistema.
Eles podem desconfiar de que alguns dos usuários do nível operativo
sejam rebeldes que apresentarão requisitos falsos (ou requisitos que a direção
não aprova).
Eles podem recear que as entrevistas interfiram com as atribuições
normais de trabalho que os usuários tenham de executar. Por causa disso,
desejarão marcar as entrevistas para os momentos apropriados.
Eles podem recear que as entrevistas sejam vistas como o início de um
esforço de substituição dos usuários humanos por um sistema computadorizado,
provocando demissões e coisas desse gênero.
Eles podem considerar que eles próprios (os diretores) sabem mais a
respeito dos requisitos do sistema do que qualquer outro e por isso não desejam
que você entreviste qualquer usuário de nível operativo.
Pode estar havendo uma batalha política em andamento em um nível de
chefia muito mais elevado, entre o setor usuário e a organização de
desenvolvimento de sistemas. Desse modo, o gerente usuário pode não ter reais
objeções a suas entrevistas, porém, impedindo que elas sejam feitas, ele estará
enviando uma mensagem política para o chefe do chefe do seu chefe.
Por todos esses motivos, é uma boa medida obter uma prévia autorização.
Na maior parte dos casos, basta uma autorização verbal; se a organização for
terrivelmente burocrática ou paranóica, pode–se precisar de uma autorização
escrita. Isso, a propósito, também significa que o analista deve estar atento à
política organizacional se tiver certeza da necessidade de falar com um usuário

25
Faculdade de Minas
(normalmente um usuário do nível operativo) com quem tenha sido avisado para
não conversar.

Planeje a Entrevista para Fazer Uso Eficiente do Tempo

O principal aspecto desta sugestão é que deve-se compreender que está


tomando o tempo do usuário e que ele (ou o chefe dele) pode achar até que o
analista esteja desperdiçando o tempo dele. Assim sendo, é importante o
planejamento e preparação tão antecipadamente quanto possível para poder
fazer uso eficiente da entrevista.
A primeira coisa a fazer é certificar-se de que o usuário conhece o assunto
da entrevista. Em alguns casos isso pode ser feito por telefone; em outros, pode
ser adequado preparar uma lista das perguntas que serão feitas, ou dos tópicos
que serão abordados, ou dos DFD que necessita ser revisados, e remetê-la ao
usuário com um dia ou dois de antecipação. Se não puder fazer isso, é um
indício de que de fato o analista não está preparado para a entrevista. E se o
usuário não tiver lido o material remetido, é sinal de que:
está muito ocupado,
está desinteressado,
opõe-se a toda a ideia da entrevista ou
é incapaz de entender as perguntas apresentadas.
Um aspecto relacionado: coletar, antes da entrevista, tantos dados
pertinentes quanto possível. Se houver formulários ou relatórios que sejam
pertinentes à discussão, geralmente poderá obtê-los antecipadamente. Se
existirem outros documentos escritos do usuário descrevendo o novo ou o antigo
sistema consiga-os e estude-os antes da entrevista.
Se tiver preparado as perguntas antecipadamente, o analista deve ser
capaz de realizar a entrevista em uma hora ou menos. Isso é importante; não só
o usuário é geralmente incapaz de reservar mais do que uma hora de cada vez,
mas também as pessoas normalmente não conseguem se concentrar
intencionalmente (principalmente se estiverem examinando diagramas um tanto
estranhos) por mais do que uma hora. Isso naturalmente significa que deve-se

26
Faculdade de Minas
organizar a entrevista para abranger um escopo relativamente limitado,
focalizando normalmente uma parte do sistema. Isso também pode significar que
tenha de marcar algumas entrevistas com o mesmo usuário para abranger
inteiramente a área em que ele está envolvido.
Finalizando, marcar uma reunião subsequente para rever o material que
foi coletado. Normalmente, após a entrevista, o analista irá para sua mesa com
todas as informações colhidas na entrevista, e executará bastante trabalho com
os dados brutos. Pode haver DFD a serem desenhados ou itens a serem criados
no dicionário de dados; cálculos de custo/benefício podem precisar ser feitos; as
informações provenientes da entrevista podem precisar ser correlacionados com
dados de outras entrevistas, e assim por diante. Em qualquer caso, os dados
dessa entrevista serão manipulados, documentados, analisados e convertidos
em uma forma que o usuário pode nunca ter visto antes. Desse modo, pode ser
necessário marcar uma entrevista posterior para verificar:
que o analista não cometeu nenhum engano em seu entendimento do que
o usuário lhe disse,
que o usuário não mudou de opinião nesse ínterim,
que o usuário entende a notação ou a representação gráfica dessas
informações.

Utilize Ferramentas Automatizadas que Sejam Adequadas, Mas Não


Abuse
Durante a entrevista, pode-se achar conveniente utilizar ferramentas de
prototipação, principalmente se o objetivo da entrevista for discutir a visão que o
usuário tem da interface pessoa-máquina. De modo semelhante, se estiver
revisando um diagrama de fluxo de dados e discutindo possíveis modificações,
poderá achar prático usar umas ferramentas CASE.
Lembre-se, que o objetivo dessas ferramentas é facilitar as discussões e
não complicá-las; elas devem permitir que o analista e o usuário examinem
alternativas e modificações com rapidez e facilidade; elas podem ajudar a

27
Faculdade de Minas
registrar o conhecimento de um requisito do usuário e corrigir imediatamente
quaisquer erros que tenha sido cometido.
Se, a tecnologia introduzir-se no assunto, deve-se deixar fora da
entrevista. Se o usuário tiver de aventurar-se além de seu ambiente normal de
atividade (para outro prédio, na sala do computador) poderá encarar a
ferramenta como um aborrecimento. Se o usuário não estiver familiarizado com
a tecnologia de computadores e for solicitado a utilizar a ferramenta, poderá
rejeitá-la. E se o analista não estiver familiarizado com a ferramenta (ou se a
ferramenta for lenta, apresentar erros ou de emprego limitado) isso interferirá
sensivelmente na entrevista. Em qualquer desses casos, talvez seja preferível
usar a ferramenta off-line depois da entrevista; então, poderá mostrar ao usuário
a saída da ferramenta sem causar quaisquer problemas desnecessários.

Tente Descobrir quais Informações o Usuário tem mais


Interesse

Se o analista tiver de desenvolver um modelo completo de sistema para


alguma parte de um sistema, possivelmente necessitará determinar entradas,
saídas, funções, características tempo-dependentes e a memória armazenada
do sistema. Porém a ordem em que se obtém essas informações costumam não
ter muita importância. Mas pode significar muito para o usuário, e deve deixá-lo
começar a entrevista por onde ele preferir. Alguns usuários desejarão começar
pelas saídas, isto é, pelos relatórios e valores de dados que eles querem que o
sistema produza (na realidade, eles talvez nem saibam que entradas serão
necessárias para produzir as saídas desejadas). Outros usuários poderão estar
mais interessados nas entradas ou nos detalhes de uma transformação
funcional. Outros ainda preferirão falar sobre os detalhes dos dados de um
depósito de dados. Deve-se esforçar para enxergar os requisitos do sistema da
perspectiva desses usuários, e conservar esta perspectiva em mente quando
fizer as perguntas necessárias sua entrevista.

28
Faculdade de Minas
Use um Estilo Adequado de Entrevistar

Como diz William Davis [Davis, 1983]: Sua atitude em relação à entrevista é
importante na determinação de seu sucesso ou fracasso. Uma entrevista não é
uma competição. Evite ataques; evite o uso excessivo do jargão técnico; conduza
uma entrevista, não uma tentativa de persuasão. Fale com as pessoas, não fale
muito alto, nem muito baixo, nem indiretamente. Uma entrevista não é um
julgamento. Faça perguntas detalhadas, mas não faça perguntas para confirmar
outras respostas. Lembre-se que o entrevistado é o perito e que é você que
precisa de respostas. Para concluir, de modo algum critique a credibilidade de
outras pessoas. Fazer perguntas detalhadas nem sempre é fácil; dependendo
da personalidade do entrevistado e do tema da entrevista, pode-se precisar de
um conjunto de estilos para extrair as informações necessárias. Alguns estilos
que podem mostrar-se úteis:
Relacionamentos. Pedir ao usuário para explicar o relacionamento entre
o que está em discussão e as demais partes do sistema. Se o usuário estiver
falando sobre um assunto (p.ex.: um cliente), pedir-lhe que explique seu
relacionamento sob outros aspectos; se ele estiver descrevendo uma função
(ex.: uma bolha de um DFD), pedir- lhe que explique seu relacionamento com
outras funções. Isso não só o auxiliará a descobrir mais detalhes sobre o item
em pauta, mas também o ajudará a descobrir interfaces (ex.: fluxos de dados
de uma bolha para outra no DFD) e relacionamentos formais.
Pontos de vista alternativos. Solicitar ao usuário que descreva o ponto
de vista de outros usuários em relação ao item que esteja sendo discutido.
Perguntar ao usuário, por exemplo, o que seu chefe pensa sobre uma bolha
do DFD, ou um tipo de objeto do DER; ou pergunte o que pensa seu
subordinado.
Detalhamento. Solicitar ao usuário uma informal descrição narrativa do
item em que estiver interessado. Fale-me sobre o modo como você calcula o
valor das remessas. Ou, se estiver falando com o usuário sobre um tipo de
objeto no DER, poderia dizer- lhe: Fale-me a respeito de um cliente. O que
você sabe (ou precisa saber) sobre um cliente?

29
Faculdade de Minas
Dependências. Perguntar ao usuário se o item em discussão depende,
para sua existência, de alguma outra coisa. Isso é especialmente útil quando
se discutem possíveis tipos de objetos e relacionamentos no DER. Em um
sistema de controle de pedidos, por exemplo, pode-se perguntar ao usuário
se seria possível haver um pedido sem que haja um cliente.
Confirmação. Dizer ao usuário o que acha que ouviu ele dizer; usar suas
próprias palavras em lugar das dele e peça confirmação. Pode-se dizer:
Deixe-me ver se entendi o que você disse...

Possíveis Formas de Resistência na Entrevista


Deve-se estar preparado para o fato de que alguns usuários serão
contrários à ideia de uma entrevista; essa é uma das razões para garantir que o
chefe ou alguém com autoridade no setor esteja ciente e tenha permitido a
entrevista. Algumas das objeções mais comuns e algumas possíveis respostas a
essas objeções:

Você está tomando tempo demais de mim. A resposta a isso é explicar


que compreende, e desculpar-se pelo tempo que precisará tomar, mas que já
preparou tudo e fará a entrevista no tempo mais curto possível. Isso
naturalmente exige que o analista chegue pontualmente na hora marcada para o
início da entrevista, mantenha a discussão no rumo previsto, e encerre-a no
momento em que tenha dito que o faria.
Você está ameaçando meu emprego. Isso muitas vezes é uma reação
emocional que pode ou não ter fundamento. Embora possa pensar em várias
maneiras de responder a esse comentário, lembre-se de que o analista não é o
patrão dessa pessoa e que não está em posição de garantir que o emprego dela
não esteja em perigo, ou de informá-la do contrário. Ele vai considerar o analista
como o perito em eficiência cuja tarefa é orientar a direção em como o emprego
dele pode ser eliminado pela informatização. A solução para esse problema,
caso ele ocorra, é fazer com que seja levado ao conhecimento dos níveis
superiores dos usuários e obter o pronunciamento oficial, se possível,
pessoalmente ou por escrito.

30
Faculdade de Minas
Você não conhece nossa empresa, como você quer dizer-nos como
deve ser o novo sistema? A resposta a essa pergunta é: Você tem razão! E por
isso que o estou entrevistando para saber o que você pensa sobre quais devam
ser os requisitos!. Por outro lado, deverá sugerir várias maneiras de melhorar as
coisas (especialmente se parte ou todo o serviço realizado atualmente pelo
usuário for em um antigo e ineficiente sistema); assim, esse tipo de comentário
pode ser inevitável. Entretanto, o verdadeiro truque é continuar sendo tão
respeitoso quanto possível e reconhecer constantemente a experiência do
usuário na sua área, embora continuando a perguntar se ele poderia explicar-lhe
porque sua ideia não funcionaria.

Você está tentando mudar o modo como as coisas são feitas aqui. O
artifício neste caso é mostrar ao usuário que embora possa estar propondo
algumas (radicais) mudanças na implementação do sistema atual, não é
pensamento modificar as características essenciais desse sistema, exceto nas
áreas onde eles mesmos tenham solicitado uma alteração. Devemos lembrar,
que algumas das características da implementação do sistema atual podem ser
preservadas, por causa das interfaces do sistema atual com outros sistemas
externos que exijam que as entradas ou saídas apresentem formatos prescritos.

Não queremos esse sistema. Esta é uma variação da queixa você está
querendo tirar meu emprego. A verdadeira resposta é que o analista está ali,
conduzindo a entrevista, porque a direção quer o novo sistema. Não é da sua
competência convencer os usuários operativos que eles devem querer o novo
sistema; fazer isso é colocar o peso da responsabilidade sobre seus ombros,
onde ela não deve ficar.

Por que você está desperdiçando nosso tempo com esta entrevista?
Sabemos o que queremos, e se você fosse competente, você saberia
imediatamente o que queremos. Por que você não vai em frente e constrói o
sistema? Esta é uma reclamação difícil de se lidar, porque relaciona-se com o
fato fundamental de que os usuários e os analistas de sistemas estão falando
línguas diferentes e estranhas. Lembre-se, que com a disponibilidade das

31
Faculdade de Minas
linguagens de quarta geração e dos computadores pessoais, o usuário pode
achar que pode construir ele próprio o sistema; sucessos fáceis com projetos
simples (planilhas eletrônicas, por exemplo) podem ter-lhe dado a impressão de
que todos os sistemas são fáceis de implementar. Isso pode explicar a
impaciência em relação ao analista.

Outros Problemas
As diretrizes acima alertaram sobre os inúmeros problemas políticos com
que o analista pode se defrontar em uma entrevista e os muitos motivos pelos
quais o usuário pode mostrar- se hostil. Mas ainda existem alguns problemas
para os quais deve-se estar atento:

Uma discussão que focalize mais os problemas de implementação do


que os problemas dos requisitos. Isso muitas vezes ocorre quando o usuário
diz: Eis como eu gostaria que você construísse o sistema Isso acontece quase
sempre quando o usuário está raciocinando em termos da implementação do
sistema atual; e pode acontecer se o usuário conhecer alguma coisa da
tecnologia de computadores (ex.: quando ele possui um PC particular ou quando
ele é um ex-programador). Lembrar que não é obrigação em uma entrevista de
análise descrever características de implementação do sistema a não ser que
sejam tão importantes que realmente pertençam ao modelo de implementação
do usuário.

Confusão entre sintomas e problemas. Isso ocorre em muitas áreas, não


apenas na área do processamento de dados. O que pode acontecer nas
entrevistas de análise de sistemas. Entretanto, boa parte dele depende de onde a
fronteira foi estabelecida no diagrama de contexto: se a queixa do usuário é um
sintoma ou um problema depende de ela estar associada a alguma coisa dentro
dos limites do sistema ou fora deles. Desse modo, deve-se dar especial atenção
ao desenvolvimento do modelo ambiental.

O usuário pode ser incapaz de explicar o que ele quer que o sistema
faça ou pode mudar de opinião. Esse é um problema comum e o analista de

32
Faculdade de Minas
sistemas deve estar preparado para ele. Quanto maior for esse problema mais
importante torna-se a prototipação.

Desentendimento entre usuários de mesmo nível, subordinados e


chefes. Infelizmente, isso coloca o analista de sistemas no papel de mediador
entre as partes em desentendimento. Como analista, não pode abdicar desse
papel; não pode dizer: Quando vocês decidirem o que querem e entrarem em
um acordo, procurem-me. Em vez disso, deve-se agir como um negociador
conduzindo todos os interessados a uma sala e trabalhando com eles na
tentativa de chegar a um consenso. Isso, infelizmente, envolve habilidades e
procedimentos fora do escopo deste texto.

Descobrir disparidades entre o padrão oficial e a pratica do trabalho.


Durante as entrevistas, o analista descobre que podem existir algumas
disparidades entre a versão oficial de como o sistema funciona e como
realmente ocorre no nível operacional. Neste caso, o analista deve utilizar a
diplomacia quando relatar estas discrepâncias para a gerência, pois o pessoal
de nível operacional pode relutar em admitir que as operações nem sempre
seguem os padrões oficiais de trabalho.

Formas Alternativas de Coleta de Dados


As entrevistas não são o único modo de coleta de informações sobre os
requisitos de um sistema. Na realidade, quanto mais informações puder colher de
outras fontes, mais produtivas poderão ser as entrevistas pessoais. Alternativas
para as entrevistas:

Questionários. Pode remeter questionários escritos para os usuários


dentro da organização, para as pessoas (ou setores) que interagem com o
sistema, para os diretores que aprovaram o projeto e para outros.

Demonstrações feitas pelos fornecedores. Os fornecedores de


hardware e os fornecedores de software podem já haver desenvolvido sistemas
prontos para a aplicação em que você esteja interessado. Solicitando-lhes uma
demonstração dos recursos desses sistemas pode não somente auxiliá-lo a

33
Faculdade de Minas
decidir se o produto é uma boa solução, mas também revelar funções e dados
armazenados que você pode não ter percebido.

Visitas a outras instalações. Procure outras empresas que estejam no


mesmo ramo de atividades ou que tenham sistemas semelhantes aquele em
que você esteja trabalhando. Combine uma visita à instalação para obter
informações diretas sobre as características e aptidões do sistema.

Coleta de dados. Procure formulários, relatórios, manuais, procedimentos


escritos, registros, imagens de tela de terminais e listagens de programas que já
existam na organização usuária. Lembre-se, todavia, que esses recursos
normalmente estão relacionados com a implementação atual do sistema;
devemos lembrar que isto costuma incluir informações redundantes e/ou
contraditórias e/ou obsoletas. Não obstante, isto muitas vezes é um bom ponto
de partida para você familiarizar-se com o terreno antes de iniciar as entrevistas
pessoais com o usuário.

Pesquisa externa. Se você estiver construindo um sistema para uma nova


aplicação, para a qual o usuário não dispõe de qualquer experiência para
descrever os requisitos, talvez seja necessário tentar obter informações em
sociedades profissionais, ou em periódicos e livros técnicos e em relatórios de
pesquisas.

Questionário de Pesquisa
Essa ferramenta é muito conveniente quando há um grande número de
usuários ou vários grupos de usuários em locais diferentes. Nestas situações
não é prático entrevistar todas as pessoas, mas tão logo as informações obtidas
através dos questionários tenham sido analisadas, podem ser realizadas
entrevistas com usuários selecionados.

Podem ser usados diversos formatos para o questionário de pesquisa, tais


como: de múltipla escolha, lista de verificação (checklist), questões abertas
(descritivas) e combinações das anteriores. Os passos para a utilização do
questionário de pesquisa são:

Preparação do questionário:

34
Faculdade de Minas
Identifique o tipo de informação que deseja obter, como problemas
experimentados ou oportunidades a explorar;
Definidos os requisitos, escolha um formato apropriado para o
questionário;
Monte questões de forma simples, clara e concisa;
Se incluir questões abertas, observar o espaço necessário para a
resposta;
Agrupar as questões por tópicos ou áreas afins;
Se possível, enviar junto com o questionário uma carta da direção da
empresa explicando os motivos e a importância da pesquisa para a organização.
Identificação dos respondentes
O questionário deve ser personalizado com o nome, função e localização
do respondente;
Elaborar um controle de identificação das pessoas que receberão os
questionários. Utilizar o controle para monitorar a situação dos questionários.
Distribuição do questionário
Distribua o questionário junto com as instruções de preenchimento;
Indique claramente o prazo para a devolução do questionário e a forma de
devolução.
Análise das respostas
Consolide e análise as informações fornecidas pelos questionários
devolvidos;
Documente as principais descobertas;
Envie uma cópia do relatório com as principais descobertas para cada
respondente como uma cortesia pelo tempo dedicado à pesquisa.

Observações no ambiente
A análise de observação é uma técnica de observação de fatos muito
efetiva. Ela pode ser usada para diversas finalidades, como processamento e
confirmação de resultados de uma entrevista, identificação de documentos que

35
Faculdade de Minas
devem ser coletados para análise, esclarecimento do que está sendo feito no
ambiente atual.
Esta técnica é simples. Durante algum tempo, o analista fica observando
os usuários em seu ambiente enquanto eles executam suas tarefas diárias.
Frequentemente o analista fará perguntas para conhecer o funcionamento e as
atividades desenvolvidas. É importante explicar para as pessoas que serão
observadas o que será observado e porquê. Os passos para a observação são:
Antes:

Identifique as áreas a serem observadas;


Obter a aprovação da gerencia apropriada para executar a observação;
Obter os nomes e funções das pessoas-chaves que serão envolvidas no
estudo de observação;
Explicar a finalidade do estudo;
Durante:
Familiarizar-se com o local de trabalho a ser observado;
Observar os agrupamentos organizacionais atuais;
Observar as facilidades manuais e automatizadas em uso;
Coletar amostras de documentos e procedimentos escritos que são
utilizados nos processos observados;
Acumular informações estatísticas das tarefas observadas: freqüência que
ocorrem, estimativas de volumes, tempo de duração, etc...
Enquanto interage com os usuários, tente ser objetivo e não comentar as
formas de trabalho de maneira não construtiva;
Observar também as exceções;
Terminando as observações, agradeça às pessoas o apoio e a
colaboração dispensada ao seu trabalho.
Após:
Documente as descobertas resultantes das observações;
Consolide os resultados;

36
Faculdade de Minas
Reveja os resultados consolidados com as pessoas observadas e/ou com
seus superiores.

37
Faculdade de Minas

OS PARADIGMAS DA ENGENHARIA DE SOFTWARE


Um paradigma de engenharia de software é escolhido tendo como base: a
natureza do projeto e da aplicação, os métodos e as ferramentas a serem usadas,
os controles e os produtos que precisam ser entregues ao usuário.

O Ciclo de Vida Clássico


São utilizados conceitos de Engenharia de Software, a qual prevê atividade
de verificação (estamos fazendo o produto de forma correta?), validação (estamos
fazendo o produto certo?) e de controle de qualidade. É um paradigma que utiliza
um método sistemático e sequencial em que o resultado de uma fase se constitui
na entrada de outra.
As vezes chamado de modelo cascata, este paradigma abrange atividades
(ou ciclos) de:
Engenharia de Software: quanto mais dados forem coletados em nível de
sistema, menor será a probabilidade de haver "bugs" no sistema,
consequentemente diminuirá os futuros reparos no mesmo. Também conhecido
como estudo de viabilidade.

1. Análise e Especificação de Requisitos de software: é importante saber o


que o cliente quer que o software tenha, com relação à recursos. Os requisitos
devem ser documentados e revistos com
o cliente antes de
começar a execução do
projeto.
2. Projeto: envolve muitos
passos que se
concentram em
2 atributos distintos
do programa: estrutura
de dados, arquitetura de
software, detalhes
procedimentais e
caracterização de
interface. O processo de
feitura do projeto traduz
quanto à qualidade
antes de iniciar a
codificação.
1. Codificação: o projeto
deve ser transformado
em programa,
usando uma linguagem de programação, isto é, traduzido numa linguagem de

38
Faculdade de Minas
máquina.
2. Testes e Integração do sistema: deve-se testar todas os programas a
procura de erros. A Integração consiste das junções das várias unidades e
programas desenvolvidos. O resultado real deve concordar com o projeto ou
resultado exigido. Depois de testado, o software é entregue ao usuário.
3. Manutenção e Operação: o sistema é instalado e colocado em uso,
indubitavelmente o software sofrerá mudanças depois que foi entregue ao
cliente, e, mesmo software embutido sofre upgrade de tempos em tempos. A
manutenção ocorre basicamente com a correção de erros não detectados
(manutenção corretiva), com a adaptação da aplicação às mudanças do
ambiente (manutenção adaptativa) e na adição de novas características e
qualidades do software (manutenção evolutiva).

O ciclo de vida clássico é o paradigma mais antigo e o mais amplamente usado


em Engenharia de Software, mesmo assim surgirão, ou surgem problemas como:
Os projetos reais raramente seguem o fluxo sequencial que o modelo
propõe.
O cliente, amiúde, não saberá declarar todas as suas exigências.
O cliente deve ter paciência, pois qualquer erro detectado após a revisão do
programa de trabalho pode ser desastroso.
Os problemas são reais, mas, mesmo assim o ciclo de vida clássico continua
sendo o mais usado no desenvolvimento de software. Este modelo é apropriado
para sistemas transacionais onde as rotinas e procedimentos a serem
automatizados são altamente estruturados. A principal desvantagem desta
abordagem é o alto custo de correção das especificações quando nas fases de
Teste e Implantação..

Prototipação
Muitas vezes, as dúvidas do cliente e do programador, em relação ao
software, levam ao processo de prototipação. A prototipação capacita o
desenvolvedor a criar um modelo de software que será implementado. O objetivo é
antecipar ao usuário final um modelo de sistema para que ele possa avaliar sua
finalidade, identificar erros e omissões, quando em utilização, efetuando de
imediato correções e ajustes. O modelo pode assumir uma das três formas citadas:

39
Faculdade de Minas
Um protótipo em papel ou em PC, que retrata a interação homem máquina,
podendo ver quantas interação haverá.
Um protótipo que implemente funções específicas, da função exigida pelo
software.
Um programa existente que executa parte ou toda a função desejada, mas
que tem características que deverão ser melhoradas.

Fim Início

Como todas as abordagens ao


desenvolvimento de software, a
prototipação inicia-se com a coleta de
requisitos. Faz-se então um projeto
rápido contendo os aspectos que serão Colet
visíveis ao cliente. O projeto rápido leva a e Proj
à construção de um protótipo, que, refinamento eto Rápido
será avaliado pelo cliente/usuário. dos requisitos
Esta avaliação será usada para
refinar requisitos para o software
E
desenvolvido.
ngenharia
Idealmente, o protótipo serve do
como um mecanismo para identificar
P C
os requisitos de software. Muitas
onstrução
vezes, é preciso descartar um roduto
do
Protótipo

protótipo e, partir do início para evitar Ref


perda de tempo com correções. inamento Avaliação
do do Protótipo pelo
Esse paradigma pode apresentar Cliente
problemas pelas seguintes razões: Produto

40
Faculdade de Minas

O cliente quer resultados, e, muitas vezes não saberá, ou não entenderá, que um
protótipo pode estar longe do software ideal, que ele nem sequer imagina como é.
Mesmo assim, a gerência de desenvolvimento cede às reclamações e tenta encurtar o
prazo de entrega, o qual já estava prolongado.
O desenvolvedor, na pressa de colocar um protótipo em funcionamento, é levado
a usar um SO ou linguagem de programação imprópria por simplesmente estar a
disposição ou estar mais familiarizado. Essa atitude poderá levar à um algoritmo
ineficiente.

A filosofia de protótipos possui as seguintes vantagens:

Maior garantia de sucesso técnico e psicológico;

Redução no fator tempo: "O usuário gosta de ver o sistema funcionando";

Ideal para sistemas gerenciais e de apoio a decisão. Como desvantagens


tem-se:

Exige elevada capacitação gerencial por parte da equipe do projeto;

Aparentemente, mais dispendioso (a longo prazo está desvantagem tende a


desaparecer);

Exige uma ferramenta apropriada de prototipação.

O protótipo é baseado no feedback dos usuários, devido a isso mudanças são


feitas no protótipo. Dependendo do comentário dos usuários, estas mudanças podem
ser menores, de modo que alterem formatos, ou podem ser maiores, de modo que são
requeridas mudanças estruturais no protótipo.

Ainda que possam ocorrer problemas, o uso da prototipação é um paradigma


eficiente na Engenharia de Software. O segredo é o entendimento entre o
desenvolvedor e o cliente.

41
41
Faculdade de Minas
O MODELO ESPIRAL
Foi desenvolvido para abranger as melhores características do ciclo de vida
clássico e da prototipação, ao mesmo tempo que adiciona um novo elemento, que é a
análise de risco. Este modelo de ciclo de vida se utiliza de protótipos por se adequar
muito bem com esta filosofia de desenvolvimento. Cada passo através do ciclo inclui:
planejamento, análise e projeto, prototipação e avaliação. Os passos vão sendo
repetidos até que um produto seja obtido. Sendo assim definiu-se 4 importantes
atividades:
Planejamento, determinação de objetivos, alternativas e restrições do ciclo,
considerando os resultados do ciclo anterior ou da análise dos requisitos.
Análise dos riscos, análise das alternativas e identificação (resolução) dos riscos.
Engenharia, Desenvolvimento e verificação da solução escolhida.
Avaliação do Cliente, avaliação dos resultados e planejamento do ciclo seguinte.
Os riscos são circunstancias adversas que podem atrapalhar o processo de
desenvolvimento e a qualidade do produto a ser desenvolvido, assim é possível prever e
eliminar os problemas de alto risco através de um planejamento e projetos cuidadosos.
Este é um modelo que atende os seguintes casos:
o problema a ser resolvido não está totalmente entendido;
a realidade pode mudar enquanto o sistema está sendo desenvolvido;
a própria solução adotada pode ter algum efeito colateral desconhecido;
a preocupação está centrada mais na qualidade e funcionalidade do que se
produz.

42
42
Faculdade de Minas

Com base na experiência adquirida com a primeira versão, estabelecem-se novos


requisitos para o sistema, e uma nova versão é concebida e implementada. A
prototipação no ciclo de vida espiral tem como objetivos:
estabelecer um diálogo intensivo entre usuários e analistas/projetistas;
encurtar ao máximo o ciclo "concepção-implementação-utilização-avaliação" do
sistema;
possibilitar a evolução do sistema através de vários ciclos ou refinamentos
sucessivos;
avaliar constantemente o sistema.
Baseado principalmente em decisões de prosseguir / não prosseguir, de acordo
com a avaliação, seja do cliente ou do desenvolvedor, o modelo espiral tende à uma
trajetória que ruma para o modelo mais completo do sistema.
O paradigma de modelo espiral, é atualmente a abordagem mais realista para o
desenvolvimento de softwares e sistemas em grande escala. Ele usa uma abordagem
"evolucionária", capacitando o desenvolvedor e o cliente a entender e reagir aos riscos,
em cada etapa evolutiva da espiral. Usa a prototipação como um mecanismo de redução
de riscos, e a mesma pode ser aplicada em qualquer ponto evolutivo. Porém, pode ser
difícil convencer grandes clientes de que a abordagem evolutiva é controlável. Se um

43
43
Faculdade de Minas
grande risco não for descoberto, com certeza ocorrerão problemas.
Esse paradigma é relativamente novo, e não tem sido amplamente usado como
os 2 paradigmas anteriormente explicados. Somente o tempo, que gera a experiência,
poderá comprovar a eficácia do modelo espiral.

TÉCNICAS DE 4A GERAÇÃO (4GT)

Abrange um amplo conjunto de ferramentas para o desenvolvimento de software que


tem uma coisa em comum: cada uma delas possibilita que o desenvolvedor especifique
alguma característica do software num nível elevado. O código fonte é gerado
automaticamente, tendo por base a especificação do desenvolvedor. Praticamente pode-se
dizer à máquina, em linguagem natural, as especificações que se quer para o software.

O paradigma 4GT possibilita


resultados em um pequeno período de
C
tempo. A parte de codificação, geração de oleta de
telas, relatórios, consultas, em fim a Requisitos
programação propriamente dita, se torna
Es
automatizada. A parte considerada difícil, tratégia de
ou mesmo rotineira, seria a coleta de
dados com o cliente. Saber o que o cliente Impl
ementação
quer, ainda é o principal problema de
Pro usando 4GL
todos os paradigmas. Com a utilização de
4GL, talvez seja possível passar da coleta jeto
T
diretamente para a implementação. estes
Porém, mesmo usando uma 4GL, é
preciso fazer um planejamento do sistema,
para evitar problemas de má qualidade,
manutebilidade ruim e má aceitação do
cliente.

Ferramentas como o Access, da Microsoft, podem fazer "milagres" pelo


programador. Porém, para transformar uma 4GT em um produto, o desenvolvedor deve
desenvolver testes cuidadosos e uma documentação significativa, além de executar
todas as demais atividades de "transição", que os paradigmas anteriores executam. O
sistema deverá possibilitar rápida manutenção.
Os opositores do paradigma 4GT, afirmam que tais ferramentas são insuficientes

44
44
Faculdade de Minas
e que a manutebilidade de grandes sistemas de software desenvolvidos pelas 4GT
estão abertas a questionamentos.
A prós e contras na discussão sobre este paradigma:
Com raras exceções as 4GT’s se limitam a aplicações de sistemas de informação
comercial. Mas, utilizando ferramentas CASE, que agora suportam o uso das 4GT’s,
para a geração automática de esqueleto de código para as aplicações de engenharia
em tempo real.
Os dados preliminares, coletados em empresas que estão usando 4GT parecem
indicar redução na quantidade de planejamento e análise para aplicações pequenas e
intermediárias.
Entretanto, o uso das 4GTs ainda exige tanto ou mais análise, planejamento e
teste.
A projeção é que a demanda de software continue em ascensão, mas, que os
paradigmas convencionais perderão espaço no mercado de desenvolvimento, para as
4GTs.

Modelo por incremento


Nos modelos por incremento, também chamado de modelo evolutivo, um único
conjunto de componentes é desenvolvido simultaneamente, num primeiro tempo o
núcleo do software e depois os incrementos vão sendo agregados.
As atividades de desenvolvimento e validação são desempenhadas
paralelamente, com um rápido feedback entre elas. O processo de desenvolvimento de
cada incremento é realizado usando um processo clássico dos já estudados
anteriormente.
As vantagens são:

Cada desenvolvimento é menos complexo.


As integrações são progressivas.
A cada interação, uma nova versão do produto pode ser distribuída. Os
riscos são:
Os problemas no núcleo do software, inviabilizando novos incrementos, e

45
45
Faculdade de Minas
determinando o fim do ciclo de vida do software.
Incapacidade de integrar novos incrementos
São usados em grandes projetos e também em softwares desenvolvidos para
distribuição em grande escala, por permitir evolução e melhorias sem descaracterizar o
software.

Combinando Paradigmas
Os paradigmas podem e devem ser combinados de forma que as potencialidades
de cada um, possam ser utilizados em um único projeto. Qualquer paradigma pode
constituir a base a qual os outros poderão ser integrados.
O processo começa com a determinação dos objetivos, alternativas e restrições e
depois disso, qualquer caminho pode ser tomado. A natureza da aplicação é que vai
determinar o paradigma a ser utilizado, e a combinação de paradigmas só tende a
beneficiar o processo como um todo.

OS PROCESSOS DE SOFTWARE
Um processo de software é um conjunto de atividades e resultados associados
que levam à produção de um produto de software. Esse processo pode envolver o
desenvolvimento de software desde o início, embora, cada vez mais, ocorra o caso de
um software novo ser desenvolvido mediante a expansão e a modificação de sistemas
já existentes.

Modelos de processos de software


Um modelo de processo representa um processo a partir de uma perspectiva
particular, de uma maneira que proporciona apenas informações parciais sobre o
processo. Esses modelos genéricos não são descrições definitivas de processos de
software, mas são abstrações úteis, que podem ser utilizadas para explicar diferentes
abordagens do desenvolvimento do software.

46
46
Faculdade de Minas
Modelo em Cascata
É o primeiro modelo publicado do processo de desenvolvimento de software, já
estudado no capitulo 2.
O resultado de cada fase envolve um ou mais documentos que são aprovados e
assinados. A fase seguinte só é iniciada após a conclusão da fase precedente, mas na
prática eles se sobrepõem e trocam informações. Durante o projeto, são identificados
problemas com os requisitos; durante a codificação são verificados problemas do projeto,

e assim por diante. O processo não é um modelo linear simples, mas envolve uma
sequência de iterações das atividades de desenvolvimento.Devido aos custos de
produção e aprovação de documentos, as iterações são onerosas e envolvem muito
retrabalho. Depois de algumas iterações é normal suspender partes do desenvolvimento da
fase e passar para o próximo estágio, postergando soluções ainda não encontradas. Essa
suspensão prematura pode resultar em problemas futuros, quando da finalização do
software.Desenvolvimento Evolucionário

47
47
Faculdade de Minas
Tem como ideia o desenvolvimento da versão inicial que é exposta aos comentários
do usuário e a partir destes é desenvolvido uma versão intermediária que é exposta aos
comentários do usuário e assim sucessivamente (gera várias versões) até que um sistema

adequado tenha sido desenvolvido.


Há duas formas de desenvolvimento:
Desenvolvimento exploratório – tem como objetivo trabalhar com o cliente e
explorar os seus requisitos e entregar um sistema final;
Prototipos descartáveis – tem como objetivo compreender os requisitos através
dos prototipos e depois desenvolver uma definição dos requisitos para o sistema.

Desenvolvimento formal de sistemas


É uma abordagem que tem pontos em comum com o modelo em cascata, mas
cujo processo de desenvolvimento tem como base a transformação matemática formal
de uma especificação de sistemas em um programa executável

O desenvolvimento formal de sistema:

48
48
Faculdade de Minas
A transformação formal:

Cada etapa acrescenta mais detalhes, mas ainda é matematicamente correta, até
que a especificação formal seja convertida em um programa equivalente.

Desenvolvimento Orientado a Reuso

Na maioria dos projetos de software já ocorre de modo informal algum reuso


de software. A abordagem aqui descrita propõe a utilização de componentes
previamente desenvolvidos e que podem ser utilizados por vários sistemas da
forma que foram confeccionados. Existe uma ampla base de componentes de
software reutilizáveis, que podem ser acessados, e com alguma infra-estrutura de
integração para esses componentes.

Este modelo tem a vantagem de reduzir a quantidade de software a ser


desenvolvido, portanto de reduzir custos e riscos, permitindo desta forma a entrega mais

49
49
Faculdade de Minas
rápida do software. Contudo, as adequações nos requisitos podem ser inevitáveis e
pode resultar em um sistema que não atenda as necessidades do usuário, além de que
novas versões dos componentes reutilizáveis podem não estar sob controle da equipe
de desenvolvimento.

O DESENVOLVIMENTO DE SISTEMAS E AS SUAS ETAPAS

O Desenvolvimento na visão Pressman,


O desenvolvimento, segundo Presman é realizado em três fases:

Fase de Definição
Planejamento do software: descrição do escopo, análise do esforço, análise de
riscos, levantamento dos recursos exigidos, estimativas de custos e de prazos. O
objetivo é fornecer uma indicação da viabilidade do software; fase de análise e
requisitos do software: a análise forma do domínio da informação é utilizada para
estabelecer modelos de fluxo de dados e da estrutura da informação. Alternativamente
pode ser feito um protótipo. Estes modelos são detalhados para se tornar uma
especificação do software, que é o documento produzido com resultado desta fase.

Planejamento do Análise de
Funções do Projeto de Revisão Requisitos ou Revisão
Sistema Software Prototipação

Fase de Desenvolvimento

Descrição de estrutura modular, definição de interfaces, uma estrutura de dados é


estabelecida. Uma especificação de projeto é produzida. E a codificação é realizada.

50
50
Faculdade de Minas
Projeto de Projeto de
arquitetura R Projeto R arquitetura R
Revisão Revisão Revisão
Procedimental

Fase de Verificação, Liberação e Manutenção

Realização de testes para descobrir o máximo de erros. Faz-se a manutenção


do software ao longo da sua vida útil.

Testes de
Unidades, de Depuração Liberação e R Manutenção
Integração e Validação Distribuição evisão

Conceitos utilizados no desenvolvimento:


Metodologias de Desenvolvimento - maneira de se utilizar um conjunto
coerente e coordenado de métodos para atingir um objetivo. Em outras palavras,
a metodologia deve definir quais as fases de trabalho previstas no
desenvolvimento de sistemas.
Método - é um procedimento a ser adotado para se atingir um objetivo.

Técnica - é um modo apropriado de se investigar sistematicamente um


determinado universo de interesse ou domínio de um problema. Ex: análise estruturada,
análise essencial e projeto estruturado.

Notação - é um conjunto de caracteres, símbolos e sinais formando um sistema


convencionado de representação.

Ferramentas

Diagrama de Fluxo de Dados


Diagrama Entidade Relacionamento Produção De Modelos.

Exemplos: Modelo Funcional,


Modelo Conceitual De Dados

Diagrama de Transição
51
de Estados
51
Faculdade de Minas

A metodologia deve estabelecer quais os pontos de controle e padrões de


qualidade

Técnicas utilizadas no desenvolvimento de sistemas

Técnicas Abordagens Ferramentas


Análise Tradicional Funcional Textos e Fluxogramas
Diagrama de fluxo de dados
Funcional Diagrama de estrutura de dados
Análise Estruturada
Dados Normalização
Dicionário de dados
Tabela
Funcional Diagrama de fluxo de dados
Analise Essencial Dados Diagrama de entidade-relacionamento
Controle Diagrama de transição de estados

Funcional Diagrama de classes de objetos


Analise Orientada à
Objetos Dados Cenários e maquinas de estados
Componentes Diagrama de fluxo de dados

TÉCNICA ESTRUTURADA
Neste capitulo serão apresentadas as técnicas estruturadas utilizadas no
desenvolvimento de sistemas, e que podem também ser chamadas de: técnicas de
melhoria de produtividade, técnicas de produtividade na programação ou ainda técnicas
de engenharia de software. Elas incluem os seguintes tópicos:

Análise estruturada;

Projeto estruturado;

Programação estruturada;

Desenvolvimento top-down;

Equipes de programação;

52
52
Faculdade de Minas
Revisões estruturadas.

Análise Estruturada
Como o próprio nome sugere, ela refere-se ao extremo inicial de um projeto de
desenvolvimento de sistemas, durante o tempo em que os requisitos do usuário são
definidos e documentados.
Por que a análise estruturada é tão importante? Simplesmente porque a análise
clássica é não atendeu as necessidades. O problema é muito simples de ser
expressado: em qualquer coisa diferente de um projeto de desenvolvimento de sistemas
trivial, o usuário não tem um bom entendimento do que está sendo feito para ele. Os
problemas da análise clássica podem ser resumidos como:
As especificações funcionais clássicas são monolíticas;

As especificações funcionais clássicas são redundantes;

As especificações funcionais clássicas são difíceis de se modificar ou manter;

As especificações funcionais clássicas fazem muitas suposições sobre os


detalhes de implementação.

Todos esses fatores contribuem para tornar a fase de análise dos sistemas
convencionais, na maioria dos grandes projetos, uma atividade dolorosa e demorada.
Em muitos casos, todos estão desesperados para passar para pela aprovação. Tendo
acabado a fase de análise de sistemas, poucos pensam em voltar atrás e reexaminar ou
revisar as especificações formais.

O que então a análise estruturada pode oferecer? A análise estruturada introduz o


uso de ferramentas de documentação gráfica para produzir um tipo diferente de
especificação funcional, uma especificação estruturada, em contraste à novela vitoriana
clássica e monolítica. As ferramentas de documentação da análise estruturada são:

Lista de Eventos

Diagrama de Contexto

53
53
Faculdade de Minas
Diagrama de fluxo de dados (DFD);

Dicionário de dados (DD);

Diagrama de entidade relacionamento;

Diagramas de transição de estado (DTE);

Especificação de processo.

Diagrama de Contexto
Documenta o âmbito do estudo, apresentando os fluxos de dados que entram e
saem do sistema e sua interação com as entidades externas. Tem como função delinear
a área de observação.

Diagrama de fluxo de dados


Fornece um meio fácil e
gráfico de modelar o fluxo de
dados pelo sistema. É uma
representação em rede dos
processos (funções) do sistema e
dos dados que ligam esses
processos. Ele mostra o que o
sistema faz e não como é feito. A
figura mostra os elementos
básicos de um DFD: os
terminadores ou Entidades (fontes
ou destinos), Fluxos de dados,
processos e Depósitos ou
armazenagem de dados.
Entidade – é na maioria das
vezes uma categoria de coisas ou
pessoas que representam uma
origem ou destino das transações.
Fluxo de dados – podemos
associar cada fluxo de dados com
um tubo por onde passam pacotes
de dados. É identificado por uma
descrição do seu conteúdo.
Processo – É a descrição da

função a ser executada, o seu nome é sempre no imperativo e o mais objetivo possível.
Depósito de Dados – é o local onde serão armazenadas as informações (dados)
processadas e de onde serão recuperadas quando necessárias.

Dicionário de dados
Fornece a informação de texto de suporte para complementar a informação gráfica

54
54
Faculdade de Minas
mostrada no DFD, é simplesmente um grupo organizado de definições de todos o s elementos
de dados no sistema sendo modelado. Deverá conter a definição dos elementos que tornam o
Modelo de Dados e o Diagrama de Fluxo de Dados precisos, quais sejam: Fluxos de dados,
Depósitos de dados e Atributos dos depósitos.
Por exemplo, o elemento de dados pedido-cliente mostrado no DFD da figura acima
poderia ser definido da seguinte forma:
PEDIDO-CLIENTE = NOME-CLIENTE + NRO-CONTA + ENDEREÇO + 1{ITEM-
PEDIDO}6 ITEM-PEDIDO = COD-PRODUTO + DESC-PRODUTO + QTD-PROD + PRECO

ENDERECO = TIPO-LOGRADO + LOGRADOURO + NRO-LOGRADO + (COMPLEMENTO) +


BAIRRO + CIDADE + UF + CEP + (TELEFONE)
TIPO-LOGRADO = [ RUA | AVENIDA | PRACA | TRAVESSA ]

Regras para a formação de nomes dos fluxos de dados:


 O nome deve ser formado por palavras separadas por sublinha com até 32 caracteres.
 Preferencialmente os nomes devem ser efetuados de acordo com o usuário.
 Devem ser eliminados as proposições e conjunções.
 Quando houver a necessidade de abreviar uma palavra, que seja uma abreviatura
clara
Simbologia utilizada no Dicionário de Dados:

Símbolo Significado

= É composto de

+ E

[ ] Escolha uma das opções alternativas

{ } Interações de

( ) Opcional (pode estar presente ou ausente)

| Separa as opções alternativas na construção [ ]

* * Comentário

@ Identificador (campo chave) de um depósito de dados

Diagrama de Entidade-Relacionamento (DER)


Também conhecido como Modelo de Dados. Ele enfatiza os principais objetos, ou
entidades com o que o sistema lida, bem como a relação entre os objetos. Os objetos
normalmente correspondem, um a um, aos locais de armazenagem de dados mostrados
no DFD, mas o DFD não informa sobre as relações entre os objetos. Mostra uma visão
estática das informações (entidades) de interesse e dos vínculos (relacionamentos)

55
55
Faculdade de Minas
existentes entre elas.

Os componentes do DER são: Entidade, Atributo, Chave de identificação, Lista de


entidades, Domínio e Ocorrência.

Entidade é algo real ou abstrato, percebido no ambiente e sobre o qual nos


interessa armazenar dados.

Atributo é um dos itens de dados que armazenamos sobre uma entidade,


caracteriza ou qualifica uma determinada propriedade de uma entidade.

Chave de Identificação de uma entidade é definida por um atributo, ou conjunto


de atributos, cujos valores individualizam uma única ocorrência dessa entidade. Tipos
de chaves:

chaves candidatas – são as possíveis chaves de identificação de uma única ocorrência na


entidade.

Chave primária – é uma das chaves candidatas, selecionada por melhor


conveniência (facilidade de uso, menor possibilidade de erro, etc...)

Chave estrangeira é um conjunto de um ou mais atributos de uma entidade que


são chave primária em outra entidade.

Exemplo:

EMPREGADO(MATRICULA, NOME_EMPR, CPF_EMPR, COD_DEPTO) DEPARTAMENTO(COD_DEPTO,


NOME_DEPTO)

Lista de Entidades é uma relação de entidades com seus respectivos atributos,


utilizada para documentar os trabalhos de análise de dados. É formada pelo nome da
entidade seguida da relação de atributos que compõem entre parêntesis e seguindo a
seguinte convenção:

Cada atributo é separado do outro pelo sinal de adição (+).

O(s) atributo(s) que identificam a entidade devem estar no início da relação e


sublinhados.

O(s) atributo(s) que ocorrem mais de uma vez (repetitivos) são identificados por

56
56
Faculdade de Minas
uma inclusão entre parêntesis.

Exemplo:

CLIENTE(COD_CLIENTE + NOME_CLIENTE + END_CLIENTE + (FONE_CLIENTE) + CPF_CLIENTE )

Domínio são os possíveis valores que um atributo pode assumir. Exemplo:

SEXO = [ M | F ]

Ocorrência representa o número de vezes que um determinado atributo aparece


em outra entidade.

DEPENDENTE
VÁRIAS, UMA EMPREGADO
OU NENHUMA
OCORRÊNCIA
UMA E
SOMENTE UMA
OCORRÊNCIA

NÍVEL
L EMP SALARIAL
OTAÇÃO REGADO

PELO UMA
MENOS UMA OCORRÊNCIA OU
OCORRÊNCIA NENHUMA
G
ERENTE
Símbolos especiais colocados nas extremidades de uma linha que representa o
relacionamento. Exemplo:

O diagrama DER também enfatiza três relações distintas entre os objetos:

57
57
Faculdade de Minas
Empregados pertencem a departamentos;

Empregados são atribuídos a projetos;

Departamentos iniciam projetos.

Diagrama de Transição de Estado (DTE)


É usado para
modelar o
comportamento de
transição de estado, é
uma ferramenta de
modelagem para
descrever o
comportamento de
sistemas de tempo-
real e a parte de
interface humana de
muitos sistemas on-
line. Cada estado
representa o período
de tempo durante o
qual o sistema tem
algum comportamento
observável; as setas
conectando cada
quadro retangular
mostra a mudança de
estado, ou transições
de um estado para
outro. Associadas a
cada mudança de estado estão uma ou mais condições (os eventos ou circunstancias que
causam a mudança de estado), e zero ou mais ações (a resposta, ou saída, ou atividade que

58
58
Faculdade de Minas
ocupa parte da mudança de estado).

As etapas de construção de um DTE, podem ser seguidas dos seguintes modos:

Começar pela identificação de todos os estados possíveis do sistema,


representando

cada um deles como um retângulo. Em seguida, achar todas as conexões


significativas (mudança de estado) entre os retângulos.

Começar pelo estado inicial, continuando metodicamente seu caminho para o(s)
estado(s) seguinte(s). depois do(s) estado(s) secundário(s) para o(s) terciário(s).

Após ter elaborado o DTE, devemos verificar a consistência do mesmo,


respondendo:

Foram definidos todos os estados?

Todos os estados foram atingidos? Algum estado foi definido sem que haja
caminhos que levem a ele?

Todos os estados tem saída?

Em cada estado, o sistema reage adequadamente a todas as condições


possíveis? Este é o erro mais comum, é esquecido de especificar o comportamento do
sistema em condições inesperadas.

Especificação de Processos
Sua finalidade é permitir que o analista de sistemas descreva, rigorosa e
precisamente, a política representada por cada um dos processos atômicos de baixo
nível nos diagramas de fluxo de dados de baixo-nível.

Uma das maneiras de descrever a especificação de processos é utilizar o


português estruturado, mas existem outras como Tabela de decisão e Árvore de
decisão.

O português estruturado, utilizado na especificação de processos consiste apenas

59
59
Faculdade de Minas
no seguinte:

Um grupo limitado de verbos de ação, como calcular e validar – um grupo de mais ou menos 40
verbos;

Estruturas de controle tiradas da programação estruturada para descrever ações alternativas e


repetitivas, como: Se-então-caso contrário , Faça-enquanto e Repita- enquanto;

Nomes que foram definidos no dicionário de dados ou que estão definidos dentro
da própria especificação de processo.

Exemplo, especificação para um processo:

Processo 3.3 – Executa Cobrança

1. Se o valor da fatura vezes o número de semana em atraso for maior que R$ 1000,00 Faça:
a) Chamar o Cliente;
b) Examinar o Cliente em duas semanas;
c) Incrementar Contador de notas em atraso em um;
2. Caso contrário se menos de quatro notas de atraso foram enviadas, Faça:
a) Chamar o Cliente;
b) Examinar a fatura em uma semana;
c) Incrementar Contador de notas em atraso em um;
3. Caso contrário:
a) Enviar ao Cliente uma cópia da fatura contendo o número de semanas e atraso;
b) Examinar a fatura em uma semana;

60
60
Faculdade de Minas
Para desenvolver, pode-se seguir:

Escolha uma ou mais implementações linguísticas para cada uma das


construções básicas. Você deveria ficar com a fraseologia usada nesta seção ou
desenvolver uma própria.

Use as palavras e frases-chave de suas implementações para compor uma


lista de palavras reservadas.

Acrescente à sua lista palavras novas que são necessárias à descrição de


condições, relacionamentos, etc..., quando for detectada a necessidade delas.

Ao escrever descrições de programas de ação, restrinja-se ao uso das


palavras em sua lista reservada, termos do Dicionário de dados, e verbos no
imperativo.

Utilizando estes recursos para a descrição do programa de ação, o processo


será escrito em português estruturado.

Projeto Estruturado
Talvez o ponto mais importante a entender seja que o projeto estruturado não
é apenas programação modular, ou projeto modular, como foi chamado inicialmente,
e nem apenas um projeto top-down. O projeto estruturado pode ser definido como a
determinação de quais módulos, interconectados de que forma, melhor solucionarão
algum problema bem definido.

O projeto estruturado insiste numa definição de módulo simples, como sendo


um grupo de comandos de programa contíguos e ligados, possuindo um único
identificador (nome) pelo qual ele pode ser referenciado como uma unidade. Os
componentes do projeto estruturado são:

Técnicas de documentação;

Critérios de avaliação de projeto;

Heurísticas de projeto;

61
61
Faculdade de Minas
Estratégias de projeto.

Programação Estruturada
A programação estruturada foi a primeira das técnicas estruturadas a ser
discutida e praticada amplamente. Para muitas pessoas, o termo programação
estruturada é genérico e inclui filosofias de projeto, estratégias de implementação,
conceitos de organização de programas, e as virtudes básicas de prosperidade,
lealdade e bravura. Para as finalidades desta discussão, no entanto, a programação
estruturada deve ser pensada como uma técnica de codificação e só deve ser
discutida no contexto da programação.

A teoria por trás da programação estruturada é relativamente simples: ela diz


que qualquer lógica de programa pode ser construída pelas combinações das três
estruturas: sequência, decisão e repetição. Na maioria das linguagens de
programação de alto nível isto significa que os programas de computador podem ser
construídos com as seguintes combinações:

Comandos imperativos simples, como: leia, calcule, escreva e comandos


algébricos;

Comandos para a tomada de decisão, como: se é caso;

Comandos de repetição ou iteração, como: repita até que ou faça enquanto.

62
62
Faculdade de Minas
O ponto principal é que este conjunto de construções é suficiente
para formar todo e qualquer tipo de lógica de programa; e em particular,
não é necessário usar os comandos de desvio em programação
estruturada.

Desenvolvimento Top-down
Em muitos casos, por motivos históricos, o desenvolvimento top-
down é confundido com projeto top-down, mas estamos pensando em
implementação top-down. Três aspectos top- down estão relacionados,
mas distintos, da seguinte forma:

Projeto top-down é uma estratégia de projeto que divide problemas


grandes e complexos em problemas menores e mais simples, facilmente
solucionáveis;

Codificação top-down é uma estratégia para se codificar módulos de


alto-nível, antes que os módulos detalhados de nível mais baixo;

Implementação top-down é uma estratégia para testar os módulos


de alto-nível de um sistema antes que os módulos de baixo nível tenham
sido codificados e possivelmente, até antes que tenham sido projetados.

O desenvolvimento top-down consiste em desenvolver inicialmente


uma versão inicial com todos os módulos de alto-nível do sistema. As
versões subsequentes simplesmente envolvem o acréscimo de módulos de
nível mais baixo ao esqueleto já existente dos módulos de alto-nível, até
que uma versão final produz a saída satisfatória ao usuário.

Equipes de Programação
Outro aspecto do método de desenvolvimento de sistemas
estruturados é o conceito de equipes de programação, em particular, as
equipes de programador-chefe e equipes abertas.

O conceito de equipe de programador-chefe é baseada na liderança,


na capacidade técnica e na experiência de uma pessoa para comandar o
desenvolvimento de um sistema por uma equipe.

63
Faculdade de Minas
O conceito de equipe aberta é baseada na teoria da participação de
toda a equipe na solução dos problemas sem a supervisão direta de
qualquer um.

Revisões Estruturadas
Uma revisão estruturada é um procedimento organizado para que um
grupo de examinadores (analistas de sistemas, programadores, etc)
revisem um produto técnico para fins de correção e garantia de qualidade.

As revisões podem ocorrer em uma série de estágios num projeto


típico de desenvolvimento de sistemas. A ênfase tem sido na revisão do
código, mas o conceito se aplica também às revisões de projetos e
especificações.

O método de revisões estruturadas é conduzida por membros de


uma equipe, são quase sempre caracterizadas por um ambiente informal e
aberto; permite revisões rápidas e eficientes da precisão técnica da
especificação, projeto e código para o sistema.

64
Faculdade de Minas
REFERÊNCIA BIBLIOGRAFICA

Aprimorando o conhecimento sobre gestão de qualidade total. Disponível


em:<http://www.ucg.br/site_docente/eng/ximena/pdf/aula2.pdf> acesso em
19/10/2004

BRAZ JÚNIOR., Osmar de Oliveira. Técnicas de Análise de Sistemas


(apostila). Tubarão: UNISUL. 1997.

CARNEIRO, Margareth Fabíola dos Santos; Gerenciamento de Projetos


(apostila), ENAP, 2000

Conhecendo mais sobre TQC. Disponível


em:<http://www.furnas.com.br/portug/institucional/glossario.asp?letra=t>
acesso em 19/10/2004

DeMARCO, Tom. Análise Estruturada e Especificação de Sistema – 2ª


reimpressão Rio de Janeiro: Editora Campus. 1989.

FOURNIER, Roger. Guia Prático para Desenvolvimento e Manutenção de


Sistemas Estruturados – 1ª Edição. São Paulo: Makron Book. 1994.

KELLER, Robert. Análise Estruturada na Prática – 1ª edição. São Paulo:


McGraw-Hill Editora. 1990.

KIMURA, Marcos. Curso básico de MS Project (apostila). Brasília: ENAP,


2002.

PAULA FILHO, Wilson de Pádua. Engenharia de Software – Fundamentos,


Métodos e Padrões – 1ª edição. Rio de Janeiro: LTC Editora. 2001.

PARREIRA JÚNIOR, Walteno Martins & TEODORO NETO, Euclides Martins


& GOMES, Gina Marcia dos Santos. Análise e Programação Orientada ao
Objeto – in I Encontro de Iniciação Científica e III Encontro de Pesquisa -
ILES/ULBRA – Itumbiara-GO – 2002

PRESSMAN, Roger S. Engenharia de Software – 3ª edição. São Paulo:


Makron Books. 1995. SOMMERVILLE, Ian. Engenharia de Software – 6ª
edição. São Paulo: Addison Wesley. 2003.

65
Faculdade de Minas
OURDON, Edward. Administrando o ciclo de vida do sistema – 2ª edição.
Rio de Janeiro: Editora Campus. 1989.

_ . Análise Estruturada Moderna. 3ª Edição. Rio de Janeiro: Editora


Campus. 1992.

66

Você também pode gostar