Вы находитесь на странице: 1из 23

Introdução à Engenharia de Software

Prof. Mestre Joaquim Rodrigo de Oliveira


UNIVEST
www.classilages.com.br/rodrigo
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.
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 2a.
4 eras:
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
 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 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.
 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?

Вам также может понравиться