Você está na página 1de 6

Aluno: Agnaldo Monteiro Disciplina:Engenharia e Qualidade de Software

Pós-Graduando em Segurança de Redes no instituto Brasileiro de


Formação(IBF)

ENGENHARIA DE SOFTWARE, SUA NATUREZA, E SEUS PROCESSOS


Aplicativos 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 comerciais
ou 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 a documentação e os dados necessários para que o programa
funcione 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 desenvolvimento
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 em
alguns eletroeletronicos e eletrodomesticos. O que não nos damos conta, na visão de usuários, é de
que os softwares que incorporam tais equipamentos são tão complexos e difíceis de se desenvolver.
Pois não são fabricados de nenhuma matéria-prima, nem por partes menores, como outros produtos,
então seu desenvolvimento passa por um processo de engenharia de software. Mesmo não contendo
partes físicas como o hardware, ele se deteriora, como consequência de sua manutenção, porém é
impossível que isto não ocorra, já que a tecnologia e a necessidade de evolução estão em
crescimento, sem esquecer das necessidades dos usuários, sendo assim é necessário desenvolver
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 de
engenharia, o que torna os softwares consideravelmente mais caros e 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 com
vários equipamentos e segmentos.
Conforme 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éria-
prima para a construção de ideias(jason Zebehazy), sendo assim criam-se novos e melhorados
softwares utilizando estruturas, recursos e as bibliotecas de componentes de outros softwares. Como
exemplo podemos citar a shareware.cnet.com.
uma das mais utilizadas e abrangentes biblioteca de software compartilhado livre.
De acordo Pressman (2011) há sete grandes categorias de software que apresentam desafíos
continuos para os engenheiros de softwares sendo eles :
Software de sistema. 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 de
outro software como os compiladores.
Software de aplicação. São programas que são desenvolvidos solucionar problemas e necessidades
de um negócio específico.
Software científico e de engenharia. São algoritmos que processam números pesados,
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 ônibus
espaciais e biologia molecular.
Software embutido. São programas construídos para executarem dentro de um produto específico
como a teclas digitais de um forno micro ondas.
Software para linhas de produtos. São os softwares conhecidos como software de prateleiras, por
exemplo produtos para controle de estoque,processamento de textos, planilhas eletrônicas etc.
Software de web. São aplicativos que são executados via Internet, os chamados webapps.
Software de inteligência artificial. 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 de
teoremas e jogos.
Atualmente, os engenheiros de software trabalham em uma ou mais destas categorias citadas acima,
visando que elas representam apenas as sete maiores, não é incomum trabalharem em um programa
mais antigo, para incrementar ou transformá-lo, atendendo as necessidades atuais.
Novas categorias vem trazendo desafios como a computação mundial aberta que devido ao
crescimento 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 caracteriś ticas que
possibilitam desenvolver versõ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)