·
Análise de Sistemas ·
Engenharia de Software
Envie sua pergunta para a IA e receba a resposta na hora

Prefere sua atividade resolvida por um tutor especialista?
- Receba resolvida até o seu prazo
- Converse com o tutor pelo chat
- Garantia de 7 dias contra erros
Recomendado para você
16
Modelos do Ciclo de Vida do Software - Unidade 2
Engenharia de Software
NEWTON PAIVA
16
Engenharia de Software: Projeto de Interface Homem-Máquina
Engenharia de Software
NEWTON PAIVA
19
Engenharia de Software: Requisitos e Modelagem - Unidade 3
Engenharia de Software
NEWTON PAIVA
3
Documento de Requisitos para Sistema de Rede Social Acadêmica
Engenharia de Software
UMG
5
Questionário Aula 04 - Banco de Dados
Engenharia de Software
UMESP
9
Prática de Criação e Manipulação de Banco de Dados com SQL
Engenharia de Software
UMESP
1
Atividade Semanal de Banco de Dados - Aula 5
Engenharia de Software
UMESP
52
Aula 10: Diagrama de Classes, Instâncias e Associações
Engenharia de Software
SENAC
10
Projeto de Engenharia de Software: Projetando para Mobilidade
Engenharia de Software
UNISINOS
232
Engenharia de Software - Unicesumar
Engenharia de Software
UNICESUMAR
Texto de pré-visualização
Engenharia de Software 1ª edição 2019 Autoria Parecerista Validador Juliana Padilha Sandra Gavioli Puga Paulo Lacerda Todos os gráficos tabelas e esquemas são creditados à autoria salvo quando indicada a referência Informamos que é de inteira responsabilidade da autoria a emissão de conceitos Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização A violação dos direitos autorais é crime estabelecido pela Lei nº 961098 e punido pelo artigo 184 do Código Penal 7 1 Unidade 1 1 Introdução à Engenharia de Software Para iniciar seus estudos Esta unidade apresenta uma introdução à engenharia de software e fornece uma base para a compreensão do restante da disciplina Assim trabalharemos os principais conceitos presentes na engenharia de software como O que é engenharia de software e qual a sua importância nos dias atuais O que é software e quais são os diferentes tipos de software existentes E por último uma breve descrição do que é ética na engenharia de software Objetivos de Aprendizagem Explicar os conceitos de software e softwares como produtos Diferenciar os tipos de software existentes na literatura Identificar e discutir a importância da engenharia de software Discutir as questões éticas e profissionais importantes para os engenheiros de softwares 8 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Introdução da unidade Nesta unidade apresentaremos conceitos que lhes permitirão entender o que é a engenharia de software qual a sua importância o conceito de software e os diferentes tipos de software existentes atualmente e também uma breve descrição do que é ética na engenharia de software 11 Software como produto O software pode ser considerado tanto um produto quanto um serviço Quando ele é considerado um serviço a tecnologia é ponte para a real necessidade do cliente Como exemplo temos o serviço de armazenamento na nuvem em que o software é um mero meio para o compartilhamento e armazenamento de dados do usuário Normalmente nessa forma de comercialização o software possui uma temporalidade associada a um custo mensal ou anual Em contrapartida o software como produto é por si só a materialidade da vontade do usuário Nesse caso temos como exemplo as ferramentas de produtividade Ex Microsoft Office sistemas operacionais Ex Windows Linux e aplicativos Ex Moodle Nos últimos anos devido à evolução das redes de computadores e ao barateamento dos recursos computacionais como também à necessidade de disponibilidade onipresente da Tecnologia da Informação TI observase uma tendência de comercialização de softwares como serviço1 111 Definindo o software De acordo com Pressman 2011 p11 software consiste em instruções programas de computador que quando executadas fornecem características funções e desempenho desejados estruturas de dados que possibilitam aos programas manipular informações adequadamente e informação descritiva tanto na forma impressa como na virtual descrevendo a operação e o uso dos programas Para Sommerville 2011 p4 softwares são programas de computador e documentação associada Produtos de software podem ser desenvolvidos para um cliente específico ou para o mercado em geral 12 Atributos de um software Conforme visto software não é apenas um programa ele inclui também toda a documentação produzida durante o seu desenvolvimento Existe um conjunto de atributos que são considerados essenciais para o desenvolvimento de softwares profissionais Atributos de software referese as características desejáveis que um software deve ter 1 Software como serviço também é conhecido pelo acrônimo SaaS Software as a Service 9 Engenharia de Software Unidade 1 Introdução à Engenharia de Software No entanto esses atributos dependem do tipo de software que está sendo desenvolvido Por exemplo um sistema bancário deve ser seguro um antivírus deve oferecer proteção contra vírus e assim por diante Esses atributos são sumarizados a seguir Sommerville 2011 Manutenibilidade o software deve ser escrito de forma que permita a evolução para atender às necessidades dos clientes Confiança e proteção um software deve ser confiável ou seja não causar prejuízos físicos ou econômicos no caso de falha do sistema Em termos de proteção o software deve garantir que usuários maliciosos não sejam capazes de acessar ou prejudicar o sistema Eficiência um software é eficiente quando ele responde rapidamente às ações dos usuários e não desperdiça recursos do sistema como memória e tempo de processamento Aceitabilidade este atributo referese a aceitação por parte do usuário ou seja o software deve ser desenvolvido de acordo com o tipo de usuário crianças adultos Por exemplo um software para crianças requer mais cores mais imagens e é mais fácil de interagir 13 Características do software O software possui características diferentes das encontradas em equipamentos físicos hardware A seguir apresentaremos as três características definidas por Pressman 2016 1 Software não é fabricado no sentido clássico O desenvolvimento de software e a fabricação de hardware possuem algumas similaridades como a alta qualidade é obtida por meio de um bom projeto ambas as atividades são dependentes de pessoas e requerem a construção de um produto Os custos de software concentramse no processo de engenharia portanto projetos de software não podem ser geridos como se fossem projetos de fabricação O processo de engenharia diferenciase do processo de fabricação pelo caráter inovador O processo de fabricação é repetitivo pois a produção entrega sempre os mesmos produtos O processo de engenharia é sempre inovador ou personalizado por exemplo para atender as necessidades dos clientes assim cada produto software produzido é único 2 Software não se desgasta Softwares não são suscetíveis aos mesmos problemas ambientais que desgastam os hardwares Quando um componente de hardware se desgasta ele é substituído por uma peça de reposição Para o software não existem peças de reposição Toda falha em um software indica erro de projeto ou implementação Portanto a tarefa de manutenção de software é mais complicada que a manutenção de hardware 3 Software sob encomenda A indústria de software tem caminhado cada vez mais para a construção de softwares com base em componentes porém a maioria dos softwares continua a ser construída de forma personalizada sob encomenda Um componente de software2 deve ser projetado e implementado para ser reutilizado em muitos programas diferentes São exemplos de componentes de software Java para interface RichFaces PrimeFaces OpenFaces e IceFaces 2 Para mais informações sobre componentes de software acesse o site httpsptwikipediaorgwiki Engenhariadesoftwarebaseadaemcomponentes 10 Engenharia de Software Unidade 1 Introdução à Engenharia de Software 14 Campos de aplicação de software Segundo Pressman 2016 atualmente existem sete grandes categorias de software que apresentamos a seguir 1 Software Básico Conjunto de programas feito para atender a outros programas como compiladores Ex GCC editores Ex Word WordPad e utilitários para gerenciamento de arquivos Ex Windows Explorer do Windows 2 Software de AplicaçãoComercial Tratase de programas sob medida que solucionam uma necessidade específica de negócio como facilitar operações comerciais ou tomadas de decisões administrativas técnicas Ex Portal de Compras este software foi desenvolvido para realizar licitações do estado de Minas Gerais 3 Software Científicode Engenharia Caracterizase por algoritmos number crusching algoritmos para processamento numérico pesado utilizados pela astronomia Ex Astro biologia molecular Ex Protean 3D e aerodinâmica Ex CASA Cálculo automático de sistemas aerodinâmicos 4 Software EmbutidoEmbarcado É um tipo de software que é residente em um produto ou sistema e utilizado para implementar e controlar características e funções para o usuário final e para o próprio sistema Este tipo de software executa funções limitadas e específicas por exemplo controle do painel do microondas ou fornece função significativa e capacidade de controle por exemplo computador de bordo de um carro 5 Software para Computadores Pessoais Projetado para prover capacidade específica de utilização por muitos clientes diferentes Focado em um mercado limitado e particularizado como processamento de texto Ex Word WordPad planilha eletrônica Ex Excel computação gráfica Ex Adobe Photoshop entretenimento Ex jogos Paciência e multimídia Ex RealPlayer e Windows Media Player 6 Aplicações para a Web É caracterizado por aplicações centralizadas em rede como aplicativos e softwares baseados em navegadores browsers Como por exemplo podemos citar os sites de ecommerce 7 Software de Inteligência Artificial Faz o uso de algoritmos para solucionar problemas complexos que não são passíveis de computação ou de análise direta como por exemplo robótica reconhecimento de padrões de imagem e de voz redes neurais artificiais provas de teoremas e jogos Como exempo deste tipo de software temos o programa ALICE Artificial Linguistic Internet Computer Entity ou Entidade Computadorizada de Linguagem Artificial para Internet3 Diversos engenheiros de software em todo mundo trabalham em projetos de software de uma ou mais dessas categorias Em alguns casos novos sistemas estão sendo construídos mas em muitos outros sistemas já existentes estão sendo corrigidos adaptados eou evoluídos 141 Software Legado Software legado é definido como software antigo ou seja que foi desenvolvido há muitos anos Esse tipo de software tem tido atenção desde os anos 1960 De acordo com DayaniFard et al 1999 apud Pressman 2016 p8 softwares legados foram desenvolvidos décadas atrás e têm sido continuamente modificados para se adequar a mudanças dos requisitos de negócio e a plataformas computacionais Empresas consideram que é dispendioso manter esses softwares e arriscado evoluílos DayaniFard et al apud Pressman 2016 p8 3 Para mais informações acesse o site httpsptwikipediaorgwikiALICE 11 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Já para Liu et 1998 apud Pressman 2016 p8 muitos sistemas legados permanecem dando suporte para funções de negócios vitais e são indispensáveis para o mesmo Concluise que um software legado é caracterizado por um tempo de vida longo e por ser crítico na área dos negócios Softwares legados são um desafio para a engenharia de software pois há projetos que não são expansíveis código intrincado de difícil compreensão documentação pobre ou inexistente entre outros Tudo isso caracteriza um software de baixa qualidade difícil de ser evoluído ou simplesmente de dar manutenção Diante dos pontos já expostos a engenharia de software recomenda que softwares legados só passem por evoluçãomanutenção se for vital para o seu funcionamento Sommerville 2011 Um exemplo de que não é interessante realizar manutenção desnecessária em softwares antigos é um fato ocorrido em 1999 o Bug do Milênio Este possível bug levou programadores do mundo inteiro a realizarem manutenção nos sistemas pois antigamente a data era salva no padrão de 2 dígitos como por exemplo 99 para economizar memória Acreditavase que se não alterassem a data para o padrão de 4 dígitos na virada do ano 2000 diversos sistemas deixariam de funcionar acarretando incontáveis erros O resultado foi um investimento financeiro alto para realizar essa manutenção mas no final das contas ocorreram poucas falhas decorrentes do bug do milênio Fique atento Para saber mais sobre software legado assista ao vídeo Você sabe o que é SOFTWARE LEGADO do Canal TI no Youtube E para mais informações sobre o bug do milênio assista ao vídeo A história do bug do milênio da TecMundo no Youtube Saiba mais 12 Engenharia de Software Unidade 1 Introdução à Engenharia de Software 142 Aplicações mobile e computação na nuvem Figura 1 Computação em nuvem cloud Fonte SHUTTERSTOCK 2018 A grande quantidade de dispositivos móveis criou um novo mercado de desenvolvimento de software com características próprias Este tipo de software que está em crescimento é geralmente designado apenas pelo termo app aplicativos Esses aplicativos são desenvolvidos para plataformas mobile como iOS Android ou Windows Mobile Atualmente existem mais dispositivos móveis do que computadores tradicionais Ex notebooks e computadores pessoais UOL 2017 Tais dispositivos trazem uma série de desafios e possibilidades para o desenvolvimento do software como limitações de recursos memória processamento bateria tamanho de telas e entrada de dados e também possuem recursos de hardware até então pouco comuns como bússola acelerômetro GPS dentre outros Leia no site da revista Exame a notícia Dispositivos móveis deverão ocupar o mercado do PC A computação em nuvem possui uma infraestrutura que permite a qualquer usuário independentemente do lugar em que está usar algum dispositivo smartphone notebook para visualizar modificar seus dados armazenados em um servidor online também conhecido como servidor na nuvem Por exemplo Dropbox e Office 365 A computação em nuvem é definida como a utilização da capacidade de memória armazenamento e processamento de servidores interligados pela internet Já Mobile referese execução de softwares aplicativos em dispositivos portáteis como smartphone e tablet Saiba mais 13 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Para saber mais sobre Computação na Nuvem assista ao vídeo Você sabe o que é Cloud Computing ou Computação na Nuvem da CanalTech no Youtube Saiba mais 143 Linhas de produtos de software A abordagem Linhas de Produtos de Software LPS ou Software Product Lines SPL é definida como o uso de técnicas de engenharia que permitem criar um grupo de softwares similares a partir de um conjunto de características comuns a todos esses sistemas Em resumo é um método que permite a aplicação da técnica de reúso de software reaproveitamento de código já desenvolvido e testado O desenvolvimento de softwares utilizando a técnica de LPS está cada vez mais crescente Como essa técnica permite agrupar componentes de software comuns e que já foram desenvolvidos prontos consequentemente teremos um desenvolvimento mais ágil de sistemas Vale ressaltar que para atender as necessidades dos usuários e o contínuo processo de automação dos meios produtivos os softwares têm se tornado cada vez maiores e complexos o que implicaria em um processo de desenvolvimento mais demorado se comparado com o uso da técnica LPS que utiliza o reúso de componentes já prontos Para mais informações leia o artigo Linha de Produtos de Software Conceitos e Ferramentas de Juliana Alves Pereira Eduardo Figueiredo e Heitor Augustus Costa disponível na Internet Saiba mais 15 Engenharia de software Engenharia de software é uma disciplina cujo o foco está em todos os aspectos da produção de software desde a especificação do sistema até a sua manutenção Para Bauer 1969 apud Pressman 2016 a engenharia de software é a criação e a utilização de sólidos princípios de engenharia a fim de obter softwares econômicos que sejam confiáveis e que trabalhem eficientemente em máquinas reais 14 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Já para IEEE 1999 apud Pressman 2016 a engenharia de software é a aplicação de uma abordagem sistemática disciplinada e quantificável para o desenvolvimento operação e manutenção do software isto é a aplicação de engenharia ao software A vantagem de se usar as técnicas de engenharia de software está em obter software com qualidade dentro do cronograma e dentro do orçamento planejado inicialmente A abordagem adotada para se obter software com qualidade é denominada processo de software que veremos mais detalhadamente na unidade 2 A base para engenharia de software é definida por Pressman 2016 como uma tecnologia em camadas conforme a figura 2 Esta figura apresenta quatro camadas i Foco na qualidade ii Processo iii Métodos iv Ferramentas Figura 2 Conceito de ética na engenharia de software Ferramentas Métodos Processo Foco na qualidade Fonte PRESSMAN MAXIM 2011 p 39 A base de sustentação da engenharia de software é o foco na qualidade por isso aparece como a base da figura que se assemelha a uma pirâmide Posteriormente temos a camada de processo responsável por definir uma metodologia que permitirá o desenvolvimento do software com qualidade e entrega dentro do prazo Portanto a camada de processo é a base para o controle do gerenciamento de projetos de software onde a qualidade é garantida e as mudanças evoluções eou manutenções do software são geridas de forma apropriada Em seguida temos a camada métodos estes fornecem as informações técnicas para desenvolver o software tais como comunicação análise de requisitos modelagem de projeto construção de programa testes e suporte 15 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Por último temos a camada ferramentas Estas fornecem suporte automatizado ou semiautomatizado para o processo e para os métodos Como por exemplo as ferramentas CASE Computer Aided Software Engineering 16 Ética na engenharia de software Figura 3 Conceito de ética na engenharia de software Fonte SHUTTERSTOCK 2018 Diversos profissionais como advogados e médicos possuem um código de ética ou seja regras que regulam a liberdade das pessoas que trabalham na área O mesmo ocorre com os profissionais de TI implicitamente os engenheiros de software O profissional de engenharia de software deve aceitar que seu trabalho envolve grandes responsabilidades além de simplesmente aplicar técnicas programar Nenhum profissional de TI deve usar seu conhecimento de forma ilegal ou que que atente contra a moralidade Existem áreas nas quais os padrões de comportamento não são ilegais mas são imorais Segundo Sommerville 2011 p9 são elas 1 Confidencialidade devese respeitar a confidencialidade das informações de seus empregados ou clientes independentemente de ter sido assinado um acordo formal de confidencialidade 16 Engenharia de Software Unidade 1 Introdução à Engenharia de Software 2 Competência não aceitar um trabalho acima do seu nível de competência 3 Direitos de propriedade intelectual devese ter conhecimento das leis do país a respeito da propriedade intelectual como patentes e copyright 4 Mau uso do computador não fazer mau uso de seus conhecimentos técnicos a outras pessoas como disseminar vírus ou outros malwares pela rede Leia o Código de Ética e de Prática Profissional da Engenharia de Software e o Código de Ética publicado pela Sociedade Brasileira de Computação SBC ambos disponíveis na Internet Saiba mais Síntese da unidade Nesta unidade você aprendeu sobre os conceitos fundamentais para o desenvolvimento da disciplina Engenharia de Software O que é software Qual a diferença de software de produto e software de serviço Quais as características que um software deve ter Quais os tipos de softwares existentes e quais estão sendo mais utilizados atualmente O que é software legado Qual a importância da engenharia de software Qual a importância da ética para os profissionais da tecnologia da informação no desenvolvimento de softwares 17 Considerações finais Esperamos que você tenha conseguido assimilar da melhor forma possível o conteúdo aqui apresentado Para ampliar o seu conhecimento consulte o aprofundamento de conteúdo e assista à videoaula da unidade pois contêm informações relevantes para seu aprendizado
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
16
Modelos do Ciclo de Vida do Software - Unidade 2
Engenharia de Software
NEWTON PAIVA
16
Engenharia de Software: Projeto de Interface Homem-Máquina
Engenharia de Software
NEWTON PAIVA
19
Engenharia de Software: Requisitos e Modelagem - Unidade 3
Engenharia de Software
NEWTON PAIVA
3
Documento de Requisitos para Sistema de Rede Social Acadêmica
Engenharia de Software
UMG
5
Questionário Aula 04 - Banco de Dados
Engenharia de Software
UMESP
9
Prática de Criação e Manipulação de Banco de Dados com SQL
Engenharia de Software
UMESP
1
Atividade Semanal de Banco de Dados - Aula 5
Engenharia de Software
UMESP
52
Aula 10: Diagrama de Classes, Instâncias e Associações
Engenharia de Software
SENAC
10
Projeto de Engenharia de Software: Projetando para Mobilidade
Engenharia de Software
UNISINOS
232
Engenharia de Software - Unicesumar
Engenharia de Software
UNICESUMAR
Texto de pré-visualização
Engenharia de Software 1ª edição 2019 Autoria Parecerista Validador Juliana Padilha Sandra Gavioli Puga Paulo Lacerda Todos os gráficos tabelas e esquemas são creditados à autoria salvo quando indicada a referência Informamos que é de inteira responsabilidade da autoria a emissão de conceitos Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização A violação dos direitos autorais é crime estabelecido pela Lei nº 961098 e punido pelo artigo 184 do Código Penal 7 1 Unidade 1 1 Introdução à Engenharia de Software Para iniciar seus estudos Esta unidade apresenta uma introdução à engenharia de software e fornece uma base para a compreensão do restante da disciplina Assim trabalharemos os principais conceitos presentes na engenharia de software como O que é engenharia de software e qual a sua importância nos dias atuais O que é software e quais são os diferentes tipos de software existentes E por último uma breve descrição do que é ética na engenharia de software Objetivos de Aprendizagem Explicar os conceitos de software e softwares como produtos Diferenciar os tipos de software existentes na literatura Identificar e discutir a importância da engenharia de software Discutir as questões éticas e profissionais importantes para os engenheiros de softwares 8 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Introdução da unidade Nesta unidade apresentaremos conceitos que lhes permitirão entender o que é a engenharia de software qual a sua importância o conceito de software e os diferentes tipos de software existentes atualmente e também uma breve descrição do que é ética na engenharia de software 11 Software como produto O software pode ser considerado tanto um produto quanto um serviço Quando ele é considerado um serviço a tecnologia é ponte para a real necessidade do cliente Como exemplo temos o serviço de armazenamento na nuvem em que o software é um mero meio para o compartilhamento e armazenamento de dados do usuário Normalmente nessa forma de comercialização o software possui uma temporalidade associada a um custo mensal ou anual Em contrapartida o software como produto é por si só a materialidade da vontade do usuário Nesse caso temos como exemplo as ferramentas de produtividade Ex Microsoft Office sistemas operacionais Ex Windows Linux e aplicativos Ex Moodle Nos últimos anos devido à evolução das redes de computadores e ao barateamento dos recursos computacionais como também à necessidade de disponibilidade onipresente da Tecnologia da Informação TI observase uma tendência de comercialização de softwares como serviço1 111 Definindo o software De acordo com Pressman 2011 p11 software consiste em instruções programas de computador que quando executadas fornecem características funções e desempenho desejados estruturas de dados que possibilitam aos programas manipular informações adequadamente e informação descritiva tanto na forma impressa como na virtual descrevendo a operação e o uso dos programas Para Sommerville 2011 p4 softwares são programas de computador e documentação associada Produtos de software podem ser desenvolvidos para um cliente específico ou para o mercado em geral 12 Atributos de um software Conforme visto software não é apenas um programa ele inclui também toda a documentação produzida durante o seu desenvolvimento Existe um conjunto de atributos que são considerados essenciais para o desenvolvimento de softwares profissionais Atributos de software referese as características desejáveis que um software deve ter 1 Software como serviço também é conhecido pelo acrônimo SaaS Software as a Service 9 Engenharia de Software Unidade 1 Introdução à Engenharia de Software No entanto esses atributos dependem do tipo de software que está sendo desenvolvido Por exemplo um sistema bancário deve ser seguro um antivírus deve oferecer proteção contra vírus e assim por diante Esses atributos são sumarizados a seguir Sommerville 2011 Manutenibilidade o software deve ser escrito de forma que permita a evolução para atender às necessidades dos clientes Confiança e proteção um software deve ser confiável ou seja não causar prejuízos físicos ou econômicos no caso de falha do sistema Em termos de proteção o software deve garantir que usuários maliciosos não sejam capazes de acessar ou prejudicar o sistema Eficiência um software é eficiente quando ele responde rapidamente às ações dos usuários e não desperdiça recursos do sistema como memória e tempo de processamento Aceitabilidade este atributo referese a aceitação por parte do usuário ou seja o software deve ser desenvolvido de acordo com o tipo de usuário crianças adultos Por exemplo um software para crianças requer mais cores mais imagens e é mais fácil de interagir 13 Características do software O software possui características diferentes das encontradas em equipamentos físicos hardware A seguir apresentaremos as três características definidas por Pressman 2016 1 Software não é fabricado no sentido clássico O desenvolvimento de software e a fabricação de hardware possuem algumas similaridades como a alta qualidade é obtida por meio de um bom projeto ambas as atividades são dependentes de pessoas e requerem a construção de um produto Os custos de software concentramse no processo de engenharia portanto projetos de software não podem ser geridos como se fossem projetos de fabricação O processo de engenharia diferenciase do processo de fabricação pelo caráter inovador O processo de fabricação é repetitivo pois a produção entrega sempre os mesmos produtos O processo de engenharia é sempre inovador ou personalizado por exemplo para atender as necessidades dos clientes assim cada produto software produzido é único 2 Software não se desgasta Softwares não são suscetíveis aos mesmos problemas ambientais que desgastam os hardwares Quando um componente de hardware se desgasta ele é substituído por uma peça de reposição Para o software não existem peças de reposição Toda falha em um software indica erro de projeto ou implementação Portanto a tarefa de manutenção de software é mais complicada que a manutenção de hardware 3 Software sob encomenda A indústria de software tem caminhado cada vez mais para a construção de softwares com base em componentes porém a maioria dos softwares continua a ser construída de forma personalizada sob encomenda Um componente de software2 deve ser projetado e implementado para ser reutilizado em muitos programas diferentes São exemplos de componentes de software Java para interface RichFaces PrimeFaces OpenFaces e IceFaces 2 Para mais informações sobre componentes de software acesse o site httpsptwikipediaorgwiki Engenhariadesoftwarebaseadaemcomponentes 10 Engenharia de Software Unidade 1 Introdução à Engenharia de Software 14 Campos de aplicação de software Segundo Pressman 2016 atualmente existem sete grandes categorias de software que apresentamos a seguir 1 Software Básico Conjunto de programas feito para atender a outros programas como compiladores Ex GCC editores Ex Word WordPad e utilitários para gerenciamento de arquivos Ex Windows Explorer do Windows 2 Software de AplicaçãoComercial Tratase de programas sob medida que solucionam uma necessidade específica de negócio como facilitar operações comerciais ou tomadas de decisões administrativas técnicas Ex Portal de Compras este software foi desenvolvido para realizar licitações do estado de Minas Gerais 3 Software Científicode Engenharia Caracterizase por algoritmos number crusching algoritmos para processamento numérico pesado utilizados pela astronomia Ex Astro biologia molecular Ex Protean 3D e aerodinâmica Ex CASA Cálculo automático de sistemas aerodinâmicos 4 Software EmbutidoEmbarcado É um tipo de software que é residente em um produto ou sistema e utilizado para implementar e controlar características e funções para o usuário final e para o próprio sistema Este tipo de software executa funções limitadas e específicas por exemplo controle do painel do microondas ou fornece função significativa e capacidade de controle por exemplo computador de bordo de um carro 5 Software para Computadores Pessoais Projetado para prover capacidade específica de utilização por muitos clientes diferentes Focado em um mercado limitado e particularizado como processamento de texto Ex Word WordPad planilha eletrônica Ex Excel computação gráfica Ex Adobe Photoshop entretenimento Ex jogos Paciência e multimídia Ex RealPlayer e Windows Media Player 6 Aplicações para a Web É caracterizado por aplicações centralizadas em rede como aplicativos e softwares baseados em navegadores browsers Como por exemplo podemos citar os sites de ecommerce 7 Software de Inteligência Artificial Faz o uso de algoritmos para solucionar problemas complexos que não são passíveis de computação ou de análise direta como por exemplo robótica reconhecimento de padrões de imagem e de voz redes neurais artificiais provas de teoremas e jogos Como exempo deste tipo de software temos o programa ALICE Artificial Linguistic Internet Computer Entity ou Entidade Computadorizada de Linguagem Artificial para Internet3 Diversos engenheiros de software em todo mundo trabalham em projetos de software de uma ou mais dessas categorias Em alguns casos novos sistemas estão sendo construídos mas em muitos outros sistemas já existentes estão sendo corrigidos adaptados eou evoluídos 141 Software Legado Software legado é definido como software antigo ou seja que foi desenvolvido há muitos anos Esse tipo de software tem tido atenção desde os anos 1960 De acordo com DayaniFard et al 1999 apud Pressman 2016 p8 softwares legados foram desenvolvidos décadas atrás e têm sido continuamente modificados para se adequar a mudanças dos requisitos de negócio e a plataformas computacionais Empresas consideram que é dispendioso manter esses softwares e arriscado evoluílos DayaniFard et al apud Pressman 2016 p8 3 Para mais informações acesse o site httpsptwikipediaorgwikiALICE 11 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Já para Liu et 1998 apud Pressman 2016 p8 muitos sistemas legados permanecem dando suporte para funções de negócios vitais e são indispensáveis para o mesmo Concluise que um software legado é caracterizado por um tempo de vida longo e por ser crítico na área dos negócios Softwares legados são um desafio para a engenharia de software pois há projetos que não são expansíveis código intrincado de difícil compreensão documentação pobre ou inexistente entre outros Tudo isso caracteriza um software de baixa qualidade difícil de ser evoluído ou simplesmente de dar manutenção Diante dos pontos já expostos a engenharia de software recomenda que softwares legados só passem por evoluçãomanutenção se for vital para o seu funcionamento Sommerville 2011 Um exemplo de que não é interessante realizar manutenção desnecessária em softwares antigos é um fato ocorrido em 1999 o Bug do Milênio Este possível bug levou programadores do mundo inteiro a realizarem manutenção nos sistemas pois antigamente a data era salva no padrão de 2 dígitos como por exemplo 99 para economizar memória Acreditavase que se não alterassem a data para o padrão de 4 dígitos na virada do ano 2000 diversos sistemas deixariam de funcionar acarretando incontáveis erros O resultado foi um investimento financeiro alto para realizar essa manutenção mas no final das contas ocorreram poucas falhas decorrentes do bug do milênio Fique atento Para saber mais sobre software legado assista ao vídeo Você sabe o que é SOFTWARE LEGADO do Canal TI no Youtube E para mais informações sobre o bug do milênio assista ao vídeo A história do bug do milênio da TecMundo no Youtube Saiba mais 12 Engenharia de Software Unidade 1 Introdução à Engenharia de Software 142 Aplicações mobile e computação na nuvem Figura 1 Computação em nuvem cloud Fonte SHUTTERSTOCK 2018 A grande quantidade de dispositivos móveis criou um novo mercado de desenvolvimento de software com características próprias Este tipo de software que está em crescimento é geralmente designado apenas pelo termo app aplicativos Esses aplicativos são desenvolvidos para plataformas mobile como iOS Android ou Windows Mobile Atualmente existem mais dispositivos móveis do que computadores tradicionais Ex notebooks e computadores pessoais UOL 2017 Tais dispositivos trazem uma série de desafios e possibilidades para o desenvolvimento do software como limitações de recursos memória processamento bateria tamanho de telas e entrada de dados e também possuem recursos de hardware até então pouco comuns como bússola acelerômetro GPS dentre outros Leia no site da revista Exame a notícia Dispositivos móveis deverão ocupar o mercado do PC A computação em nuvem possui uma infraestrutura que permite a qualquer usuário independentemente do lugar em que está usar algum dispositivo smartphone notebook para visualizar modificar seus dados armazenados em um servidor online também conhecido como servidor na nuvem Por exemplo Dropbox e Office 365 A computação em nuvem é definida como a utilização da capacidade de memória armazenamento e processamento de servidores interligados pela internet Já Mobile referese execução de softwares aplicativos em dispositivos portáteis como smartphone e tablet Saiba mais 13 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Para saber mais sobre Computação na Nuvem assista ao vídeo Você sabe o que é Cloud Computing ou Computação na Nuvem da CanalTech no Youtube Saiba mais 143 Linhas de produtos de software A abordagem Linhas de Produtos de Software LPS ou Software Product Lines SPL é definida como o uso de técnicas de engenharia que permitem criar um grupo de softwares similares a partir de um conjunto de características comuns a todos esses sistemas Em resumo é um método que permite a aplicação da técnica de reúso de software reaproveitamento de código já desenvolvido e testado O desenvolvimento de softwares utilizando a técnica de LPS está cada vez mais crescente Como essa técnica permite agrupar componentes de software comuns e que já foram desenvolvidos prontos consequentemente teremos um desenvolvimento mais ágil de sistemas Vale ressaltar que para atender as necessidades dos usuários e o contínuo processo de automação dos meios produtivos os softwares têm se tornado cada vez maiores e complexos o que implicaria em um processo de desenvolvimento mais demorado se comparado com o uso da técnica LPS que utiliza o reúso de componentes já prontos Para mais informações leia o artigo Linha de Produtos de Software Conceitos e Ferramentas de Juliana Alves Pereira Eduardo Figueiredo e Heitor Augustus Costa disponível na Internet Saiba mais 15 Engenharia de software Engenharia de software é uma disciplina cujo o foco está em todos os aspectos da produção de software desde a especificação do sistema até a sua manutenção Para Bauer 1969 apud Pressman 2016 a engenharia de software é a criação e a utilização de sólidos princípios de engenharia a fim de obter softwares econômicos que sejam confiáveis e que trabalhem eficientemente em máquinas reais 14 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Já para IEEE 1999 apud Pressman 2016 a engenharia de software é a aplicação de uma abordagem sistemática disciplinada e quantificável para o desenvolvimento operação e manutenção do software isto é a aplicação de engenharia ao software A vantagem de se usar as técnicas de engenharia de software está em obter software com qualidade dentro do cronograma e dentro do orçamento planejado inicialmente A abordagem adotada para se obter software com qualidade é denominada processo de software que veremos mais detalhadamente na unidade 2 A base para engenharia de software é definida por Pressman 2016 como uma tecnologia em camadas conforme a figura 2 Esta figura apresenta quatro camadas i Foco na qualidade ii Processo iii Métodos iv Ferramentas Figura 2 Conceito de ética na engenharia de software Ferramentas Métodos Processo Foco na qualidade Fonte PRESSMAN MAXIM 2011 p 39 A base de sustentação da engenharia de software é o foco na qualidade por isso aparece como a base da figura que se assemelha a uma pirâmide Posteriormente temos a camada de processo responsável por definir uma metodologia que permitirá o desenvolvimento do software com qualidade e entrega dentro do prazo Portanto a camada de processo é a base para o controle do gerenciamento de projetos de software onde a qualidade é garantida e as mudanças evoluções eou manutenções do software são geridas de forma apropriada Em seguida temos a camada métodos estes fornecem as informações técnicas para desenvolver o software tais como comunicação análise de requisitos modelagem de projeto construção de programa testes e suporte 15 Engenharia de Software Unidade 1 Introdução à Engenharia de Software Por último temos a camada ferramentas Estas fornecem suporte automatizado ou semiautomatizado para o processo e para os métodos Como por exemplo as ferramentas CASE Computer Aided Software Engineering 16 Ética na engenharia de software Figura 3 Conceito de ética na engenharia de software Fonte SHUTTERSTOCK 2018 Diversos profissionais como advogados e médicos possuem um código de ética ou seja regras que regulam a liberdade das pessoas que trabalham na área O mesmo ocorre com os profissionais de TI implicitamente os engenheiros de software O profissional de engenharia de software deve aceitar que seu trabalho envolve grandes responsabilidades além de simplesmente aplicar técnicas programar Nenhum profissional de TI deve usar seu conhecimento de forma ilegal ou que que atente contra a moralidade Existem áreas nas quais os padrões de comportamento não são ilegais mas são imorais Segundo Sommerville 2011 p9 são elas 1 Confidencialidade devese respeitar a confidencialidade das informações de seus empregados ou clientes independentemente de ter sido assinado um acordo formal de confidencialidade 16 Engenharia de Software Unidade 1 Introdução à Engenharia de Software 2 Competência não aceitar um trabalho acima do seu nível de competência 3 Direitos de propriedade intelectual devese ter conhecimento das leis do país a respeito da propriedade intelectual como patentes e copyright 4 Mau uso do computador não fazer mau uso de seus conhecimentos técnicos a outras pessoas como disseminar vírus ou outros malwares pela rede Leia o Código de Ética e de Prática Profissional da Engenharia de Software e o Código de Ética publicado pela Sociedade Brasileira de Computação SBC ambos disponíveis na Internet Saiba mais Síntese da unidade Nesta unidade você aprendeu sobre os conceitos fundamentais para o desenvolvimento da disciplina Engenharia de Software O que é software Qual a diferença de software de produto e software de serviço Quais as características que um software deve ter Quais os tipos de softwares existentes e quais estão sendo mais utilizados atualmente O que é software legado Qual a importância da engenharia de software Qual a importância da ética para os profissionais da tecnologia da informação no desenvolvimento de softwares 17 Considerações finais Esperamos que você tenha conseguido assimilar da melhor forma possível o conteúdo aqui apresentado Para ampliar o seu conhecimento consulte o aprofundamento de conteúdo e assista à videoaula da unidade pois contêm informações relevantes para seu aprendizado