Buscar

ENGENHARIA DE SOFTWARE - AULA 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 11 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 11 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 11 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

AULA 1 
 
 
 
 
 
 
 
 
 
ENGENHARIA DE SOFTWARE 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Prof. Emerson Antonio Klisiewicz 
 
 
 
 
 
02 
CONVERSA INICIAL 
 Nessa aula 1, estudaremos sobre os modelos clássicos de 
desenvolvimento de sistemas e a introdução à Engenharia de Software. 
CONTEXTUALIZANDO 
O que são softwares? 
 “Software”, segundo o Dicionário Michaelis, consiste em “qualquer 
programa ou grupo de programas que instrui o hardware sobre a maneira como 
ele deve executar uma tarefa, inclusive sistemas operacionais, processadores de 
texto e programas de aplicação.” (Software, 2017). 
O que são Sistemas? 
 Observe as frases: 
 O sistema telefônico no Brasil foi implantado em 1877. 
 O sistema de coleta de lixo funciona bem. 
 O sistema de avaliação é rigoroso para os professores. 
 O sistema circulatório de Tadeu está comprometido. 
 O sistema de vendas em seu relatório mostrou uma desaceleração no 
mercado. 
 Considerando as afirmações acima, podemos definir que os sistemas têm 
sempre o seu objetivo, logo, o objetivo declarado de um sistema é, a priori, a razão 
de sua existência. 
 Hoje, qualquer país, seja desenvolvido ou não, depende de softwares. 
Precisamos, portanto, desenvolver sistemas confiáveis, com um desenvolvimento 
que se dê de forma econômica e em um curto espaço de tempo. 
 Aí fica uma pergunta: “Existe uma diferença entre ser um artista e um 
engenheiro”? 
TEMA 1 – SOFTWARES 
 Instruções: quando executadas, produzem a função e o desempenho 
desejados. 
 
 
03 
 Estruturas de dados: possibilitam que os programas manipulem 
adequadamente a informação. 
 Documentos: descrevem a operação e o uso dos programas. 
1.1 Características do Software 
a. Desenvolvido ou projetado por engenharia, não manufaturado no sentido 
clássico. 
b. Não se desgasta, mas se deteriora. 
c. A maioria é feita sob medida. 
1.2 Aplicações do software 
a. Básico: programas escritos para dar apoio a outros programas. 
b. De tempo real: software que monitora, analisa e controla eventos do 
mundo real. 
c. Comercial: sistemas de operações comerciais e tomadas de decisões 
administrativas. 
d. Científico: caracterizado por algoritmos de processamento de números. 
1.3 Evolução do software 
(1950 – 1965) 
 O hardware sofreu contínuas mudanças. 
 O software arte "secundária" para poucos métodos. 
 O hardware era de propósito geral. 
 O software específico para cada aplicação. 
 Sem documentação. 
(1965 – 1975) 
 Multiprogramação e sistemas multiusuários. 
 Sistemas tempo real. 
 Primeira geração de SGBD’s. 
 Bibliotecas de Software. 
 Cresce o número de sistemas baseado em computador. 
 Manutenção quase impossível. 
 
 
 
04 
TEMA 2 – CRISE DE SOFTWARE 
 Conjunto de problemas encontrados no desenvolvimento de software. 
1. As estimativas de prazo e de custo frequentemente são imprecisas. 
2. A produtividade das pessoas da área de software não acompanha a 
demanda por seus serviços. 
3. A qualidade de software, às vezes, não é adequada. 
4. O software existente é muito difícil de manter. 
Diante desse cenário, as seguintes situações acabaram acontecendo: 
 estimativas de prazo e de custo ; 
 produtividade das pessoas ; 
 qualidade de software ; 
 software difícil de manter . 
2.1 Problemas associados à Crise de Software 
2.1.1 Próprio caráter do software 
 Podemos dizer que Software é a parte lógica do computador. Por 
consequência, determinaremos o seu sucesso pela medição da qualidade de 
apenas uma entidade. O software não sofrerá, como algo físico, um desgaste com 
o passar do tempo, mas, certamente, será corroído pelo tempo, necessitando de 
alterações (manutenções). 
2.1.2 Falhas das pessoas responsáveis pelo desenvolvimento do software 
 Gerentes sem conhecimento ou nulas experiências em softwares. 
Profissionais da área que não recebem novos treinamentos ou especializações 
técnicas de desenvolvimento. Também podemos encontrar, dentro das empresas, 
grande resistência na implementação de mudanças. 
2.1.3 Mitos do software 
 Propagaram desinformação e confusão. 
 
 
05 
 Lenda: Em nossa empresa, possuímos um manual com todos os padrões 
para desenvolvimento de um software. Minha equipe terá tudo o que é 
necessário em termos de conhecimento? 
 Verdade: Esse material é usado pela equipe? Todos os profissionais têm 
conhecimento da sua existência? Nele já estão contidas as formas 
modernas de desenvolvimento? O material está completo? 
 Lenda: Minha equipe usa ferramentas de última geração para o 
desenvolvimento dos sistemas. Recentemente, também adquirimos novas 
máquinas para o desenvolvimento. 
 Verdade: É necessário possuir mais que apenas novos computadores para 
produzir software com qualidade. Todo o conhecimento, aqui também, deve 
estar incluso. 
 Lenda: Como nosso projeto de desenvolvimento de software está atrasado, 
incluiremos novos profissionais na equipe e, com isso, tiraremos o atraso. 
 Verdade: Desenvolver um software é diferente de produzir um produto em 
um processo industrial. Incluir mais pessoas em um projeto pode torná-lo 
mais atrasado ainda. Há que se ter um critério bem definido e planejado 
para a inclusão de novos profissionais em uma equipe de projeto. 
 Lenda: Ter uma visão superficial dos objetivos para o desenvolvimento de 
determinado software é o suficiente para começar a desenvolver os 
programas. O detalhamento pode ser feito posteriormente. 
 Verdade: Uma pobre definição inicial dos requisitos é a grande vilã e, 
talvez, a maior causa de fracassos dos projetos de desenvolvimento de 
software. Ter uma descrição formal e detalhada de toda a informação, 
funcionalidade, desempenho, interfaces internas e externas, restrições e 
validações dos sistemas desenvolvidos são vitais para o sucesso do 
projeto. 
 Lenda: O nosso usuário, constantemente, sugere mudanças em nosso 
projeto. Sem problemas, pois qualquer mudança pode ser facilmente 
implementada, porque o nosso projeto é totalmente flexível. 
 Verdade: Pequenas alterações, solicitadas quando o projeto já está em 
desenvolvimento avançado, podem causar problemas muito maiores do 
que uma grande alteração solicitada durante as fases iniciais do 
desenvolvimento. Tal feito pode ocasionar consideráveis prejuízos à 
qualidade final do produto e do projeto. 
 
 
06 
 Lenda: A partir do momento em que o programa/sistema entrar em 
funcionamento, o trabalho de nossa equipe de desenvolvimento estará 
encerrado. 
 Verdade: É errado pensar dessa forma. Pelas estatísticas das empresas 
de desenvolvimento de software, serão usados, após a entrega do 
programa aos usuários, de 50% a 70% do tempo e esforço gastos com o 
seu desenvolvimento. 
 Lenda: Sem ter em mãos o sistema já funcionando, não é possível avaliar 
a sua qualidade. 
 Verdade: Hoje em dia, ter o programa funcionando é apenas uma parte da 
configuração de Software. Além do mais, com novas formas de 
desenvolvimento, com as metodologias ágeis, temos sempre a entrega de 
artefatos agregando funcionalidades aos programas em que a qualidade é 
vital. 
TEMA 3 – ENGENHARIA DE SOFTWARE 
3.1 Métodos 
 Proporcionam os detalhes de como fazer para construir o software. 
 Mostram o planejamento e a estimativa de projeto. 
 Desenvolvem a análise de requisitos de software e de sistemas. 
 Modelam o projeto da estrutura de dados. 
 Dizem como codificar algoritmo de processamento. 
 Trazem a forma da codificação. 
 Informam como deve ser a fase de teste. 
 Traráas normas a serem seguidas na manutenção. 
3.2 Ferramentas 
 Suportam de forma automatizada os métodos de desenvolvimento. 
Atualmente, existem ferramentas específicas para cada método. Quando 
integradas, é possível estabelecer um sistema de suporte ao processo de 
desenvolvimento de software, o que chamamos de CASE - Computer Aided 
Software Engineering. 
3.3 Procedimentos 
 
 
07 
 Constituem o elo entre os métodos e as ferramentas. São as sequências 
em que os métodos serão aplicados. Informam quais produtos devem ser 
entregues. Definem os controles que ajudam assegurar a qualidade e a coordenar 
as alterações. Trazem as referências que ajudam a administrar o progresso do 
software. 
 O conjunto das etapas que envolvem métodos, ferramentas e 
procedimentos é conhecido como componente de Ciclos de Vida de software. 
 Para a escolha de um Ciclo de Vida de software, devemos levar em conta 
a natureza do projeto e da aplicação, os métodos e as ferramentas a serem 
usados e saber quais controles e produtos precisam ser entregues. 
TEMA 4 – CICLO DE VIDA CLÁSSICO (CASCATA) 
Figura 1 – Ciclo de vida em cascata 
 
 
4.1 Análise e engenharia de sistemas 
 Nessa fase, é preciso realizar a coleta dos requisitos ao nível de sistema, 
já desenvolvendo uma pequena quantidade do projeto e da análise para a criação 
do software/sistema em questão. 
 Essa fase é de suma importância, principalmente quando o software fizer 
interface com hardware, pessoas ou banco de dados. 
4.2 Análise de requisitos de software 
 O processo de levantamento dos requisitos, nessa fase, é reforçado e 
concentrado especificamente no que será desenvolvido. 
 
 
08 
 Deve-se compreender o funcionamento do software e todo o domínio da 
informação, como também saber quais interfaces serão exigidas pelo sistema. 
 Esses requisitos devem ser documentados, revistos e validados junto aos 
usuários/clientes. 
4.3 Projeto 
 É nessa fase que fazemos a transformação dos requisitos do software para 
representações avaliadas antes que a codificação propriamente dita comece. 
 Concentra-se em 4 atributos do programa: 
a. Estrutura de dados. 
b. Arquitetura de software. 
c. Detalhes procedimentais. 
d. Caracterização de interfaces. 
4.4 Codificação 
 Trata-se da passagem de todas as representações do projeto de 
desenvolvimento para uma linguagem de programação definida pela equipe de 
projeto, resultando nas instruções/comandos executáveis pelo computador. 
4.5 Testes 
 Concentram-se, principalmente: 
 Nas características lógicas do software, garantindo que todas as 
instruções/comandos tenham sido testadas ao menos uma vez. 
 Nos quesitos funcionais, os testes visam descobrir erros e garantir que as 
entradas definidas em projeto produzam resultados considerados corretos 
pelos requisitos dos usuários. 
4.6 Manutenção 
 É certo que o software sofrerá mudanças depois de entregue/implantado 
no cliente/usuário. 
 As prováveis situações que podem provocar mudanças são: erros, 
adaptação no software para aceitar determinadas mudanças, alterações de 
 
 
09 
ambiente, solicitações dos usuários para que sejam incluídas alterações 
funcionais e de melhora do desempenho. 
 Podemos citar várias situações-problema na utilização desse modelo, 
como: 
 Projetos reais raramente seguem o fluxo sequencial que o modelo propõe. 
 Logo no início, é difícil estabelecer explicitamente todos os requisitos, pois, 
no começo dos projetos sempre existe uma incerteza natural. 
 O cliente deve ter paciência. 
 Uma versão executável do software só fica disponível numa etapa 
avançada do desenvolvimento. 
TEMA 5 – CICLO DE VIDA EM ESPIRAL 
Figura 2 – Prototipação 
 
 Esse processo clássico de desenvolvimento une suas melhores 
características com o processo de Prototipação, incluindo um novo item 
importantíssimo: a Análise de Risco. Ele segue os passos sistemáticos do Ciclo 
de Vida Clássico, incluindo-os em uma organização iterativa que refletirá, de 
forma mais próxima, o mundo real. O processo de Prototipação pode ser usado 
em qualquer etapa do desenvolvimento, como forma de reduzir os riscos do 
desenvolvimento. 
5.1 Etapas do Ciclo de Vida em Espiral 
 Planejamento: determinará os objetivos, as alternativas e as restrições 
quanto ao desenvolvimento do software. 
 
 
010 
 Análise de risco: realizará uma análise de alternativas e identificação / 
resolução dos possíveis riscos. Normalmente, há 3 alternativas. 
 Construção: codificação dos requisitos, passando-os para a linguagem 
computacional propriamente dita. 
 Avaliação do cliente: homologação do que foi entregue/implantado pelos 
usuários/clientes, para que se efetue o planejamento dos novos passos. 
 Esta é, atualmente, a abordagem mais realística para o desenvolvimento 
de software em grande escala. Capacita o desenvolvedor e o cliente a entenderem 
e reagirem aos riscos em cada etapa evolutiva. Pode ser difícil convencer os 
clientes que uma abordagem "evolutiva" é controlável. Também exige 
considerável experiência na determinação de riscos e depende dessa experiência 
para ter sucesso. 
FINALIZANDO 
 O surgimento de sistemas complexos de software resultou na necessidade 
de reavaliar a forma de desenvolver sistemas. A técnica tem evoluído de forma 
impressionante, notavelmente, no que tange ao seu desenvolvimento. A 
engenharia de software apareceu como o processo ideal para solucionar 
problemas definidos pela crise de software. Independentemente de ser uma crise 
ou um problema crônico, o fato é que as dificuldades persistem, “sendo o 
desenvolvimento de software tarefa árdua que leva muitos desenvolvedores a 
derrota”. (Pressman; Maxim, 2002). Essas situações aumentam o interesse de 
toda a comunidade de desenvolvedores em buscar metodologias que possam 
ajudar, eliminar e minimizar as dificuldades enfrentadas no desenvolvimento dos 
projetos. 
 Deste modo, formalidade, documentação, cumprimento das fases 
estabelecidas e produtos definidos, que fazem parte da abordagem tradicional, e 
em qualquer projeto de desenvolvimento de aplicações, sempre buscarão a 
qualidade final do produto e, consequentemente, a satisfação do cliente. 
 
 
 
011 
REFERÊNCIAS 
PAULA FILHO, W. de P. Engenharia de software: fundamentos, métodos e 
padrões. 3 ed. São Paulo: LTC, 2009. 
PRESSMAN, R.; MAXIM, B. Engenharia de software: uma abordagem 
profissional. Trad. João Eduardo Nóbrega Tortello. 8. ed. Porto Alegre, RS: 
AMGH, 2016. 
SOFTWARE. Michaelis. Dicionário Brasileiro da Língua Portuguesa. Disponível 
em: <http://michaelis.uol.com.br/busca?id=EZ5mx>. Acesso em: 13 set. 2017.

Continue navegando