23
Introdução à Engenharia de Software Prof. Mestre Joaquim Rodrigo de Oliveira UNIVEST www.classilages.com.br/rodrigo

_aula1 dos Procedimentos Ferramentas

Embed Size (px)

Citation preview

Page 1: _aula1 dos Procedimentos Ferramentas

Introdução à Engenharia de Software

Prof. Mestre Joaquim Rodrigo de OliveiraUNIVESTwww.classilages.com.br/rodrigo

Page 2: _aula1 dos Procedimentos Ferramentas

1. Introdução ao Processo de Engenharia de Software

Para reconhecer e entender a importância da engenharia de software, é preciso primeiro saber qual é a importância dos próprios software.

Para isso, é necessário em primeiro lugar entender o que é um software.

No começo do 1o. Bimestre vimos brevemente duas definições de software De forma resumida: Software - 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 aplicações de software.

Page 3: _aula1 dos Procedimentos Ferramentas

1.1 Tipos de Aplicação de Software 1.1.1 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, compiladores, drivers, etc…

Page 4: _aula1 dos Procedimentos Ferramentas

1.1.2 Software Aplicativo Podem ter diversas funções e ser divididos em

categorias:

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 (p. ex., entre 1 milissegundo e 1 minuto) Exemplos: controle de tráfego aéreo, relógio digital

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…

Page 5: _aula1 dos Procedimentos Ferramentas

Software Científico e de Engenharia Caracteriza-se pelo processamento de dados numéricos Exemplos: astronomia, vulcanologia, análise da fadiga de

materiais, biologia molecular, etc… Outros exemplos: auxílio de desenvolvimento de projetos,

como os programas CAD (Computer-Aided Design)

Software Embutido 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…

Page 6: _aula1 dos Procedimentos Ferramentas

Software de Computador Pessoal Esta categoria envolve diversos tipos de software

utilizados para diferentes fins. Exemplos: processadores de textos, planilhas

eletrônicas, jogos, gerenciamento de dados, etc…

Software de Inteligência Artificial 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, entendimento de língua natural (tradução automática, sumarização automática), robótica, aprendizado de máquina, etc…

Page 7: _aula1 dos Procedimentos Ferramentas

Software Baseado na Web Sistemas feitos para serem utilizados na internet por meio

de um browser Tecnologias: HTML, ASP, CGI, PHP, Java, XML, etc… Exemplos: Páginas pessoais (?), portais, consulta a bases

de dados, etc…

Page 8: _aula1 dos Procedimentos Ferramentas

1.2. Histórico da Engenharia de Software

Para entender como surgiu a área de Engenharia de Software, é preciso analisar a história da evolução do software ao longo dos anos.

Geralmente 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 9: _aula1 dos Procedimentos Ferramentas

1a. 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. 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 desenvolveu.

2a. Era Começaram a surgir sistemas multiusuários, sistemas de tempo

real, banco de dados Começaram a surgir também software como produto, ou seja,

softwares produzidos para serem vendidos para diferentes organizações.

Page 10: _aula1 dos Procedimentos Ferramentas

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.

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

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.

Page 11: _aula1 dos Procedimentos Ferramentas

3a. Era Surgem os sistemas distribuídos, ou sistemas em rede. Surgem eletrodomésticos e máquinas eletrônicas com software

embutido. O hardware nessa época já tem um custo mais baixo. Foi nessa era que surgiram os microprocessadores pessoais,

que passaram a ser amplamente consumidos pelo público geral, estimulando o crescimento de muitas empresas de software e o surgimento de novas empresas.

O número de cópias vendidas de um software chegava a centenas de milhares.

Nessa era, o hardware passa a ser considerado um produto primário básico, sendo que o software é responsável pela diferenciação.

Enquanto a taxa de crescimento das vendas de hardware se estabilizaram na década de 80, as vendas de software continuaram a crescer.

Page 12: _aula1 dos Procedimentos Ferramentas

4a. Era 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, linguagens de programação de quarta geração.

1.2.1. IMPORTÂNCIA DO SOFTWARE1.2.1. IMPORTÂNCIA DO SOFTWARE 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.

Page 13: _aula1 dos Procedimentos Ferramentas

Naquela época, 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 começou a mudar.

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.

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 passa seis meses sem o lançamento de um processador mais veloz que os anteriores.

No entanto, é crucial que os software acompanhem essa evolução, fazendo bom uso do hardware.

Page 14: _aula1 dos Procedimentos Ferramentas

1.2.2. Crise de Software

Durante as primeiras eras do software, o desenvolvimento de software era feito de forma totalmente organizada.

Não era feito nenhum projeto, planejamento, ou análise de requisitos e o software não era documentado.

O software era simplesmente produzido conforme o conhecimento e experiência pessoal do programador.

Com o tempo, o desenvolvimento desorganizado levou a diversos problemas.

O principal problema é 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 15: _aula1 dos Procedimentos Ferramentas

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 outro tipo de problemas causados pela falta de planejamento e programação estruturada, como por exemplo, 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 16: _aula1 dos Procedimentos Ferramentas

1.3 Definições de Engenharia de Software

Primeira definição (Fritz Bauer,1969): “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”.

Foco nos objetivos:• Economia• Confiabilidade• Eficiência

Page 17: _aula1 dos Procedimentos Ferramentas

Segundo Arndt Von Staa (1987): “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”.

Foco nos objetivos:• Economia • Eficiência• Qualidade “preditível” e Manutenção

Page 18: _aula1 dos Procedimentos Ferramentas

Segundo Anneliese Mayrhayser (1990): “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”.

Foco nos objetivos:• Software de qualidade • Resolução de problemas

Foco nas metodologias: • Métodos• Técnicas • Ferramentas

Page 19: _aula1 dos Procedimentos Ferramentas

Métodos, Ferramentas e Procedimentos definidos na disciplina de Engenharia de Software:

Permitem que o gerente 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 20: _aula1 dos Procedimentos Ferramentas

MÉTODOSMÉTODOS 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

Principais Tarefas: Planejamento e estimativa de projeto Análise de Requisitos Projeto da Estrutura de Dados Algoritmo de Processamento Codificação Teste Manutenção

Page 21: _aula1 dos Procedimentos Ferramentas

FERRAMENTASFERRAMENTAS Podem auxiliar o desenvolvimento de software em diversos

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

Ferramentas 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 22: _aula1 dos Procedimentos Ferramentas

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 aplicadosos produtos a serem entregues (documentos,

relatórios, etc), controles de qualidade, coordenação de mudanças, etc.

Page 23: _aula1 dos Procedimentos Ferramentas

Exercícios1. Qual é a diferença entre software básico e software aplicativo?2. Quais são as 7 principais categorias de software aplicativo? Dê

um exemplo de software de cada categoria.3. Quais são as características da 1a. era do software?4. Quais são as características da 2a. era do software?5. Quais são as características da 3a. era do software?6. Quais são as características da 4a. era do software?7. Em qual era começaram a surgir problemas com os software?8. O que significa dizer que atualmente “software é mais

importante que hardware”?9. Como é que a crise de software levou ao surgimento da

engenharia de software? Comente.10. Defina engenharia de software com suas próprias palavras11. Quais são os principais objetivos da engenharia de software?12. Quais são os 3 elementos da engenharia de software?