Você está na página 1de 59

Engenharia de Software

Conceitos Introdutórios

Prof. M.Sc. Nathielly de Souza Campos


E-mail: nathielly@unisuamdoc.com.br
Grupo do Facebook: https://www.facebook.com/groups/engenhariasoftware/
Diretório de atividades realizadas: https://drive.google.com/folderview?id=0B8lAa4kEAGB9aVhySkFhQm9CVjQ&usp=sharing
CONCEITOS INTRODUTÓRIOS
Software
• O que é um software?
– São instruções (programas de computador) que,
quando executadas, produzem a função e o
desempenho desejados;
– estruturas de dados que permitem a manipulação
das informações;
– documentos que descrevem a operação,
condições sobre o uso dos programas.
Projeto de Software
• Nem sempre é uma experiência gostosa...
Projetos de Software

(Imagem retirada de material da TI exames)


Therac-25
• Equipamento de Radioterapia.
• Entre 1985 e 1987 se envolveu em 6
acidentes, causando mortes por overdoses de
radiação.
• Software foi adaptado de uma antecessora,
Therac-6:
– falhas por falta de testes integrados
– falta de documentação
• página 382 do Pressman
Denver International Airport
• Custo do projeto: US$ 4.9 bilhões
● 100 mil passageiros por dia
● 1,200 vôos
● 53 milhas quadradas
● 94 portões de embarque e desembarque
● 6 pistas de pouso / decolagem
Denver International Airport
Erros no sistema automático de transporte de
bagagens:
● Atraso na abertura do aeroporto com custo total estimado
em US$360 Milhões
86 milhões para consertar o sistema
Ariane 5

• Projeto da Agência Espacial


Européia que custou:
– 10 anos.
– US$ 8 Bilhões.
• Capacidade 6 toneladas.
• Garante supremacia européia
no espaço.
Resultado: voo inaugural - 1996
• Explosão 40 segundos após a decolagem.
• Destruição do foguete e carga avaliada em US$ 500
milhões.
Ironia...
• O resultado desta conversão não era mais
necessário após a decolagem...
Quais são os problemas?
• A sofisticação do software ultrapassou nossa
capacidade de construção.

• Nossa capacidade de construir programas não


acompanha a demanda por novos programas.

• Nossa capacidade de manter programas é


ameaçada por projetos ruins.
Engenharia de Software
• Para que serve a disciplina Engenharia de
Software?

Discutir todos os aspectos relacionados ao


processo de desenvolvimento de software:
processos, técnicas, ferramentas,
metodologias, pessoas, etc.
Projeto
• O que é um projeto?

“Um projeto é um esforço temporário


empreendido para criar um produto, serviço
ou resultado exclusivo.” (PMBOK, 2004)
Projeto
• Ciclo de Vida de um Projeto
Projeto
• Quem deve ser envolvido? As partes interessadas.
Projeto de Software
• Quem são as partes interessadas?
Clientes Fornecedores
Patrocinadores Gerente de Projeto
Gerente de Projeto Analista de Sistemas
Analista de Negócios Administrador de Banco de
Analista de Sistemas Dados
Usuários Chaves Desenvolvedor ou
programador
.
Analista de Testes
.
.
.
.
.
Projeto de Software
• Por onde começar?
Entradas Ferramentas e Técnicas Saídas
Idéias Programas de Programa
Contratos desenvolvimento de Doc. Especificação
Software (Ex: Ferramentas de Requisitos
Leis e regulamentos CASE)
Políticas Contrato atualizado
Programas de
Institucionais documentação dos .
. requisitos (Ex: Word) .
. Ferramenta de Desenho .
. de Processos (Ex: MS
Vision)
.
.
Projeto de Software
• Mitos
Clientes Equipe Técnica Equipe de Gestão
Passei a minha idéia, não O programa foi escrito, Padrões já existem e
preciso fornecer detalhes!
acabei! serão seguidos!
Se eu mudar de idéia,
eles podem adaptar a A qualidade é avaliada até Cronograma atrasado,
solução facilmente! o programa ficar pronto! adicione mais técnicos!
.
O programa é o único Terceirizei, posso
. produto que tenho que relaxar!
. entregar! Documentar é perda de
Eu entendi tudo o que o tempo. Eu quero o
cliente disse. produto pronto!
Se eu perguntar ao cliente .
sobre seu negócio ele .
entenderá que não o
conheço.
Projeto de Software
• Influência dos stakeholders
Projeto de Software
• Fatores Críticos de Sucesso
– Saber o que se quer com o produto
– Escolher adequadamente as Partes Interessadas
– Documentar todas as decisões
– Definição das Tecnologias
– Gerenciar Mudanças
– Gerenciar Conflitos
– Gerenciar Riscos
– Gerenciar os recursos humanos
Projeto de Software
• Fatores Críticos de Sucesso
– Gerenciar Escopo
– Gerenciar Tempo
– Gerenciar Aquisições
– Gerenciar as Comunicações
– Gerenciar Custos
– Experiência das partes interessadas
– ...
Projeto
• Ciclo de Vida de um Produto
AS FASES DO PROCESSO DE
DESENVOLVIMENTO DE SOFTWARE
Processo de
Desenvolvimento de Software

• O que é Processo de Desenvolvimento de


Software?

Conjunto de atividades cujo objetivo é o


desenvolvimento ou a evolução de um software.
Processo de
Desenvolvimento de Software
• Ocorre por meio de atividades genéricas ou
fases. São elas:
– Análise
– Projeto
– Implementação ou Desenvolvimento
– Testes
– Implantação
– Operação e Manutenção
Processo de
Desenvolvimento de Software
• Atividade Genérica: Análise
– Atividade em que são estabelecidos os serviços
necessários, as restrições de operação e
desenvolvimento do produto.
– É uma fase marcada por encontros entre o cliente
e fornecedor para que os requisitos sejam
documentados.
– O principal produto é o documento que especifica
o que será feito, denominado Especificação de
Requisitos ou Requisitos Técnicos do Produto.
Processo de
Desenvolvimento de Software
• Atividade Genérica: Análise
– Se tiver de ocorrer mudanças, esse é o momento
de melhor custo-benefício;
Processo de
Desenvolvimento de Software
• Atividade Genérica: Projeto
– A partir do documento “Especificação de
Requisitos ou Requisitos Técnicos do Produto” é
desenhado o projeto do produto.
– São definidos os padrões de interface, os
componentes, a arquitetura do sistema, os
algoritmos, as tecnologias, o banco de dados,
etc...
– É uma fase muito técnica. Não é voltada para a
área de negócio.
Processo de
Desenvolvimento de Software
• Atividade Genérica: Projeto
– É importante o envolvimento de pessoas técnicas
que representem o interesse do cliente.
– Principais produtos: Modelos do Sistema,
Desenho de Processos Novos, Banco de Dados,
Protótipo, etc.
Processo de
Desenvolvimento de Software
• Atividade Genérica: Implementação
– Os programadores codificam, depuram o código e
verificam se o escopo foi atendido.
– Ocorre a implementação da estrutura definida
durante o projeto em um programa executável
– Do projeto a um programa.
– Programação é uma atividade pessoal: não existe
um processo genérico.
Processo de
Desenvolvimento de Software
• Atividade Genérica: Testes
– O produto é disponibilizado em um ambiente de
testes.
– Os clientes do produto validam o produto.
– Caso existam não conformidades, o fornecedor
executa as modificações solicitadas, desde que
tenham solicitadas na fase de Análise.
– Após a realização dos ajustes solicitados, o cliente
confere se tudo está a contento.
Processo de
Desenvolvimento de Software
• Atividade Genérica: Testes (continuação)
– O cliente quando aceita o produto assina um
Termo de Aceite do Produto.
– Após o aceite do produto, pode-se começar o
processo de implantação.
Processo de
Desenvolvimento de Software
• Atividade Genérica: Implantação
– Já foi dado o Aceite do produto.
– É o processo de “juntar” o hardware, software e
as pessoas que fazem o sistema.
– Pode ser realizado de maneira incremental.
– O software é disponibilizado no ambiente de
produção.
– Sistema está pronto para ser utilizado no dia-a-dia
da empresa.
Processo de
Desenvolvimento de Software
• Atividade Genérica: Operação e Manutenção
– Sistema sendo utilizado no dia-a-dia da empresa.
– Sistema pode apresentar situações não previstas.
– Usuários usarão o sistema de maneira não
esperada.
– Pode revelar problemas de interação com outros
sistemas a medida em sofrem mudanças.
Processo de
Desenvolvimento de Software
• Atividade Genérica: Operação e Manutenção
– Novos requisitos podem ser solicitados. Surgem
demandas de modificações no produto.
É importante saber...
Os autores podem dar
nomes diferentes para
1) Comunicação
Iniciação do projeto as fases do processo
Levantamento de requisitos
de desenvolvimento de
software.
2) Planejamento
Estimativa
Cronogramação
Monitoração

3) Modelagem
Análise
Projeto

4) Construção do Protótipo
Codificação
Testes

5) Implantação
Entrega
Manutenção
Feedback
Engenharia de Software:
Abrangência
• E.S. possui 3 elementos fundamentais:
– métodos: “como fazer”
– ferramentas: apoio automatizado aos métodos.
– Procedimentos: elo de ligação entre os métodos e
os procedimentos
• Existem diversos Paradigmas de Engenharia
de Software:
– abordagens que envolvem estes métodos,
ferramentas e procedimentos
Questões de Reflexão
• Nem todos os projetos de software possuem
clientes (usuários finais) que especificam os
sistemas.
– Exemplifique.
– Como então estes programas são concebidos?
Questões de Reflexão
• Manuais, padrões e políticas internas servem
como padrões e requisitos a serem seguidos?
– Exemplifique.
Questões de Reflexão
• A responsabilidade de entrega de um produto
livre de defeitos é apenas do fornecedor?
Questões de Reflexão
• Por que é importante documentar os novos
processos? Justifique.
Questões de Reflexão
• É importante documentar os processos
antigos? Justifique.
Questões de Reflexão
• Quais são os Fatores Críticos de Sucesso (FCS) em um Projeto
de Software?
Questões de Reflexão
• Por que é tão difícil atender os prazos
acordados em projetos de software?
Questões de Reflexão
• Por que é tão difícil atender as expectativas
das partes interessadas?
Questões de Reflexão
• O que é ... ?

– Ambiente de construção
– Ambiente de teste
– Ambiente de produção
Questões de Reflexão
• O que é ... do serviço ?

– Organização patrocinadora
– Organização executora
– Organização hospedeira

O casamento entre cliente e o fornecedor.


Questões de Reflexão
• O que é um sistema legado?
Questões de Reflexão
• O que é um projeto piloto?
• Cite cenários em que pode ser útil lançar mão
dessa possibilidade.
Questões de Reflexão
• Cite mitos do
desenvolvedor.
Questões de Reflexão
• Cite mitos do cliente.
Questões de Reflexão
• Cite mitos da equipe de gestão do projeto de
software.
Questões de Reflexão
• Como escolher os participantes de um
projeto?
Questões de Reflexão
• Quando adicionar mais pessoas a um projeto?
Exercitando...
• Em casa
– Resolva oralmente as questões das listas 1 e 2.
• Assinale as questões que você não conseguir resolver
• Na aula seguinte, retire as dúvidas com o professor.
Exercitando...
• Em sala de Aula
– Vamos resolver a lista de exercícios 3
• Em equipe
• No máximo 4 pessoas

– Apresentação da sugestão de solução


Projeto de Software
• Bibliografias
– PRESSMAN, Roger S. Engenharia de Software. São
Paulo: Makron Books, 1995. 1056p.
– SOMMERVILLE, Ian. Engenharia de Software. 6.
ed. São Paulo: Addison Wesley,2003.592 p.
– PFLEEGER, Shari Lawrence. Engenharia de
Software, Teoria e Prática. 2. ed. Tradução:
Franklin, Dino. São Paulo: Pearson, Prentice-Hall,
2004. 537p.
• Imagens retiradas do Google Imagens.

Você também pode gostar