ies - aula 01 - 02.08

41
TÍTULO DA APRESENTAÇÃO TÍTULO DA APRESENTAÇÃO subtítulo subtítulo Profº Vanilson Araújo (Branco) Curso de Especialização Engenharia de Software

Upload: gilson-silva

Post on 29-Jun-2015

1.204 views

Category:

Technology


7 download

TRANSCRIPT

Page 1: IES - Aula 01 - 02.08

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

“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

“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

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

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

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

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

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

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

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

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.