Buscar

ES1-Cap1-Fundamentos da Engenharia de Software,r5 (9p) (1)

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 9 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 9 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 9 páginas

Prévia do material em texto

Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 1 
 ENGENHARIA DE SOFTWARE I 
 
CAPÍTULO 1 – FUNDAMENTOS DA ENGENHARIA DE SOFTWARE, r5 
 
Sumário 
1.1 Conceitos e objetivos da engenharia de software 
1.2 O produto software 
1.2.1 Características do software 
1.3 O que diferencia um software do outro? 
1.4 Aplicações do software 
1.4.1 Cloud Computing (Computação em Nuvem) 
1.5 Quais são os principais desafios enfrentados pela engenharia de software? 
1.5.1 Uma perspectiva industrial 
 
 
1.1 CONCEITOS E OBJETIVOS DA ENGENHARIA DE SOFTWARE 
O desenvolvimento de um sistema computacional seja ele voltado para negócios, web, 
aplicação cientifica, automação industrial e outras aplicações, inicia pelo software. O 
software é quem atende a necessidade (ou resolve um problema) de cálculo, da 
automação de um trabalho manufaturado ou do negócio empresarial. Só após 
dimensionar o tamanho, a complexidade e as exigências de processamento é que será 
possível dimensionar e especificar a infraestrutura do sistema computacional que 
suportará este software. 
A Engenharia de Software projeta e constrói o produto software de computador. 
Abrange programas que executam em computadores de qualquer tamanho e arquitetura, 
processamento de dados e informações que incluem formas impressas e virtuais, 
combinam caracteres dos mais variados tipos, incluindo representações de informação no 
formato de imagens, vídeos e áudios. 
 
O custo do software está concentrado no trabalho de engenharia, que por sua vez, 
contempla os seguintes itens: 
 Especificação, documentação e procedimentos; 
 Análise, projeto, codificação, implementação, testes, diagnósticos e implantação; 
 Suporte ao cliente/usuário. 
 
O software continua sendo construído por encomenda. À medida que uma 
disciplina de engenharia evolui, novos componentes são criados. No mundo do software, 
tais componentes ainda estão sendo aprimorados e estão apenas começando a ser 
produzidos em ampla escala. 
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 2 
Os componentes do software devem ser produzidos de modo que possam ser 
reusados, ou seja, que possam ser adaptados a novas plataformas e ambientes 
operacionais. O reuso de um componente é uma atividade natural no processo de 
engenharia. 
A reusabilidade do software é uma métrica de qualidade usada para avaliar o quanto 
um programa ou parte dele pode ser usada em outras aplicações. 
 
 
 
1.2 O PRODUTO SOFTWARE 
Nos últimos sessenta anos o produto software tem sido responsável por grandes 
avanços da humanidade. 
O uso inteligente da informação e ideias inovadoras passam a ser prioridades para o 
crescimento das empresas. As empresas na era informação concorrem em um mercado 
complexo, que muda muito rápido, globalizado, supercompetitivo e voltado para o cliente. 
Software e hardware estão em franca evolução e apesar de possuírem princípios 
independentes, esta dualidade permite criar sistemas cada vez mais sofisticados a baixo 
custo. 
 
O software possui um duplo papel na produção, não só pode constituir um 
produto, como também pode ser o veículo de melhora de um produto. 
Exemplo: 
 Como produto de software - podemos citar toda a linha de software e que 
normalmente são comercializados, tais como software de sistema e de aplicação. 
Um exemplo simples seria o produto Word da Microsoft. 
 Como veículo de melhora dos produtos: 
o software – podemos citar o software “Globalink”, um tradutor de línguas que 
ao instalar pode ser inserida como uma função de chamada no Word, bem 
como pode ser usado isoladamente como um produto completo.; e 
o industrial – quando o software esta associado a um hardware específico de 
uma máquina que pode assim ser automatizada. 
 
 
 
1.2.1 Características do software 
 
O software é desenvolvido ou passa por um processo de engenharia, não é 
manufaturado. Os problemas de qualidade do hardware podem ser corrigidos pela 
manufatura, o que não ocorre com o software. 
 
O software não “se desgasta”, mas "se deteriora"! O software não é suscetível aos 
males ambientais, que causam desgaste do hardware, mas sim devido às mudanças que 
ocorrem no ciclo de vida do software (PRESSMAN, 2011). 
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 3 
 
Durante o ciclo de vida o software passará por modificações (manutenção e/ou 
mudanças). Essas modificações causam a deterioração do software. E à medida que as 
modificações são feitas, é provável que novos defeitos sejam introduzidos, causando 
dente na curva de taxa de falhas, como é mostrado no gráfico da direita da Figura. 
 
Figura: Gráficos comparativos da curva de falhas do hardware em relação a curvas de 
falhas do software. 
Fonte: PRESSMAN (2011). 
 
 
 
Devido às mudanças causadas no software, no acompanhamento de sua evolução 
são registradas versões e releases. As versões são registros do software feitos sobre as 
mudanças que ocorrem na adaptação do software em relação às necessidades do cliente, 
adaptação a novos ambientes operacionais, correções de falhas ou quando o software 
está em desenvolvimento. O release (lançamento) é o registro da versão que é liberada 
para o usuário. 
 
 
Quando o software se “deteriora” em um sistema baseado em computador passa a 
ter falhas, que normalmente são relatadas pelos usuários. 
São relatados: Ocorrência de erros, travamentos e queda do desempenho 
provocado por uma demanda alta de processamento. 
 
E à medida que são feitas as mudanças no software, muitos dos códigos fontes são 
abandonados, são criados códigos fontes e campos de dados redundantes e por outro lado 
outros códigos fontes e dados deixam de ser acessados pelo sistema, quando ainda são 
necessários para o bom funcionamento do software. 
 
 
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 4 
Após várias mudanças causadas no software, o software deve ser reestruturado. 
Reestruturar o software significa: 
 Fazer limpeza dos dados; 
 Fazer limpeza dos códigos redundantes; 
 Atualizar hardware; 
 Atualizar com novas versões o sistema operacional e as linguagens de 
programação; 
 Gerar novos algoritmos; 
 Adaptar de forma correta as antigas e novas funcionalidades com base em uma 
nova arquitetura. 
 
 
 
 
 
 
 
 
 
1.3 O QUE DIFERENCIA UM SOFTWARE DO OUTRO? 
Para responder esta questão é necessário avaliar cinco características essenciais 
referentes à capacidade e usabilidade do software: captação de dados, processamento 
dos dados, forma de apresentação da informação, segurança e desempenho. 
1 - Captação de dados – a interface de entrada de dados pode se apresentar de 
diversas formas, das quais: entradas editadas, digitalizadas, entradas por 
terminais, dispositivos biométricos, sensores a laser, óticos, sonoros, luminosos, 
magnéticos e vários outros. Quanto à interface de entrada operacional humana, 
normalmente os dados captados possuem um formato simples. Diferente da 
captação de dados por dispositivos que tem como objetivo captar um volume de 
dados maior com resolução de varredura boa do ambiente. O formato de entrada 
dos dados a serem processados variam em confiabilidade, acurácia e quantidade. 
2 - Processamento dos dados – os dados a serem processados variam em seu 
formato de entrada. O software deverá isolar em campos os dados captados. Cada 
campo de dados é captado em um formato binário e identificado por meio de 
caracteres de controle, tamanho do pacote de dados, ciclos de tempos 
especificados na entrada de dados ou a combinação destes. A partir deste ponto os 
algoritmos contidos no software resultam em novos dados ou informações, que 
permitem estruturar os resultados destas operações de processamento. A acurácia 
e eficiência de execução destes algoritmosdeterminam o nível de qualidade do 
software. 
CASO: Na deterioração do software os usuários reclamam muito, como por exemplo: 
“Isto está lento”.; “Sumiu meu registro”; “Tinha um relatório aqui”; “Este campo está 
vazio, deveria ter a informação ...”. 
Nesta situação o volume de chamadas aos desenvolvedores e equipes de 
manutenção aumenta. Para corrigir de vez este problema e retomar um ciclo novo de 
vida do software, é necessário reestruturar o software. 
 
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 5 
3 - Apresentação da informação – dependendo da qualidade exigida do cliente e 
do usuário, a apresentação da informação pode ser por meio de textos, relatórios, 
diagramas, modelos gráficos, imagens em alta definição e cores ou ativação de 
dispositivos. A resposta do software é o que interessa ao cliente ou usuário. As 
principais características que se destacam são: adequação das funções do 
software às necessidades do cliente ou usuário, eficácia para atingir objetivos 
específicos, manutenabilidade para adaptar mudanças na configuração do software 
ou adaptações de novos recursos, usabilidade que permite melhor compreensão, 
aprendizado e satisfação de uso e, a utilização que mede o esforço necessário 
para aprender, operar, preparar entradas e interpretar as saídas. 
4 - Segurança – no produto software são estabelecidas medidas de segurança e a 
avaliação de níveis aceitáveis de riscos e danos para às pessoas, para os 
negócios, para a propriedade, para o ambiente, para proteger informações e dados 
de forma que pessoas ou sistemas não autorizados não possam lê-los nem 
modificá-los e que não seja negado o acesso às pessoas ou sistemas autorizados. 
5 - Desempenho – o sistema computacional deve garantir a integridade de todos os 
seus recursos com boa eficiência, para dar apoio às características já citadas. O 
software deve oferecer respostas rápidas às funções e apresentações da 
informação, busca de dados em redes de computadores com taxas de 
transferência equivalentes ou até mesmo superiores em relação ao volume de 
dados e ainda, ser expansível para aceitar novas extensões ao sistema. 
 
 
1.4 APLICAÇÕES DO SOFTWARE 
O conteúdo de informação e a determinância são fatores importantes na 
determinação da natureza de um aplicativo. Por exemplo, muitas aplicações comerciais 
fazem uso de dados de entrada altamente estruturados (um banco de dados) e produzem 
“relatórios” formatados. 
As seguintes áreas de software indicam a amplitude das aplicações: 
 Software Aplicativo para microcomputadores. Processamento de textos, 
planilhas eletrônicas, computação gráfica, diversões, gerenciamento de banco de 
dados, etc. De fato, o software de computador pessoal continua a representar os 
mais inovadores projetos de interfaces com seres humanos de toda a indústria de 
software. 
 
 Software Básico – É uma coleção de programas escritos para dar apoio a outros 
programas, normalmente possui uma forte interação com o hardware e são utilizados 
como processadores de telecomunicação, componentes do sistema operacional, 
compiladores, computadores com intenso uso de múltiplos usuários, operações 
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 6 
concorrentes que exigem escalonamento (schedule), compartilhamento de recursos, 
estrutura de dados complexas e múltiplas interfaces. 
Cada programa responsável por controlar um hardware específico ou uma parte 
deste, é chamado de driver. Um conjunto de drivers organizados para o controle de 
uma determinada interface, um computador ou uma máquina é chamado de firmware. 
Na categoria de firmware temos também o software embarcado, sendo que, este 
tipo de software pode ser chamado também de software embutido (embedded 
software) quando residente em memória ROM, em máquinas ou dispositivos 
computadorizados. Este firmware é escrito em código de máquina (ASSEMBLER), que 
é ativado antes mesmo de qualquer sistema operacional. 
 
 Software de Tempo Real. É um software que monitora/analisa/controla eventos do 
mundo real, exige um controle/saída que responde ao ambiente externo e um 
componente de monitoração que coordena todos os demais componentes de forma 
a obter resposta em tempo real (que, tipicamente, varia de 1 milisegundo até 1 
minuto) possa ser mantida. O termo “tempo-real” difere do “interativo” ou “time-
sharing” que podem exceder o tempo de resposta sem resultados desastrosos. 
Um exemplo de software de tempo real é a IoT – Internet of Things (Internet 
das coisas) que se refere à interconexão digital de objetos do cotidiano. 
 
 Software Científico e de Engenharia. “É caracterizado por algoritmos de 
processamento de números. As aplicações variam da astronomia a vulcanologia, da 
análise de fadiga de mecânica à dinâmica orbital de naves espaciais, e da biologia 
molecular à manufatura automatizada” (PRESSMAN, 2011). 
A realidade aumentada faz parte da categoria de software científico e de 
engenharia. 
 
 Software Empresarial. É o de maior área de aplicação. Distintos “sistemas de 
informação” que processam folhas de pagamentos, contas a pagar e a receber, 
estoques, etc. 
Os tipos mais comuns de sistemas de informação estão na categoria do e-
business (negócios eletrônicos). São eles: 
o ERP (Enterprise Resource Planning) – Planejamento dos Recursos 
Empresariais; 
o CRM (Customer Relationship Manager) – Gerenciamento das Relações com 
o Cliente; e 
o SCM (Supply Chain Management) – Gerenciamento da Cadeia de 
Suprimentos. 
Outras tecnologias em destaque nesta área de software são: o Big Data, que 
trata grandes volumes de dados e o BI (Business Intelligence) é um avançado 
sistema integrado de gestão. 
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 7 
 Software para Web. As páginas da Web recuperadas por um browser constituem 
software que incorpora instruções executáveis (p. ex., CGI, HTML, Pearl ou Java) e 
dados (p. ex., hipertexto e uma variedade de formatos visuais e de áudio). 
Com estes recursos tecnológicos surgem os sistemas e aplicações baseada na 
Web, às WebApps, que são pequenas aplicações embarcadas na internet. 
Nesta categoria estão também o Comércio Eletrônico (e-commerce), 
categorizado pelas tecnologias: B2B (business to business), B2C (business to 
consumer) e C2C (consumer to consumer). E a tecnologia Cloud Computing 
(Computação em Nuvem). 
 
 Software de Inteligência Artificial (Artificial Inteligency – AI) – “Faz uso de 
algoritmos não numéricos para resolver problemas complexos que não sejam 
favoráveis à computação ou à análise direta” (PRESSMAN, 2011). 
“Atualmente, a área de AI mais ativa é a dos Sistemas Especialistas, também 
chamados sistemas baseados em conhecimento” (REZENDE, 2005). 
As aplicações mais comuns estão no reconhecimento de padrões de imagem e 
voz, entretenimento, carros autônomos, Internet das Coisas, demonstração de 
teoremas, determinadas funções do Big Data e do Business Intelligence. 
 
1.4.1 Cloud Computing (Computação em Nuvem) 
A computação em nuvem se baseia no armazenamento de arquivos e processamento 
de aplicações interligadas pela internet, sem a necessidade de instalação de programas 
específicos. Estes serviços podem ser acessados de qualquer computador, com o uso 
remoto de um browser (navegador da internet), independente do sistema operacional. O 
usuário pode criar seus serviços e acessar suas informações de qualquer local do mundo, 
desde que esteja conectado a internet. As figuras abaixo apresenta modelos de redes 
públicas para Computação em nuvem (Cloud Computing). 
 
 Google Drive 
 
 
 Outlook Drive 
 
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 8 
Modelo de rede privada para Computação em nuvem (CloudComputing). 
 
 
 
 
 
1.5 QUAIS SÃO OS PRINCIPAIS DESAFIOS ENFRENTADOS PELA ENGENHARIA DE 
SOFTWARE? 
Nos primórdios da era do computador, os sistemas baseados em computador eram 
desenvolvidos pela administração orientada ao hardware. Hoje, a distribuição dos custos 
para o desenvolvimento baseados em computador mudou drasticamente para o software. 
 
 
1.5.1 Uma perspectiva industrial 
Nestas duas décadas, os gerentes e muitos profissionais técnicos formulam as seguintes 
questões: 
 Por que demora tanto tempo para que os programas sejam concluídos? 
 Por que os custos são tão elevados? 
 Por que não descobrimos todos os erros antes de entregarmos o software aos 
nossos clientes? 
 Porque temos dificuldade em medir o progresso enquanto o software está sendo 
desenvolvido? 
 
Essas e muitas outras perguntas manifestam a preocupação relativa ao software e à 
maneira pela qual ele é desenvolvido, o que leva a prática da engenharia de software. 
 
Prof. Ms. Eng. Edson Quedas Moreno – Engenharia de Software PROIBIDA A REPRODUÇÃO 9 
 
Sommervillle em 2005 descreve. “atualmente a engenharia de software enfrenta três 
principais desafios”: 
 
1 - O desafio do legado: 
Atualmente uma grande parte dos sistemas de software em utilização foi desenvolvida, 
em uma época em que as linguagens não eram orientadas a objetos, mas esses sistemas 
ainda operam importantes funções corporativas e controlam grandes quantidades de 
eventos em uma grande massa de dados. O desafio do legado é fazer a manutenção e 
atualização destes sistemas a custos baixos, com qualidade e prosseguir com a 
prestação de serviços corporativos. 
 
2 - O desafio da heterogeneidade: 
Exige-se cada vez mais que os sistemas operem como sistemas distribuídos atuando 
por meio de redes que possuam diferentes tipos de arquiteturas de computadores e 
diferentes tipos de sistemas operacionais. O desafio da heterogeneidade é desenvolver 
técnicas para construir sistemas confiáveis e flexíveis o bastante para lidar com 
essa heterogeneidade. 
 
3 - O desafio do fornecimento: 
Muitas técnicas de engenharia de software tradicionais são muito demoradas. Nos 
dias atuais existe uma demanda enorme de sistemas para que sejam desenvolvidos no 
menor tempo possível e com facilidade de adaptação as mudanças. O desafio do 
fornecimento é fornecer sistemas grandes e complexos, com a qualidade desejada 
e em curto espaço de tempo. 
 
 
BIBLIOGRAFIA 
[PMB10] PMBOK, Project Management Body of Knowledge. Um guia do conhecimento em 
gerenciamento de projetos (Guia PMBOK). – 4
a
 ed. Atlanta, USA: Project Management 
Institute, Inc. 2010. 
[PMB00] PMBOK, Project Management Institute. Project Management Body of Knowledge. Pennsylvania, 
USA: PMBOK Guide. 2000. 
[PRE11] PRESSMAN, Ph.D. Roger S. Engenharia de Software. – 7.ed. Rio de Janeiro: McGraw-Hill, 2011. 
[PRE07] PRESSMAN, Ph.D. Roger S. Engenharia de Software. – 6.ed. Rio de Janeiro: McGraw-Hill, 2007. 
[PRE02] PRESSMAN, Ph.D. Roger S. Engenharia de Software. – 5.ed. Rio de Janeiro: McGraw-Hill, 2002. 
[SOM05] SOMMERVILLE, Ian. Engenharia de software. São Paulo: Pearson Addison Wesley, 2005. 
[STA06] STAIR, Ralph M.; REYNOLDS, George W. Princípios de Sistemas de Informação: uma 
abordagem gerencial – 6
a
 ed. São Paulo: Pioneira – Thomson Learning, 2006.

Continue navegando