Escolar Documentos
Profissional Documentos
Cultura Documentos
ENGENHARIA DE SOFTWARE I
INSTITUTO DE CINCIA DA COMPUTAO - UFF
Prof. Teresa Cristina de Aguiar
________________________________________________________
_____________________________________________________________________________________
NDICE:
I. INTRODUO..........................................................................................................................................
I.1 HISTRICO DA ENGENHARIA DE SOFTWARE 3
I.2 CONCEITO DE ENGENHARIA DE SOFTWARE 4
I.3 DIFICULDADES E MITOS DA ENGENHARIA DE SOFTWARE 4
I.4 SISTEMAS 6
I.5 QUALIDADE 6
I.6 FASES DA ENGENHARIA DE SOFTWARE 7
II. FASE DE DEFINIO.................................................................................................................................
II.1 PLANEJAMENTO DO PROJETO 9
II.2 ANLISE E ESPECIFICAO DE REQUISITOS10
II.2.1 ATIVIDADES FUNDAMENTAIS, O ANALISTA DE SISTEMA E CAUSAS DE
PROBLEMAS...........................................................................................................................................
II.2.2 COMO OBTER REQUISITOS...............................................................................................
II.2.3 REVISO DA ESPECIFICAO...........................................................................................
III. FASE DE DESENVOLVIMENTO...........................................................................................................
III.1 ASPECTOS FUNDAMENTAIS DE PROJETO 15
III.2 PROJETO DE SISTEMA 18
III.3 PROJETO DE ARQUITETURA 19
III.4 PROJETO DE DADOS 24
III.5 PROJETO DE INTERFACE 26
IV. FASE DE VERIFICAO, LIBERAO E MANUTENO...........................................................
IV.1 ESTRATGIAS DE TESTE DE SOFTWARE 30
IV.2 MANUTENO 33
V. PARADIGMAS DA ENGENHARIA DE SOFTWARE............................................................................
VI. CASE..........................................................................................................................................................
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
I. INTRODUO
Crise do Software
Vrias solues foram propostas e experimentadas
Consenso final: O problema da construo de software deve ser encarado da mesma
forma que outras engenharias que constrem sistemas complexos, como pontes, navios,
refinarias, etc. O sistema de software deve ser visto como um produto complexo e sua
construo como um trabalho de engenharia.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
Dificuldades:
Mitos:
H frases que ainda so ditas como verdades indiscutveis. Pressman relaciona algumas
delas, apresentando o que considera a realidade atual.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
Mitos administrativos:
Mitos do cliente:
Uma declarao geral dos objetivos suficiente para se comear a escrever programas
podemos preencher os detalhes mais tarde.
Realidade: Uma definio inicial ruim a principal causa de fracasso dos esforos de
desenvolvimento de software.
Os requisitos de projeto modificam-se continuamente, mas as mudanas podem ser
facilmente acomodadas, porque o software flexvel .
Realidade: Os requisitos de software modificam ao longo do tempo, mas o impacto da
mudana varia de acordo com o tempo em que ela introduzida. Se uma sria ateno
for dada definio inicial, os primeiros pedidos de mudana podem ser acomodados
facilmente. O cliente pode rever as exigncias e recomendar modificaes sem causar
grande impacto sobre os custos. Porm, quanto mais tarde for exigida uma mudana
maior o impacto sobre os custos.
Mitos do profissional:
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
I.4 SISTEMAS
I.5 QUALIDADE
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
difcil e em certos casos impossvel medir com uma nica mtrica os fatores
descritos. definido ento um conjunto de mtricas relacionadas a cada fator. As mtricas
podem estar na forma de uma lista de verificao (checklist), que usada para graduar
atributos especficos do software. Por exemplo, no caso do fator facilidade de realizar
manutenes, poderiam ser utilizadas as seguintes mtricas:
Conciso: a caracterstica de um programa realizar as funes desejadas
implementadas com o mnimo possvel de cdigo.
Consistncia: uso de tcnicas de projeto e documentao uniformes ao longo do projeto
de desenvolvimento de software.
Instrumentao: o quanto o programa monitora sua prpria operao e identifica erros
que venham a ocorrer.
Modularidade: o quanto h independnica funcional dos componentes do programa.
Independncia funcional conseguida desenvolvendo-se mdulos com um s propsito e
evitando-se interaes excessivas com outros mdulos. Pode ser medida usando-se
como critrios a coeso e o acoplamento.
Autodocumentao: o quanto o cdigo fonte apresenta documentao significante.
Simplicidade: o quanto o programa pode ser entendido sem dificuldades.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
Grandes sistemas de software devem ser vistos como produtos complexos e a sua
construo como um trabalho de engenharia. A abordagem de engenharia requer
gerenciamento, organizao, ferramentas, teorias, metodologias e tcnicas.
O plano dever ser revisado. A seguir so apresentados alguns dos itens a serem
considerados numa lista de verificao (ver Revises Tcnicas Formais):
O escopo do software definido e delimitado com clareza ?
A terminologia utilizada clara ?
Os recursos so adequados ?
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
a) Reconhecimento do problema:
O analista estuda a Especificao do Sistema (caso exista) e o Plano do Projeto.
O analista estabelece contato com todos aqueles que esto relacionados ao projeto.
A meta do analista o reconhecimento dos elementos problemticos bsicos,
conforme percebidos pelo usurio/cliente.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
b) Avaliao e sntese:
O analista deve:
Avaliar o fluxo e o contedo da informao
Definir e elaborar todas as funes do software
Entender o comportamento do software no contexto dos eventos que afetam o
sistema
Estabelecer as caractersticas de interface com o sistema
Descobrir restries de projeto.
Depois de avaliar os problemas atuais e as informaes desejadas (entrada e sada),
o analista comea a sintetizar uma ou mais solues.
c) Modelagem:
Durante a atividade de avaliao e sntese o analista cria modelos do sistema num
esforo para compreender melhor o fluxo de dados e de controle, o
processamento funcional, etc. O modelo serve como um fundamento para o projeto
de software e como base para a criao de sua especificao.
O foco principal desta atividade deve ser o que e no como.
d) Especificao:
As tcnicas de anlise podem levar a uma especificao em papel ou baseada em
computador que contenha descries em linguagem natural e grfica dos requisitos de
software.
H vrias propostas de formatos de especificaes, como os propostos pelo
National Bureau of Standards, o IEEE e o Departamento de Defesa Americano.
Alguns dos itens que deveriam constar de uma especificao so:
Consideraes de negcios
Anlise tcnica
Avaliao da manufatura
Questes humanas
Interfaces ambientais
Consideraes jurdicas
Dificuldade de comunicao
Tendncia a se realizar esta atividade o mais rpido possvel, iniciando-se logo a
codificao
Uso de tcnicas e ferramentas inadequadas, resultando em especificaes
imprecisas
Entrevistas:
Diretrizes:
Desenvolva um plano geral de entrevistas
Obtenha prvia autorizao para entrevistar as pessoas
Planeje cada contato com o entrevistado
Certifique-se que a pessoa selecionada conhece o assunto da entrevista
Colete, antecipadamente, tantos dados quanto possvel
Prepare as perguntas antecipadamente
Utilize ferramentas automatizadas quando adequado. Por exemplo para a
prototipagem.
Obtenha informaes dos vrios participantes do projeto.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
Encontros do JAD:
Reunio Inicial: A sesso de design planejada
Reunio de Reviso: revisto o que foi combinado na reunio inicial.
Sesso de Design: A atividade planejada realizada.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
A reviso conduzida tanto pelo desenvolvedor como pelo cliente para garantir que:
O escopo do projeto foi corretamente delineado
As funes, o desempenho e as interfaces foram adequadamente definidas
A anlise do ambiente e dos riscos de desenvolvimento justificam o sistema
O desenvolvedor do sistema e o cliente tm a mesma percepo dos objetivos do
sistema
Atravs das RTFs pode-se verificar se o que est sendo revisto atende a
requisitos j estabelecidos e a padres previamente definidos.
Abstrao
Refinamento
Modularidade
Arquitetura de software
Hierarquia de controle
Estrutura de dados
Procedimento de software
Ocultao de informao
a) Abstrao
... a noo psicolgica de abstrao permite que uma pessoa se concentre num
problema com certo nvel de generalizao, sem levar em considerao detalhes
irrelevantes de menor nvel; o uso de abstrao tambm permite que se trabalhe com
conceitos e termos que so familiares ao ambiente do problema sem que seja preciso
transform-los em uma estrutura no-familiar... Wasserman
Durante o desenvolvimento o software definido em vrios nveis de abstrao.
Durante a anlise e especificao de requisitos definido em termos que so familiares aos
usurios. Conforme se caminha no processo de desenvolvimento o nvel de abstrao vai
ficando cada vez mais relacionado a aspectos de implementao.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
Abstrao procedimental:
Uma sequncia de instrues designadas que tem uma funo especfica e limitada.
Considerando um programa, a descrio de seus objetivos seria uma primeira
abstrao procedimental. Depois a elaborao das tarefas a serem realizadas seria uma
segunda abstrao. A terceira seria o pseudo-cdigo e por fim a quarta o cdigo-fonte na
linguagem escolhida.
Abstrao de dados:
uma coleo designada de dados que descreve um objeto de dados. Por exemplo,
cheque de pagamento um objeto de dados que representa vrias informaes diferentes:
nome da pessoa a quem se paga, quantia bruta paga, imposto retido, imposto de renda,
contribuio para a previdncia, etc..
Contudo podemos nos referir a todos os dados ao declararmos o nome da abstrao
de dados.
A abstrao de dados possibilita que o projetista represente um objeto de dados
em nveis variveis de detalhe e, o que mais importante, que ele especifique um objeto de
dados no contexto das operaes que podem ser aplicadas a ele.
Quando usamos o tipo real para representar nmeros reais estamos usando uma
abstrao de dados, sem saber muito sobre a representao deste tipo no computador.
(Esta representao varia de um para outro computador). Para usar um objeto de dados no
programa cliente deve-se declarar a varivel como daquele tipo.
Logo que uma abstrao de dados definida, um conjunto de operaes que podem
ser aplicadas a ela tambm definido.
Vrias linguagens tm mecanismos que permitem a criao de tipos abstratos de
dados (combinao de um tipo de dado com seus operadores), que usado como um padro
ou estrutura de dados genrica a partir da qual outras estruturas de dados podem ser
representadas por uma instncia.
b) Refinamento
O refinamento um processo de elaborao.
Em cada passo (do refinamento), uma ou mais instrues do programa dado so
decompostas em instrues mais detalhadas. Essa sucessiva decomposio ou refinamento
das especificaes termina quando todas as instrues so expressas em termos de
qualquer linguagem de programao ou computador subjacente... medida que as tarefas
so refinadas, tambm os dados podem ter de ser refinados, decompostos ou estruturados,
e natural refinar-se os programas e as especificaes de dados paralelamente.
Cada passo de refinamento implica algumas decises de projeto... Wirth
c) Modularidade
Um software constitudo de um nico mdulo no pode ser facilmente entendido e
modificado. O software deve ser dividido em componentes separadamente nomeados e
endereveis denominados mdulos.
Um sistema pode ser projetado modularmente, mesmo que sua implementao deva
ser monoltica. H situaes, como software de tempo real, em que gastos com memria e
velocidade introduzidos por subprogramas so inaceitveis. Em tais situaes, o software
pode e deve ser projetado, tendo a modularidade como filosofia. Apesar do cdigo-fonte
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
d) Arquitetura de software
O problema a ser resolvido pelo software, definido na anlise de requisitos,
derivado numa arquitetura de software a partir de um processo de diviso em parties. A
arquitetura de software trata da estrutura hierrquica de mdulos e da estrutura de
dados.
Um mtodo de projeto pode ser usado para se derivar a estrutura, mas uma vez que
cada um se baseia em diferentes conceitos fundamentais de bom projeto, cada mtodo
poder levar a uma estrutura diferente para o mesmo conjunto de requisitos. Apesar de
no se poder afirmar qual a melhor, h caractersticas de uma estrutura que podem ser
examinadas para se determinar a qualidade da soluo.
e) Hierarquia de controle
Tambm chamada de estrutura de programa, representa a organizao de mdulos
de programa. Uma notao que utilizada o diagrama em rvore. Termos que so
utilizados so:
Profundidade: indicao do nmero de nveis de controle
Largura: indicao do espao de controle global.
Fan-out: medida do nmero de mdulos que so diretamente controlados por outro
mdulo (ou seja, o nmero de mdulos que chamam o mdulo sendo analisado)
Fan-in: indica quantos mdulos controlam (chamam) diretamente determinado mdulo.
Subordinado: um mdulo controlado por outro subordinado ao controlador
f) Estrutura de dados
Representa o relacionamento lgico entre elementos de dados individuais.
Determina a organizao, mtodos de acesso, grau de associatividade e alternativas de
processamento de informaes.
A organizao e a complexidade de uma estrutura de dados depender da
habilidade do projetista. H no entanto certas estruturas de dados clssicas que formam
outras estruturas mais sofisticadas.
Item escalar: a mais simples de todas as estruturas de dados. Representa um nico
elemento de informao que pode ser endereado por um identificador. Seu tamanho e
formato podem variar de acordo com a linguagem de programao.
Vetor sequencial: itens escalares organizados como uma lista ou como um grupo
contguo. Quando o vetor sequencial ampliado para duas, trs e mais dimenses, um
espao n-dimensional criado.
Lista: organiza itens de dados, arrays, de modo que possibilita que eles sejam
processados como uma lista. Cada n contm a organizao de dados apropriada (por
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
g) Procedimento de software
Focaliza os detalhes de processamento de cada mdulo individualmente. Deve
oferecer uma especificao precisa do processamento.
h) Ocultao de informao
De acordo com este princpio os mdulos devem ser especificados e projetados de
tal forma que as informaes (procedimento e dados) contidas num mdulo sejam
inacessveis a outros mdulos que no tenham necessidade de tais informaes. Assim,
quando houver necessidade de modificaes, os erros que forem introduzidos contra nossa
vontade tm menos chances de se propagar para outras localizaes dentro do software.
Cada subsistema concorrente deve ser alocado por exemplo a uma unidade de hardware
ou a um processador de emprego geral.
Esta deciso depender de se necessitar de um desempenho melhor do que aquele dado
por uma nica CPU ou tambm pelo fato de certas tarefas serem necessrias em
localizaes fsicas especficas.
Deve-se escolher a organizao e a forma de conexes entre as unidades fsicas.
Exemplos de controle:
Sistemas seqenciais baseados em procedimentos: o controle reside no cdigo do
programa.
Sistemas baseados em eventos: o controle reside em um despachante ou monitor
provido pela linguagem, subsistema ou sistema operacional.
Sistemas concorrentes: o controle reside de modo concorrente em diversos objetos
independentes, sendo cada um uma tarefa separada. Uma tarefa pode esperar pelas
entradas, mas as outras continuam. O sistema operacional resolve os conflitos de
escalonamento entre tarefas.
Cada mtodo de projeto introduz uma heurstica e uma notao nicas, bem como
uma viso do que considera como qualidade de projeto. Contudo cada um desses mtodos
tem uma srie de caractersticas em comum:
Mdulo:
Chamada:
A
Chefe (Mdulo A chama mdulo B)
Chamada
B
Subordinado (Mdulo B executa sua funo e o controle
retorna ao comando em A imediato ao da chamada de B)
Continuao:
X1
X1
Iterao:
Seleo:
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 20
_____________________________________________________________________________________
Tipos de interface:
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
Coeso
Acoplamento
Fatorao
Diviso da deciso
Fan-out
Fan-in
A)
COESO
a medida de quanto os elementos de um mdulo esto relacionados.
A idia que os componentes de um sistema reunidos num mdulo sejam muito
relacionados entre si.
Tipos de coeso:
Coincidental:
Os elementos no se relacionam, parecendo que foram organizados de forma
arbitrria. O motivo pode ser, por exemplo, para se ter um tempo de resposta melhor.
Lgica:
Os elementos foram logicamente colocados juntos. Isto eles executam uma classe
de funes similares ou relacionadas,.
Ex: mdulo de entrada de dados, de tratamento de erros, de validao
Conseqncia: Passagem de parmetros de controle. Provoca acoplamento de
controle.
Temporal:
Os elementos do mdulo esto relacionados logicamente no tempo, ou seja, esto
reunidos por serem realizados num mesmo momento. Esta coeso melhor que a lgica
porque neste caso todos os elementos so executados.
Procedimental:
Os elementos do mdulo realizam funes diferentes e esto unidos por afinidade
de controle. Os elementos esto juntos para aproveitar por exemplo um loop. Os dados
passados e os dados recebidos possuem pouca ou nenhuma relao entre si.
Comunicacional:
Os elementos do mdulo operam o mesmo arquivo ou dados de entrada e sada.
Requer passagem de controle.
Ex: mdulo que l, inclui, exclui e modifica registro em um arquivo.
Atividades do mdulo podem ser independentes e executadas em qualquer ordem.
Seqencial:
Os elementos cumprem funes diferentes nas quais os dados de sada de um
elemento so a entrada para o elemento seguinte.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 22
_____________________________________________________________________________________
Funcional:
Os elementos executam uma s funo.
Ex: calcular fatorial
B) ACOPLAMENTO
o grau de interdependncia entre dois mdulos.
O objetivo minimizar o acoplamento, tornando os mdulos to independentes
quanto possvel. Um acoplamento baixo, entre mdulos, indica um sistema bem particionado.
Pode ser obtido de 3 maneiras:
Eliminando relaes desnecessrias
Reduzindo o nmero de relaes necessrias
Enfraquecendo a dependncia das relaes necessrias
Tipos de acoplamento:
Dados
Quando os mdulos se comunicam por parmetros, sendo cada parmetro um dado
nico ou uma tabela homognea (uma tabela na qual cada entrada contm o mesmo tipo de
informao)
Imagem
Dois mdulos so ligados por imagem se eles se referem mesma estrutura de
dados (um grupo composto de dados, como um registro)
Problema: quando envio para um mdulo um registro completo no qual s alguns itens
de dados sero usados estou arriscando que os outros itens sofram alterao. O ideal
enviar somente o que necessrio a cada mdulo.
Controle
Dois mdulos so acoplados por controle se um passa para o outro um grupo de
dados destinados a controlar a lgica interna do outro.
Comum
Quando dois mdulos se referem a mesma rea de dados. O fato de vrios mdulos
poderem acessar a mesma rea de dados dificulta a manuteno j que quando h um erro
fica difcil saber quem foi o responsvel. Dificulta tambm a reutilizao porque o mdulo
usa um nome de varivel fixo.
Se o tamanho de um dado global tem que ser mudado, como saber os mdulos que
sero afetados ?
Contedo
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 23
_____________________________________________________________________________________
c) Fatorao:
a separao de uma funo contida em um mdulo em um novo mdulo prprio.
Objetivos:
Evitar de se ter a mesma funo em mais de um mdulo
Tornar o sistema mais compreensvel
Permitir modificaes mais localizadas
d) Diviso da deciso
Uma deciso tem duas partes:
O reconhecimento de qual ao tomar
A execuo da ao
e) Fan-out
Representa o nmero de subordinados de um mdulo. Recomenda-se um nmero de 7
+ 2 subordinados.
f) Fan-in
Representa o nmero de superiores imediatos que um mdulo possui. Quanto maior o
nmero de superiores melhor.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 24
_____________________________________________________________________________________
Uma biblioteca de estruturas de dados teis e das operaes que podem ser aplicadas a
elas deve ser desenvolvida. Estruturas de dados podem ser projetadas para se ter
reuso. Uma biblioteca de padres de estruturas de dados (tipos abstratos de dados)
pode reduzir tanto o esforo de especificao como o de projeto de dados.
Uma linguagem de programao e projeto de software deve suportar a especificao e
realizao de tipos abstratos de dados.
Quando usamos o tipo real para representar nmeros reais estamos usando uma
abstrao de dados, sem saber muito sobre a representao deste tipo no computador.
(Esta representao varia de um para outro computador). Para usar um objeto de dados no
programa cliente deve-se declarar a varivel como daquele tipo.
Logo que uma abstrao de dados definida, um conjunto de operaes que podem
ser aplicadas a ela tambm pode ser definido.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 25
_____________________________________________________________________________________
a) Introduo
Ao criarmos uma aplicao, um dos detalhes mais importantes que devem ser considerados
a interface com o usurio. Por qu ? Porque uma interface feia ou difcil de ser entendida
e usada pode ser a linha que divide o sucesso do fracasso no ramo de software
Pesquisa de Leonardo, Maria, Flvio e Ricardo
Quando se faz o design de uma aplicao, um certo nmero de decises precisa ser feito
em relao interface. Qual estilo deve ser usado ? Quantas telas diferentes sero
necessrias? Que comandos sero includos nos menus? H necessidade de botes para
duplicar as operaes de menus ? E quanto s caixas de dilogo para interao com o
usurio ? Quanta assistncia deve ser dada em determinados momentos ?
Pesquisa de Luciano Leal, Rodrigo e Fabrcio.
Cada uma das seguintes reas relevante para a definio e o estudo de interfaces:
Cincia da Computao: fornece a estrutura tecnolgica.
Psicologia: preocupa-se com o entedimento do comportamento humano, percepo, cognio
etc.
Ergonomia: envolve-se com aspectos fsicos da adaptao das mquinas para uso humano.
Lingstica: a interao homem-mquina exige uma linguagem.
Sociologia: preocupa-se com o impacto dos sistemas interativos na estrutura da sociedade.
Desenho grfico e tipografia: a habilidade esttica dessas reas importante j que a
apresentao da interface torna-se bonita aos olhos dos usurios
Pesquisa de Ercole e Isaac
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 26
_____________________________________________________________________________________
b.1) Conduo
Legibilidade
Quando o espao para o texto for limitado, mostrar poucas linhas longas ao invs de
muitas linhas curtas.
Exibir texto contnuo em colunas largas de, ao menos, 50 caracteres por linha.
Ao exibir um texto, mantenha as palavras intactas, com o mnimo de hfens.
Cores devem ser usadas moderadamente
Se a cor est sendo usada para ressaltar algo na tela seria bom ter um outro indicador,
j que h usurios daltnicos
Uma tela com 2 ou 3 fontes tem um aspecto melhor do que com 5 ou 6.
B.4) ADAPTABILIDADE
Flexibilidade
Quanto mais formas de efetuar uma tarefa existirem, maiores sero as chances de que
o usurio possa escolher e dominar uma delas no curso de sua aprendizagem
Fornecer meios para que o usurio controle a configurao das telas
b.6) Consistncia
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 28
_____________________________________________________________________________________
Desabilitar em vez de remover um item faz com que os usurios construam modelos
mentais de como a aplicao funciona
A consistncia diminui os custos de treinamento e suporte
B.8) COMPATIBILIDADE
C) CUSTOS
Em recente pesquisa sobre dezenas de projetos, verifica-se que em mdia 48% do cdigo
de um sistema interativo dedicado interface. Quanto ao tempo de projeto de todo o
sistema, 50% de toda a implementao e 37% da manuteno ....
Economias da ordem de milhes de dlares podem ser realizadas em interfaces onde o
usurio comete poucos erros, o tempo de descrio das tarefas a serem realizadas
mnimo, a distrao do usurio reduzida e os treinamentos so eliminados. Ou seja, a
interface interfere economicamente na utilizao de um sistema
Pesquisa de Ercole e Isaac
D) FUTURO
O caminho da evoluo da interface claro para todos os que esto de alguma forma
ligados indstria de informtica: a sada definitiva a interface verbal, em que os
usurios possam dizer aos computadores o que fazer....
Como acontece com toda nova tecnologia, difcil adivinhar quais sero as conseqncias do
advento de uma interface verbal, mas podemos divisar com clareza pelo menos duas. Para
comear, a curva de aprendizado se tornar extremamente suave, conquistando muitos
daqueles que hoje costumam desprezar os computadores mais por insegurana ou preguia
do que por ideologia. Alm disso, o teclado no vai deixar de existir, mas deixar de ser um
fator determinante na utilizao dos computadores.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 29
_____________________________________________________________________________________
Teste: atividade que visa avaliar uma caracterstica ou recurso de um programa ou sistema
de software atravs de sua execuo.
Plano de teste: um documento organizado que contm para cada caso de teste as seguintes
informaes:
Objetivo do teste e que parte do sistema ser verificada
Onde e quando o teste ser realizado
Descrio do caso de teste
Procedimentos operacionais
Testes de Unidade:
Tm como objetivo testar os mdulos do programa
Abordagens para seleo dos casos de teste:
Funcionais: independentes da lgica da codificao (Teste caixa preta): A idia
que conhecendo-se o objetivo do mdulo, testes podem ser realizados para
demonstrar que cada funo totalmente operacional.
Estruturais: obtidos a partir da estrutura do programa (Teste caixa branca): A
idia que conhecendo-se o funcionamento interno de um mdulo, testes podem ser
realizados para garantir que todas as engrenagens se encaixam, ou seja, que a
operao interna do mdulo tem um desempenho de acordo com as especificaes e
que os componentes internos foram adequadamente postos prova.
Limites e situaes extremas
Necessita-se muitas vezes de stubs e drivers. Driver um programa principal que
aceita dados de caso de teste, passa tais dados para o mdulo ser testado e imprime os
dados relevantes. Os stubs servem para substituir mdulos que estejam subordinados
ao mdulo a ser testado. Um stub, ou programa simulado, usa a interface do mdulo
subordinado, pode fazer manipulao de dados mnima, imprime a verificao e retorna.
O teste de unidade simplificado quando um mdulo com elevada coeso projetado.
Quando somente uma funo endereada por um mdulo, o nmero de casos de teste
reduzido e os erros podem ser mais facilmente previstos e revelados.
Testes de integrao:
Tm como objetivo testar interfaces.
Apesar de todos os mdulos funcionarem corretamente individualmente, podem surgir
problemas ao serem colocados juntos. Dados podem ser perdidos ao longo de uma
interface; um mdulo pode ter um efeito inesperado, sobre outro; as subfunes
quando combinadas, podem no produzir a funo principal esperada; uma impreciso
individualmente aceitvel pode ser ampliada at nveis inaceitveis; as estruturas de
dados globais podem apresentar problemas. Etc...
No bom testar tudo junto j que fica difcil determinar as causas de erros
encontrados. Pode-se adotar uma estratgia de integrao incremental. O programa
construdo e testado em pequenos segmentos, ficando mais fcil isolar os erros e
corrigi-los.
Testes de Sistema:
Visam a realizao de uma srie de testes de forma a observar se os elementos do
sistema foram adequadamente integrados, se esto realizando as funes
especificadas e se o desejado desempenho global do sistema foi atingido.
Podem ser realizados os seguintes tipos de teste:
a) Recuperao: Este teste fora o sistema a falhar de diversas maneiras e verifica
se a recuperao adequadamente executada. Verifica, por exemplo, se o
tempo mdio at o reparo se encontra dentro dos limites aceitveis.
b) Segurana: Verifica se todos os mecanismos de proteo do sistema o protegero
de fato no caso de acessos indevidos.
c) Stress: Realizado para verificar como o sistema se comporta em situaes de
stress. Exemplo:
Testes que gerem um nmero maior de interrupes do que a mdia esperada.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
Concluso:
Realizar testes uma atividade difcil e criativa
Testes atuam tambm prevenindo erros
Testes devem ser planejados
Realizar teste exige independncia
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 32
_____________________________________________________________________________________
IV.2 MANUTENO
O que manuteno ?
A manuteno o conjunto de atividades que visa alterar o software depois que ele
foi liberado para o usurio e colocado em operao.
O que pode ser observado na indstria de software que ela no est preparada
para lidar com a atividade de manuteno. Os custos de manuteno tem sido altssimos:
nos anos 80 de 40 a 60 % do oramento para sofware foi gasto em manuteno e para os
anos 90 estima-se que o gasto ser de 70 a 80 %.
Alm desse h outros custos difceis de serem medidos como:
O que fazer ?
A questo no acabar com a manuteno, j que ela faz parte do ciclo de vida do
software. Os sistemas de software so dinmicos estando sempre em evoluo.
Comparando-se o software com organismos vivos e fenmenos naturais observa-se
que:
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 33
_____________________________________________________________________________________
- Uma vez que uma aplicao entra em produo, ela continua a acrescentar novas
funes e facilidades num ritmo relativamente constante entre 5 a 15 % de nova
funcionalidade por ano. Este fenmeno parece similar ao ganho em massa de vrios
organismos vivos durante a infncia e a adolescncia.
- A entropia (medida do caos num sistema) dos sistemas de software aumenta com o
tempo. Isto equivalente a dizer que vrias pequenas mudanas gradualmente degradam a
estrutura inicial do projeto de software e aumentam sua complexidade. Este fenmeno
verdade em todas as entidades orgnicas naturais, de forma que a sua descoberta em
software no uma surpresa.
Uma vez que os sistemas evoluem e que a manuteno portanto necessria, o que
fazer para diminuir os custos, o que pode ser melhorado? Porque a manuteno tem sido
encarada como um problema ?
Observa-se o seguinte:
- Muito software gerado sem preocupao com a gerao de algo com qualidade e
que possa no futuro ser facilmente modificado. Isto torna muito difcil a tarefa da
manuteno.
Por exemplo, muito difcil entender o programa que outros fizeram quando no
foram seguidas normas de documentao. No se pode tambm esperar que aquele que
desenvolveu o programa dar suporte pelo fato de haver muita mobilidade na rea.
- A manuteno no tem sido vista como uma tarefa nobre. Muito deste sentimento
vem do alto nvel de frustrao associado com o trabalho de manuteno.
a) Tipos de manuteno
Manutenibilidade pode ser definida como a facilidade com a qual o software pode
ser entendido, corrigido, adaptado e/ou melhorado e testado.
Para isto o software deve ser modular, consistente, legvel, conciso (expressar algo
em poucas palavras), auto-descritivo, comunicativo, acessvel e extensvel.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 35
_____________________________________________________________________________________
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 36
_____________________________________________________________________________________
b) Modelo Cascata
Origem:
Na literatura surgiu na dcada de 50 como resultado da experincia obtida com o
desenvolvimento de um sistema de software de defesa area
Tornou-se popular na dcada de 70.
Descrio:
O processo estruturado como uma cascata de fases, onde a sada de uma constitui a
entrada de outra.
Cada fase composta por um conjunto de atividades que podem ser realizadas
concorrentemente.
Caractersticas do modelo:
Linear: o desenvolvimento do software procede linearmente do incio ao fim do
processo.
Rgido: Os resultados de cada fase so congelados antes de se passar para a prxima
fase.
Crticas:
Os projetos raramente seguem o fluxo seqencial que o modelo prope.
Tem dificuldade de acomodar a incerteza natural que existe no comeo dos projetos.
O cliente deve ter pacincia j que uma verso do trabalho s est disponvel num ponto
tardio do cronograma.
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 37
_____________________________________________________________________________________
Estudo
de viabilidade
Anlise e especificao
de requisitos
Projeto e
especificao
Codificao e testes
de mdulos
Integrao e teste
de sistemas
Instalao
Manuteno
Estratgia de desenvolvimento:
Liberar algo ao usurio
Medir o valor para o usurio em todas as dimenses crticas
Ajustar tanto o projeto como os objetivos baseado na realidade observada.
Essa definio da abordagem geral, podendo acomodar vrios modelos como por exemplo:
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 38
_____________________________________________________________________________________
Implementao incremental
Desenvolvimento incremental
Implementao incremental:
O modelo cascata seguido at a fase de projeto. A implementao incremental.
Durante a anlise de requisitos e projeto h uma ateno especial com a identificao
de subconjuntos do sistema e com a definio de interfaces que permitiro que novos
subsistemas sejam acrescentados.
Isto leva a um plano onde diferentes partes so implementadas, testadas e liberadas
em diferentes momentos de acordo com a prioridade.
Desenvolvimento incremental:
O desenvolvimento comea analisando-se um incremento no nvel de requisitos. Cada
incremento ento separadamente projetado, codificado e testado, integrado e
liberado.
Desta forma o cascata seguido mas para cada incremento separadamente. O modelo
uma seqncia de mini-ciclos cascata.
Incrementos so desenvolvidos um aps o outro depois de ter sido recebido um
feedback do usurio.
necessria muita disciplina e um planejamento cuidadoso para evitar uma iterao no
proveitosa e um desenvolvimento que nunca termina.
d) Prototipagem descartvel
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 39
_____________________________________________________________________________________
f) Modelo Espiral
g) Objectory
CONSTRUO
TRANSIO
INCIO ELABORAO
1 2 3 ...
4
INCIO (inception)
O incio tem como objetivo o entendimento da rea de negcio e a deciso sobre o
escopo do projeto. necessrio realizar alguma anlise de forma a se avaliar custos e
benefcios. quando se obtm a aceitao do projeto. Pode ser realizada de diferentes
formas: uma conversa informal ou pode ser realizada atravs de um estudo de viabilidade
que levar semanas para ser concludo.
ELABORAO
Na elaborao obtm-se mais detalhes sobre os requisitos, elabora-se uma anlise e
projeto em alto nvel de forma a se obter um arquitetura base e cria-se o plano de projeto.
Devem ser avaliados os riscos do projeto:
Riscos relacionados aos requisitos: Qual o perigo de construir um sistema que no
satisfaa ao usurio?
Riscos relacionados tecnologia: Sero utilizados objetos ? Qual a experincia da
equipe no desenvolvimento orientado a objetos ?
Riscos relacionados capacidade da equipe: A equipe tem a experincia
necessria ?
Riscos polticos: H foras polticas que podem vir a afetar o projeto ?
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 40
_____________________________________________________________________________________
CONSTRUO
A etapa de construo consiste de vrias iteraes, cada uma produzindo um
software com qualidade, testado e integrado e satisfazendo aos requisitos do projeto.
Cada iterao contm as etapas de anlise, projeto, implementao e testes.
TRANSIO
na etapa de transio em que so realizados os testes beta, melhoria de
desempenho e treinamento dos usurios.
VI. CASE
Obs: Para dizermos que temos um CASE no necessrio que tenhamos todas as
ferramentas.
Dificuldades da rea
CASE hoje
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo
_____________________________________________________________________________________
Ferramentas podem ser classificadas de vrias formas: por funo, pelo uso que
elas tm nas vrias etapas do processo de engenharia de software, pela arquitetura do
ambiente que as suporta, pelo custo, etc...
2. Gerenciamento de projetos
Oferecem apoio ao planejamento de projetos, rastreamento dos requisitos e captao de
mtricas.
3. Suporte
So ferramentas dos seguintes tipos:
Documentao
Software bsico
Garantia da qualidade
Bancos de dados
Gerenciamento de configurao
4. Anlise e projeto
Oferecem apoio para as atividades de anlise e projeto estruturado, possibilitam a
prototipao e simulao de sistemas e permitem o desenvolvimento de interfaces.
5. Programao
H ferramentas para codificao convencional, codificao de quarta gerao e para
programao orientada a objeto
6. Integrao e testes
H ferramentas que ajudam a derivar casos de teste, outras que interagem com o programa
enquanto ele est em execuo podendo at mesmo mudar o software analisado e visam
gerar informaes sobre o que est ocorrendo no programa.
7. Prototipao
8. Manuteno
Podem dar apoio Engenharia reversa ou Reengenharia
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 42
_____________________________________________________________________________________
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 43
_____________________________________________________________________________________
BIBLIOGRAFIA:
_____________________________________________________________________________________
Apostila - Engenharia de Software: Introduo 44