Buscar

Trabalho de Engenharia de Software

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 10 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 10 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 9, do total de 10 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

Prévia do material em texto

Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
 
Matheus Riquelme Guimarães Maia, Moiseis Pereira Paulino, Nayara Reis Barbosa 
Proença, Nickolas Oliveira Mariano, Renato Soares, Thales Oliveira Nunes 
Alunos do Curso de Sistemas de Informação – UEMG – Passos 
 
Prof.ª Ps. Lucineide Nunes Pimenta 
Orientadora – Curso de Sistemas de Informação – UEMG – Passos 
 
 
RESUMO 
O presente artigo tem como objetivo principal uma breve introdução sobre a 
engenharia de software. Com o avanço da tecnologia e as consequentes mudanças no cenário 
econômico, social e tecnológico mundial, verifica-se a necessidade de adequação dos softwares 
às necessidades dos usuários, e o método de planejamento e execução mais eficiente para o seu 
desenvolvimento, considerando custo, prazo e confiança. O método de pesquisa utilizado no 
presente trabalho é o bibliográfico. Foram analisados alguns conceitos básicos referentes ao 
tema. Realizou-se uma abordagem sobre as atividades fundamentais a todos os processos de 
software, o seu desenvolvimento profissional, a ética na engenharia e os estudos de casos. 
Ademais, foram analisados também modelos de processo de software, as atividades, bem como 
a adequação às mudanças ocorridas durante o processo de desenvolvimento. Outros temas 
analisados no presente trabalho foram a prototipação, a entrega incremental e o modelo espiral 
de Boehm. Dentro da engenharia de requisitos, verificou-se o estudo de viabilidade, e licitação 
e análise, especificação e validação. Foi possível verificar a importância de se ter um bom 
planejamento no desenvolvimento de um software, a importância da confidencialidade e dos 
direitos de propriedade intelectual, bem como a responsabilidade de se analisar qual o melhor 
método que atenda ao usuário uma vez que a sociedade depende dos sistemas. 
 
PALAVRAS-CHAVE: engenharia de software, engenharia de requisitos, prototipação, 
entrega incremental, modelo espiral. 
 
 
1 INTRODUÇÃO 
 
Tudo gira em torno da engenharia de software, a suas inovações, ao que ela já e o que 
ainda vai fazer. É dito que o mundo moderno não existiria sem os computadores, eles são os 
protagonistas dessa geração. Tudo que é criado, desde mais pequena coisa como um celular até 
a maior, foi feita ou depende de um software, de um computador. 
Não se existem leis para um software, apenas maneiras de fazê-lo, teorias e maneiras, 
mas a tecnologia não se encaixa numa lei da física ou pelos processos de manufatura. O que a 
faz não ter limites e também, a sua maneira, altamente complexa. 
Sem a engenharia de software, não teríamos explorado o espaço, não teríamos a 
Internet ou as telecomunicações modernas. Todas as formas de viagem seriam mais perigosas 
e caras. A engenharia de software contribuiu muito e ainda irá fazer muito mais. 
 
 
1.1 Desenvolvimento profissional de software 
 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
A engenharia de software é uma abordagem sistemática para produção de software no 
foco de questões práticas de custo, prazo e confiança. 
Dentro do desenvolvimento profissional, a engenharia de software preocupa- se em 
desenvolver produtos de software. Existem dois tipos de produtos de sistemas são eles: produtos 
genéricos (sistemas stand-one) usando ferramentas como banco de dados, processamento de 
texto e pacotes gráficos entre outros. E produto sob encomenda, software usado por uma 
determinada empresa ou aplicação. 
A engenharia de produto de software tem o foco de estar em todos os aspectos da 
produção de software desde os estágios iniciais até os finais e incluindo a manutenção em casos 
de software já implantado. 
A importância da engenharia de software dentro da sociedade que depende dos 
sistemas pode resultar na diminuição do custo financeiro do projeto e a entrega do projeto 
conforme projetado usando métodos e técnicas da engenharia. Existem quatro atividades 
comuns e fundamentais a todos os processos de software, são elas: especificação, 
desenvolvimento, validação e evolução do software. 
Existem também três aspectos gerais que afetam novos tipos de diferente de software 
são eles: heterogeneidade, mudança de negócio e social, segurança e confiança. Assim como 
no mercado busca a necessidade dos clientes e produtos de software, mas não existem técnicas 
e métodos universais na engenharia de software 
 
1.2 Ética na engenharia de software 
 
A ética na engenharia de software, deve aceitar que o trabalho envolve maiores 
responsabilidades e deve manter padrões normais de honestidade e integridade podemos citar 
três exemplos de responsabilidade profissional são elas: confidencialidade, competência e 
direitos de propriedade intelectual, mau uso do computador 
Existem organizações para desempenhar definições e manuais de prática ética na 
engenharia de software, são elas ACM , IEEE. 
 
1.3 Estudo de caso 
 
Para exemplificar os conceitos de engenharia de software o autor se utiliza de três tipos 
diferentes de sistemas, com intuito de demonstrar que a prática depende das especificidades de 
cada aplicação. 
Os estudos de caso utilizados são: 
1. um sistema embutido que tem como características o tamanho físico, capacidade 
de resposta, gerenciamento de energia, entre outras. Nesse caso um sistema de controle 
de bomba de insulina; 
2. um sistema de informação, que gerencia a inserção e acesso a um banco de 
dados, que tem como principais características fundamentais a proteção, usabilidade, 
privacidade e manutenção da integridade dos dados. Nesse caso, um sistema de 
informação de pacientes para cuidados com saúde mental; 
3. um sistema de coleta de dados baseado em sensores, que deve coletar e processar 
esses dados. Os requisitos principais desse sistema são confiabilidade em condições 
hostis e manutenibilidade. Esse sistema é uma estação meteorológica no deserto. 
No primeiro caso, do sistema de controle da bomba de insulina, vale ressaltar, que por 
se tratar de um sistema que gerencia o nível de insulina no corpo de uma pessoa, obviamente é 
um sistema crítico de segurança, pois se o sistema falhar, pode prejudicar a saúde do indivíduo. 
Portanto, trata-se como requisitos essenciais, a disponibilidade do sistema quando requerido e 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
a confiabilidade do mesmo para controlar os níveis de açúcar no sangue, além é claro da 
segurança do sistema. 
Já no segundo caso, referente ao sistema de informação de pacientes para cuidados 
com saúde mental, o que está em questão é o gerenciamento de dados. Nesse caso os requisitos 
do sistema estão atrelados a disponibilidade, confiabilidade dos dados, segurança e 
manutenibilidade. Também deve cumprir com demandas das leis de proteção de dados e lei de 
saúde mental, além de garantir que as decisões sejam auditáveis judicialmente. A privacidade 
nesse caso é um ponto crítico do sistema. 
O terceiro caso é de uma estação meteorológica no deserto. Esse sistema integra um 
sistema maior composto pelo sistema da estação meteorológica, pelo sistema de gerenciamento 
e arquivamento de dados e pelo sistema da manutenção da estação. Além de fazer a coleta dos 
dados através de sensores e disponibilizá-los na rede através de um sistema via satélite, 
relativamente lento, esse sistema deve operar em condições adversas, possuir mecanismo de 
carregamento de baterias, permitir monitoramento reportando defeitos e ainda permitir 
atualização de software e backup caso haja falha. 
Entende-se então, que cada software possui requisitos diferentes e por isso, a prática 
da engenharia de software depende do tipo de sistema que está sendo produzido. 
 
 
2 PROCESSO DE SOFTWARE 
 
2.1 Modelos de processo de software 
 
O processo de softwaresão todos os passos necessários para que a equipe de 
desenvolvedores consiga obter um software satisfatório e completo. Dessa forma, conseguindo 
resolver algum problema no mundo real. 
Para obter tal feito, é necessário que se tome os devidos cuidados no processo em si. 
Portanto, algumas definições foram feitas para facilitar o desenvolvimento do software. Dentre 
elas estão, a especificação, implementação, validação e evolução. Essas definições dizem que 
o software deve ser idealizado, e por isso quanto mais específico for essa idealização, melhor. 
Por consequência, deverá ser implementado e após isso, validado pelo cliente e por fim, ao 
decorrer do tempo, o software deve evoluir conforme as necessidades dos clientes. 
Porém, ao se aplicar esses princípios em situações reais é necessário que haja algumas 
estratégias para se obter o resultado final. Dessa forma, surgem os modelos de processo de 
software que tentam simplificar a complexidade de criar um novo software e seu objetivo final 
de resolver um problema real. 
Os mais comuns são os modelos em cascata, incremental e orientada em reuso. O 
primeiro é o mais usado e tem como característica principal o ciclo de vida do software e o 
planejamento total do ciclo. Já o segundo tem uma ideia de iniciar um esboço e expô-la aos 
usuários e só então partir dali que se toma uma decisão. Portanto, será dessa forma que se dará 
prosseguimento em um modelo incremental, incrementando passo a passo ao software. Já o 
orientado ao reuso tem como principal foco, reaproveitar o que já foi feito com a finalidade de 
reduzir o tempo. Para isso é necessário especificar mais os componentes e como o usuário irá 
consumi-los. 
 
2.2 Atividades do processo 
 
Nos Processos de Software podemos verificar uma sequência de atividades de natureza 
técnicas, de colaboração e de gerência; todas com o objetivo de especificar, projetar, 
implementar e testar o sistema de software, e, também para gerenciar o grande volume de 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
informações geradas em um grande projeto de software. Temos quatro atividades básicas: 
especificação, desenvolvimento, validação e evolução – que são organizadas, diferentemente, 
conforme o processo de desenvolvimento. Por exemplo, no modelo em cascata são organizadas 
em sequência, enquanto no modelo incremental são intercaladas. 
 
2.2.1 Especificação de software 
 
Conhecida também como engenharia de requisitos, é uma das fases mais críticas na 
produção de um software. Visa fazer o levantamento e definição dos serviços requisitados do 
sistema, compreensão do processo e a identificação das restrições relativas à operação e ao 
desenvolvimento do sistema. Esta fase visa garantir a satisfação e os requisitos exigidos pelos 
stakeholders. Os requisitos são apresentados em dois níveis: - para usuários finais e clientes, é 
apresentado uma declaração de requisitos de alto nível, e, - para os desenvolvedores do sistema, 
é apresentado uma especificação de requisitos mais detalhada do sistema. 
A engenharia de requisitos possui quatro atividades principais que são: Estudo de 
viabilidade, Elicitação e análise de requisitos, Especificação de requisitos e Validação de 
requisitos. 
1 – Estudo de viabilidade – nesta fase é feita uma análise sobre a possibilidade de 
satisfazer as necessidades dos usuários diante das tecnologias disponíveis, bem como, 
uma análise da viabilidade do ponto de vista financeiro. Deve ser uma análise rápida 
e barata; 
2 – Elicitação e análise de requisitos – esta é a fase, propriamente dita, de levantamento 
dos requisitos para o sistema, e envolve um entendimento do negócio e das 
necessidades dos clientes; 
3 – Especificação de requisitos – nesta fase há a tradução do que foi levantado na fase 
anterior em um documento contendo todos os requisitos, que pode conter os requisitos 
destinados aos usuários - clientes, e aos desenvolvedores; 
4 – Validação de requisitos – nesta fase é realizada a verificação dos requisitos quanto 
ao realismo, consistência e completude. É neste momento que os erros e contradições 
são descobertos para posteriores adequações. 
 
2.2.2 Projeto e implementação de software 
 
Neste estágio há o desenvolvimento de duas atividades: - a elaboração do projeto de 
software e a implementação do software, ou seja, conversão de uma especificação do sistema 
em um sistema executável, envolvendo sempre, processos de projeto e programação de 
software. 
Um projeto de software é uma descrição da estrutura do software a ser implementado, 
dos modelos e estruturas de dados usados pelo sistema, das interfaces entre os componentes do 
sistema e, às vezes, dos algoritmos usados, e é conseguido de forma interativa e por meios de 
revisões constantes para a correção do projeto. De forma que o feedback de um estágio para 
outro e constante retrabalho são inevitáveis em todos os processos. 
A maioria dos softwares interage com outros sistemas de software, incluindo o sistema 
operacional, o banco de dados, o middleware e outros aplicativos. Estes formam a plataforma 
de software, o ambiente em que o software será executado, que normalmente, são as entradas 
essenciais para o processo de projeto. 
As atividades no processo de projeto podem variar, dependendo do tipo de sistema a 
ser desenvolvido, p.e, sistemas em tempo real demandam projetos de timing, podendo ou não 
incluir uma base de dados. 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
Há quatro atividades que podem fazer parte do processo de projeto de sistemas de 
informação: - Projeto de arquitetura, de interface, de componente e de banco de dados. 
1. Projeto de arquitetura - neste você pode identificar a estrutura geral do sistema, os 
componentes principais (ou módulos), seus relacionamentos e como eles são 
distribuídos; 
2. Projeto de interface - no qual você define as interfaces entre os componentes do 
sistema. Com uma interface precisa, um componente pode ser usado de maneira que 
outros componentes não precisam saber como ele é implementado. 
3. Projeto de componente - no qual você toma cada componente do sistema e projeta 
seu funcionamento. Trata-se de uma simples declaração da funcionalidade que se 
espera implementar, com o projeto específico para cada programador, ou poderá ser 
uma lista de alterações a serem feitas em um componente reusável ou um modelo de 
projeto detalhado. 
4. Projeto de banco de dados - no qual você projeta as estruturas de dados do sistema 
e como eles devem ser representados em um banco de dados. 
Essas atividades levam a um conjunto de saídas do projeto, que variam de acordo com 
o sistema desenvolvido, p.e, sistemas críticos tem como saída documentos detalhados do 
projeto indicando as descrições precisas e exatas do sistema, por outro lado se for usada uma 
abordagem a modelos, as saídas podem ser diagramas, e ainda, se for utilizado os métodos ágeis 
de desenvolvimento as saídas podem ser o código do programa. 
Nas décadas de 70 e 80 foram desenvolvidos os métodos estruturados para projetos, 
os quais foram os precursores do UML e do projeto orientado a objetos, e eram relacionados 
com a produção de modelos gráficos do sistema. Em seguida, surgiu o desenvolvimento 
dirigido a modelos – MDD (model-driven development), sendo uma evolução dos modelos 
estruturados, onde os modelos de software são criados em diferentes níveis de abstração. Neste 
há uma maior ênfase nos modelos de arquitetura com separação entre os modelos abstratos 
independentes de implementação e específicos de implementação. 
Programação é uma atividade subjetiva e não existe um processo geral a ser seguido. 
Alguns programadores começam com componentes que eles compreendem, desenvolvem-nos 
e depois passam para os componentes menos compreendidos e outros preferem a abordagem 
totalmenteoposta. 
Os programadores, na sua atividade de desenvolvimento, fazem testes de defeitos, que 
é o estabelecimento da existência de defeitos no sistema, e, debugging, que diz respeito à 
localização e correção desses defeitos. 
 
2.2.3 Validação de software 
 
A validação de software – verificação e validação (V&V) - tem o objetivo de mostrar 
se o software se adequa a suas especificações ao mesmo tempo que satisfaz as especificações 
do cliente e usuários do sistema. A principal técnica de validação é o Teste de programa, onde 
o sistema é executado com dados de testes simulados, podendo também, envolver processos de 
verificação, como inspeções e revisões em cada estágio do processo de software. 
Os estágios do processo de testes são: 
1 – Testes de desenvolvimento – os componentes são testados pelas pessoas que o 
desenvolveram, independentemente um do outro; 
2 – Testes de sistema – esse processo se preocupa em encontrar os erros resultantes 
das interações inesperadas entre componentes e problemas de interface do componente, bem 
como, visa mostrar que o sistema satisfaz seus requisitos funcionais e não funcionais, e ainda, 
testar as propriedades emergentes do sistema. 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
3 – Testes de aceitação – neste o sistema é testado com dados fornecidos pelo cliente 
e não com os dados advindos de testes simulados. 
Os processos de desenvolvimento de componentes e testes geralmente são 
intercalados, e são executados pelos programadores. Dependendo da abordagem, uma técnica 
diferente é usada para a execução dos testes. 
O teste de aceitação também pode ser chamado 'teste alfa'. Sistemas sob encomenda 
são desenvolvidos para um único cliente, o processo de testes-alfa continua até que o 
desenvolvedor do sistema e o cliente concordem que o sistema entregue é uma implementação 
aceitável dos requisitos. Quando um sistema está pronto para ser comercializado como um 
produto de software, costuma-se usar um processo de testes denominado 'teste beta'. Este teste 
envolve a entrega de um sistema a um número de potenciais clientes que concordaram em usá-
lo, para em seguida, relatarem os problemas e erros encontrados. Após esse feedback, o sistema 
é modificado e liberado para outros testes-beta ou para venda em geral. 
 
2.2.4 Evolução do software 
 
A flexibilidade dos sistemas de software é uma das principais razões pelas quais os 
softwares vêm sendo, cada vez mais, incorporados em sistemas grandes e complexos. 
Entretanto, as mudanças no software podem ser feitas a qualquer momento durante ou após o 
desenvolvimento do sistema. Mesmo grandes mudanças são muito mais baratas do que as 
correspondentes alterações no hardware do sistema. 
Era costume diferenciar o processo de desenvolvimento e o de evolução do software 
(manutenção de software), pois, viam o segundo como sendo uma atividade maçante e não 
criativa. Entretanto, atualmente, há a tendência de considerar o desenvolvimento de software e 
a manutenção de software como um processo evolutivo, no qual é constantemente alterado 
durante seu período de vida em respostas às mudanças de requisitos e às necessidades do cliente. 
 
2.3 Lidando com mudanças 
 
Em virtude de pressões externas do negócio, mudanças de prioridade no 
gerenciamento, disponibilidade de novas tecnologias ou outra necessidade de adequação que 
possa surgir, é necessário que o software de processo acomode as mudanças no software em 
desenvolvimento. 
E para que haja uma redução de custos do retrabalho de desenvolvimento do software, 
podem ser adotadas duas posturas no processo: a prevenção de mudanças e a tolerância a 
mudanças. A prevenção vai incluir atividades que sejam capazes de antecipar as mudanças 
possíveis sem que haja retrabalho, se trata da prototipação. Já a tolerância, faz com a que as 
mudanças sejam de baixo custo, assim havendo a necessidade, são “aplicadas em incrementos 
que ainda não foram desenvolvidos. Se isso for impossível, então apenas um incremento (uma 
pequena parte do sistema) deve ser alterado para incorporar as mudanças.” (SOMMERVILLE, 
2011, p.29), essa é a entrega incremental. 
 
2.3.1 Prototipação 
 
Um protótipo trata-se de uma versão inicial de um sistema de software. 
Segundo Sommerville, no desenvolvimento do software, a utilização do protótipo 
pode auxiliar na escolha de projeto, na demonstração de conceitos e na localização e solução 
de problemas. Ele pode ajudar na antecipação das mudanças, na interpretação e validação dos 
requisitos de sistema, no processo de engenharia de requisitos, e no estudo de soluções 
específicas no apoio do projeto de interface de usuário, no projeto de sistema. 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
Sommerville (2011, p.30) demonstra, na figura abaixo, um modelo de processo para o 
desenvolvimento de protótipos: 
 
 
Figura 1 - O processo de desenvolvimento de protótipo1 
 
Os protótipos podem apresentar problemas, como no caso em que o testador não seja 
um usuário típico do sistema, ou que o tempo de avaliação seja insuficiente. Cumpre ressaltar 
ainda que ocasionalmente, principalmente quando a entrega da versão final do software está em 
atraso, os gerentes pressionam os desenvolvedores a finalizarem protótipos descartáveis, o que 
é uma prática desaconselhável. 
 
2.3.2 Entrega incremental 
 
A entrega incremental trata-se da entrega e implantação de um incremento do software 
ao cliente, para o uso em ambiente operacional, de acordo com a sua ordem de prioridade. 
Sommerville (2011, p.31) demonstra o processo de entrega na seguinte imagem: 
 
 
Figura 2 - Entrega Incremental2 
 
Deste modo, com a conclusão e entrega do incremento ao cliente, essa parte da 
funcionalidade do sistema é colocada em uso, possibilitando a experimentação e compreensão 
da necessidade do usuário para incrementos posteriores, que serão entregues gradativamente e 
integrados aos já existentes. 
De acordo com Sommerville a entrega incremental possui uma série de vantagens, 
dentre elas: 
 
1 Fonte: SOMMERVILLE, Ian. Engenharia de Software. Tradução Ivan Bosnic e Kalinka G. de O. Gonçalves. 
9. ed. São Paulo: Prentice Hall, 2011, p.30. 
2 Fonte: SOMMERVILLE, Ian. Engenharia de Software. Tradução Ivan Bosnic e Kalinka G. de O. Gonçalves. 
9. ed. São Paulo: Prentice Hall, 2011, p.31. 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
1) A utilização de incrementos iniciais gera experiência, o que evita o processo de 
reaprendizagem quando o sistema completo for entregue; 
2) A possibilidade de falhas é menor uma vez que os serviços de maior prioridade 
são mais testados; 
3) Fica mais fácil a incorporação de mudanças no sistema; 
4) Os clientes podem obter ganhos com o sistema, antes mesmo da sua entrega 
completa; 
Além de vantagens, também existem problemas com a entrega incremental: 
1) A dificuldade em identificar os recursos comuns, necessários a todos os 
incrementos uma vez que os requisitos não são definidos em detalhes até a 
implementação de pelo menos um deles; 
2) A falta de feedbacks úteis dos usuários, uma vez que existe relutância em 
experimentar um novo sistema incompleto; 
3) Conflito com o modelo de compras, já que não é possível detalhar a 
especificação completa do sistema, até que o último incremento seja 
desenvolvido; 
 Cumpre destacar ainda que a entrega incremental não é recomendada em alguns casos, 
como em um grande sistema no qual haja equipes trabalhando em diferentes lugares; em 
sistemas embutidos, onde o desenvolvimento do software necessita do do desempenho do 
hardware; e, em alguns sistemas críticos que necessitem da análise de todos os requisitos para 
que não ocorra o comprometimento com a proteção ou segurança do sistema. 
 
2.3.3 Modelo espiral de BoehmAo contrário de uma sequência, Boehm propôs um modelo de desenvolvimento de 
software em espiral, com retornos de uma atividade para outra. Deste modo, cada espiral é uma 
fase do processo de software, e pode-se afirmar que esse modelo faz a combinação de tolerância 
a mudanças e prevenção uma vez que inclui atividades explícitas de gerenciamento de riscos. 
 
 
Figura 3 - Modelo em espiral de processo de software de Boehm3 
 
Segundo Sommerville, cada volta da espiral divide o desenvolvimento do software em 
setores: definição de objetivos; avaliação e redução de riscos; desenvolvimento e validação; 
 
3 Fonte: SOMMERVILLE, Ian. Engenharia de Software. Tradução Ivan Bosnic e Kalinka G. de O. Gonçalves. 
9. ed. São Paulo: Prentice Hall, 2011, p.33. 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
planejamento. E a principal diferença entre esse modelo de desenvolvimento e os outros é o 
reconhecimento explícito do risco, parte essencial no gerenciamento de projetos, pois é o que 
encaminha soluções de problemas e mudanças no processo. 
 
2.4 Rational Unified Process (RUP) 
 
A Rational é bem conhecida pelo seu investimento em orientação em objetos. A 
empresa foi a criadora da Unified Modeling Language (UML), assim como de várias 
ferramentas que a suportam, sendo a mais conhecida o Rational Rose. O Rational Unified 
Process (RUP) é uma metodologia completa criada pela Rational para viabilizar que grandes 
projetos de software sejam bem sucedidos. O RUP é na verdade um produto composto de 
material de referência na forma de páginas HTML, descrevendo toda a metodologia. 
 
Um grande problema nos projetos atuais é o grande dinamismo e complexidade dos 
negócios nos dias de hoje. Cada vez mais os sistemas são complexos e precisam estar prontos 
em menos tempo. Mais do que isso, as necessidades mudam ao longo do tempo e a 
especificação de um sistema provavelmente será alterada durante seu desenvolvimento. Além 
disso, temos tecnologias novas (software e hardware) surgindo a cada dia. Algumas funcionam 
bem. Outras não. Visando atacar estes problemas, o RUP adota as seguintes premissas básicas: 
Uso de iterações para evitar o impacto de mudanças no projeto, Gerenciamento de mudanças e 
Abordagens dos pontos de maior risco o mais cedo possível. 
Nesta metodologia, o projeto passa por 4 fases básicas. Estas fases são: 
● Concepção 
● Elaboração 
● Construção 
● Transição 
 
 
3 METODOLOGIA 
 
O método de pesquisa utilizado é o qualitativo, o qual houve a obtenção de dados 
descritivos que expressam as ideias desenvolvidas e apresentadas no artigo. Ademais, a 
metodologia utilizada foi a bibliográfica, através do estudo do livro Engenharia de Software, 
do autor Ian Sommerville, do ano de 2011, editora São Paulo. 
 
 
4 RESULTADOS E DISCUSSÃO 
 
Com o avanço da tecnologia e as mudanças no cenário econômico, social e tecnológico 
mundial, existe a necessidade de adequação dos softwares às necessidades específicas dos 
usuários. Assim, com o presente estudo e análise dos casos foi possível verificar que cada 
software possui requisitos diferentes, deste modo, a prática da engenharia de software depende 
do tipo de sistema que está sendo produzido. O método de planejamento e execução deve ser o 
mais eficiente para o seu desenvolvimento, considerando custo, prazo e confiança. 
 
 
5 CONCLUSÕES 
 
Com a presente pesquisa foi possível analisar alguns conceitos básicos referentes à 
engenharia de software. 
 
Trabalho Prático de Engenharia de Software l 
Curso de Sistemas de Informação – UEMG 
PASSOS 
 
Realizou-se uma abordagem sobre as atividades fundamentais a todos os processos de 
software: especificação, desenvolvimento, validação e evolução do software. 
Ademais verificou-se o desenvolvimento profissional do software, a ética na 
engenharia e os estudos de casos de sistemas. 
Foram analisados também modelos de processo de software, as atividades, bem como 
a adequação às mudanças ocorridas durante o processo de desenvolvimento. Sobre as mudanças 
necessárias no processo de desenvolvimento do software, verificou-se a prototipação, a entrega 
incremental e o modelo espiral de Boehm. Por sua vez, sobre a engenharia de requisitos, 
verificou-se o estudo de viabilidade, elicitação e análise, especificação e validação. 
Foi possível verificar a importância de se ter um bom planejamento no 
desenvolvimento de um software, a importância da confidencialidade e dos direitos de 
propriedade intelectual, bem como a responsabilidade de se analisar qual o melhor método que 
atenda ao usuário uma vez que a sociedade depende dos sistemas. 
 
 
REFERÊNCIAS BIBLIOGRÁFICAS 
 
SOMMERVILLE, Ian. Engenharia de Software. Tradução Ivan Bosnic e Kalinka G. de O. 
Gonçalves. 9. ed. São Paulo: Prentice Hall, 2011.

Outros materiais