Você está na página 1de 23

Introdução à Engenharia de Software

4o. Bimestre

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


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.
 Definição 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.
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…
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…
 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…
 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…
 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…
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:
2a. Era 4a. Era
1a. Era 3a. Era

1950 1960 1970 1980 1990 2000



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

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.

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 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.
 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.
1.2.2. 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
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.
 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.
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
 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
 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
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
MÉ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
FERRAMENTAS
 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.
PROCEDIMENTOS
 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.
Exercícios
1. 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 palavras
11. Quais são os principais objetivos da engenharia de software?
12. Quais são os 3 elementos da engenharia de software?

Você também pode gostar