ies - aula 01 - 02.08
TRANSCRIPT
![Page 1: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/1.jpg)
TÍTULO DA APRESENTAÇÃOTÍTULO DA APRESENTAÇÃO
subtítulosubtítulo
Profº Vanilson Araújo (Branco)
Curso de Especialização
Engenharia de Software
![Page 2: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/2.jpg)
Objetivo da DisciplinaObjetivo da Disciplina
Apresentar os principais conceitos e práticas utilizadas e estudadas na área de Engenharia de software, fornecendo uma visão geral de como desenvolver software de qualidade.
![Page 3: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/3.jpg)
BibliografiaBibliografiaSOMMERVILLE, Ian, Engenharia de Software, 8ª Edição, Addison-Wesley, 2007.PRESSMAN, Roger S. Engenharia de Software. São Paulo : Makron Books, 1995.PAULA Filho, Wilson de Pádua. Engenharia de software: fundamentos, métodos e padrões. Rio de Janeiro :LTC, 2001.PETERS, James F. Engenharia de Software Teoria e Prática. Rio de Janeiro : Campus, 2001.ROCHA, Ana R. C. Qualidade de Software Teoria e Prática. Rio de Janeiro: Campus, 2001.
![Page 4: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/4.jpg)
Introdução à Introdução à Engenharia de SoftwareEngenharia de Software
Para reconhecer e entender a importância da engenharia de software, é preciso primeiro saber qual é a importância do próprio software.
Para isso, é necessário em primeiro lugar entender o que é um software.
O que é software?
![Page 5: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/5.jpg)
Definição de SoftwareDefinição de Software SoftwareSoftware - - conjunto de programas,
documentação e procedimentos operacionais com os quais pode-se fazer com que os computadores e outros dispositivos eletrônicos sejam úteis aos homens. Sendo que os programas são conjuntos de instruções arranjadas de forma que possam ser entendidas e executadas por um computador
Em segundo lugar, é necessário compreender a vasta gama de tipos de software.
![Page 6: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/6.jpg)
TiposTipos de Software de Software1.- Software Básico1.- Software Básico Também conhecidos como “software de
sistema” Se caracterizam por uma forte interação
com o hardware do computador Executam as funções de controle que
permitem que o software aplicativo tenha interface com outros elementos do sistema
Exemplos: sistemas operacionais, drivers, compiladores, etc.
![Page 7: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/7.jpg)
2.- Software Aplicativo2.- Software Aplicativo Podem ter diversas funções e ser
divididos em duas categorias:
Software de Tempo Real
Software Comercial
![Page 8: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/8.jpg)
1) Software de Tempo Real Funções de monitoramento, análise e
controle de eventos. A resposta do sistema deve obedecer a
severas restrições de tempo (em mili-segundos).
Exemplos: controle de tráfego aéreo, relógio digital
2-Software 2-Software Aplicativo - Aplicativo - CategoriasCategorias
![Page 9: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/9.jpg)
2) Software Comercial Uma das maiores áreas de aplicação de
software. Facilitam operações comerciais e
tomadas de decisões administrativas. Exemplos: folha de pagamentos, contas
a pagar e a receber, controle de estoque, etc.
2-Software 2-Software Aplicativo - Aplicativo - CategoriasCategorias
![Page 10: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/10.jpg)
Caracteriza-seCaracteriza-se pelo processamento de pelo processamento de dados numéricosdados numéricos
Exemplos: astronomia, vulcanologia, Exemplos: astronomia, vulcanologia, análise da fadiga de materiais, biologia análise da fadiga de materiais, biologia molecular, etc…molecular, etc…
Outros exemplos: auxílio de Outros exemplos: auxílio de desenvolvimento de projetos, como os desenvolvimento de projetos, como os programas CAD (Computer-Aided programas CAD (Computer-Aided Design)Design)
3 - Software 3 - Software Científico Científico
e de Engenhariae de Engenharia
![Page 11: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/11.jpg)
Controle de produtos e sistemas para os mercados industriais e de consumo.
Exemplos: controle do teclado de fornos de microondas, funções digitais de automóveis (como controle de combustível, mostradores no painel e sistemas de freio), etc.
4 - Software 4 - Software EmbutidoEmbutido
![Page 12: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/12.jpg)
Esta categoria envolve diversos tipos de software utilizados para diferentes fins.
Exemplos: processadores de textos, planilhas eletrônicas, jogos, gerenciamento de dados, etc.
5-Software de 5-Software de Computador Computador PessoalPessoal
![Page 13: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/13.jpg)
Sistemas que utilizam abordagens e metodologias da inteligência artificial.
Principais aplicações: problemas difíceis de serem modelados computacionalmente por modelos tradicionais.
Principais técnicas: sistemas baseados em conhecimento, sistemas especialistas, redes neurais, algoritmos genéticos, etc.
Exemplos: jogos, prova de teoremas, robótica, aprendizado de máquina, etc.
6-Software de Inteligência Artificial
![Page 14: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/14.jpg)
Sistemas feitos para serem utilizados na internet por meio de um browser
Tecnologias: HTML, ASP, .Net, PHP, Java, XML, etc.
Exemplos: Páginas pessoais, portais, consulta a bases de dados, etc.
7 - Software 7 - Software Baseado na WebBaseado na Web
![Page 15: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/15.jpg)
HistóricoHistórico da Engenharia de da Engenharia de SoftwareSoftware
Para entender como surgiu a área de Engenharia de Software, é preciso analisar a história da evolução do software ao longo dos anos.
divide-se a evolução dos softwares em 4 eras:
1950 1960 1970 1980 1990 2000
1a. Era
2a. Era
3a. Era
4a. Era
![Page 16: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/16.jpg)
Programas Batch. Software customizado e produzido somente sob encomenda.
Distribuição limitada. Durante esses anos, a maior parte do software era desenvolvida e usada pela própria pessoa ou organização.
1ª Era 1950 – 1963 (aprox).1ª Era 1950 – 1963 (aprox).
![Page 17: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/17.jpg)
O desenvolvedor era um funcionário da empresa contratado para desenvolver o sistema e ficar disponível para corrigir erros que pudessem surgir.
Como apenas uma pessoa era responsável pelo desenvolvimento e manutenção do sistema, não havia a necessidade de documentação ou estruturação, já que apenas o desenvolvedor deveria ser capaz de entender o software que ele próprio desenvolveu.
1ª Era 1950 – 1963 (aprox).1ª Era 1950 – 1963 (aprox).
![Page 18: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/18.jpg)
Começaram a surgir sistemas multi-usuários, sistemas de tempo real, banco de dados. Rede ponto a ponto.
Começou a surgir também software como produto, ou seja, aplicativos produzidos para serem vendidos para diferentes organizações..
2ª Era 1963 – 1978 (aprox).2ª Era 1963 – 1978 (aprox).
![Page 19: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/19.jpg)
Foi nessa época que começaram a surgir as empresas desenvolvedoras de software.
Softwares desenvolvidos para mainframes e minicomputadores eram distribuídos para centenas e, às vezes, até milhares de usuários.
Começaram a ser criadas bibliotecas de códigos, inclusive eram comprados produtos no exterior para acrescentar mais instruções às bibliotecas.
2ª Era 1963 – 1978 (aprox).2ª Era 1963 – 1978 (aprox).
![Page 20: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/20.jpg)
No entanto, quando aumentou o uso e distribuição dos softwares, começaram a aumentar também os problemas.
Às vezes os programas tinham de ser corrigidos devido à descoberta de falhas, ou alterados conforme as exigências do usuário ou adaptados a novos hardware, atividades atualmente chamadas de “manutenção de software”.
2ª Era 1963 – 1978 (aprox).2ª Era 1963 – 1978 (aprox).
![Page 21: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/21.jpg)
A chamada “crise de software” surgiu porque a natureza personalizada dos programas e a falta de documentação em alguns casos praticamente impossibilitava a sua manutenção..
2ª Era 1963 – 1978 (aprox).2ª Era 1963 – 1978 (aprox).
![Page 22: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/22.jpg)
Surgem os sistemas distribuídos, ou Surgem os sistemas distribuídos, ou sistemas sistemas em redeem rede. .
Surgem eletrodomésticos e máquinas Surgem eletrodomésticos e máquinas eletrônicas com software embutido.eletrônicas com software embutido.
O hardware nessa época já tem um custo O hardware nessa época já tem um custo mais baixo. mais baixo.
Foi nessa era que surgiram os microprocessadores de computadores pessoais, que passaram a ser amplamente , que passaram a ser amplamente consumidos pelo público geral, estimulando o consumidos pelo público geral, estimulando o crescimento de muitas empresas de software crescimento de muitas empresas de software e o surgimento de novas empresase o surgimento de novas empresas. .
3ª Era 1975 – 1990 (aprox).3ª Era 1975 – 1990 (aprox).
![Page 23: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/23.jpg)
O número de cópias vendidas de um software chegava a centenas de milhares. .
Nessa era, o hardware passa a ser Nessa era, o hardware passa a ser considerado um produto primário básico, considerado um produto primário básico, sendo que o sendo que o softwaresoftware é responsável pela é responsável pela diferenciação. diferenciação.
Enquanto a taxa de crescimento das vendas Enquanto a taxa de crescimento das vendas de hardware se estabilizaram na década de de hardware se estabilizaram na década de 80, as vendas de software continuaram a 80, as vendas de software continuaram a crescercrescer..
3ª Era 1975 – 1990 (aprox).3ª Era 1975 – 1990 (aprox).
![Page 24: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/24.jpg)
Podemos dizer que a quarta era se estende até os dias atuais.
Esta era caracteriza-se pelas tecnologias orientadas a objeto, sistemas de inteligência artificial (sistemas especialistas, redes neurais), computação paralela e multi-processada.
4ª Era 1990 – até hoje4ª Era 1990 – até hoje
![Page 25: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/25.jpg)
As diferentes eras da evolução do software mostram que ele se tornou mais importante à medida que o hardware tornou-se um “problema resolvido”.
Quando o computador começou a ser usado, aproximadamente na década de 50 e nas três décadas seguintes, o principal desafio era desenvolver hardware para reduzir custos de processamento e armazenagem de dados, bem como reduzir o seu tempo de processamento.
A importância do SoftwareA importância do Software
![Page 26: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/26.jpg)
Naquela época(50´s), o software era apenas um conjunto de instruções que dizia ao computador como efetuar os cálculos o mais rápido possível.
Aproximadamente no fim da década de 80 esse cenário mudou radicalmente.
Os computadores já eram rápidos o suficiente e os pesquisadores perceberam que o hardware estava sendo mal aproveitado, que ele podia ser utilizado para resolver outros tipos de problemas.
A importância do SoftwareA importância do Software
![Page 27: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/27.jpg)
Então, a chave para o bom aproveitamento de um computador passou a ser o software.
Claro que a preocupação com a evolução do hardware continua. Não se passam seis meses sem o lançamento de um processador ou outro dispositivo mais veloz que os anteriores.
No entanto, é crucial que o software acompanhe essa evolução, fazendo bom uso do hardware.
A importância do Software (80A importância do Software (80´s)´s)
![Page 28: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/28.jpg)
A Crise de SoftwareA Crise de Software
Durante as primeiras eras do software, o desenvolvimento de software era feito de forma totalmente desorganizada.
Não era feito nenhum projeto, planejamento, ou análise de requisitos e o pior era que o software não estava documentado.
O software era simplesmente produzido conforme o conhecimento e experiência pessoal do programador.
![Page 29: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/29.jpg)
A Crise de Software (70´s)A Crise de Software (70´s) Com o tempo, o desenvolvimento
desorganizado levou a diversos problemas.
O principal problema era quando surgiam erros ou quando era necessária ou desejada alguma mudança no software.
Como o código não era documentado e não obedecia a nenhuma estrutura formal, apenas o desenvolvedor conseguia entender e modificá-lo.
![Page 30: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/30.jpg)
Em alguns casos, quando a mudança era realizada muito tempo após o desenvolvimento do software, mesmo o próprio desenvolvedor tinha dificuldades para entender o código que ele mesmo desenvolveu.
Assim, as mudanças eram altamente custosas. Ao conjunto de problemas encontrados no desenvolvimento
de software deu-se inicialmente o nome de “crise de software”, sendo posteriormente chamado de “aflição crônica”.
Mais adiante, veremos ainda diversos outros tipos de problemas causados pela falta de planejamento e programação estruturada, como: a insatisfação do cliente, a dificuldade de cumprir prazos, erro na previsão dos custos, entre outros.
Devido a esses problemas, verificou-se que era preciso tomar vários cuidados antes e durante o desenvolvimento de software, para evitar que esses problemas ocorressem.
Assim, a Eng. de Software surgiu para propor estratégias que evitassem que esses problemas acontecessem.
![Page 31: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/31.jpg)
Definições de Engenharia Definições de Engenharia de Softwarede Software
“O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais”. (Fritz Bauer,1969):
Foco nos objetivos:• Economia• Confiabilidade• Eficiência
![Page 32: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/32.jpg)
“O desenvolvimento e a aplicação de ciência, matemática, técnicas, métodos e ferramentas para o desenvolvimento e a manutenção econômica de software de qualidade preditível e controlável, operando de modo econômico em máquinas e ambientes reais”. Arndt Von Staa (1987):
Foco nos objetivos:• Economia • Eficiência• Qualidade “preditível” e Manutenção
![Page 33: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/33.jpg)
“Uma disciplina da Ciência da Computação que oferece métodos, técnicas e ferramentas para desenvolver e manter softwares com alta qualidade para resolução de problemas”. Anneliese Mayrhayser (1990):
Foco nos objetivos:• Software de qualidade • Resolução de problemas
Foco nas metodologias: • Métodos• Técnicas • Ferramentas
![Page 34: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/34.jpg)
Métodos, Ferramentas e Procedimentos definidos na disciplina de Engenharia de
Software:
Permitem que o engenheiro controle todo o processo de desenvolvimento do software.
Oferecem ao profissional desenvolvedor uma base para a construção de software de alta qualidade.
Levam à produção de um software que atenda aos requisitos e expectativas do cliente.
![Page 35: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/35.jpg)
Um desafio constante da área de Engenharia de Software é melhorar o processo de desenvolvimento de software.
Definem diversos tipos de tarefas a serem realizadas antes, durante e após o desenvolvimento de um software.
Incluem a especificação de notações a serem utilizadas, critérios para medir a qualidade do software e medidas de levantamento de requisitos
MétodosMétodos
![Page 36: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/36.jpg)
Principais Tarefas: Planejamento e estimativa de
projeto; Análise de Requisitos; Projeto da Estrutura de Dados; Algoritmo de Processamento; Codificação; Teste; Manutenção.
Abrangência dos MétodosAbrangência dos Métodos
![Page 37: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/37.jpg)
Problema é o excesso de formalidade nos modelos de processo propostos nos últimos 30 anos.
Existe hoje a necessidade de desenvolver software de forma mais rápida, mas com qualidade.
Os desenvolvedores são geralmente inimigos das formalidades – Prática X Teoria
Problemas dos MétodosProblemas dos Métodos
![Page 38: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/38.jpg)
A Prática Comprova que:A Prática Comprova que:
Indivíduos e interações são mais importantes que processos e ferramentas;
Software funcionando é mais importante do que documentação detalhada;
Colaboração dos clientes é mais importante do que negociação de contratos;
Adaptação às mudanças é mais importante do que seguir um plano.
![Page 39: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/39.jpg)
FERRAMENTASFERRAMENTAS Podem auxiliar o desenvolvimento
de software em diversos níveis: Apenas ambientes para codificação Apoio semi-automático Apoio automatizado
![Page 40: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/40.jpg)
CASE (Computer-Aided Software Engineering) Ambientes de apoio ao desenvolvimento de
software. Podem incluir diferentes ferramentas integradas,
de forma que a informação gerada por uma das ferramentas do ambiente possa ser utilizada por outra ferramenta do mesmo ambiente.
Exemplo 1: um ambiente contendo compilador, banco de dados e ferramentas de auxílio ao teste de software;
Exemplo 2: ambiente para a coordenação de desenvolvimento de software em equipe;
Exemplo 3: ambiente que gera o código com base na modelagem.
![Page 41: IES - Aula 01 - 02.08](https://reader030.vdocuments.com.br/reader030/viewer/2022012405/559071fb1a28ab5a2f8b4791/html5/thumbnails/41.jpg)
PROCEDIMENTOSPROCEDIMENTOS Indicam como executar, na prática, as
tarefas definidas pelos métodos. Podem indicar:
A seqüência na qual os métodos serão aplicados
Os produtos a serem entregues (documentos, relatórios, etc),
Controles de qualidade, Coordenação de mudanças, etc.