• Nenhum resultado encontrado

Aula 5 - Engenharia de Software

N/A
N/A
Protected

Academic year: 2021

Share "Aula 5 - Engenharia de Software"

Copied!
62
0
0

Texto

(1)

Engenharia de Software

Conceitos Básicos e Iniciais Capitulo 1 PLT

(2)

Conteúdo de Engenharia de

Software

Conceitos Iniciais de Engenharia de

Software;

Processos de Software;

Engenharia de Requisitos;

Modelos de Sistemas;

Prototipação, Projeto de Arquitetura, Projeto

de Interface;

Metodologias Ágeis para o desenvolvimento

(3)

Finalizando Gestão de Projetos

Veja as Duas EAP(WBS):

(4)
(5)
(6)

EAP

Qual e a certa?

(7)

ES- Conceitos Básicos

Introdução

Ao passar do tempo, ninguém imaginava que

o software tornaria um elemento muito

importante para o mundo e teria a

capacidade de manipular a informação.

Com muitos elementos computacionais

tiveram mudanças até hoje e continuam

tendo. Com este crescimento

computacional, levam a criação de

sistemas perfeitos e problemas para

quem desenvolvem softwares

(8)

Conceitos Básicos

As preocupações dos engenheiros de

software para desenvolverem os software

sem defeitos e entregarem estes

produtos no tempo marcado, assim leva a

aplicação da disciplina de engenharia de

software.

(9)

Conceitos Básicos

“Com o crescimento desse segmento

muitas empresas possuem mais

especialistas em TI em que cada um

tem sua responsabilidade no

desenvolvimento de software e é

diferente de antigamente que era

um único profissional de software

que trabalhava sozinho numa sala.”

(10)

Conceitos Básicos

Software

“O software é o conjunto de vários

artefatos e não apenas o código fonte

(SOMMERVILLE).”

(11)

Conceitos Básicos

Software

Realizando uma comparação entre o software

e hardware. Chegamos a seguinte conclusão. O

software apenas pode ser desenvolvido e

realizar a manutenção (mudança) no

software é uma tarefa complicada, exige

grande esforço da equipe de engenheiro de

software. Ao passar do tempo o software

fica deteriorado. Já para o hardware apenas

pode ser fabricado e realizar a manutenção no

hardware é simplesmente trocar à peça que

esta em desgaste. Ao passar do tempo o

hardware desgasta por vários motivos

(PRESSMAN, 2006).

(12)

Reflexão

Por que o Software perde seu tempo de

vida?

Comparando Software e Hardware quem

(13)

Conceitos Básicos

O software é caro porque torna se uma

atividade difícil e trabalhosa de ser

realizado pelo engenheiro de software

(JALOTE, 2005).

(14)

Conceitos Básicos

De acordo Pressman (2006) o software

estão categorizados em seguintes tipos,

tais como:

(15)

Conceitos Básicos

◦ Software de sistema. São programas que

apóiam outros programas, como o software que realiza a comunicação com o hardware (sistema operacional) e software que ajuda na construção de outro software (compiladores).

◦ Software de aplicação. São programas que são desenvolvidos para executar no negocio de uma empresa determinada.

(16)

Conceitos Básicos

◦ Software cientifico e de engenharia. São algoritmos que processam números.

◦ Software embutido. São programas

construídos para executarem dentro de um produto especifico como a teclas digitais de um forno micro ondas.

◦ Software para linhas de produtos. São os softwares conhecidos como software de prateleiras.

◦ Software de web. São aplicativos que são executados via Internet.

(17)

Conceitos Básicos

◦ Software de inteligência artificial. São

softwares que fazem os usos de algoritmos não numéricos. Estes tipos software se

encaixam na robótica.

◦ Computação ubíqua. São softwares que realiza a verdadeira computação distribuída.

◦ Software aberto. São software que

disponibiliza a visualização do código fonte da aplicação para o engenheiro de software

(18)

Conceitos Básicos

Software Legado

 O nome de software legado é dado quando

refere se num programa de computador que foi desenvolvido há muito tempo. A preocupação do engenheiro de software com os softwares legados esta na baixa qualidade do software. Muitas vezes não existem documentações e se

existem são pobres de detalhes, os casos de teste são pobres quando tem e sem um

controle de mudanças. E muitas vezes não

mexem no software legado quando eles atentem as necessidades do cliente.

(19)

Conceitos Básicos

 Engenharia de Software

 Engenharia de software é uma abordagem

sistemática e disciplinada para o desenvolvimento de software (PRESSMAN, 2006).

 Uma das grandes dificuldades da engenharia do

software é resolver o problema e deixar o cliente satisfeito com o software (JALOTE, 2005).

 Na demonstração da próxima figura veremos a

visão do engenheiro de software em desenvolver o software que traz uma grande satisfação para o usuário quando ele próprio utiliza o software.

(20)

Conceitos Básicos

 Engenharia de Software

 Engenharia de software é uma abordagem

sistemática e disciplinada para o desenvolvimento de software (PRESSMAN, 2006).

 Uma das grandes dificuldades da engenharia do

software é resolver o problema e deixar o cliente satisfeito com o software (JALOTE, 2005).

 Na demonstração da próxima figura veremos a

visão do engenheiro de software em desenvolver o software que traz uma grande satisfação para o usuário quando ele próprio utiliza o software.

(21)

Conceitos Básicos

 A engenharia de software foca no software como

produto. Não entra neste escopo o softwares construídos apenas para passarem o tempo dos programadores (PAULA FILHO, 2009).

 No desenvolvimento de um projeto de software

quanto mais complexo é o software, maior é o

empenho que o engenheiro de software deve fazer para desenvolver e tem que ter maior gerenciamento (JALOTE, 2005).

 A próxima figura representa uma comparação entre

projetos de software grande e pequeno. Verificar que quanto maior é a complexidade do software mais atenção deve ter para a construção do software.

(22)

Conceitos Básicos

 A engenharia de software foca no software como

produto. Não entra neste escopo o softwares construídos apenas para passarem o tempo dos programadores (PAULA FILHO, 2009).

 No desenvolvimento de um projeto de software

quanto mais complexo é o software, maior é o

empenho que o engenheiro de software deve fazer para desenvolver e tem que ter maior gerenciamento (JALOTE, 2005).

 A próxima figura representa uma comparação entre

projetos de software grande e pequeno. Verificar que quanto maior é a complexidade do software mais atenção deve ter para a construção do software.

(23)

Conceitos Básicos

A base da engenharia de software são

conjuntos de atividades para o processo

de desenvolvimento de software. A

existência de vários tipos de processo de

desenvolvimento de software e podemos

dizer para resolver o problema do

software usam estas atividades tais como:

analise de requisito, design do software,

código e teste.

(24)

Conceitos Básicos

 Analise de requisito. Através da analise de requisito é

o momento onde efetua o conhecimento do problema para desenvolve o software .

 Design do software. Pelo design do software é o

momento que o engenheiro de software realiza o planejamento da solução do problema que foi

levantado no documento de requisito.

 Codificação. A codificação é o momento que pega o

problema resolvido no design do software e

transformará em uma linguagem de programação.

 Teste. O teste de software é o processo tem a

intenção de encontrar defeitos nos artefatos de

software (MYERS, 2004). O teste é uma maneira de medir o controle da qualidade do software durante o desenvolvimento de software.

(25)
(26)

Conceitos Básicos

Um bom manual, repleto de padrões e regras,

fornecerá a equipe tudo que ela precisa saber:

 Desenvolvimento não é uma receita de bolo! Os

clientes são diferentes, os projetos são diferentes, os programadores são diferentes, as prioridades

dependem do projeto. Basicamente, TUDO é

diferente. Não pense que um site de e-commerce que você desenvolveu para a empresa X valerá para a

empresa Y, e vice-versa. O planejamento é

fundamental e só então você poderá levantar os requisitos necessários e trabalhar em cima de um novo projeto.

(27)

Conceitos Básicos

Caso ocorra atraso no cronograma este poderá ser contornado alocando-se mais programadores ao projeto.

 Por mais que exista o conceito de “Fábrica de

Software” não podemos pensar no processo de desenvolvimento como uma linha de produção. Ao se inserir um programador em um projeto, ele levará algum tempo para se familiarizar com o código e com o que está sendo feito, para então, começar de fato a produzir. Alocar

programadores para resolver um problema de cronograma poderá surgir efeito contrário,

(28)

Conceitos Básicos

Uma Gravida demora 9 meses para gerar

um bebe.

Se Juntarmos 9 Gravidas eu vou ter um

(29)

Conceitos Básicos

Terceirizar um projeto é garantia de

tranquilidade e nenhum trabalho.

 Quando um projeto é muito trabalhoso, requer

know-how maior do que a sua equipe possui ou o cronograma está apertado, muitos optam pela

terceirização achando que esta é uma garantia de tranquilidade e nenhum trabalho. Contudo, tome cuidado: Se a empresa X contratou você, você é o

responsável pelo trabalho que está entregando. Aí fica a pergunta: A terceirização fez o serviço direito?

Comentou o código? Documentou o que foi feito? Sua equipe tem pessoal para trabalhar nesse código? Pense bem antes de terceirizar algo que não poderá trabalhar bem no futuro. É melhor recusar um

(30)

Conceitos Básicos

Um software pode ser construído

observando-se o seu propósito geral – os detalhes podem ser levados em conta

posteriormente.

 Se você é desenvolvedor já deve ter se deparado

com um usuário que só queria um ajustizinho no sistema: “só adicione um botão que faça isso e busque aquilo e faça isso ficar cor de rosa e

brilhar girando”. Sim, essas coisas acontecem! Desenvolvedores geralmente não gostam de

destruir algo para faze-lo de outra forma, pois o cliente mudou de ideia. Aliás, ninguém gosta.

(31)

Conceitos Básicos

Mesmo que os requisitos de um software

mudem, as alterações são realizadas

facilmente pois temos uma boa equipe que sabe como fazer o serviço muito bem.

 Mais uma vez, se você não é desenvolver e não

entende do processo, não julgue uma atualização como simples. Somente um programador poderá avaliar o quão simples uma alteração é – e muitas

vezes, ela só vai realmente ter a ideia depois que estiver trabalhando com o código. Mesmo que você tenha uma boa equipe, modificações devem ser analisadas, discutidas com relação a sua viabilidade e testadas. Lembre-se sempre: alocar um

programador requer algum tempo para que esse se familiarize com o que vem sendo feito.

(32)

Conceitos Básicos

Se o programa funciona, nosso trabalho está completo.Se o programa ainda não está finalizado e “rodando”, não

posso avaliar sua qualidade.

 Esses dois tópicos são assustadoramente passados adiante e você

já deve ter ouvido isso de alguém. Se um programa roda isso não garante que o seu trabalho está feito. Todo o processo de

desenvolvimento deve buscar a qualidade e apenas funcionar não lhe garante isso – ou seja, o processo da avaliação de qualidade não se limita a essa etapa. O seu código é bem comentado? Está bem feito? Otimizado? A tecnologia utilizada é adequada? Os banco de dados estão otimizados? Sua relações foram criadas corretamente? A infraestrutura do cliente suporta o que está sendo desenvolvido? Se o seu sistema foi feito para suportar vários acessos, ele

realmente suporta isso? Um programa é mais do que o executável. Você vende todo o processo.

(33)

Conceitos Básicos

O único produto que entregarei ao

cliente é o código executável.

Em alguns casos, o produto “palpável” que o

cliente recebe é somente o executável. Em

outros, trabalha-se com o código fonte e

com a documentação. Contudo,

independente do caso, lembre que, como foi

dito no item anterior: Um programa é mais

do que o executável. Você vende todo o

processo de desenvolvimento. Por isso,

deve-se pensar e faze-lo com perfeição.

(34)

Conceitos Básicos

O processo de planejamento fará com

que criemos documentação volumosa

que atrasará a execução do projeto,

atrasando o cronograma.

Planejamento é fundamental! Muitas pessoas

aindam confundem planejamento com

“papelada” e estas estão terrivelmente

enganadas! Mesmo trabalhando-se em um

time Agil, planejar é fundamental! A

documentação do projeto será trabalhada na

melhor metodologia adotada mas um plano

do que será feito deverá ser estudado antes

de “colocar a mão na massa.

(35)

Processos de Software

(36)

Processos de Software

 O que é um Processo?

 processo

substantivo masculino

1. ação continuada, realização contínua e

prolongada de alguma atividade; seguimento, curso, decurso.

2. sequência contínua de fatos ou operações que

apresentam certa unidade ou que se reproduzem com certa regularidade; andamento,

(37)

Processos de Software

Processos de Software

“Quando se fornece um serviço ou cria-se

um produto, seja desenvolvendo um software,

escrevendo um relatório ou fazendo uma

viagem de negócios, segue-se

costumeiramente uma sequencia de etapas

para completar um conjunto de tarefas.”

(38)

Processos de Software

Cada vez mais os setores da economia

(primário, secundário e terciário) tem

feito uso (e se tornado dependente) das

facilidades providas pelos avanços e

descobertas da tecnologia da informação.

Tecnologias de previsão do tempo e de

localização via satélite, por exemplo, são

utilizadas no campo para aumentar a

produtividade da lavoura e a eficiência de

maquinas colheitadeiras.

(39)

Processos de Software

Softwares que gerenciam toda a cadeia de

produção e que controlam máquinas e

robôs são cada vez mais comuns nas

fábricas. Sistemas de venda e controle de

estoque são diferenciais estratégicos

indispensáveis ao comércio. Diante deste

cenário, produzir e manter software

dentro de custos, prazos e critérios

de qualidade adequados torna-se

requisito obrigatório (SOMMERVILLE,

(40)

Processos de Software

Para que um software seja desenvolvido

de forma consistente, é preciso aliar boas

práticas da engenharia de software com

um robusto e eficiente processo de

desenvolvimento. Diferentes tipos de

sistemas necessitam de diferentes

(41)

Processos de Software

 Por exemplo, um software de tempo real de uma

aeronave deve ser completamente especificado antes do inicio do desenvolvimento, enquanto que um sistema de comércio eletrônico a

especificação e o desenvolvimento do software podem ser conduzidos paralelamente. O uso de um processo de software inadequado pode reduzir a qualidade ou a utilidade do

produto de software a ser desenvolvido e/ou aumentar os custos de

desenvolvimento. Este fato leva as organizações que produzem software a usar processos de

desenvolvimento que sejam eficientes e que atendam plenamente suas necessidades

(42)

Processos de Software

 Howard Baetjer Jr, em seu livro “Software as Capital”, faz o

seguinte comentário sobre processo de software (BAETJER 1998, pág. 85) :

◦ “... Desde que o software, como todo capital, é conhecimento incorporado, e como esse conhecimento está inicialmente disperso, tácito, latente e incompleto na sua totalidade, o

desenvolvimento de software é um processo de aprendizado social. O processo é um dialogo no qual o conhecimento, que deve se transformar em software é reunido e incorporado ao software. O processo fornece interação entre usuários e

projetistas, entre usuários e ferramentas em desenvolvimento e entre projetistas e ferramentas em desenvolvimento

(tecnologia). É um processo iterativo no qual a própria

ferramenta serve como meio de comunicação, com cada nova rodada de dialogo explicitando mais conhecimento útil do pessoal envolvido...”.

(43)

Processos de Software

Efetivamente, a elaboração de software de

computador é um processo de aprendizado,

e o resultado, é a incorporação de

conhecimentos coletados, destilados e

organizados à medida que o processo é

conduzido. Processo é o alicerce da

engenharia de software. É ele que permite o

desenvolvimento racional e oportuno de

softwares de computador (PRESSMAN,

2006).

(44)

Processos de Software

 Ele pode ser definido para atividades como

desenvolvimento, manutenção, aquisição e

contratação de software (PAULA FILHO, 2009).

 Processos de software formam a base para o

controle gerencial de projetos de software e estabelece o conteúdo no qual os métodos

técnicos são aplicados, os produtos de trabalho (modelos, documentos, dados, relatórios,

formulários, etc.) são produzidos, os marcos são estabelecidos, a qualidade é assegurada e as

modificações são adequadamente geridas (PRESSMAN, 2006).

(45)

Processos de Software

O Guia PMBOK® define processo como

sendo um conjunto de atividades

inter-relacionadas realizadas para obter um

conjunto específico de produtos,

resultados ou serviços(PMBOK, 2008).

Segundo o IEEE, um processo é uma

sequencia de passos executada com um

determinado objetivo (IEEE, 2003).

(46)

Processos de Software

Para o CMMI, um processo é definido

quando tem uma descrição que é mantida,

ou seja, tem documentação que detalha o

que é feito (produto), quando (etapas), por

quem (papéis), os itens utilizados (insumos)

e os itens produzidos (resultados)(CMMI,

2006).

Os processos podem ser definidos com mais

ou menos detalhes e suas etapas podem ter

ordenação parcial, o que pode permitir

paralelismo entre algumas delas (PAULA

FILHO, 2009).

(47)

Processos de Software

Focando no desenvolvimento de software,

Ian Sommerville define um processo de

software como um conjunto de atividades

que leva à produção de um produto de

software (SOMMERVILLE, 2007).

Roger S. Pressman define processo de

software como um arcabouço para as

tarefas que são necessárias para construir

software de alta qualidade (PRESSMAN,

2006).

(48)

Reflexão

Neste ponto qual e a relação existente

entre Gestão de Projetos e Engenharia de

Software?

(49)

Processos de Software

Processos de softwares são complexos e

como todos os processos intelectuais e

criativos dependem de julgamento

humano. A existência de um processo de

software não garante que o software

será entregue no prazo, de que ele irá

satisfazer as necessidades do cliente,

ou exibirá os atributos arquiteturais

que manterão as características de

qualidade em longo prazo.

(50)

Processos de Software

Não existe um processo ideal. As

organizações devem criar, verificar, validar e aperfeiçoar seus próprios métodos (CMMI, 2006). Várias destas desenvolvem abordagens inteiramente diferentes, adequadas à sua realidade, para o desenvolvimento de

software.

 No caso de alguns sistemas, como os sistemas

críticos, é necessário um processo de

desenvolvimento muito bem estruturado.

 Nos sistemas de negócios, com requisitos que

mudam rapidamente, um processo flexível e ágil é provavelmente mais eficaz (SOMMERVILE, 2007).

(51)

Processos de Software

Existem vários processos de

desenvolvimento de software, porém

algumas atividades fundamentais são comuns

a todos eles (SOMMERVILE, 2007):

◦ Especificação: define a funcionalidade do software e as restrições sobre sua operação.

◦ Projeto e implementação: o software que atenda a especificação deve ser produzido.

◦ Validação de software: o software deve ser

validado para garantir que ela faça o que o cliente deseja.

◦ Evolução: o software deve evoluir para atender aos novos requisitos que naturalmente surgirão.

(52)

Processos de Software

Processos de software têm como base

modelos de processo genéricos. Esses

modelos genéricos não são descrições

definitivas de processos de software. Ao

contrário, são abstrações do processo

que podem ser usadas para explicar

diferentes abordagens para o

desenvolvimento de software. Eles

podem ser considerados como

frameworks de processo que podem ser

ampliados e adaptados para criar processos

mais específicos de engenharia de software.

(53)

Processos de Software

Os modelos genéricos de processos de

software amplamente utilizados são o

modelo em cascata, o modelo de

desenvolvimento evolucionário e o

modelo de desenvolvimento baseado

em componentes.

Estes, não são mutuamente exclusivos e

comumente são utilizados em conjunto,

especialmente para desenvolvimento de

(54)

Processos de Software

Proxima Aula :

◦ Processos de Software estudos dos modelos de desenvolvimento.

modelo em cascata;

o modelo de desenvolvimento evolucionário ;

modelo de desenvolvimento baseado em componentes.

(55)

Manifesto Agil

 http://www.manifestoagil.com.br

 O Manifesto Ágil é uma declaração de princípios

que fundamentam o desenvolvimento ágil de software.

 Desenvolvimento ágil de software (do inglês Agile

software development) ou Método ágil é um

conjunto de metodologias de desenvolvimento de software. O desenvolvimento ágil, tal como

qualquer metodologia de software, providencia uma estrutura conceitual para reger projetos de engenharia de software.

(56)

Manifesto Agil

Estamos descobrindo maneiras melhores de

desenvolver software fazendo-o nós mesmos e

ajudando outros a fazê-lo. Através deste

trabalho, passamos a valorizar:

Indivíduos e interação entre eles mais que

processos e ferramentas;

Software em funcionamento mais que

documentação abrangente;

Colaboração com o cliente mais que

negociação de contratos;

Responder a mudanças mais que seguir um

plano.

Ou seja, mesmo havendo valor nos itens à

(57)

Manifesto Agil

Princípios por trás do manifesto ágil  Nós seguimos os seguintes princípios:

Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de

valor.

Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens

competitivas.

Entregar software funcionando com freqüencia, na escala de semanas até meses, com preferência aos

(58)

Manifesto Agil

Pessoas relacionadas à negócios e

desenvolvedores devem trabalhar em conjunto e

diáriamente, durante todo o curso do projeto.

Construir projetos ao redor de indivíduos

motivados. Dando a eles o ambiente e suporte

necessário, e confiar que farão seu trabalho.

O Método mais eficiente e eficaz de transmitir

informações para, e por dentro de um time de

desenvolvimento, é através de uma conversa

(59)

Manifesto Agil

Software funcional é a medida primária de

progresso.

Processos ágeis promovem um ambiente

sustentável. Os patrocinadores,

desenvolvedores e usuários, devem ser

capazes de manter indefinidamente, passos

constantes.

Contínua atenção à excelência técnica e bom

(60)

Manifesto Agil

Simplicidade: a arte de maximizar a

quantidade de trabalho que não precisou ser

feito.

As melhores arquiteturas, requisitos e designs

emergem de times auto-organizáveis.

Em intervalos regulares, o time reflete em

como ficar mais efetivo, então, se ajustam e

otimizam seu comportamento de acordo.

(61)

Referencias

SOMMERVILLE, Ian (org.). Engenharia de

Software. 9ª ed. São Paulo: PEARSON, 2011.

PRESSMAN, Roger S.. Engenharia de Software. 7ª

ed. São Paulo: Makron Books, 2007.

 http://www.devmedia.com.br/conceitos-de-software-e-engenharia-de-software/15730 Acessado em 21/03/2015 as 22:20  http://www.buildchange.org/wp-content/uploads/2014/07/mythbusters_logo.jpg Acessado em 21/03/2015 as 23:50  http://www.profissionaisti.com.br/2011/08/os-principais-mitos-do-desenvolvimento-de-software/ acessado em 22/03/2015 as 08:20

(62)

Referências

Documentos relacionados

O presente trabalho tem como objetivo geral avaliar a precisão do Modelo Digital de Terreno - MDT, gerado a partir dos dados obtidos por imagens digitais de um Veículo Aéreo

Resumo O presente artigo tem como objetivo analisar a importância do brincar para o desenvolvimento afetivo da criança de 0 a 6 anos, como também identificar as concepções

Em relação ao Respondente4 ele já havia usado a ferramenta em outra instituição antes de iniciar suas atividades na UTFPR Campus Pato Branco e é possível creditar sua

Neste trabalho foram analisados os dados coletados em perímetro urbano e rural no município de Serranópolis do Iguaçu com a finalidade de investigar e avaliar o

Obtivemos as respostas listadas a seguir: Sujeito 1: “Brincar na educação infantil é muito importante para o desenvolvimento da criança que nessa fase tem o lúdico como elemento

No Quadro 14, está a representação da incompatibilidade número 10 onde na modelagem BIM, conforme o projeto estrutural, a passagem da eletrocalha foi projetada a 2,97m

Neste sentido, o nosso trabalho foi realizado em dois momentos: o Campo de Observação com 20 horas semanais e Campo de Docência com 20 horas semanais, encontros significativos

A forma em que as empresas do arranjo do segmento cama-mesa-banho estão inseridas no mercado externo pode ser enquadrada em relações de redes de empresas, nas