Eng.ª do Software - 1. Introdução

42
ENGENHARIA DO SOFTWARE I Manuel Menezes de Sequeira DCTI, ISCTE-IUL [email protected] , D6.02 As apresentações desta série baseiam-se nas apresentações disponibilizadas por Ian Sommerville , tendo sido alteradas e adaptadas primeiro por Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira.

description

Introdução à unidade (disciplina) de Engenharia do Software I para o curso de METI no ISCTE-IUL no 2.º semestre do ano lectivo de 2009/2010.

Transcript of Eng.ª do Software - 1. Introdução

Page 1: Eng.ª do Software - 1. Introdução

ENGENHARIA DO SOFTWARE I

Manuel Menezes de Sequeira

DCTI, ISCTE-IUL

[email protected] , D6.02

As apresentações desta série baseiam-se nas apresentações disponibilizadas por Ian Sommerville, tendo sido alteradas e adaptadas primeiro por  Anders Lyhne Christensen e

finalmente por Manuel Menezes de Sequeira.

Page 2: Eng.ª do Software - 1. Introdução

Sumário

Contactos O que é a engenharia do software e

qual a sua importância? Panorâmica da unidade

MateriaisAvaliaçãoInformações práticas

2009/2010 2Engenharia do Software I

Page 3: Eng.ª do Software - 1. Introdução

Contactos

2009/2010 3Engenharia do Software I

Page 4: Eng.ª do Software - 1. Introdução

Manuel Menezes de Sequeira

[email protected]: correio electrónico e MSN

manuel.sequeira.iscte.pt: Skype

Gabinete: D6.02

Telemóvel: 962 337 428

http://www.google.com/profiles/MMSequeira

2009/2010 4Engenharia do Software I

Page 5: Eng.ª do Software - 1. Introdução

O que é a engenharia do software?

2009/2010 5Engenharia do Software I

Page 6: Eng.ª do Software - 1. Introdução

O que é o software? Programas e documentação associada,

incluindo requisitos, modelos de desenho e manuais de utilização

2009/2010 6Engenharia do Software I

Page 7: Eng.ª do Software - 1. Introdução

O que é o software? Produtos de software

Genéricos – Desenvolvidos para fornecer a diferentes clientes; e.g., Excel ou Word

Personalizados (custom) – Desenvolvidos para um cliente de acordo com os seus requisitos

2009/2010 7Engenharia do Software I

Page 8: Eng.ª do Software - 1. Introdução

O que é o software? Novo software

Desenvolvimento de novos programas

Configuração de sistemas de software genéricos

Reutilização de software existente

2009/2010 8Engenharia do Software I

Page 9: Eng.ª do Software - 1. Introdução

Encontro da NATO em 1968 acerca da crise no software Problemas que ainda não foram resolvidos:

Ultrapassagem do orçamento

Baixa produtividades

Produtos errados

Baixa qualidade

Manutenção constante – “Se não se fizerem mudanças, tornar-se-á inútil”

2009/2010 9Engenharia do Software I

Page 10: Eng.ª do Software - 1. Introdução

Caos

O software é como uma catedral – primeiro constrói-se, depois reza-se.

Sam Redwine

2009/2010 10Engenharia do Software I

Page 11: Eng.ª do Software - 1. Introdução

Engenharia do software

Disciplina da engenharia focada em todos os aspectos da produção de software

2009/2010 11Engenharia do Software I

Page 12: Eng.ª do Software - 1. Introdução

Engenharia do software

Engenheiros de software

Abordam trabalho de forma sistemática e organizada

Utilizam ferramentas e técnicas apropriadas ao problema a resolver, às restrições existentes e aos recursos disponíveis

2009/2010 12Engenharia do Software I

Page 13: Eng.ª do Software - 1. Introdução

Engenharia do software Não é ciência!

Constrói sistemas que outras pessoas usam

There is no silver bulletGoogle Search – Tem de ser rápidoGmail – Tem de ser fiável

2009/2010 13Engenharia do Software I

Page 14: Eng.ª do Software - 1. Introdução

Engenharia do software É um problema tramado

Há soluções melhores e soluções piores

Não há soluções certas e soluções erradas

Não há medidas objectivas de sucesso

2009/2010 14Engenharia do Software I

Page 15: Eng.ª do Software - 1. Introdução

Comparação com outras engenharias

Software entities are more complex for their size than perhaps any other human construct, because no two parts are alike (at least above the statement level). If they are, we make the two similar parts into one… In this respect software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound.

Fred Brooks, 1986

2009/2010 15Engenharia do Software I

Page 16: Eng.ª do Software - 1. Introdução

Engenharia do software vs. informática Informática - Teoria e fundamentos

Engenharia do software - Questão prática de desenvolver e fornecer software útil

Teorias da informática insuficientes como fundamento da engenharia do software

Pelo contrário, física suficiente como fundamento da engenharia electrotécnica

2009/2010 16Engenharia do Software I

Page 17: Eng.ª do Software - 1. Introdução

Disciplina dominante

À medida que o tamanho do software aumenta, a disciplina dominante muda [Feldman]

Tamanho do código

Disciplina dominante

1 000 Matemática

10 000 Ciência

100 000 Engenharia

1 000 000 Ciências sociais

10 000 000 Política

2009/2010 17Engenharia do Software I

Page 18: Eng.ª do Software - 1. Introdução

Que ferramentas?

Ferramentas intelectuais

Ocultação de informação

Padrões de desenho

Mais relevantes que ferramentas de software!

2009/2010 18Engenharia do Software I

Page 19: Eng.ª do Software - 1. Introdução

Que ferramentas?

Ferramentas de software

Ajudam a aplicar princípios, políticas e melhores práticas

Não decidem por nós

2009/2010 19Engenharia do Software I

Page 20: Eng.ª do Software - 1. Introdução

CASE (Computer-Aided Software Engineering) Ferramentas de software suportando

automaticamente actividades do processo de desenvolvimento de software

Upper-CASE (actividades iniciais)○ Recolha de requisitos○ Desenho

Lower-CASE (actividades posteriores)○ Programação○ Depuração○ Teste

2009/2010 20Engenharia do Software I

Page 21: Eng.ª do Software - 1. Introdução

Processo de software Conjunto de actividades destinadas a

desenvolver ou fazer evoluir o software

2009/2010 21Engenharia do Software I

Page 22: Eng.ª do Software - 1. Introdução

Processo de software Actividades comuns

Especificação – O que deve fazer? Quais as restrições ao seu desenvolvimento?

Desenvolvimento – Produção do sistema

Validação – Verificação do sistema face às pretensões do cliente

Evolução – Alteração do software como resposta a alterações nos requisitos

2009/2010 22Engenharia do Software I

Page 23: Eng.ª do Software - 1. Introdução

Modelo de processo de software

Representação simplificada de processo de software, com uma perspectiva específica

PerspectivasFluxo de trabalho (workflow) – Sequência

de actividadesFluxo de dados – Fluxo de informaçãoPapéis/acções – Quem faz o quê

2009/2010 23Engenharia do Software I

Page 24: Eng.ª do Software - 1. Introdução

Modelo de processo de software

Modelos genéricos de processo

Cascata

Desenvolvimento iterativo

Engenharia do software baseada em componentes

2009/2010 24Engenharia do Software I

Page 25: Eng.ª do Software - 1. Introdução

2009/2010 25Engenharia do Software I

Page 26: Eng.ª do Software - 1. Introdução

Custos por actividadeWaterfall model

Iterative development

Component-based software engineering

Development and evolution costs for long-lifetime systems

System evolution

10 20 30 400

System development

Specification Design Development Integration and testing

25 50 75 1000

Specification Development Integration and testing

25 50 75 1000

Specification Iterative development System testing

25 50 75 1000

2009/2010 26Engenharia do Software I

Page 27: Eng.ª do Software - 1. Introdução

Metodologias de engenharia do software Abordagens estruturadas ao

desenvolvimento de software incluindo

Modelos de sistemas

Notações

Regras

Linhas orientadoras do processo

2009/2010 27Engenharia do Software I

Page 28: Eng.ª do Software - 1. Introdução

Metodologias de engenharia do software Descrições de modelos

Usualmente gráficas

RegrasRestrições aos modelos do sistema

Recomendações e melhores práticas

Linhas orientadoras do processoQue fazer e quando

2009/2010 28Engenharia do Software I

Page 29: Eng.ª do Software - 1. Introdução

Atributos do bom software

Cumpre requisitos funcionais e de desempenho do cliente

“Mantenível” (possível de manter) – Pode evoluir adaptando-se a requisitos em mutação

Fiável – É de confiança

Eficiente – Não desperdiça recursos

Aceitável pelos utilizadores – Compreensível, fácil de usar e compatível com outros sistemas

2009/2010 29Engenharia do Software I

Page 30: Eng.ª do Software - 1. Introdução

A reter

Engenharia do software

Focada em todos os aspectos da produção de software

Resulta em produtos de software consistindo em programas e documentação

É sobretudo questão de pessoas e não de computadores

2009/2010 30Engenharia do Software I

Page 31: Eng.ª do Software - 1. Introdução

A reter

Processo de software

Actividades necessárias para o desenvolvimento de produtos de software

Actividades básicas são especificação, desenvolvimento, validação e evolução

2009/2010 31Engenharia do Software I

Page 32: Eng.ª do Software - 1. Introdução

A reter

Metodologias

Formas organizadas de produzir software

Incluem recomendações sobre○ Processo a seguir○ Notações a usar○ Regras a seguir na descrição do sistema○ Linhas orientadoras do desenho

2009/2010 32Engenharia do Software I

Page 33: Eng.ª do Software - 1. Introdução

A reter

Ferramentas CASE são sistemas de software desenhados para suportar actividades rotineiras do processo de software

Edição de diagramas de desenho

Verificação da consistência dos diagramas

Registo e controlo dos testes efectuados

2009/2010 33Engenharia do Software I

Page 34: Eng.ª do Software - 1. Introdução

A ler

Ian Sommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006

Capítulo 1

Capítulo 6

2009/2010 34Engenharia do Software I

Page 35: Eng.ª do Software - 1. Introdução

Panorâmica da unidade

2009/2010 35Engenharia do Software I

Page 36: Eng.ª do Software - 1. Introdução

Objectivos

Visão geral dos vários problemas, métodos, actividades, modelos, etc., associados ao desenvolvimento de software

Familiarização com panóplia de diferentes ferramentas e perspectivas permitindo boas escolhas face a problemas concretos

2009/2010 36Engenharia do Software I

Page 37: Eng.ª do Software - 1. Introdução

Avaliação

Avaliação periódicaFrequência ≥ 7,5Projecto ≥ 7,5Final = 0,5 frequência + 0,5 projecto ≥ 9,5

Exame ≥ 9,5

2009/2010 37Engenharia do Software I

Page 38: Eng.ª do Software - 1. Introdução

Formato e projecto

Uma aula teórica e uma aula prática por semana

ProjectoDesenvolvido ao longo do semestreEntregue por etapasRealizado em grupos de seisÊnfase no processo e não no produto

2009/2010 38Engenharia do Software I

Page 39: Eng.ª do Software - 1. Introdução

Tópicos

Requisitos Processos de software Desenvolvimento rápido de software Arquitectura de software Design de interfaces com o utilizador Gestão de projectos Verificação e validação Testes de software

2009/2010 39Engenharia do Software I

Page 40: Eng.ª do Software - 1. Introdução

Materiais e ferramentas

Ian Sommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006

Artigos vários na Web

Rational Requisite Pro

Bouml, UMLet ou outra aplicação para edição de diagramas UML

2009/2010 40Engenharia do Software I

Page 41: Eng.ª do Software - 1. Introdução

Mais informação

Horário de dúvidas Sextas-feiras, das 13:00 às 18h00 no

gabinete D6.02Avisar docente por SMS no mínimo uma hora

antes

Todas as aulas no laboratório D1.01

Mais informação em http://www.piazzza.com/

2009/2010 41Engenharia do Software I

Page 42: Eng.ª do Software - 1. Introdução

Manuel Menezes de Sequeira

[email protected]: correio electrónico e MSN

manuel.sequeira.iscte.pt: Skype

Gabinete: D6.02

Telemóvel: 962 337 428

http://www.google.com/profiles/MMSequeira

2009/2010 42Engenharia do Software I