Buscar

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 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

Engenharia de Software:
Introdução:
A Engenharia de Software tem sua origem na chamada “crise do software”, uma vez que essa disciplina busca orientar os programadores no planejamento e na condução do processo de desenvolvimento de software.
Essa expressão “crise do software” foi usada pela primeira vez com impacto por Dykstra, em 1971. Esse estudioso avaliou que, considerando o rápido processo do hardware e das demandas por sistemas cada vez mais complexos, os desenvolvedores simplesmente estavam se perdendo no processo de produção. Por isso, precisavam criar uma metodologia de trabalho que resultou no desenvolvimento da engenharia de software.
Os problemas relatados por Dykstra era os seguintes:
Projetos que estouram o cronograma.
Projetos que estouram o orçamento.
Produto final de baixa qualidade ou que não atenda aos requisitos.
Produtos não gerenciáveis e difíceis de manter e evoluir.
Embora a engenharia de software tenha evoluído como ciência, sua aplicação na prática ainda é muito restrita, especialmente em empresas de pequeno porte e empresas novas.
Mesmo após 40 anos, ainda são comuns as queixas relatadas por Dykstra, sobretudo, na alta administração da empresas em relação ao setor de informática quanto ao prazos não cumpridos, custos ainda elevados, sistemas em uso que demanda manutenção e também ao fato de que é difícil recrutar profissionais qualificados.
Acrescente a isso, que os usuário também estão insatisfeitos: encontram erros e falhas inadmissíveis nos sistemas entregues, sente-se inseguros em usar tais sistemas, reclamam de constante necessidade de manutenção e do alto custo.
Por outro lado, os desenvolvedores não estão mais satisfeitos: sentem que sua produtividade é baixa em relação ao seu potencial, lamentam a falta de qualidade no produto gerado por seu trabalho, sofrem pressão para cumprir prazos e orçamentos apertados, e ficam inseguros diante das constante mudanças tecnológicas que afetam sua qualificação em relação ao mercado.
Booch (1994) afirmava que “We often call this condition ‘the software crisis’, but frankly, a malady that has carried on this long must be called ‘normal’”. Pode-se concluir que essa crise continuará enquanto os desenvolvedores continuarem a utilizar produtos artesanais e não capitalizar erros e acertos.
Porém, adoção de processo efetivamente industriais para a produção de software poderá fazer essa área desenvolver-se mais rapidamente, com mais qualidade e, finalmente, sair dessa dificuldade crônica que não pode ser mais chamada de crise.
Os eternos mitos:
São bastante conhecidos os mitos do software, identificados por Pressman (2005). Ele classificou os mitos em três grupos:
1˚-Mitos Administrativos:
A existência de um manual de procedimentos e padrões é suficiente para produzir com qualidade.
A empresa deve produzir com qualidade, pois tem ferramentas e computadores de última geração.
Se o projeto estiver atrasado é possível adicionar mais programadores para cumprir o cronograma.
Um bom gerente pode gerenciar qualquer projeto.
2˚ - Mitos relacionados ao cliente:
Uma declaração geral de objetivos é suficiente para iniciar a fase de programação.
Os requisitos mudam com frequência, mas sempre é possível acomodá-los, pois o software é flexível.
O cliente sabe do que precisa.
3˚-Mitos relacionados ao programadores:
Assim que o programa for colocado em operação, finaliza o trabalho.
Enquanto o programa não estiver funcionando, não será possível avaliar sua qualidade.
Se esquecer alguma coisa, poderá se retificado depois.
A única entrega importante em um projeto de software é o software funcionando.
Leveson (1995) também apresenta um conjunto de mitos correntes, a maioria relacionada à confiabilidade do software:
O teste do software ou sua verificação formal pode remover todos os erros.
Aumentar a confiabilidade do software aumenta a segurança.
O reuso do software aumenta a segurança.
Porém, de nada adianta estar consciente dos mitos, se desenvolvedor para produzir software com mais qualidade e confiabilidade não utilizar um série de conceitos e práticas desenvolvidos pela Engenharia de software.
Definições de Engenharia de Software:
“Engenharia de Software é um profissão dedicada a projetar, implementar e modificar software, de forma que ele seja de alta qualidade, a um custo razoável, manutenível e rápido de construir” (Laplante, 2007).
“Engenharia de Software é a aplicação de abordagens sistemáticas, disciplinadas e quantificadas ao desenvolvimento, operação e manutenção de software, além do estudo dessas abordagens.” (IEEE Computer Society, 2004).
Engenheiro de Software:
O engenheiro de software não é um desenvolvedor que trabalha nas atividades de análise e produção de código. Seu trabalho assemelha-se ao engenheiro de produção, pois ele deve fornecer aos desenvolvedores as ferramentas e os processos que deverão ser usados e verificar se esse uso está sendo feito efetivamente e de forma otimizada. Além disso, caso tais ferramentas e processos apresentem qualquer problema, ele será o responsável por realizar as modificações necessárias, garantido assim a sua contínua melhoria.
Em suma, o engenheiro de software, portanto, não desenvolve nem especifica software. Ele viabiliza e acompanha o processo de produção, fornecendo e avaliando as ferramentas e técnicas adequadas a cada projeto ou empresa.
Tipo de software do Ponto de vista da engenharia:
Software básico: são compiladores, drivers e componentes do sistema operacional.
Software de tempo real: são os sistemas que monitoram, analisam e controlam eventos do mundo real.
Software comercial: são os sistemas aplicados nas empresas, como controle de estoques, vendas, etc.
Software pessoal: são sistemas usados por pessoas no dia a dia, como processadores de texto, planilhas, etc.
Software embutidos ou embargado: são os sistemas de software presentes em celulares, eletrodomésticos, automóveis, etc.
Software científico ou de engenharia: são os sistemas que utilizam imenso processamento de números.
Jogos.
Inteligência artificial: são os sistemas especialistas, redes neurais e sistemas capazes de alguma forma de aprendizado. Além de serem sistemas independentes, com tipo de processo de construção próprio, podem ser embutidos em outros sistemas.
Princípios da Engenharia de Software:
Decomposição;
Abstração;
Generalização;
Padronização;
Flexibilização;
Formalidade;
Rastreabilidade;
Desenvolvimento iterativo;
Gerenciamento de requisitos;
Arquiteturas baseadas em componentes;
Modelagem visual;
Controle de mudanças;
Gerenciamento de Risco.

Outros materiais