2/34
Engenharia de Software
(Def.) Disciplina gerencial e tecnológica que lida com a produção e manutenção sistemática de produtos de software desenvolvidos dentro de estimativas de custo e tempoDeve-se entender por engenharia a ciência relacionada com o uso prático de conhecimentos científicos
3/34
O que é software? Programas de computador e
documentação associada Produtos de software podem ser
desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral
4/34
Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu
desenvolvimento, operação e manutenção Empregando profissionais que
desenvolvam o software dentro de custos, prazos e níveis de qualidade controlados
E, além disso, que obtenham o melhor custo-benefício possível entre Qualidade Produtividade
5/34
Motivação Desenvolver sistemas de acordo
com a intenção do cliente/usuário Estabelecer noção sobre tempo e
custo de desenvolvimento Elaborar artefatos além do código Analisar artefatos para estabelecer
a qualidade do produto
6/34
Características da Engenharia de Software A Engenharia de Software se
refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduos
usa princípios de engenharia ao invés de arte, e
inclui tanto aspectos técnicos quanto não técnicos
7/34
O Início de Tudo...
“A intenção do cliente é...”
8/34
O Mais Importante Aqui é...
A Idéiaé
Viável???
9/34
O Que Devo Fazer Exatamente?
Ou, em outras palavras, quais são os requisitos da aplicação?
10/34
Requisitos O Que devo fazer?
Funcionalidades Há restrições sobre as
funcionalidades? Limites de tempo, memória, etc.?
Há restrições mais amplas? Empresa, Governo, etc.?
11/34
O que faço então?
“O documento de requisitos...”
12/34
Como apresentar ao Cliente?
“O cliente não vai ler
500 páginas de requisitos!!
!”
13/34
Uma Figura Vale Mais Que ...
14/34
Mas Paralelamente ...
“Precisamos saber quanto tempo levaremos para fazer nosso trabalho, quanto isso custará e o que pode nos atrapalhar... Precisamos Planejar!!!”
15/34
Estimando Esforço Modelo de casos de uso pode ser
usado para calcular estimativa Baseia-se em uma série de fatores
que determinam a complexidade da aplicação
Há ferramentas para realizar o cálculo
16/34
Estimando Esforço
X horasF( )
17/34
Estimando Esforço
18/34
Iniciando a Solução...
“Temos que identificar em nossos requisitos, quais são os elementos essenciais para satisfazê-los...”
19/34
Iniciando a Solução...
20/34
Iniciando a Solução...
21/34
Sedimentando a Solução...
“A partir dos elementos essenciais, precisamos definir estratégias para satisfazê-los incluindo suas restrições...”
22/34
Sedimentando a Solução...
23/34
Sedimentando a Solução...
24/34
Sedimentando a Solução...
26/34
Operacionalizando a Solução...
“Com a solução definida, o passo final é operacionalizá-la. Isto é, codificá-la.”
27/34
Classe Account...public class Account { private int balance; ... void debit(int amount) { if(amount<=balance) balance = balance – amount; else throw new AccountException(“...”); }...}
28/34
Funciona???
“Com a implementação feita, podemos então executar os testes!!!”
29/34
Avaliando a qualidadepublic class AccountTest extends TestCase {
void testDebit() { Account acc = new Account(10); acc.debit(10); assertEquals(0, acc.getBalance()); }
}
30/34
Aulas de Laboratório Uso de ferramentas Exercitar elementos de sala
Os monitores ajudarão/ministrarão as aulas práticas
31/34
Avaliação da Disciplina Nota 1 (N1) = (Prova 1 + Prova 2)
/ 2 Nota 2 (N2) = Projeto Nota Geral = (N1+N2) / 2
Obs: Equipes com no máximo 5 alunos
32/34
Site sobre Projeto Deve conter no mínimo:
Equipe (nome, login) Documentos Cronograma atualizado Atas de reuniões Informações úteis a usuários finais
33/34
Artefatos A entrega dos artefatos deve ser
feita ao monitor de sua equipe Artefatos devem constar do site
(Atualizado)
34/34
Referências Básica
Sommerville, I. Software Engineering. Extra
www.junit.org http://www.cs.iastate.edu/~leavens/JML/ Kruchten, P. The Rational Unified
Process: An Introduction. 2nd Ed Booch, G. et al. The Unified Modeling
Language User Guide. Pressman, R. Software Engineering.