• Nenhum resultado encontrado

ENGENHARIA DE SOFTWARE I

N/A
N/A
Protected

Academic year: 2021

Share "ENGENHARIA DE SOFTWARE I"

Copied!
60
0
0

Texto

(1)

ENGENHARIA DE

SOFTWARE I

Introdução à Engenharia de Software: Motivação, Histórico, Conceitos, Elementos de ES e Mitos do Software

AULA 1

Profª MSc. MICHELLE DE OLIVEIRA PARREIRA [email protected]

(2)

Roteiro

 Software X Hardware  Manutenção de software  Elementos da ES  Mitos do software  Princípios de Hooker

(3)

Escopo do Curso

(4)

Por que preciso de

Engenharia de Software?

 Já sei programar!

 Programação é apenas

uma parte do processo de Engenharia de Software (ES). Precisamos também saber:  O que programar  Como programar  Se o que foi programado é o que o cliente realmente quer...

(5)

Programas das empresas

 Se o desenvolvedor de software errar, o

(6)

Programas das empresas

 Fatores críticos: ◦ Custo

◦ Prazo

(7)

Histórico (Era pré ES)

 1968: Crise do software

 Os projetos de software dos anos iniciais

tinham os seguintes problemas:

◦ Altos investimentos

Excesso de bugs

◦ Requisitos mal compreendidos

(8)

ES hoje

 Economia de todas as nações desenvolvidas

são dependentes de software

 Cada vez mais os sistemas são controlados

por software

 ES dedica-se às teorias, métodos e

ferramentas para desenvolvimento de software profissional

Sistemas não triviais

(9)

O que é software?

 São programas de computador e artefatos

associados

 Um programa é um conjunto de soluções

algorítmicas, codificadas numa linguagem de programação, executado numa máquina real.

 Software é um produto conceitual e lógico  Produtos de software podem ser:

◦ Genéricos

(10)

O que é software?

 Um software novo pode ser criado através

de:

◦ Desenvolvimento de novos programas

◦ Configuração de sistemas de software genéricos

◦ Reutilização de um software existente

 Tipos de sistemas de software ◦ Sistemas legados

◦ Sistemas de tempo real

◦ Sistemas embarcados

(11)

O que é ES?

 É uma disciplina relacionada com todos os

aspectos da produção de software

 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

 Levar em conta restrições de desenvolvimento e

(12)

Qual a diferença entre ES e

Ciência da Computação?

 A Ciência da Computação está

relacionada com teorias e fundamentos

 A Engenharia de Software está

relacionada com a prática e o desenvolvimento de SW

(13)

O que é um processo de

software?

 “Um conjunto estruturado de atividades

que leva à produção de um sistema de software” (Fonte: Sommerville)

◦ Especificação

◦ Desenvolvimento

◦ Validação

(14)

O que é um modelo de

processo de software?

 Uma representação simplificada de um

processo de software, apresentado sob uma perspectiva específica:

◦ Incluindo algumas atividades e sua organização de alto nível

 Modelos gerais de processo

◦ Cascata

◦ Desenvolvimento Iterativo ◦ Baseado em componentes

(15)

Quais são os custos da

ES?

(16)

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 frequentemente

para apoiar um método específico

UpperCase – ferramentas para apoiar as

atividades iniciais de processo de requisitos e de projetos

LowerCase – ferramentas para apoiar as

atividades finais, tais como programação,

(17)

Quais são os atributos de

um bom software?

 O software deve fornecer a funcionalidade

e o desempenho requeridos para o usuário e deve apresentar as seguintes

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

(18)

Quais são os atributos de

um bom software?

Confiabilidade – o software deve funcionar

de maneira que o usuário possa depender dele. No caso de falha, não acarreta 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

(19)

Quais são os desafios chave

enfrentados pela ES?

Heterogeneidade – sistemas de software devem

ser capaz de lidar com diferentes plataformas de hardware e ambientes em 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

Escala – o sistema deve funcionar adequadamente

mesmo quando um grande número de usuários o está usando

(20)

Responsabilidade

profissional e ética

 A ES 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

(21)

Software

Instruções: quando executadas,

produzem a função com desempenho desejados

Estruturas de dados: possibilitam que

os programas manipulem a informação de maneira adequada e segura

Documentos: descrevem a operação e

(22)

Software X Hardware

 Software é desenvolvido

◦ Alto custo de criação

◦ Baixo custo de reprodução

◦ Não enguiça, mas deteriora

◦ Defeitos no produto usualmente são consequências de problemas no processo de desenvolvimento

 Hardware é manufaturado

◦ Alto custo de reprodução

◦ Pode enguiçar

◦ Defeitos podem vir tanto na concepção quanto na produção

(23)

Software X Hardware

(24)

Software X Hardware

(25)

Software X Hardware

(26)

Por que fazer bem feito?

 Porque é mais barato!

◦ Historicamente, 60% a 80% do esforço total ocorre na manutenção

 Porque é mais rápido!

◦ Não ter tempo para fazer bem feito agora significa ter tempo para refazer depois

 Porque é mais fácil!

◦ Desenvolvimento ocorre uma única vez

(27)

O que é manutenção?

O processo de modificar um sistema de software ou componente, depois da entrega, para corrigir falhas, melhorar

desempenho ou outros atributos, ou adaptar a mudanças no ambiente.

(28)

Quando inicia a

manutenção?

(29)

Quais são os tipos de

manutenção?

(30)

Quais são os tipos de

manutenção?

 Manutenção corretiva ◦ Reativa

◦ Corrige problemas reportados

◦ Faz o software voltar a atender aos requisitos

 Manutenção emergencial ◦ Não programada

◦ Mantém temporariamente o sistema funcionando

◦ Necessita uma manutenção corretiva posterior

(31)

Quais são os tipos de

manutenção?

 Manutenção preventiva ◦ Pró-ativa

◦ Corrige problemas latentes

 Manutenção adaptativa

◦ Mantém o software usável após mudanças no ambiente

 Manutenção perfectiva

◦ Provê melhorias para o usuário

(32)
(33)

Exercício

1) Quais são os quatro principais atributos que todos os produtos

de software devem ter? Sugira dois outros atributos que também considera importantes em um produto de software.

2) Os métodos de engenharia de software tornaram-se

amplamente usados somente quando a tecnologia CASE tornou-se disponível para apoiá-los. Sugira três tipos de apoio a métodos que podem ser fornecidos pelas ferramentas CASE.

3) Para ajudar a conter o terrorismo, vários países estão planejando

o desenvolvimento de sistemas de computador que monitorem 24 horas populações em grandes centros urbanos. Essa medida tem, obviamente, implicações quanto à privacidade. Discuta as questões éticas envolvidas no desenvolvimento desse tipo de sistema.

(34)
(35)

Elementos da ES

 Processo

◦ Define os passos gerais para o

desenvolvimento e manutenção do software

◦ Serve como uma estrutura de encadeamento de métodos e ferramentas

 Métodos

◦ São os “how to's” de como fazer um passo específico do processo

 Ferramentas

(36)

Elementos da ES

 Cuidado com o “desenvolvimento guiado

por ferramentas”

◦ É importante usar a ferramenta certa para o problema

◦ O problema não deve ser adaptado para a ferramenta disponível

“Para quem tem um martelo, tudo parece prego”

(37)

Elementos da ES

1) Coloque em uma panela funda o leite

condensado, a margarina e o chocolate em pó

2) Cozinhe [no fogão] em fogo médio e mexa

sem parar com uma colher de pau

3) Cozinhe até que o brigadeiro comece a

desgrudar da panela

4) Deixe esfriar bem, então unte as mãos com

margarina, faça as bolinhas e envolva-as em chocolate granulado

(38)

Elementos da ES

1) Coloque em uma panela funda

o leite condensado, a margarina e o chocolate em pó

2) Cozinhe [no fogão] em fogo

médio e mexa sem parar com uma colher de pau

3) Cozinhe até que o brigadeiro

comece a desgrudar da panela

4) Deixe esfriar bem, então unte as

mãos com margarina, faça as bolinhas e envolva-as em chocolate granulado

Processo Método

(39)

O supermercado de ES

 ES fornece um conjunto de

métodos para produzir software de qualidade

 Pense como em um

supermercado: em função do problema, se escolhe o processo, os métodos e as ferramentas

 Cuidado

◦ Menos do que o necessário pode levar à desordem

◦ Mais do que o necessário pode emperrar o projeto

(40)

Engenharia de Software

Um dos objetivos básicos da Engenharia de Software é transformar a criação de

sistemas de software, realizada de

maneira artística, indisciplinada e pouco

entendível para uma forma devidamente

(41)

Crise do software

 Refere-se a um conjunto de problemas

encontrados no desenvolvimento de software. Problemas concretos:

◦ Péssimas estimativas de prazo e custos

◦ Produtividade não tem aumentado tanto quanto a demanda

(42)

Crise do software

 Dificuldades:

◦ Pouca coleta de dados

◦ Insatisfação do cliente

◦ Falta de garantia

(43)

Causas

 Características próprias

do software

◦ Produto “lógico”

 Falhas dos responsáveis

pelo desenvolvimento de software

Gerentes sem background

◦ Pouco treinamento

(44)

Mitos do software

 Mitos do software ◦ Gerenciais

(45)

Mitos gerenciais

 Basta um bom livro de ES para fazer um

bom software

◦ Um bom livro com certeza ajuda, mas precisa refletir as técnicas mais eficientes e ser lido!

 Meu pessoal tem ótimas ferramentas de

desenvolvimento, afinal compramos equipamento sofisticado

◦ É necessário mais do que as melhores

(46)

Mitos gerenciais

 Se estivermos com o cronograma

atrasado, basta adicionar mais gente ao projeto

◦ Adicionar gente a um projeto atrasado faz o projeto atrasar mais!

 Se o projeto for terceirizado, todos meus

problemas estão resolvidos

(47)

Mitos do cliente

 No início, basta dar uma ideia geral do que é

necessário

◦ Requisitos ambíguos normalmente são uma receita para desastre!

◦ Comunicação contínua com o cliente é fundamental!

 Modificações podem ser facilmente acomodadas,

porque software é flexível

◦ O impacto de modificações no software varia em função da modificação e do momento em que ela é

(48)
(49)

Mitos do desenvolvedor

 Assim que o código for escrito, o trabalho

termina

◦ 60% a 80% do esforço será gasto depois que o código for escrito!

◦ Vale a pena esforçar para chegar a um bom código (boa documentação, bom projeto, etc.)

 Só é possível verificar a qualidade de um

software quando um executável existir

◦ Revisões usualmente são mais eficazes que testes, e podem ser utilizadas antes do software estar

(50)

 O único produto a ser entregue em um

projeto é o código

◦ Além do código, documentações tanto para a

manutenção quanto para o uso são fundamentais

 ES gera documentação desnecessária

◦ ES foca em criar qualidade, e não criar documentos

◦ Algum grau de documentação é necessário para evitar retrabalho

◦ Questione sempre que encontrar um documento

Mitos do desenvolvedor

(51)

Princípios de Hooker

1) Tem que existir uma razão para se fazer

software

2) KISS

3) Mantenha o estilo

4) O que é produzido por você é

consumido por outros

5) Esteja pronto para o futuro 6) Planeje para reutilização

(52)
(53)
(54)

Resposta à crise do

software

Engenharia de Software:

(55)

Modelos de ciclo de vida

 Existem alguns processos pré-fabricados ◦ Esses processos são conhecidos como

modelos de ciclo de vida

◦ Esses processos apresentam características pré-definidas

 Devem ser adaptados para o contexto

real de uso

◦ Características do projeto

◦ Características da equipe

(56)

Exercício

1) Problema

◦ Definir o procedimento de implantação para os dois cenários a seguir

 Cenário 1: urna eletrônica

◦ O software da urna eletrônica acabou de ser

implementado, e precisa ser instalado em 480 mil urnas

 Cenário 2: padaria

◦ O software de controle de venda de pão da padaria do seu Manuel acabou de ser

(57)

Exercício

2) Assuma as atividades básicas de todo

processo como sendo

◦ Comunicação ◦ Planejamento ◦ Modelagem ◦ Construção ◦ Implantação

 Projete um processo que determina a

ordem com que cada uma dessas atividades é executada

 Quais as características positivas ou

(58)

BIBLIOGRAFIA

BÁSICA

 Engenharia de Software (Capítulo 1)  Roger Pressman  6ª edição. McGrawHill

(59)

AGUARDEM

PRÓXIMO

CONTEÚDO !!!

(60)

“Aprender é a única coisa de que a mente nunca se cansa, nunca tem medo e nunca se arrepende”

Referências

Documentos relacionados

Furthermore, research associates can be involved in projects for a certain number of hours, and the name, starting date, and end date of the projects are known. Some

§ Para anular a ordem cronológica entre mensagens em diferentes operandos. § Caminhos de execução de diferentes operandos podem ser

§ Exatamente uma aresta de saída do estado histórico aponta para um subestado o qual é usado se. § o estado composto nunca esteve

As already explained in Chapter 1, this book restricts itself to the five most important and most widespread types of UML diagrams, namely the use case diagram, class diagram

3.2 Objetivos específicos  Detectar a presença de anticorpos para o Circovírus suíno-2 PCV2 em amostras de soro pela técnica de ELISA indireto com anticorpo de captura;  Detectar

Mesmo com as limitações impostas pelo tempo e pelo alcance de nossa pesquisa, o primeiro objetivo nos permitiu visualizar as contribuições, complementações e (im)

ABSTRACT - In this study, the RT-qPCR expression profile of the GUSP1 gene and MYB60 transcription factor were studied in cotton genotypes submitted to water stress in the

Ao completarem 5dpf, os animais injetados com as diferentes formas da proteína Aβ (monômero, oligômero e placa), acompanhados de um grupo veículo (controle), foram