ies - aula 01 - 02.08

Post on 29-Jun-2015

1.204 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

TÍTULO DA APRESENTAÇÃOTÍTULO DA APRESENTAÇÃO

subtítulosubtítulo

Profº Vanilson Araújo (Branco)

Curso de Especialização

Engenharia de Software

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.

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.

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?

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.

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.

2.- Software Aplicativo2.- Software Aplicativo Podem ter diversas funções e ser

divididos em duas categorias:

Software de Tempo Real

Software Comercial

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

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

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

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

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

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

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

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

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).

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).

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).

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).

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).

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).

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).

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).

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

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

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

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)

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.

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.

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.

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

“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

“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

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.

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

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

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

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.

FERRAMENTASFERRAMENTAS Podem auxiliar o desenvolvimento

de software em diversos níveis: Apenas ambientes para codificação Apoio semi-automático Apoio automatizado

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.

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.

top related