• Nenhum resultado encontrado

Aula 01 - Apresentação e Introdução

N/A
N/A
Protected

Academic year: 2021

Share "Aula 01 - Apresentação e Introdução"

Copied!
58
0
0

Texto

(1)

Engenharia de Software

Apresentação

Marcelo Marinho

(2)

APRESENTAÇÃO

(3)

Engenharia de Software

• Curso: Licenciatura em Computação • Modalidade: Presencial

• Departamento: DEINFO

• Professor: Marcelo Marinho • Dias de aula:

– SEG: 20:10hs – 21:50hs – QUA: 18:30hs – 20:10hs

(4)

• Quem são vocês?

(5)

Objetivos

• Ao concluírem esta disciplina os alunos deverão ser capazes de:

(6)

Ementa

Processos de software. Ciclo de vida de desenvolvimento de software. Modelagem de software. Introdução a Modelos de Qualidade e de Gerenciamento de projetos de software. Ambientes de desenvolvimento de software. Padrões de projeto. Técnicas de teste de software. Reuso de componentes de software.

(7)

Conteúdo Programático

• Introdução a Engenharia de Software; • Processos de Software; • Engenharia de Requisitos; • Análise de Projetos; • Projeto de arquitetura; • Testes de Software • Qualidade de Software; • Gerenciamento de Projetos;

• Desenvolvimento Ágil de software;

(8)
(9)

Avaliação

• 1ª. V.A. = Prova

• 2ª. V.A. = 0,5.Prova + 0,5.Projeto

• 3ª. V.A. = 0,5.Projeto + 0,5.Prova (todo conteúdo)

(10)

Site da disciplina

(11)

Bibliografia

• Básica:

– PRESSMAN, R. Engenharia de Software. 6. ed. ed. Porto Alegre:

– McGrawHill, 2006. SOMMERVILLE, I. Engenharia de Software. 9. ed. São Paulo: Pearson Brasil,

2011.

– PRESSMAN, R. Software Engineering: A

(12)

Bibliografia

• Complementar:

– BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML 2 - Guia do Usuário. 2. ed. Rio de Janeiro: Campus, 2005.

– GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Padrões de Projeto: soluções reutilizáveis de software orientado a objetos.

– SCHACH, S. R. Engenharia de Software: Os Paradigmas Clássico e Orientado a Objetos. São Paulo: McGraw Hill, 2009.

– FOWLER, M. UML Essencial. Porto Alegre: Bookman, 3a ed. 2005. – PFLEEGER, S. L. Engenharia de Software – Teoria e Prática, Prentice

(13)
(14)

Além de

(15)

Década de 60

(16)

Década de 60

• Muitos Projetos são entregues com um grande atraso;

• Softwares difíceis de manter ou não tendo desempenho adequado;

• Alto custo para manutenção; • Duplicação de esforços

“Crise de

Software

’’

(17)

Foi proposto que o

desenvolvimento de software

deixasse de ser puramente

artesanal

e passasse a ser

baseado em princípios de

Engenharia

, ou seja, seguindo

um enfoque estruturado e

metódico

.

(18)

“Crise do Software”

O que acarretou?

– Mudança da forma que as pessoas desenvolvem software de grande porte;

– Proposto que o software deixasse de ser puramente artesanal passasse a ser baseado em Engenharia;

Engenharia de Software

(19)

Atualmente...

• Sistemas Controlados por Software

• Investimentos significativos no setor do software

(20)

Então...

Mais sistemas

controlados

por software

20

Economia do país,

depende mais da

qualidade do

software

(21)

Cenário

• Desenvolvimento cada vez maior da tecnologia de hardware;

• Disponibilidade de máquinas cada vez mais potentes e baratas;

• Uso de computadores cada vez mais difundidos em diversas áreas.

Demanda de software cada vez maior e

mais complexos

(22)

Engenharia De Software

Disciplina de engenharia cujo foco está em todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema atésua manutenção.

Desenvolvimento de Software por grupos de pessoas, usando princípios de engenharia e englobando aspectos técnicos e não técnicos de modo produzir software de

(23)

Engenharia de Software

• Engloba não apenas o desenvolvimento de programas, mas também toda documentação necessária para:

Desenvolvimento, Instalação, uso e manutenção dos

(24)

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;

(25)

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 X Produtividade;

(26)

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;

(27)

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

(28)

O Início de Tudo...

(29)

O Mais Importante Aqui É...

A Idéia

é

(30)

O Que Devo Fazer Exatamente?

Ou, em outras palavras,

quais são os

requisitos

(31)

Requisitos

(32)

Requisitos

• O Que devo fazer?

– Funcionalidades

• Há restrições sobre as funcionalidades?

– Limites de tempo, memória, etc?

• Há restrições mais amplas?

(33)

O que faço então?

(34)
(35)

Como entregar para equipe?

(36)
(37)

Iniciando a solução

“Temos que identificar em

nossos requisitos, quais

são os elementos

essenciais para

satisfazê-los...”

(38)

Iniciando a solução

Quais classes preciso para implementar estes casos de uso?

(39)

Sedimentando a solução...

(40)

Sedimentando a solução...

“A partir dos elementos

essenciais, precisamos definir

estratégias para satisfazê-los

incluindo suas restrições...”

(41)

Sedimentando a solução ...

(42)
(43)

Sedimentando a solução...

(44)

Operacionalizando a solução ...

“Com a solução definida, o

passo final é

operacionalizá-la. Isto é,

codificá-la.”

(45)

Agora sim! Vamos Programar

public class Account { private int balance;

/*@ invariant balance>=0 @*/ ...

void debit(int amount) {

/*@ requires amount <= balance @*/

/*@ ensures balance = \old(balance) - amount @*/ }

... }

(46)

Funciona???

“Com a implementação feita,

podemos então executar os

testes!!!”

(47)

Pra que testar?

• Ocorrência de falhas humanas no processo de desenvolvimento de software é considerável. • Processo de testes é indispensável na garantia

de qualidade de software.

• Custos associados às falhas de software justificam um processo de testes cuidadoso e bem planejado.

(48)

Qual a finalidade?

• Averiguar se todos os requisitos do sistema foram corretamente implementados.

• Assegurar, na medida do possível, a qualidade e a corretude do software produzido.

• Reduzir custos de manutenção corretiva e re-trabalho.

(49)

Feito isso...

É preciso implantar o sistema no cliente e

manter o produto, nesse caso entra a Gerência

de Mudanças e Gerência de Configuração.

(50)

Mas tudo isso atividades,

documentações, artefatos

Como saber o que fazer?

(51)
(52)
(53)

E o Quem Gerência ?

 A Equipe de Gerência

 O gerenciamento de projetos tem como objetivo de

assegurar que os processos particulares sejam seguidos, coordenados e monitorando as atividades da engenharia do produto;

 Um processo de gerenciamento deve:

 Identificar

 Estabelecer

 Coordenar

 Monitorar as atividades

 Recursos necessários

 Para produzir um produto e/ou serviços que estejam de acordo com os requisitos

(54)

Metodologias e Framework de

Gerencia

(55)
(56)

Engenharia de Software

Requisitos de Software Gerência da Eng. de Software

Projeto de Software Ferramentas e Métodos da Engenharia

Construção de Software Processo de Engenharia de Software

Teste de Software Qualidade de Software

Manutenção de Software Gerência de Configuração de Software

(57)

Então...

Vamos

construir

software com

Qualidade

dentro do

prazo

e com

documentação

!

(58)

Engenharia de Software

Apresentação

Marcelo Marinho

Referências

Documentos relacionados

Além disso, a falta de esclarecimento de toda a comunidade escolar sobre sua importância para a melhoria do desempenho dos educandos também contribuiu para que os pais não o

de 2 (duas), por acordo individual, convenção coletiva ou acordo coletivo de trabalho. Agora a CLT passa a contar com 3 espécies de compensação de horas; 1) Banco de horas

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

• Gerar nos alunos de Análise e desenvolvimento de software a capacidade de analisa, documentar e especificar sistemas computacionais de informação.. Estes devem fazer uso

• O ciclo de vida iterativo e incremental pode ser visto como uma generalização da abordagem em cascata: o software é desenvolvimento em incrementos e cada incremento é desenvolvido

• Deve-se avaliar o conjunto de requisitos essenciais para a definição do Documento de Visão do software e este deve incluir o escopo do projeto e suas limitações, bem como

• Depois de determinar os custos e benefícios para uma possível solução, você pode realizar a análise de custo- benefício.. Estudo

• Requisitos são tipicamente utilizados como informações fundamentais para a fase de projeto de um produto ou serviço, especificando as propriedades e funções necessárias