Engenharia de Software e Sistemas Alexandre Vasconcelos ([email protected]) 1/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 tempo Deve-se entender por engenharia a ciência relacionada com o uso prático de conhecimentos científicos 2/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 3/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 4/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 5/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 6/34 O Início de Tudo... “A intenção do cliente é...” 7/34 O Mais Importante Aqui é... A Idéia é Viável??? 8/34 O Que Devo Fazer Exatamente? Ou, em outras palavras, quais são os requisitos da aplicação? 9/34 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/34 O que faço então? “O documento de requisitos...” 11/34 Como apresentar ao Cliente? “O cliente não vai ler 500 páginas de requisitos!!!” 12/34 Uma Figura Vale Mais Que ... 13/34 Mas Paralelamente ... “Precisamos saber quanto tempo levaremos para fazer nosso trabalho, quanto isso custará e o que pode nos atrapalhar... Precisamos Planejar!!!” 14/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 15/34 Estimando Esforço F( ) X horas 16/34 Estimando Esforço 17/34 Iniciando a Solução... “Temos que identificar em nossos requisitos, quais são os elementos essenciais para satisfazê-los...” 18/34 Iniciando a Solução... 19/34 Iniciando a Solução... 20/34 Sedimentando a Solução... “A partir dos elementos essenciais, precisamos definir estratégias para satisfazê-los incluindo suas restrições...” 21/34 Sedimentando a Solução... 22/34 Sedimentando a Solução... 23/34 Sedimentando a Solução... 24/34 Operacionalizando a Solução... “Com a solução definida, o passo final é operacionalizá-la. Isto é, codificá-la.” 26/34 Classe Account... public class Account { private int balance; ... void debit(int amount) { if(amount<=balance) balance = balance – amount; else throw new AccountException(“...”); } ... } 27/34 Funciona??? “Com a implementação feita, podemos então executar os testes!!!” 28/34 Avaliando a qualidade public class AccountTest extends TestCase { void testDebit() { Account acc = new Account(10); acc.debit(10); assertEquals(0, acc.getBalance()); } } 29/34 Aulas de Laboratório Uso de ferramentas Exercitar elementos de sala Os monitores ajudarão/ministrarão as aulas práticas 30/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 31/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 32/34 Artefatos A entrega dos artefatos deve ser feita ao monitor de sua equipe Artefatos devem constar do site (Atualizado) 33/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. 34/34