• Nenhum resultado encontrado

Uma Introdução à Engenharia de Software

N/A
N/A
Protected

Academic year: 2022

Share "Uma Introdução à Engenharia de Software"

Copied!
9
0
0

Texto

(1)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 1/50

© 2007 by Pearson Education

Uma Introdução à Engenharia de Software

Profs. Márcio Lopes Cornélio Alexandre Vasconcelos

Slides originais elaborados por Ian Sommerville O autor permite o uso e a modificação dos slides para fins didáticos

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 2/50

© 2007 by Pearson Education

Apresentação da Disciplina

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 3/50

© 2007 by Pearson Education

Aulas de Monitoria e Laboratório

Exercício de conteúdos vistos em sala

• Os monitores ajudarão/ministrarão as aulas práticas

Ajuda no uso de ferramentas

Acompanhamento das equipes

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 4/50

© 2007 by Pearson Education

4/34

Avaliação da Disciplina

Nota 1 (N1) = “Prova 1”*0,3

Nota 2 (N2) = “Prova 2”*0,3

Nota 3 (N3) = Projeto*0,4

Nota Geral = N1+N2+N3

Obs: Equipes com no máximo 5 alunos

© 2007 by Pearson Education

Publicação dos projetos

A entrega dos artefatos deve ser publicada na ferramenta Redmine e será monitorada pelo monitor de sua equipe

Deve conter:

• Equipe (nome, login)

• Documentos desenvolvidos nos projeto

• Cronograma atualizado

• Atas de reuniões da equipe e com o monitor responsável pela equipe

• Informações úteis a usuários finais (opcional)

© 2007 by Pearson Education

6/34

Referências

Básica

• Ian Sommerville. Engenharia de Software - 9a edição -Versão em Portuguêseditada pela Pearson/Addison-Wesley, 2012.

Extras

• Carlo Ghezzi, Mehdi Jazayeri e Dino Mandrioli. Fundamentals of Software Engineering. Prentice-Hall. 1991.

• Alain Abran, James W. Moore, Pierre Bourque e Robert Dupuis (eds.). Guide to the Software Engineering Book of Knowledge. IEEE Computer Society Press, 2004.

Disponível online em:http://www.computer.org/portal/web/swebok/htmlformat

• Pressman R. Engenharia de Software - 6a edição - McGraw-Hill Interamericana do Brasil.Material suplementar em inglês

• PÁDUA, W. Engenharia de Software – Fundamentos, Métodos e Padrões. 3. Ed.

Rio de Janeiro: LTC, 2009.

• Pfleeger, S. Engenharia de Software – Teoria e Prática 4a edição – Pearson/Prentice-Hall, 2009.

(2)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 7/50

© 2007 by Pearson Education

Introdução

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 8/50

© 2007 by Pearson Education

Motivação

As economias de TODAS as nações desenvolvidas são dependentes de software.

Cada vez mais sistemas são controlados por software.

A engenharia de software se dedica às teorias, métodos e ferramentas para desenvolvimento de software profissional

• Sistemas não-triviais

• Com base em um conjunto de requisitos

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 9/50

© 2007 by Pearson Education

Custos de software

Os custos de software geralmente dominam os custos de sistemas computacionais.

• Em geral, software custa mais que hardware

Manter um software geralmente custa mais que desenvolvê-lo

A engenharia de software dedica-se ao

desenvolvimento de software com custos adequados

• Respeitando o cronograma acordado

• Satisfazendo as necessidades dos clientes

• Minimizando o custo de manutenção

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 10/50

© 2007 by Pearson Education

Definições

Engenharia de Software - 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

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 11/50

© 2007 by Pearson Education

Objetivos da 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

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 12/50

© 2007 by Pearson Education

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

(3)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 13/50

© 2007 by Pearson Education

O que é software?

Programas de computador e artefatos associados

Produtos de software podem ser:

Genéricos – desenvolvidos para serem vendidos para uma grande variedade de clientes (e.g., Excel e Word)

Personalizados – desenvolvidos para um único cliente de acordo com as suas especificações.

Um software novo pode ser criado através de

• desenvolvimento de novos programas;

• configuração de sistemas de software genéricos; ou

• reutilização de um software existente.

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 14/50

© 2007 by Pearson Education

O que é engenharia de software?

É uma disciplina relacionada com todos os aspectos da produção de software que propõe ferramentas, técnicas e processos para:

• Entender com precisão qual é o problema (as necessidades associadas ao sistema que deve ser construído/modificado)

• Produzir uma solução adequada para esse problema (um sistema pronto para usar, levando-se em consideração as necessidades das partes interessadas)

• Levando-se em conta restrições de desenvolvimento e recursos disponíveis

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 15/50

© 2007 by Pearson Education

Qual é a diferença entre engenharia de software e ciência da computação?

A ciência da computação dedica-se à teoria e aos fundamentos;

• Engenharia de software dedica-se aos aspectos práticos de desenvolvimento e de entrega de software

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 16/50

© 2007 by Pearson Education

Qual é a diferença entre engenharia de software e engenharia de sistemas?

Engenharia de sistemas:

• Mais ampla

• Muita ênfase em aspectos de hardware e infra-estrutura

• Abstração do hardware

• Organização física das partes do sistema

• Aspectos de comunicação

• Engloba a engenharia de software

Os engenheiros de sistema estão envolvidos em diversas atividades da engenharia de software

• Projeto da arquitetura

• Elicitação e especificação de requisitos

© 2007 by Pearson Education

O que é processo de software?

Um conjunto estruturado de atividades, práticas, artefatos e ferramentas necessários para o desenvolvimento de um sistema de software

• Especificação;

• Desenvolvimento;

• Validação;

• Evolução.

Exemplos: Processo Unificado (RUP), OpenUP, Programação Extrema (XP)

© 2007 by Pearson Education

Alguns elementos de um processo:

• Modelos de sistema:

• Modelos gráficos que podem/devem ser produzidos e as notações que devem ser empregadas;

• Restrições aplicadas aos modelos de sistema;

• Recomendações de boas práticas de projeto;

• Atividades que devem ser seguidas em determinada ordem

• Às vezes também prescrevem ferramentas

Um processo adere a um ou mais modelos de processo

O que é processo de software?

(continuação)

(4)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 19/50

© 2007 by Pearson Education

Quais são os custos da engenharia de software?

60% dos custos são custos de desenvolvimento

40% são custos de testes

Para software sob encomenda, os custos de evolução normalmente excedem os de desenvolvimento.

Os custos variam dependendo do tipo de sistema que está sendo desenvolvido e dos requisitos do sistema, tais como desempenho e confiabilidade

A distribuição de custos depende do modelo de desenvolvimento que é usado.

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 20/50

© 2007 by Pearson Education

Distribuição de custos nas atividades

Figura 1.1 Distribuição de custos nas atividades de engenharia de software

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 21/50

© 2007 by Pearson Education

O que é CASE (Computer-Aided Software Engineering) ?

Sistemas de software que se destinam a fornecer apoio automatizado para as atividades de desenvolvimento de software.

Sistemas CASE são usados freqüentemente para apoiar um método específico

Upper-CASE

• Ferramentas para apoiar as atividades iniciais de processo de requisitos e de projeto;

Lower-CASE

• Ferramentas para apoiar as atividades finais tais como programação, debugging e teste.

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 22/50

© 2007 by Pearson Education

Quais são alguns atributos de um bom software?

O software deve fornecer a funcionalidade e o desempenho requeridos para o usuário e deve apresentar certas características

Facilidade de manutenção

• Deve ser fácil e barato fazer com que o sistema, depois de implantado, evolua para atender às necessidades dos clientes

Confiabilidade

• O software deve funcionar de maneira que o usuário possa depender dele. No caso de falha, não traz danos físicos ou econômicos

Eficiência

• O software deve usar o mínimo de recursos e prover máxima funcionalidade

Usabilidade

• O software deve ser compreensível e fácil de usar

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 23/50

© 2007 by Pearson Education

Quais são os desafios-chave enfrentados pela engenharia de software?

Heterogeneidade

• Sistemas de software devem ser capazes de lidar com diferentes plataformas de hardware e ambientes de execução;

Entrega

• O sistema deve ser entregue ao cliente no menor tempo possível, com o menor custo possível;

Confiança

• O usuário deve poder justificadamente depositar sua confiança no sistema

Escalabilidade

• O sistema deve funcionar adequadamente mesmo quando um grande número de usuários está usando-o

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 24/50

© 2007 by Pearson Education

Responsabilidade profissional e ética

A engenharia de software envolve responsabilidades mais amplas do que simplesmente a aplicação de habilidades técnicas.

Os engenheiros de software devem se comportar de modo honesto e eticamente responsável para serem respeitados como profissionais.

O comportamento ético é mais do que simplesmente a

sustentação de leis.

(5)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 25/50

© 2007 by Pearson Education

Questões de responsabilidade profissional

Confidencialidade

• Os engenheiros de software devem respeitar a confidencialidade de seus funcionários ou clientes, independentemente de ter ou não assinado um acordo formal.

• Caso não aceitem essas condições, devem deixar isso expiícito para seus contratantes

Competência

• Os engenheiros não devem conscientemente aceitar um trabalho que esteja fora de sua competência.

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 26/50

© 2007 by Pearson Education

Direitos sobre propriedade intelectual

• Desenvolvedores devem estar cientes das leis locais que regem o uso de propriedade intelectual, tais como patentes, direitos autorais, etc.

• Eles devem tomar cuidado para assegurar que a propriedade intelectual dos funcionários e clientes seja protegida.

Questões de responsabilidade profissional

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 27/50

© 2007 by Pearson Education

Exemplos de dilemas éticos

Discordância, em princípio, das políticas da gerência sênior.

Liberação de um sistema de segurança crítico sem finalizar o teste do sistema.

Participação no desenvolvimento de sistemas de armamentos militares ou de sistemas nucleares.

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 28/50

© 2007 by Pearson Education

Exemplo de um Processo Simplificado de Desenvolvimento

© 2007 by Pearson Education

29/34

O Início de Tudo...

“A intenção do cliente é...”

© 2007 by Pearson Education

O Mais Importante Aqui é...

A Idéia é

Viável???

(6)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 31/50

© 2007 by Pearson Education

O Que Devo Fazer Exatamente?

Ou, em outras palavras, quais são os requisitos da aplicação?

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 32/50

© 2007 by Pearson Education

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.?

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 33/50

© 2007 by Pearson Education

O que faço então?

“O documento de requisitos...”

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 34/50

© 2007 by Pearson Education

Como apresentar ao Cliente?

“O cliente não vai ler 500

páginas de requisitos!!!”

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 35/50

© 2007 by Pearson Education

Uma Figura Vale Mais Que ...

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 36/50

© 2007 by Pearson Education

Mas Paralelamente ...

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

Também precisamos controlar acessos, versões

e mudanças (Gerência de configuração)

(7)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 37/50

© 2007 by Pearson Education

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

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 38/50

© 2007 by Pearson Education

Estimando Esforço

X horas

F( )

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 39/50

© 2007 by Pearson Education

Estimando Esforço

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 40/50

© 2007 by Pearson Education

Iniciando a Solução...

“Temos que identificar em nossos requisitos, quais são os elementos essenciais para

satisfazê-los...”

© 2007 by Pearson Education

Iniciando a Solução...

© 2007 by Pearson Education

Iniciando a Solução...

(8)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 43/50

© 2007 by Pearson Education

Sedimentando a Solução...

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

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 44/50

© 2007 by Pearson Education

Sedimentando a Solução...

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 45/50

© 2007 by Pearson Education

Sedimentando a Solução...

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 46/50

© 2007 by Pearson Education

Sedimentando a Solução...

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 47/50

© 2007 by Pearson Education

Operacionalizando a Solução...

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

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 48/50

© 2007 by Pearson Education

Classe Account...

public class Account { private int balance;

...

void debit(int amount) { if(amount<=balance)

balance = balance – amount;

else throw new AccountException(“...”);

} ...

}

(9)

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 49/50

© 2007 by Pearson Education

Funciona???

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

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 1 Slide 50/50

© 2007 by Pearson Education

Avaliando a qualidade

public class AccountTest extends TestCase { void testDebit() {

Account acc = new Account(10);

acc.debit(10);

assertEquals(0, acc.getBalance());

}

}

Referências

Documentos relacionados

Observando o perfil de TPR do catalisador RuKL (figura 88), onde as temperaturas da primeira análise de TPR alcançaram valores de 222°C e 262°C e comparando com os

After selecting the participants, we applied a standardized questionnaire which had been previously tested by the research group, and collected data on socioeconomic

O teste U de Mann-Whitney foi usado para analisar as diferenças entre as medianas de dois grupos e o teste de Kruskal-Wallis para testar a igualdade das medianas entre mais de

Esse modelo foi derivado de modelos de atividade de engenharia com o fim de estabelecer ordem no desenvolvimento de grandes produtos de software.. Comparado com outros modelos de

A função gerente de obras torna-se cada vez mais necessária na construção civil, pois o setor está cada vez mais desenvolvendo e aprimorando a área de coordenação

Na Nova Zelândia em sistemas pastoris as vacas produzem em média 17 litros de leite ao dia, enquanto nos produtores analisados neste estudo a média de

A Indústria B em 2010 para cada R$ 1,00 investidos em ativos, R$ 0,68 são financiados por capital de terceiros, contudo ao comparar com 2011 e 2012 percebemos que a empresa

Já o Ministério do Turismo (2010), divulga não apenas as atribuições gerais que o guia deve cumprir, mas também as atribuições específicas de acordo com a