Você está na página 1de 53

Engenharia de Software

Conceitos Bsicos e Iniciais


Capitulo 1 PLT
https://sites.google.com/site/thiagoaalves/

Contedo de Engenharia de
Software
Conceitos

Iniciais de Engenharia de

Software;
Processos de Software;
Engenharia de Requisitos;
Modelos de Sistemas;
Prototipao, Projeto de Arquitetura,
Projeto de Interface;
Metodologias geis para o
desenvolvimento de Software( se
Tivermos tempo).

Conceitos Bsicos
Introduo
Ao

passar do tempo, ningum imaginava


que o software tornaria um elemento muito
importante para o mundo e teria a
capacidade de manipular a informao. Com
muitos elementos computacionais tiveram
mudanas at hoje e continuam tendo. Com
este crescimento computacional, levam a
criao de sistemas perfeitos e problemas
para quem desenvolvem softwares
complexos.

Conceitos Bsicos
As

preocupaes dos
engenheiros de software para
desenvolverem os software sem
defeitos e entregarem estes
produtos no tempo marcado,
assim leva a aplicao da
disciplina de engenharia de
software.

Conceitos Bsicos
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. (PRESSMAN, 2006)

Conceitos Bsicos
Software
O

software o conjunto de vrios artefatos e no


apenas o cdigo fonte (SOMMERVILLE).

Realizando

uma comparao entre o software e


hardware. Chegamos a seguinte concluso. O software
apenas pode ser desenvolvido e realizar a
manuteno (mudana) no software uma tarefa
complicada, exige grande esforo 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 manuteno no
hardware simplesmente trocar pea que esta em
desgaste. Ao passar do tempo o hardware desgasta por
vrios motivos (PRESSMAN, 2006).

Reflexo
Por

que o Software perde seu


tempo de vida?
Comparando Software e
Hardware quem tem o menor e
maior tempo de vida?

Conceitos Bsicos
O

software caro porque torna


se uma atividade difcil e
trabalhosa de ser realizado pelo
engenheiro de software (JALOTE,
2005).

Conceitos Bsicos
De

acordo Pressman (2006) o software


esto categorizados em seguintes
tipos, tais como:
Software de sistema. So programas que
apiam outros programas, como o software
que realiza a comunicao com o hardware
(sistema operacional) e software que ajuda
na construo de outro software
(compiladores).
Software de aplicao. So programas que
so desenvolvidos para executar no
negocio de uma empresa determinada.

Conceitos Bsicos
Software cientifico e de engenharia. So
algoritmos que processam nmeros.
Software embutido. So programas
construdos para executarem dentro de
um produto especifico como a teclas
digitais de um forno micro ondas.
Software para linhas de produtos. So os
softwares conhecidos como software de
prateleiras.
Software de web. So aplicativos que
so executados via Internet.

Conceitos Bsicos
Software de inteligncia artificial. So
softwares que fazem os usos de
algoritmos no numricos. Estes tipos
software se encaixam na robtica.
Computao ubqua. So softwares que
realiza a verdadeira computao
distribuda.
Software aberto. So software que
disponibiliza a visualizao do cdigo
fonte da aplicao para o engenheiro de
software modifica da maneira que deseja.

Conceitos Bsicos
Software
O

Legado

nome de software legado dado quando refere


se num programa de computador que foi
desenvolvido h muito tempo. A preocupao do
engenheiro de software com os softwares legados
esta na baixa qualidade do software. Muitas
vezes no existem documentaes e se
existem so pobres de detalhes, os casos de
teste so pobres quando tem e sem um
controle de mudanas. E muitas vezes no
mexem no software legado quando eles atentem
as necessidades do cliente.

Conceitos Bsicos
Engenharia

de Software
Engenharia de software uma abordagem
sistemtica 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 demonstrao da prxima figura veremos a
viso do engenheiro de software em
desenvolver o software que traz uma grande
satisfao para o usurio quando ele prprio
utiliza o software.

Conceitos Bsicos
A

engenharia de software foca no software como


produto. No entra neste escopo o softwares
construdos 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 prxima figura representa uma comparao
entre projetos de software grande e pequeno.
Verificar que quanto maior a complexidade do
software mais ateno deve ter para a construo
do software.

Conceitos Bsicos
A

base da engenharia de
software so conjuntos de
atividades para o processo de
desenvolvimento de software. A
existncia de vrios 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, cdigo e teste.

Conceitos Bsicos
Analise

de requisito. Atravs 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 soluo do problema que foi
levantado no documento de requisito.
Codificao. A codificao o momento que pega o
problema resolvido no design do software e
transformar em uma linguagem de programao.
Teste. O teste de software o processo tem a
inteno 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.

Conceitos Bsicos

Conceitos Bsicos
Um

bom manual, repleto de padres e


regras, fornecer a equipe tudo que ela
precisa saber:

Desenvolvimento

no uma receita de bolo! Os


clientes so diferentes, os projetos so diferentes,
os programadores so diferentes, as prioridades
dependem do projeto. Basicamente, TUDO
diferente. No 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 ento voc poder levantar os
requisitos necessrios e trabalhar em cima de
um novo projeto.

Conceitos Bsicos
Caso

ocorra atraso no cronograma este


poder ser contornado alocando-se mais
programadores ao projeto.

Por

mais que exista o conceito de Fbrica de


Software no podemos pensar no processo
de desenvolvimento como uma linha de
produo. Ao se inserir um programador em
um projeto, ele levar algum tempo para se
familiarizar com o cdigo e com o que est
sendo feito, para ento, comear de fato a
produzir. Alocar programadores para resolver
um problema de cronograma poder surgir
efeito contrrio, causando mais problemas!

Conceitos Bsicos
Uma

Gravida demora 9 meses


para gerar um bebe.
Se Juntarmos 9 Gravidas eu vou
ter um bebe em um ms?

Conceitos Bsicos
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
terceirizao achando que esta uma garantia de
tranquilidade e nenhum trabalho. Contudo, tome
cuidado: Se a empresa X contratou voc, voc o
responsvel pelo trabalho que est entregando. A
fica a pergunta: A terceirizao fez o servio
direito? Comentou o cdigo? Documentou o que
foi feito? Sua equipe tem pessoal para trabalhar
nesse cdigo? Pense bem antes de terceirizar algo
que no poder trabalhar bem no futuro. melhor
recusar um projeto do que faze-lo mal feito.

Conceitos Bsicos
Um

software pode ser construdo


observando-se o seu propsito geral os
detalhes podem ser levados em conta
posteriormente.
Se voc desenvolvedor j deve ter se
deparado com um usurio que s queria um
ajustizinho no sistema: s adicione um boto
que faa isso e busque aquilo e faa isso ficar
cor de rosa e brilhar girando. Sim, essas
coisas acontecem! Desenvolvedores
geralmente no gostam de destruir algo para
faze-lo de outra forma, pois o cliente mudou de
ideia. Alis, ningum gosta.

Conceitos Bsicos
Mesmo

que os requisitos de um software


mudem, as alteraes so realizadas facilmente
pois temos uma boa equipe que sabe como fazer
o servio muito bem.
Mais uma vez, se voc no desenvolver e no
entende do processo, no julgue uma atualizao como
simples. Somente um programador poder avaliar o
quo simples uma alterao e muitas vezes, ela s
vai realmente ter a ideia depois que estiver
trabalhando com o cdigo. Mesmo que voc tenha
uma boa equipe, modificaes devem ser analisadas,
discutidas com relao 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.

Conceitos Bsicos
Se

o programa funciona, nosso trabalho est completo.


Se o programa ainda no est finalizado e rodando,
no posso avaliar sua qualidade.
Esses

dois tpicos so assustadoramente passados adiante e


voc j deve ter ouvido isso de algum. Se um programa roda
isso no garante que o seu trabalho est feito. Todo o processo
de desenvolvimento deve buscar a qualidade e apenas
funcionar no lhe garante isso ou seja, o processo da
avaliao de qualidade no se limita a essa etapa. O seu cdigo
bem comentado? Est bem feito? Otimizado? A tecnologia
utilizada adequada? Os banco de dados esto otimizados?
Sua relaes foram criadas corretamente? A infraestrutura do
cliente suporta o que est sendo desenvolvido? Se o seu
sistema foi feito para suportar vrios acessos, ele realmente
suporta isso? Um programa mais do que o executvel. Voc
vende todo o processo.

Conceitos Bsicos
O

nico produto que entregarei ao


cliente o cdigo executvel.

Em

alguns casos, o produto palpvel que o


cliente recebe somente o executvel. Em
outros, trabalha-se com o cdigo fonte e
com a documentao. Contudo,
independente do caso, lembre que, como foi
dito no item anterior: Um programa mais
do que o executvel. Voc vende todo o
processo de desenvolvimento. Por isso,
deve-se pensar e faze-lo com perfeio.

Conceitos Bsicos
O

processo de planejamento far com


que criemos documentao volumosa
que atrasar a execuo do projeto,
atrasando o cronograma.

Planejamento

fundamental! Muitas pessoas


aindam confundem planejamento com
papelada e estas esto terrivelmente
enganadas! Mesmo trabalhando-se em um
time Agil, planejar fundamental! A
documentao do projeto ser trabalhada na
melhor metodologia adotada mas um plano
do que ser feito dever ser estudado antes
de colocar a mo na massa.

Processos de Software
Processos

da PLT

de Software Capitulo 3

Processos de Software
O

que um Processo?

processo
substantivo

masculino
1. ao continuada, realizao contnua e
prolongada de alguma atividade; seguimento,
curso, decurso.
2. sequncia contnua de fatos ou operaes
que apresentam certa unidade ou que se
reproduzem com certa regularidade;
andamento, desenvolvimento, marcha.

Processos de Software
Processos
Quando

de Software

se fornece um servio
ou cria-se um produto, seja
desenvolvendo um software,
escrevendo um relatrio ou
fazendo uma viagem de
negcios, segue-se
costumeiramente uma sequencia
de etapas para completar um

Processos de Software
Cada

vez mais os setores da economia (primrio,


secundrio e tercirio) tem feito uso (e se tornado
dependente) das facilidades providas pelos avanos e
descobertas da tecnologia da informao. Tecnologias
de previso do tempo e de localizao via satlite,
por exemplo, so utilizadas no campo para aumentar
a produtividade da lavoura e a eficincia de
maquinas colheitadeiras. Softwares que gerenciam
toda a cadeia de produo e que controlam mquinas
e robs so cada vez mais comuns nas fbricas.
Sistemas de venda e controle de estoque so
diferenciais estratgicos indispensveis ao comrcio.
Diante deste cenrio, produzir e manter software
dentro de custos, prazos e critrios de
qualidade adequados torna-se requisito
obrigatrio (SOMMERVILLE, 2007).

Processos de Software
Para

que um software seja


desenvolvido de forma
consistente, preciso aliar boas
prticas da engenharia de
software com um robusto e
eficiente processo de
desenvolvimento. Diferentes
tipos de sistemas necessitam de
diferentes processos de
desenvolvimento.

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 comrcio eletrnico a especificao
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 organizaes
que produzem software a usar processos de
desenvolvimento que sejam eficientes e que
atendam plenamente suas necessidades
(SOMMERVILE, 2007).

Processos de Software
Howard

Baetjer Jr, em seu livro Software as Capital,


faz o seguinte comentrio sobre processo de software
(BAETJER 1998, pg. 85) :
... Desde que o software, como todo capital, conhecimento
incorporado, e como esse conhecimento est inicialmente
disperso, tcito, 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 interao entre usurios e
projetistas, entre usurios e ferramentas em desenvolvimento
e entre projetistas e ferramentas em desenvolvimento
(tecnologia). um processo iterativo no qual a prpria
ferramenta serve como meio de comunicao, com cada nova
rodada de dialogo explicitando mais conhecimento til do
pessoal envolvido....

Processos de Software
Efetivamente,

a elaborao de
software de computador um processo
de aprendizado, e o resultado, a
incorporao 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).

Processos de Software
Ele

pode ser definido para atividades como


desenvolvimento, manuteno, aquisio e
contratao de software (PAULA FILHO,
2009). Processos de software formam a base
para o controle gerencial de projetos de
software e estabelece o contedo no qual os
mtodos tcnicos so aplicados, os produtos
de trabalho (modelos, documentos, dados,
relatrios, formulrios, etc.) so produzidos,
os marcos so estabelecidos, a qualidade
assegurada e as modificaes so
adequadamente geridas (PRESSMAN, 2006).

Processos de Software
O

Guia PMBOK define processo


como sendo um conjunto de
atividades inter-relacionadas
realizadas para obter um
conjunto especfico de produtos,
resultados ou servios(PMBOK,
2008).
Segundo o IEEE, um processo
uma sequencia de passos
executada com um determinado
objetivo (IEEE, 2003).

Processos de Software
Para

o CMMI, um processo definido


quando tem uma descrio que mantida,
ou seja, tem documentao que detalha o
que feito (produto), quando (etapas), por
quem (papis), 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 ordenao parcial, o que pode
permitir paralelismo entre algumas delas
(PAULA FILHO, 2009).

Processos de Software
Focando

no desenvolvimento de
software, Ian Sommerville define um
processo de software como um
conjunto de atividades que leva
produo de um produto de software
(SOMMERVILLE, 2007).
Roger S. Pressman define processo de
software como um arcabouo para as
tarefas que so necessrias para
construir software de alta qualidade
(PRESSMAN, 2006).

Reflexo
Neste

ponto qual e a relao


existente entre Gesto de
Projetos e Engenharia de
Software?

Processos de Software
Processos

de softwares so
complexos e como todos os processos
intelectuais e criativos dependem de
julgamento humano. A existncia de
um processo de software no garante
que o software ser entregue no
prazo, de que ele ir satisfazer as
necessidades do cliente, ou exibir
os atributos arquiteturais que
mantero as caractersticas de
qualidade em longo prazo.

Processos de Software
No

existe um processo ideal. As organizaes


devem criar, verificar, validar e aperfeioar
seus prprios mtodos (CMMI, 2006). Vrias
destas desenvolvem abordagens inteiramente
diferentes, adequadas sua realidade, para
o desenvolvimento de software.
No caso de alguns sistemas, como os sistemas
crticos, necessrio um processo de
desenvolvimento muito bem estruturado.
Nos sistemas de negcios, com requisitos que
mudam rapidamente, um processo flexvel e gil
provavelmente mais eficaz (SOMMERVILE, 2007).

Processos de Software
Existem

vrios processos de
desenvolvimento de software, porm
algumas atividades fundamentais so
comuns a todos eles (SOMMERVILE, 2007):
Especificao: define a funcionalidade do
software e as restries sobre sua operao.
Projeto e implementao: o software que atenda
a especificao deve ser produzido.
Validao de software: o software deve ser
validado para garantir que ela faa o que o
cliente deseja.
Evoluo: o software deve evoluir para atender
aos novos requisitos que naturalmente surgiro.

Processos de Software
Processos

de software tm como base


modelos de processo genricos. Esses
modelos genricos no so descries
definitivas de processos de software. Ao
contrrio, so abstraes 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
especficos de engenharia de software.

Processos de Software
Os

modelos genricos de processos de


software amplamente utilizados so o
modelo em cascata, o modelo de
desenvolvimento evolucionrio e o
modelo de desenvolvimento
baseado em componentes.
Estes, no so mutuamente exclusivos
e comumente so utilizados em
conjunto, especialmente para
desenvolvimento de sistemas de
grande porte (SOMMERVILLE).

Processos de Software
Proxima

Aula :

Processos de Software estudos dos


modelos de desenvolvimento.
modelo em cascata;
o modelo de desenvolvimento
evolucionrio ;
modelo de desenvolvimento
baseado em componentes.

Manifesto Agil
http://www.manifestoagil.com.br
O

Manifesto gil uma declarao de


princpios que fundamentam o
desenvolvimento gil de software.

Desenvolvimento

gil de software (do ingls


Agile software development) ou Mtodo 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.

Manifesto Agil
Estamos

descobrindo maneiras melhores de


desenvolver software fazendo-o ns mesmos e
ajudando outros a faz-lo. Atravs deste
trabalho, passamos a valorizar:
Indivduos e interao entre elesmais que
processos e ferramentas;
Software em funcionamentomais que
documentao abrangente;
Colaborao com o clientemais que negociao
de contratos;
Responder a mudanasmais que seguir um
plano.

Ou

seja, mesmo havendo valor nos itens


direita, valorizamos mais os itens esquerda.

Manifesto Agil
Princpios

por trs do manifesto gil


Ns seguimos os seguintes princpios:
Nossa maior prioridade satisfazer o cliente,
atravs da entrega adiantada e contnua de
software de valor.
Aceitar mudanas de requisitos, mesmo no
fim do desenvolvimento. Processos geis se
adequam a mudanas, para que o cliente
possa tirar vantagens competitivas.
Entregar software funcionando com
freqencia, na escala de semanas at meses,
com preferncia aos perodos mais curtos.

Manifesto Agil
Pessoas relacionadas negcios e
desenvolvedores devem trabalhar em
conjunto e diriamente, durante todo o
curso do projeto.
Construir projetos ao redor de indivduos
motivados. Dando a eles o ambiente e
suporte necessrio, e confiar que faro seu
trabalho.
O Mtodo mais eficiente e eficaz de
transmitir informaes para, e por dentro
de um time de desenvolvimento, atravs
de uma conversa cara a cara.

Manifesto Agil
Software funcional a medida
primria de progresso.
Processos geis promovem um
ambiente sustentvel. Os
patrocinadores, desenvolvedores e
usurios, devem ser capazes de
manter indefinidamente, passos
constantes.
Contnua ateno excelncia tcnica
e bom design, aumenta a agilidade.

Manifesto Agil
Simplicidade:

a arte de maximizar a
quantidade de trabalho que no
precisou ser feito.
As melhores arquiteturas, requisitos
e designs emergem de times autoorganizveis.
Em intervalos regulares, o time
reflete em como ficar mais efetivo,
ento, se ajustam e otimizam seu
comportamento de acordo.

Referencias
SOMMERVILLE,

Ian (org.). Engenharia de


Software. 9 ed. So Paulo: PEARSON, 2011.

PRESSMAN,

Roger S.. Engenharia de Software.


7 ed. So Paulo: Makron Books, 2007.
http://
www.devmedia.com.br/conceitos-de-software-e-e
ngenharia-de-software/15730 Acessado em 21/03
/2015 as 22:20
http://
www.buildchange.org/wp-content/uploads/2014/0
7/mythbusters_logo.jpg Acessado em 21/03/2015
as 23:50
http://www.profissionaisti.com.br/2011/08/os-pri
ncipais-mitos-do-desenvolvimento-de-software

Obrigado

Você também pode gostar