Engenharia de Software e Sistemas Alexandre Vasconcelos amlvcin

  • Slides: 30
Download presentation
Engenharia de Software e Sistemas Alexandre Vasconcelos (amlv@cin. ufpe. br)

Engenharia de Software e Sistemas Alexandre Vasconcelos (amlv@cin. ufpe. br)

Motivação n n Desenvolver sistemas de acordo com a intenção do cliente/usuário Estabelecer noção

Motivação n n 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

O Início de Tudo. . . “A intenção do cliente é. . . ”

O Início de Tudo. . . “A intenção do cliente é. . . ”

O Mais Importante Aqui é. . . Idéia é Viável? ? ?

O Mais Importante Aqui é. . . Idéia é Viável? ? ?

O Que Devo Fazer Exatamente? Ou, em outras palavras, quais são os requisitos da

O Que Devo Fazer Exatamente? Ou, em outras palavras, quais são os requisitos da aplicação?

Requisitos n O Que devo fazer? n n Há restrições sobre as funcionalidades? n

Requisitos n O Que devo fazer? n n Há restrições sobre as funcionalidades? n n Funcionalidades Limites de tempo, memória, etc. ? Há restrições mais amplas? n Empresa, Governo, etc. ?

O que faço então? “O documento de requisitos. . . ”

O que faço então? “O documento de requisitos. . . ”

Como apresentar ao Cliente? “O cliente não vai ler 500 páginas de requisitos!!!”

Como apresentar ao Cliente? “O cliente não vai ler 500 páginas de requisitos!!!”

Uma Figura Vale Mais Que. . .

Uma Figura Vale Mais Que. . .

Mas Paralelamente. . . “Precisamos saber quanto tempo levaremos para fazer nosso trabalho, quanto

Mas Paralelamente. . . “Precisamos saber quanto tempo levaremos para fazer nosso trabalho, quanto isso custará e o que pode nos atrapalhar. . . Precisamos Planejar!!!”

Estimando Esforço n n n Modelo de casos de uso pode ser usado para

Estimando Esforço n n n 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

Estimando Esforço F( ) X horas

Estimando Esforço F( ) X horas

Estimando Esforço

Estimando Esforço

Iniciando a Solução. . . “Temos que identificar em nossos requisitos, quais são os

Iniciando a Solução. . . “Temos que identificar em nossos requisitos, quais são os elementos essenciais para satisfazê-los. . . ”

Iniciando a Solução. . .

Iniciando a Solução. . .

Iniciando a Solução. . .

Iniciando a Solução. . .

Sedimentando a Solução. . . “A partir dos elementos essenciais, precisamos definir estratégias para

Sedimentando a Solução. . . “A partir dos elementos essenciais, precisamos definir estratégias para satisfazê-los incluindo suas restrições. . . ”

Sedimentando a Solução. . .

Sedimentando a Solução. . .

Sedimentando a Solução. . .

Sedimentando a Solução. . .

Sedimentando a Solução. . .

Sedimentando a Solução. . .

Classe Account. . . public class Account { private int balance; /*@ invariant balance>=0

Classe Account. . . public class Account { private int balance; /*@ invariant balance>=0 @*/. . . void debit(int amount) { /*@ requires amount <= balance @*/ /*@ ensures balance = old(balance) - amount @*/ }. . . }

Operacionalizando a Solução. . . “Com a solução definida, o passo final é operacionalizá-la.

Operacionalizando a Solução. . . “Com a solução definida, o passo final é operacionalizá-la. Isto é, codificá-la. ”

Classe Account. . . public class Account { private int balance; . . .

Classe Account. . . public class Account { private int balance; . . . void debit(int amount) { if(amount<=balance) balance = balance – amount; else throw new Account. Exception(“. . . ”); }. . . }

Funciona? ? ? “Com a implementação feita, podemos então executar os testes!!!”

Funciona? ? ? “Com a implementação feita, podemos então executar os testes!!!”

Avaliando a qualidade public class Account. Test extends Test. Case { void test. Debit()

Avaliando a qualidade public class Account. Test extends Test. Case { void test. Debit() { Account acc = new Account(10); acc. debit(10); assert. Equals(0, acc. get. Balance()); } }

Avaliando a qualidade n Também poderemos usar ferramentas baseadas nos contratos do projeto n

Avaliando a qualidade n Também poderemos usar ferramentas baseadas nos contratos do projeto n n n jmlc (JML Compiler) jmlunit (JML + JUnit) escjava 2 (Static Checker for Java)

Aulas de Laboratório n Uso de ferramentas n n Rose, JML, JUnit, etc. Exercitar

Aulas de Laboratório n Uso de ferramentas n n Rose, JML, JUnit, etc. Exercitar elementos de sala n Os monitores ajudarão/ministrarão as aulas práticas

Avaliação da Disciplina n n Nota 1 (N 1) = (Testes 1 e 2)

Avaliação da Disciplina n n Nota 1 (N 1) = (Testes 1 e 2) / 2 Nota 2 (N 2) = Exercício Escolar Nota 3 (N 3) = Projeto Nota Geral = (N 1+N 2+N 3) / 3

Site sobre Projeto n Deve conter no mínimo: n n n Equipe (nome, login)

Site sobre Projeto n Deve conter no mínimo: n n n Equipe (nome, login) Documentos Cronograma atualizado Atas de reuniões Informações úteis a usuários finais Definir um projeto até 20/11/2006 Máximo de 12 equipes na turma

Referências n Básica n n Sommerville, I. Software Engineering. Extra n n www. junit.

Referências n Básica n n Sommerville, I. Software Engineering. Extra n n www. junit. org http: //www. cs. iastate. edu/~leavens/JML/ Kruchten, P. The Rational Unified Process: An Introduction. 2 nd Ed Booch, G. et al. The Unified Modeling Language User Guide.