Engenharia de
Software e Sistemas
Alexandre Monteiro
1/37
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 tempo
Deve-se entender por engenharia a ciência
relacionada com o uso prático de
conhecimentos científicos
2/37
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
3/37
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, obtenham o melhor nível
entre Qualidade  Produtividade possível
4/37
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 de código
Analisar artefatos para estabelecer a
qualidade do produto
5/37
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
6/37
O Início de Tudo...
“A intenção do cliente é...”
7/37
O Mais Importante Aqui é...
Idéia
é
Viável???
8/37
O Que Devo Fazer
Exatamente?
Ou, em outras
palavras, quais
são os requisitos
da aplicação?
9/37
Requisitos

O Que devo fazer?


Há restrições sobre as
funcionalidades?


Funcionalidades
Limites de tempo, memória, etc.?
Há restrições mais amplas?

Empresa, Governo, etc.?
10/37
O que faço então?
“O documento de requisitos...”
11/37
Como apresentar ao Cliente?
“O cliente
não vai ler
500 páginas
de
requisitos!!!”
12/37
Uma Figura Vale Mais Que ...
13/37
Mas Paralelamente ...
“Precisamos saber
quanto tempo
levaremos para fazer
nosso trabalho, quanto
isso custará e o que
pode nos atrapalhar...
Precisamos Planejar!!!”
14/37
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
15/37
Estimando Esforço
F(
)
X horas
16/37
Estimando Esforço
17/37
Iniciando a Solução...
“Temos que identificar
em nossos requisitos,
quais são os elementos
essenciais para
satisfazê-los...”
18/37
Iniciando a Solução...
19/37
Iniciando a Solução...
20/37
Sedimentando a Solução...
“A partir dos elementos
essenciais, precisamos
definir estratégias para
satisfazê-los incluindo
suas restrições...”
21/37
Sedimentando a Solução...
22/37
Sedimentando a Solução...
23/37
Sedimentando a Solução...
24/37
Operacionalizando a Solução...
“Com a solução definida, o
passo final é
operacionalizá-la. Isto é,
codificá-la.”
26/37
Classe Account...
public class Account {
private int balance;
...
void debit(int amount) {
if(amount<=balance)
balance = balance – amount;
else throw new AccountException(“...”);
}
...
}
27/37
Funciona???
“Com a implementação
feita, podemos então
executar os testes!!!”
28/37
Avaliando a qualidade
public class AccountTest extends TestCase {
void testDebit() {
Account acc = new Account(10);
acc.debit(10);
assertEquals(0, acc.getBalance());
}
}
29/37
Aulas de Laboratório

Uso de ferramentas


Rose, JUnit, etc.
Exercitar elementos de sala

Os monitores ajudarão/ministrarão as
aulas práticas
32/37
Avaliação da Disciplina

Nota 1 (N1) = 1a. Prova * 0,2
Nota 2 (N2) = 2a. Prova * 0,3
Nota 3 (N3) = Apres. Projeto * 0,25
Nota 4 (N4) = Projeto * 0,25
Nota Geral = N1+N2+N3+N4

Obs: Equipes com no máximo 5 alunos




34/37
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
Definir um projeto até 17/05/2007
35/37
Artefatos


A entrega dos artefatos deve ser
feita ao monitor de sua equipe
Artefatos devem constar do site
(Atualizado)
36/37
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.
37/37
Download

Apresentacao de ESS