Buscar

engenharia de software natureza e processos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Aluno: Aluno: Agnaldo Agnaldo Monteiro Monteiro Disciplina:EngenhDisciplina:Engenharia aria e e Qualidade Qualidade de de SoftwareSoftware
Pós-Graduando em Segurança de Redes no instituto Brasileiro dePós-Graduando em Segurança de Redes no instituto Brasileiro de
Formação(IBF)Formação(IBF)
ENGENHARIA DE SOFTWARE, SUA NATUREZA, E SEUS PROCESSENGENHARIA DE SOFTWARE, SUA NATUREZA, E SEUS PROCESSOSOS
Aplicativos de software são “programas isolados que resolvem uma necessidade específica doAplicativos de software são “programas isolados que resolvem uma necessidade específica do
negócio” (Pressman2006). Exemplos disso são aqueles softwares que processam dados comerciaisnegócio” (Pressman2006). Exemplos disso são aqueles softwares que processam dados comerciais
ou técnicos e que facilitam as operações e a gestão de um negócio, ou para sua designação. Alémou técnicos e que facilitam as operações e a gestão de um negócio, ou para sua designação. Além
do código-fonte, o software inclui toda do código-fonte, o software inclui toda a documentação e os dados necessários para que o programaa documentação e os dados necessários para que o programa
funcione corretamente (Sommerville2003). Os softwares foram desenvolvidos para que haja umafuncione corretamente (Sommerville2003). Os softwares foram desenvolvidos para que haja uma
comunicação entre homem e máquina, sendo que, o nosso mundo está em pleno desenvolvimentocomunicação entre homem e máquina, sendo que, o nosso mundo está em pleno desenvolvimento
com base nos software, como exemplo nos setores de telecomunicações, transporte, medicina,com base nos software, como exemplo nos setores de telecomunicações, transporte, medicina,
indústrias de diversos seguimentos, entretenimento, dispositivos de escritórios e até mesmo emindústrias de diversos seguimentos, entretenimento, dispositivos de escritórios e até mesmo em
alguns eletroeletronicos e eletrodomesticos. O que não nos damos conta, na visão de usuários, é dealguns eletroeletronicos e eletrodomesticos. O que não nos damos conta, na visão de usuários, é de
que os softwares que incorporam tais que os softwares que incorporam tais equipamentos são tão complexos e difíceis de equipamentos são tão complexos e difíceis de se desenvolver.se desenvolver.
Pois não são fabricados de nenhuma matéria-prima, nem Pois não são fabricados de nenhuma matéria-prima, nem por partes menores, como outros produtos,por partes menores, como outros produtos,
então seu desenvolvimento passa por um processo de engenharia de software. Mesmo não contendoentão seu desenvolvimento passa por um processo de engenharia de software. Mesmo não contendo
 partes físicas  partes físicas como como o o hardware, ele hardware, ele se se deteriora, deteriora, como como consequêconsequência ncia de de sua sua manutenção, porém manutenção, porém éé
impossível que isto não ocorra, já que a tecnologia e a necessidade de evolução estão emimpossível que isto não ocorra, já que a tecnologia e a necessidade de evolução estão em
crescimento, secrescimento, sem esquecer das necm esquecer das necessidades dos usuessidades dos usuários, sendo assários, sendo assim é necessário im é necessário desenvolvedesenvolverr
um software que seja compatível com alterações futuras, sem comprometer suas funcionalidades, éum software que seja compatível com alterações futuras, sem comprometer suas funcionalidades, é
fato também que deverá ser feita as manutenções preventivas, para manter a qualidade defato também que deverá ser feita as manutenções preventivas, para manter a qualidade de
engenhaengenharia, o ria, o que torna os que torna os softwares consideravelmesoftwares consideravelmente mais caros e nte mais caros e complexos que o hardware, jácomplexos que o hardware, já
que na deterioração deste, basta a troca da peça com defeito, e apenas um pode ser compatível comque na deterioração deste, basta a troca da peça com defeito, e apenas um pode ser compatível com
vários equipamentos e segmentos.vários equipamentos e segmentos.
Conforme os softwares vem evoluindo, surgiu uma arquitetura de software que fornece umaConforme os softwares vem evoluindo, surgiu uma arquitetura de software que fornece uma
estrutura básica para desenvolver novos softwares, com a premissa de que as “ideias são a matériaestrutura básica para desenvolver novos softwares, com a premissa de que as “ideias são a matéria --
 prima  prima para para a a construção construção de de ideias(jason ideias(jason Zebehazy), Zebehazy), sendo sendo assim assim criam-se criam-se novos novos e e melhoradosmelhorados
softwares utilizando estruturas, recursos e as bibliotecas de softwares utilizando estruturas, recursos e as bibliotecas de componentes de outros softwares. Comocomponentes de outros softwares. Como
exemplo podemos citar a exemplo podemos citar a shareware.cnshareware.cnet.com.et.com.
uma das mais utilizadas e abrangentes biblioteca de software uma das mais utilizadas e abrangentes biblioteca de software compartilhado livre.compartilhado livre.
De acordo Pressman (2011) há sete grandes categorias de software que apresentam desafíosDe acordo Pressman (2011) há sete grandes categorias de software que apresentam desafíos
continuos para os engenheiros de softwares sendo eles :continuos para os engenheiros de softwares sendo eles :
Software de sistemaSoftware de sistema. São programas que apóiam outros programas, como o software que realiza a. São programas que apóiam outros programas, como o software que realiza a
comunicação com o hardware exemplo sistema operacional e software que ajuda na construção decomunicação com o hardware exemplo sistema operacional e software que ajuda na construção de
outro software como os compiladores.outro software como os compiladores.
Software de aplicaçãoSoftware de aplicação . São programas que são desenvolvidos solucionar problemas e necessidades. São programas que são desenvolvidos solucionar problemas e necessidades
de um negócio específico.de um negócio específico.
Software científico e de engenharia.Software científico e de engenharia.   São algoritmos que processam números pesados,  São algoritmos que processam números pesados,
caracterizados como algoritmo number crunching. utilizados nas aplicações de astronomia,caracterizados como algoritmo number crunching. utilizados nas aplicações de astronomia,
vulcanologia, análise de tensões na indústria automobilística até na dinâmica orbital de ônibusvulcanologia, análise de tensões na indústria automobilística até na dinâmica orbital de ônibus
espaciais e biologia molecular.espaciais e biologia molecular.
Software embutidoSoftware embutido. São programas construídos para executarem dentro de um produto específico. São programas construídos para executarem dentro de um produto específico
como a teclas digitais de um forno micro ondas.como a teclas digitais de um forno micro ondas.
Software para linhas de produtosSoftware para linhas de produtos . São os softwares conhecidos como software de prateleiras, por. São os softwares conhecidos como software de prateleiras, por
exemplo produtos para controle de exemplo produtos para controle de estoque,proceestoque,processamento de textos, planilhas eletrônicas etc.ssamento de textos, planilhas eletrônicas etc.
Software de webSoftware de web. São aplicativos que são executados via Internet, os . São aplicativos que são executados via Internet, os chamados webappschamados webapps..
Software de inteligência artificialSoftware de inteligência artificial. São softwares que fazem os usos de algoritmos não numéricos,. São softwares que fazem os usos de algoritmos não numéricos,
como na robótica,reconhecimento de padrões(imagem e de voz),redes neurais artificiais, prova decomo na robótica,reconhecimento de padrões(imagem e de voz),redes neurais artificiais, prova de
teoremas e jogos.teoremas e jogos.
Atualmente, os engenheiros de software trabalham em uma ou mais Atualmente, os engenheiros de software trabalham em uma ou mais destascategorias citadas acima,destas categorias citadas acima,
visando que elas representam apenas as sete maiores, não visando que elas representam apenas as sete maiores, não é incomum trabalharem em é incomum trabalharem em um programaum programa
mais antigo, para incrementar mais antigo, para incrementar ou transformá-lo, atendendo as ou transformá-lo, atendendo as necessidadenecessidades atuais.s atuais.
 Novas  Novas categorias categorias vem vem trazendo trazendo desafios desafios como como aa computação mundial abertacomputação mundial aberta  que devido ao  que devido ao
crescimento do uso de redes sem fio pode conduzir a uma verdadeira computação distribuída ecrescimento do uso de redes sem fio pode conduzir a uma verdadeira computação distribuída e
Aluno: Agnaldo Monteiro Disciplina:Engenharia e Qualidade de Software
Pós-Graduando em Segurança de Redes no instituto Brasileiro de
Formação(IBF)
 persuasiva.  Netsoursing (recursos via internet)utilizando a internet como mecanismo
computacional , ou como um provedor de conteúdo. Software aberto do qual disponibiliza a
visualização do código fonte da aplicação para o engenheiro de software que pode modificar da
maneira que deseja.
Os milhares de programas existentes, entram e uma das categorias citadas, muitos deles são
softwares de ponta outros mais antigos, dos quais tem sido de grande foco e preocupação desde os
anos 60, descritos como software legado. A preocupação dos engenheiros de software com estes
softwares legados está na baixa qualidade do software. Muitas vezes não existem documentações e
se existem são pobres em detalhes, E muitas vezes não mexem no software legado quando eles
atendem às necessidades do cliente (PRESSMAN, 2011).
Para se criar ou atualizar um software é necessário entender os requisitos antes de elaborar ou
modificar os software, projetá-los é a atividade fundamental na engenharia de software, a qualidade
e a facilidade na manutenção, se torna o resultado de um produto bem desenvolvido.
Um dos fundamentos da engenharia de software e o foco na qualidade, tendo por base para isso os
 processos de engenharia que de acordo com PRESSMAN(2011) é a liga que mantém as camadas de
tecnologia coesas e possibilita o desenvolvimento de forma racional e dentro do prazo. Basicamente
o processo de softwares são atividades e tarefas a serem realizadas na criação de algum produto,
 porém não é uma condição rígida de como desenvolvê-lo mais sim um alicerce para o
desenvolvimento de um produto de dentro do prazo com qualidade.
Uma metodologia genérica deve compreender cinco atividades sendo elas a comunicação,
 planejamento, modelagem,construção e emprego que são aplicadas quantas vezes forem necessárias
 para a interação do projeto que produzirá um incremento de software, do qual disponibiliza os
recursos e funções do software, a cada incremento tornando o software mais completo.
Entretanto essas atividades são complementadas por algumas atividades de apoio, como exemplo:
controle e acompanhamento do projeto, administração de risco, garantia de qualidade de software
revisões técnicas, a medição, gerenciamento da configuração de software, gerenciamento de
reusabilidade e preparo e produção de artefatos de software que engloba as atividades necessárias
 para criar por exemplo modelos, documentos, logs, formulários e listas. Como dito anteriormente
não é necessário seguir a risca tais processos, assim como um cozinheiro utiliza a receita apenas
como uma orientação Já a prática da engenharia é uma atividade de resolução dos problema para a
criação do software que tem como princípios básicos a compreensão do problema, o planejamento
da solução,a execução do plano e examinar o resultado. podemos dizer que parte destes princípios
consiste em bom senso.
Há ainda alguns princípios gerais a se levar em consideração, os que ajudam a estabelecer um
modo de pensar para uma prática segura da engenharia de software. David HOOKer(Hoo96) propõe
sete princípios concentrados na prática da engenharia de software, citando-os a seguir:
1º a razão de existir , que basicamente é a única razão de um software existir de acordo com
HOO96, `para gerar valor a seus usuários, se não se encontra essa resposta acima de suas
funcionalidades não o faça.
2ºKiss(keep it simple, stupid-Faça de forma simples)frequentemente os projetos mais elegantes,são
os mais simples, o que não significa simples e mal-feito.
3ºmantenha a visão uma visão clara é essencial para o sucesso do projeto.
4ºo que um produz outros consomem raramente o software a nível industrial é utilizado
isoladamente, por isso especifique, projete e implemente ciente de que alguém mais tem de entender
o que você está fazendo.
5ºesteja aberto para o futuro, projetos com uma visão mais longa de uso tem mais valor .
6ºplaneje com antecedência,visando a reutilização a economia de tempo e esforço com a
reutilização de componentes, aumenta o valor e reduz os custos.
7ºpense, pensar bem e de forma clara antes de agir quase sempre produz melhores resultados.
Além de a parte teórica há os princípios a serem utilizados no desenvolvimento de um software,
assim como os processos que determinam na prática o que deve ser realizado pela equipe como
 prazos, tornando se assim o resultado de todo o planejamento, do qual também precisa ser
gerenciado no decorrer das tarefas executadas. os processos de software basicamente se designa
como um conjunto de atividades que leva ao desenvolvimento do produto software. Um processo
define quem faz, o que faz e quando fazer.No entanto cada organização desenvolvem seus próprios
 processos. Apesar da existência do processo não traz garantias de que o software será entregue
conforme proposto, dentro do prazo ou características de longo prazo, o próprio processo pode ser
avaliado para garantir que estará de acordo com os processos básicos de desenvolvimento de
software, com o passar dos últimas décadas foram sendo proposta uma série de abordagens de
avaliação para o desenvolvimento dos processos de software como por exemplo a ISO 9001:2000
 para Software.
MODELOS PRESCRITIVOS
Modelos prescritivos de processos são um conjunto distinto de atividades, tarefas, e produtos de
trabalho que são necessários para tornar engenharia de  software com alta qualidade.
Existem vários modelos de processo de software (ou paradigmas de engenharia de software), dentro
do modelo prescritivos estão:
Modelo em Cascata ou ciclo de vida clássico: é um processo utilizado quando se entende os
requisitos do problema. É um modelo mais antigo, o que traz algumas desvantagens para a
atualidade, já que o cliente não sabe ao certo todos os requisitos do produto que deseja.modelo
cascata, sugere uma abordagem sequencial na seguinte ordem:análise, projeto, codificação, teste,
implantação/construção. PRESSMAN(2011) propôs a seguinte sequência no processo
comunicação que é a iniciação do projeto e levantamento de requisitos, planejamento que são as
estimativas, o cronograma e o monitoramento, modelagem a análise e projeto, construção as
codificações e teste e por fim a implantação a entrega, manutenção e  feedback  do produto.
Modelo Incremental: escolhido quando há necessidade de entrega rápida de algumas
funcionalidades, mesmo que sejam limitadas, mais tarde vindo a expandir estas funcionalidades
 para as versões posteriores do software. PRESSMAN (2011) cita o exemplo de um software de
 processamento de texto que poderia liberar funções básicas de gerenciamento de arquivos, edição e
 produção de documentos, posteriormente vindo a liberar recursos avançados como revisão
ortográfica e gramatical, recursos sofisticados de edição e produção de texto, layout entre outros.
Modelo Evolucionario:  como o próprio nome sugere ele vem evoluindo com o tempo, não
diferente dos demais, porem este modelo de processo possibilita a incrementação de novas
necessidade de negocio do produto,o que o torna iterativos,apresentando caracter  ́sticas que
 possibilitam desenvolver verso  ̃es cada vez mais completas do software. O processo evolucionário
apresenta-se em dois segmentos:a prototipação que se resume na utilização do protótipo no auxílio
da identificação dos requisitos de software, já nem sempre os requisitos de entrada de
 processamento e saída são bem definidos pelo cliente. e o Modelo Espiral que citando PRESSMAN
acopla a natureza interativa da prototipação e com aspectos sistematicos e controlados do modelo
casacata,fornecendo potencial para o rápido desenvolvimento de versões cada vez mais completas.
Modelos Concorrentes:  onde utiliza-se praticamente os modelos já citados de forma concorrente e
interativos, onde as atividades das mesmas ocorrem em paralelo,porém estão em diferentes estados.
MODELOS DE PROCESSO ESPECIALIZADO
Este modelo apresentam muitas das características de um ou mais modelos convencionais, no
entanto são aplicados quando há uma abordagem de engenharia de software estritamente definida
ou especializada. apresenta-se em três ramificações sendo elas:
Desenvolvimento Baseado Em Componentes: É basicamente o desenvolvimento de software a
 partir de vendas de funções e recursos pré existentes,com interfaces bem definidas e a partir daí
originando os softwares desejado pelo cliente.
Métodos Formais: É o conjunto de atividades que levam a especificação matemática formal do
software. possibilitando a especificação,o desenvolvimento e a verificação de um sistema ,
aplicando uma rigorosa notação matemática nele.
Desenvolvimento De Software Orientado A Aspectos: fornece métodos para definir,especificar,
 projetar e construir aspectos ou seja as preocupações do cliente que permeiam diversos níveis do
sistema como as propriedades de alto nível, as funções e as sistêmicas do desenvolvimento do
software.
O PROCESSO UNIFICADO:Este processo visa a unir os melhores recursos e características dos
modelos convencionais, além de utilizar uma comunicação com o cliente para o desenvolvimento
do produto e que também sugere um fluxo de processo iterativo e incremental.
as fases do Processo Unificado se relacionam com as atividades genéricas de desenvolvimento de
 software. elas são a: concepção que liga a comunicação com o cliente e o planejamento do sistema,
elaboração Inclui a comunicação com o cliente e atividades de modelagem do processo genérico, a
construção, Transição que abrange os últimos etapas da atividade genérica de construção e a
 primeira da atividade de implantação e a produção que e’a versão de incremento do software.
PROCESSOS DE SOFTWARE PESSOAL (PSP):Um estudo realizado pela IEEE ( Institute of
 Electrical and Electronic Engineers) mostra que o fator considerado mais importante para um
 projeto de software bem sucedido são as pessoas. Este modelo foi desenvolvido para tornar o
trabalho mais adequado e produtivo a nível individual no processo, O modelo PSP define cinco
atividades estruturais: Planejamento, projeto de alto nvel, revisão do projeto de alto nível,
desenvolvimento e autópsia, no intuito de identificar melhorias no próprio programador para
melhorar sua habilidades no desenvolvimento de software.
PROCESSOS DE SOFTWARE EM EQUIPE(TSP):Pelo fato do softwares serem desenvolvidos
geralmente com uma equipe, incorpora o que se aprende destas lições para criar uma equipe
autodirigida, que se organize para desenvolver softwares de alta qualidade Humphrey(hum
98)define os seguintes objetivos para o TSP como exemplo: criar equipes autodirigidas que
 planejem e acompanhem seu próprio trabalho, mostrar aos gerentes como treinar e motivar sua
equipe e acelerar o aperfeiçoamento dos processos de software. além de definir as atividades
metodológicos de lançamento do projeto, projeto de alto nível, implementação, integração e testes e
autópsia.
DESENVOLVIMENTO ÁGIL
Conforme a evolução do mercado cresce, cresce também os desafios e a competitividade fazendo
com que os desenvolvedores tenham de assumir uma abordagem na engenharia de software que o
mantenham ágeis, definindo um processo que possam ser manipuláveis,adaptáveis, sem exageros,
somente com o básico e essencial, para que possa se adequar às necessidades do consumidor.
um método ágil na engenharia de software consta quatro elementos básicos, a importância das
equipes que se auto-organizam, o controle sobre o trabalho realizado e sobre a comunicação entre a
equipe, os desenvolvedores e os clientes , o reconhecimento das mudanças, e a entrega rápida do
software para satisfazer o cliente.
destacam-se dentro do desenvolvimento ágil, os processos XP, ASD, scrum, DSDM e Crystal.
EXTREME PROGRAMMING(XP)Um dos métodos mais conhecidos e utilizados no
desenvolvimento ágil de software, seja o XP, por utilizar uma abordagem extrema em relação ao
desenvolvimento iterativo. tem por base cinco valores , a comunicação para estabelecer os fatores e
funções necessárias para o software, a simplicidade para realizar apenas as necessidades básicas e
imediatas do projeto,feedback , coragem e respeito. O processo XP faz um emprego a abordagem
orientada ao objeto, seguindo um conjunto de regras e práticas no seu desenvolvimento como
 planejamento, projeto, codificação e testes
DESENVOLVIMENTO DE SOFTWARE ADAPTATIVO(ASD)Este processo consiste em uma
técnica para construir o software e sistemas complexos baseado na colaboração humana e na auto-
organização das equipes, considerado um processo ágil e adaptativo que incorpora três etapa; a
especulação unindo o planejamento de ciclos adaptativos, o estabelecimento da missão, os
requisitos básicos e com os prazos estabelecidos. a colaboração envolvendo uma comunicação entre
o trabalho em equipe e enfatizando o individualismo para desenvolver o papel criativo e
colaborativo do seus desenvolvedores e a aprendizagem.
SCRUM:Enfatiza o uso de um conjunto de padrões para o processo de desenvolvimento, eficaz
 para projetos com prazos curtos, requisitos mutáveis, constituído por um conjunto de ações no seu
desenvolvimento sendo eles o registro pendente de trabalhos(backlog),urgências e as alterações de
itens do registro de trabalho.
MÉTODOS DE DESENVOLVIMENTO DE SISTEMAS DINÂMICOS(DSDM):Seu objetivo
é entregar softwares dentro do prazo e com os custo estimados através do controle e ajustando os
requisitos ao longo do desenvolvimento. criou-se uma organização entre empresas chamada DSDM
Consortium, que definiu um modelo de processos ágeis chamado ciclo de vida DSDM, no site
www.dsdm.org pode ser encontrado alguns recursos deste processo.
CRYSTAL:Crystal é uma família de metodologias de desenvolvimento de software , possui
diferentes tamanhos e níveis críticos do projeto.Criada por Alistair Cockburn e Jim Highsmith a fim
de conseguir uma abordagem de desenvolvimento de software que prioriza a adaptabilidade.
Os métodos Crystal são focados nos talentos e nas habilidades das pessoas, para que seja moldado
conforme as características específicas da equipe, mesclando a sua cultura de trabalho com a
 proposta de desenvolvimento ágil.
DESENVOLVIMENTO DIRIGIDO A FUNCIONALIDADE (FDD):É um processo ágil e
adaptativo que pode ser utilizado a projetos de porte médio a projeto maiores, tem uma filosofia de
colaboração entre a equipe,gerenciar problemas e complexidades do projeto e a comunicação de
detalhes técnicos usando meio verbais ,gráficos e pro texto.
DESENVOLVIMENTO DE SOFTWARE ENXUTO (LSD):Adaptando a fabricação enxuta para
a engenharia de software, que trouxe os princípios enxutos que inspira este processo são os de
eliminar desperdício,incorporar qualidade ,criar conhecimento,entregar rápido respeitar as pessoas e
otimizar o todo.
MODELAGEM ÁGIL(AM):Em algumas situações os desenvolvedores têm de criar sistemas de
maior tamanho e complexidade, com detalhes críticos,porém devem ser compreendida pelas partes
envolvidas para atingir os requisitos, então a modelagem ágil é utilizada,por ser um conjunto de
valores, princípios e práticas voltada para a modelagem do software.
PROCESSO UNIFICADO ÁGIL (AUP):Adota uma filosofia “serial para o que é amplo” e
“iterativa para o que é particular”, no desenvolvimento de sistemas computadorizado. anotando as
atividades em fases UP clássicas
PRESSMAN(2011)

Outros materiais