Você está na página 1de 36

Engenharia de Software

Por: Mestre Narciso Lumbela


Tópicos

 Introdução;
 Objectivos da Disciplina;
 Conceitos fundamentais (software, programa,
engenharia, tecnologias;
 Histórico de evolução do software;
 Crise do Softwere;
 Mitos sobre softwares;
 Contextualização sobre engenharia de Software;
 Ciclo de vida do software.

Por: Mestre Narciso Lumbela


O que é software?

 Pode-se definir o software, numa forma


clássica, como sendo: "um conjunto de
instruções que, quando executadas,
produzem a função e o desempenho
desejados, estruturas de dados que
permitam que as informações relativas ao
problema a resolver sejam manipuladas
adequadamente e a documentação
necessária para um melhor entendimento da
sua operação e uso“.
Por: Mestre Narciso Lumbela
O que é software?

 São programas de computadores, em suas diversas


formas, e a documentação associada.
 Um programa é um conjunto de soluções
algorítmicas, codificadas numa linguagem de
programação, executado numa máquina real.
 No contexto da Engenharia de Software, o software
deve ser visto como um produto a ser "vendido".

Por: Mestre Narciso Lumbela


O que é software?
 Os produtos de software podem ser desenvolvidos
para um cliente em particular ou para o mercado
geral.
 Genérico (COTS – Commercial Off-The Shelf)
 Personalizado – sob encomenda
 Software é um produto conceitual e lógico.
Um produto de software (ou software, como vamos chamar ao longo do curso), por
outro lado, é sistematicamente destinado ao uso por pessoas outras que os seus
programadores. Os eventuais usuários podem, ainda, ter formações e experiências
diferentes, o que significa que uma grande preocupação no que diz respeito ao
desenvolvimento do produto deve ser a sua interface, reforçada com uma documentação
rica em informações para que todos os recursos oferecidos possam ser explorados
deforma eficiente.
Ainda, os produtos de software devem passar normalmente por uma exaustiva bateria de
testes, dado que os usuários não estarão interessados (e nem terão capacidade) de
detectar e corrigir os eventuais erros de execução.
Por: Mestre Narciso Lumbela
Particularidades do software, quando
comparadas a outros produtos.

 O software é concebido e desenvolvido como


resultado de um trabalho de engenharia e
não manufaturado no sentido clássico;
 O software não se desgasta, ou seja, ao
contrário da maioria dos produtos, o software não se
caracteriza por um aumento na possibilidade de
falhas à medida que o tempo passa (como acontece
com a maioria dos produtos manufaturados);
 A maioria dos produtos de software é
concebida inteiramente sob medida,sem a
utilização de componentes pré-existentes.

Por: Mestre Narciso Lumbela


Características

 Invisibilidade
 Software é invisível e invisualizável

 Complexidade
 Software é mais complexo do que qualquer outro produto
construídos por seres humanos
 Mutabilidade
 Existe sempre uma pressão para se fazer mudanças em um
software

Por: Mestre Narciso Lumbela


Características

Conformidade
 O software deve ser desenvolvido conforme o
ambiente. Não é o ambiente que deve se adaptar ao
software.
 Se o software esta conforme – os requisitos (o
ambiente) todo o suporte operacional deve se
adaptar ao software.

Por: Mestre Narciso Lumbela


Formas do Software

Por: Mestre Narciso Lumbela


Aplicações de Software
Software Funcionalidade

Básico Programas de apoio a outros programas

De Tempo Real Monitora, analisa e controla eventos do


mundo real

Comercial Operações comerciais e tomada de decisões


administrativas;

Cientifico e de Engenharia Algoritmos de processamento de números;

Embutido Controla produtos e sistemas de mercados


industriais e de consumo;

De computador pessoal Processamento de textos, planilhas


electrónicas, diversões, etc.

De Inteligência Artificial Algoritmos não numéricos para resolver


problemas que não sejam favoráveis a
computação ou análise directa.

Por: Mestre Narciso Lumbela


Evolução do Software

(1950 - 1965)
 O hardware sofreu contínuas mudanças
 O software era uma arte "secundária" para a
qual havia poucos métodos sistemáticos
 O hardware era de propósito geral
 O software era específico para cada aplicação
 Não havia documentação

Por: Mestre Narciso Lumbela


Evolução do Software
(1965 - 1975)
 Multiprogramação e sistemas multiusuários
 Técnicas interativas
 Sistemas de tempo real
 1a geração de SGBD’s
 Produto de software - software houses
 Bibliotecas de Software
 Cresce no de sistemas baseado em computador
 Manutenção quase impossível
..... CRISE DE SOFTWARE

Por: Mestre Narciso Lumbela


Evolução do Software
(1975 - hoje)
 Sistemas distribuídos
 Redes locais e globais
 Uso generalizado de microprocessadores - produtos
inteligentes
 Hardware de baixo custo
 Impacto de consumo
..... CRISE DE SOFTWARE (aflição crônica???)

Por: Mestre Narciso Lumbela


Evolução do Software
(Quarta era do software: atualidade)
 Tecnologias orientadas o objetos
 Sistemas especialistas e software de inteligência artificial usados
na prática
 Software de rede neural artificial
 Computação Paralela
 Internet
..... CRISE DE SOFTWARE (aflição crônica???)

Por: Mestre Narciso Lumbela


Crise de Software

Refere-se a um conjunto de problemas


encontrados no desenvolvimento de software:
(1) As estimativas de prazo e de custo freqüentemente são
imprecisas
“Não dedicamos tempo para coletar dados sobre o
processo de desenvolvimento de software”
“Sem nenhuma indicação sólida de produtividade, não
podemos avaliar com precisão a eficácia de novas
ferramentas, métodos ou padrões”

Por: Mestre Narciso Lumbela


Crise de Software

(2) A produtividade das pessoas da área de software


não tem acompanhado a demanda por seus serviços
“Os projetos de desenvolvimento de software
normalmente são efetuados apenas com um vago
indício das exigências do cliente”

Por: Mestre Narciso Lumbela


Crise de Software

(3) A qualidade de software às vezes é menos que


adequada
Só recentemente começam a surgir conceitos
quantitativos sólidos de garantia de qualidade de
software
(4) O software existente é muito difícil de manter
A tarefa de manutenção devora o orçamento destinado
ao software
A facilidade de manutenção não foi enfatizada como um
critério importante
Por: Mestre Narciso Lumbela
Crise de Software

estimativas de prazo e de custo 


produtividade das pessoas 
qualidade de software 
software difícil de manter 

Por: Mestre Narciso Lumbela


Causas dos problemas associados à Crise
de Software

1. próprio caráter do Software


O software é um elemento de sistema lógico e não físico (produto
intangível)
Conseqüentemente, o sucesso é medido pela qualidade de uma
única entidade e não pela qualidade de muitas entidades
manufaturadas

O software não se desgasta, mas se deteriora!!!

Por: Mestre Narciso Lumbela


Causas dos problemas associados à Crise
de Software

2. falhas das pessoas responsáveis pelo desenvolvimento de


Software
Gerentes sem nenhum background em software
Os profissionais da área de software têm recebido pouco
treinamento formal em novas técnicas para o desenvolvimento
de software
Resistência a mudanças.

Por: Mestre Narciso Lumbela


Causas dos problemas associados à Crise
de Software

3. mitos do Software

propagaram desinformação e confusão


administrativos

cliente

profissional

Por: Mestre Narciso Lumbela


Mitos do Software (administrativos)

Já temos um manual repleto de padrões e


procedimentos para a construção de software. Isso
não oferecerá ao meu pessoal tudo o que eles
precisam saber?

Realidade:
Será que o manual é usado?
Os profissionais sabem que ele existe?
Ele reflete a prática moderna de desenvolvimento de software?
Ele é completo?

Por: Mestre Narciso Lumbela


Mitos do Software (administrativos)

Meu pessoal tem ferramentas de desenvolvimento de


software de última geração; afinal lhes compramos
os mais novos computadores.

Realidade:
É preciso muito mais do que os mais recentes computadores para se fazer
um desenvolvimento de software de alta qualidade.

Por: Mestre Narciso Lumbela


Mitos do Software (administrativos)

Se nós estamos atrasados nos prazos, podemos


adicionar mais programadores e tirar o atraso.

Realidade:
O desenvolvimento de software não é um processo mecânico igual à manufatura.
Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem
ser acrescentadas, mas somente de uma forma planejada.

Por: Mestre Narciso Lumbela


Mitos do Software (cliente)

Uma declaração geral dos objetivos é suficiente


para se começar a escrever programas - podemos
preencher os detalhes mais tarde.

Realidade:
Uma definição inicial ruim é a principal causa de fracassos dos esforços de desenvolvimento
de software.
É fundamental uma descrição formal e detalhada do domínio da informação, função,
desempenho, interfaces, restrições de projeto e critérios de validação.

Por: Mestre Narciso Lumbela


Mitos do Software (cliente)

Os requisitos de projeto modificam-se


continuamente, mas as mudanças podem ser
facilmente acomodadas, porque o software é
flexível.

Realidade:
Uma mudança, quando solicitada tardiamente num projeto, pode ser maior do que mais
do que uma ordem de magnitude mais dispendiosa do que a mesma mudança solicitada
nas fases iniciais.

Por: Mestre Narciso Lumbela


Mitos do Software (profissional)

Assim que escrevermos o programa e o colocarmos


em funcionamento nosso trabalho estará completo.

Realidade:
Os dados da indústria indicam que entre 50 e 70% de todo esforço gasto num programa
serão despendidos depois que ele for entregue pela primeira vez ao cliente.
Mitos do Software (profissional)

Enquanto não tiver o programa "funcionando", eu


não terei realmente nenhuma maneira de avaliar
sua qualidade.

Realidade:
Um programa funcionando é somente uma parte de uma Configuração de Software que
inclui todos os itens de informação produzidos durante a construção e manutenção do
software.
Contextualização sobre engenharia de Software

 Visando melhorar a qualidade dos produtos de software e


aumentar a produtividade no processo de
desenvolvimento, surgiu a Engenharia de Software.
 A Engenharia de Software trata de aspectos relacionados
ao estabelecimento de processos, métodos, técnicas,
ferramentas e ambientes de suporte ao desenvolvimento
de software.
 Assim como em outras áreas, em uma abordagem de
engenharia de software, inicialmente o problema a ser
tratado deve ser analisado e decomposto em partes
menores, em uma abordagem “dividir para conquistar”.

Por: Mestre Narciso Lumbela


Contextualização sobre engenharia de Software (1)

 Para cada uma dessas partes, uma solução deve ser


elaborada. Solucionados os sub-problemas isoladamente,
é necessário integrar as soluções.
 Para apoiar a resolução de problemas, procedimentos
(métodos, técnicas, roteiros etc) devem ser utilizados,
bem como ferramentas para parcialmente automatizar o
trabalho.
 Muitas vezes não é possível conduzir o desenvolvimento
de software de maneira individual.
 Pessoas têm de trabalhar em equipes, o esforço tem de
ser planejado, coordenado e acompanhado, bem como a
qualidade do que se está produzindo tem de ser
sistematicamente avaliada.

Por: Mestre Narciso Lumbela


Qualidade de Software

 Um dos objetivos da Engenharia de Software é melhorar a


qualidade dos produtos de software desenvolvidos;
 Podemos ver a qualidade se software sob três perspectivas:
 Para o Usuário: um produto de software é de boa qualidade
se ele satisfizer suas necessidades, sendo fácil de usar,
eficiente e confiável. Perspectiva externa
 Para um desenvolvedor: um produto de boa qualidade tem
de ser fácil de manter, sendo o produto de software
observado por uma perspectiva interna;
 Para um cliente: o produto de software deve agregar valor a
seu negócio (qualidade em uso);

Por: Mestre Narciso Lumbela


Qualidade de Software (1)

 Em última instância, podemos perceber que a qualidade


é um conceito com múltiplas facetas (perspectivas de
usuário, desenvolvedor e cliente) e que envolve
diferentes características (por exemplo, usabilidade,
confiabilidade, eficiência, manutenibilidade,
portabilidade, segurança, produtividade) que devem ser
alcançadas em níveis diferentes, dependendo do
propósito do software.
 O que há de comum nas várias perspectivas discutidas
acima é que todas elas estãofocadas no produto de
software. Ou seja, estamos falando de qualidade do
produto.

Por: Mestre Narciso Lumbela


Qualidade de Software (2)

 Aqualidade dos produtos de software depende


fortemente da qualidade dos processos usados para
desenvolvê-los e mantê-los.
 É necessário, pois, que a qualidade seja incorporada
ao produto ao longo de seu processo de
desenvolvimento.
 Abordagens de qualidade de processo, tal como a
série de padrões ISO 9000, sugerem que
melhorando a qualidade do processo de software, é
possível melhorar a qualidade dos produtos
resultantes.

Por: Mestre Narciso Lumbela


Actividades de um processo de software

 Atividades de Desenvolvimento (ou Técnicas ou de


Construção): são as atividades diretamente relacionadas
ao processo de desenvolvimento do software, ou seja, que
contribuem diretamente para o desenvolvimento do
produto de software a ser entregue ao cliente. São
exemplos de atividades de desenvolvimento:
especificação e análise de requisitos, projeto e
implementação.
 Atividades de Gerência: são aquelas relacionadas ao
planejamento e acompanhamento gerencial do projeto,
tais como realização de estimativas, elaboração de
cronogramas, análise dos riscos do projeto etc.

Por: Mestre Narciso Lumbela


Actividades de um processo de software (2)

 Atividades de Garantia da Qualidade: são aquelas


relacionadas com a garantia da qualidade do produto
em desenvolvimento e do processo de software
utilizado, tais como revisões e inspeções de produtos
(intermediários ou finais) do desenvolvimento.
 As atividades de desenvolvimento formam a espinha
dorsal do desenvolvimento e, de maneira geral, são
realizadas segundo uma ordem estabelecida no
planejamento.

Por: Mestre Narciso Lumbela


Actividades de um processo de software (3)

Por: Mestre Narciso Lumbela

Você também pode gostar