Você está na página 1de 9

Engenharia de Software – INE 5622

Walter de Abreu Cybis, Dr. Eng.


Sala 504 - Ramal: 7510
E-mail: cybis@inf.ufsc.br
Horário de atendimento: quartas-feiras à tarde;
Página do curso: http://www.inf.ufsc.br/~cybis/ine5322/

Março, 2007 (2007-1)

Universidade Federal de Santa Catarina


Departamento de Informática e Estatística
Curso de Bacharelado em Ciência da Computação

Engenharia de Software – INE 5622

Conteúdo aula 1
O software e suas características;
A evolução dos sistemas de software;
Os tipos de sistemas de software;
A engenharia de software;
Apresentação deste curso;

O Software e suas caracterí


características
Diferente de outras coisas que as pessoas
constroem, o software é...
Imaterial:
Não se desgasta : software não é “fabricado” no sentido
usual da palavra.
Os custos do software se relacionam somente ao
desenvolvimento;
O termo “Fábrica de software” se refere ao uso de organização,
técnicas e ferramentas adequadas para desenvolvimentos
diversos (não necessariamente repetidos).

1
O Software e suas caracterí
características
Índice de falhas: curvas teóricas

Índice
de
falhas Hardware Software

tempo tempo

O Software e suas caracterí


características
Índice de falhas –
curva real
Ele enfrentará
mudanças de
manutenção, que
provavelmente incluirá
novos defeitos (picos
na curva de índice de
falhas).
Este processo irá se
repetir no tempo,
fazendo que o nível
mínimo de falhas
aumente.

O Software e suas caracterí


características
Diferente de outras coisas que as pessoas
constroem, o software é...
Imperceptível:
Só é percebido por seu processo:
Sua interface;
Dados e informações que ele gera;
Documentos que o descrevem (modelos);

Abstrato e parcial:
Para reduzir a complexidade, eles modelam apenas uma
parte da realidade (de um sistema).

2
O Software e suas caracterí
características
Diferente de outras coisas que as pessoas
constroem....
Flexível (mais do que o hardware):
Muitas vezes as limitações inesperadas do hardware dão
origem a requisitos de última hora para o software. Os
engenheiros de software são chamados a aumentar as
funções do software sem aumentar o custo do hardware...
Muitas falhas no software resultam de sua função de
acomodação na mudança das exigências do sistema
técnico ou sócio-técnico.

A evoluç
evolução dos sistemas de software
Quatro ou mais gerações...

A evoluç
evolução dos sistemas de software
Primeira Geração (desde
1950):
Software sob medida
(customizado) com distribuição
limitada;
Processamentos em Batch;
Desenvolvidos sem técnicas de
engenharia (programação arte);
Programador-usuário (sistemas
sem documentação);
Muita evolução da ciência
pouca da técnica;

3
A evoluç
evolução dos sistemas de software
Segunda Geração (desde a
metade dos anos 60):
Sistemas multiusuário;
Evolução de técnicas de
interação com o usuário:
Sistemas em tempo real;
Sistemas de gerenciamento de
banco de dados;
Surgimento das software-
houses e dos pacotes de
software:
Evolução de técnicas de
manutenção;

A evoluç
evolução dos sistemas de software
Terceira Geração: (desde 1980):
Sistemas distribuídos: redes
locais e globais;
Comunicações digitais; acesso
instantâneo a base de dados;
Inteligência embutida: sistemas
especialistas;
Software embarcado; Integração
da informática com outras
tecnologias (automóveis,
eletrodomésticos, bens de
capital,....);
Crescimento de empresas de
software, que vendem
diferenciação...

A evoluç
evolução dos sistemas de software
Quarta Geração: (desde o
final dos anos 80)
Disseminação de sistemas
baseados em redes neurais e
algoritmos genéticos para
reconhecimento de padrões,
aprendizado e processamento
parecidos com os humanos;
Orientação a Objetos;
Linguagens de quarta
geração (linguagens
específicas a um domínio
(DSL));
Computação paralela;

4
A evoluç
evolução dos sistemas de software
Já faz tempo que a indústria
do software ultrapassou a do
hardware em cifras de
negócios.
O software é visto hoje como
fator de diferenciação para
empresas e instituições.
Ele tem a capacidade de aliar
em um só dispositivo....
Inteligência;
Funcionalidade;
Facilidade de uso;
Desempenho, etc...

Tipos de sistemas de software


Software Básico:
Programas escritos para dar apoio para outros programas;
compiladores, editores, utilitários, componentes de
sistemas operacionais: forte interação com o hardware;

Software Aplicado:
-Software comercial (folhas de pagamentos, contas a
pagar e a receber, estoques, etc. ),
- Software de controle em tempo real
(monitora/analisa/controla eventos do mundo real, coleta
de dados);
- Software gerencial (SIG - sistemas de informação
gerencial, SAD -sistemas de apoio a tomada de decisão);

Tipos de sistemas de software


Software Aplicado (cont.):
- Software científico e de engenharia (processamentos
numéricos para análises estruturais, de fadiga, etc...),
- Software educacional (ambientes virtuais, simuladores,
tutoriais,apresentações, exercícios, etc.);
- Software embarcado (reside na memória só de leitura de
máquinas e equipamentos industriais, domésticos, laser,
veículos, etc.);
- Software pessoal (processadores de texto, planilhas,
processadores gráficos, etc..); software de entretenimento:
(Jogos) ;
- Software de comunicação e groupware: (apoio ao
trabalho cooperativo: correio eletrônico, etc.
- Software de entretenimento...

5
Tipos de sistemas de software
Software comercializado
 Software produto
Baratos e obtidos rapidamente;

 Software sob medida


Caros e de obtenção demorada;

A principal diferença está na origem dos requisitos.


Os requisitos do software produto são definidos pelo
pessoal de marketing, enquanto que os do feito sob
medida são objeto de uma negociação entre o
cliente e o desenvolvedor.

Problemas de Qualidade do software


Apesar da vantagem competitiva que podem
proporcionar, resta ainda uma desconfiança quando a
tarefa é criar ou adquirir um novo software.
A “crise do software” do final dos anos 60 evidenciou os
seguintes problemas...
 Baixa qualidade
Insatisfação de compradores e usuários com o produto
final:
A visão “vaga” dos requisitos ocorre muitas vezes devido a
problemas de comunicação (como comunicar idéias?);

Qualidade suspeita
Critérios de qualidade imaturos;

Problemas de Qualidade do software


 Cultura de “desenvolvimento”
A ênfase está em escrever código, improvisar e criar
soluções imediatas;
Pouca importância é dada a um programa de validação e
verificação sistemático e completo;
Seguindo paradigmas clássicos de desenvolvimento, só é
possível avaliar a qualidade do software quando ele
estiver pronto;

6
Problemas de Qualidade do software
 Baixa produtividade
A produtividade não acompanha a demanda;
O emprego de técnicas de engenharia de software aliado ao emprego
de ferramentas CASE (Computer Aided Software Engineering) é
insuficiente;
 Na maior parte dos casos o software tem sido refeito repetidas
vezes e não a partir de componentes reutilizáveis. Os catálogos de
componentes de software prontos são muito pouco utilizados.

Estimativas incorretas
As estimativas de tempo e de custo de desenvolvimento são muito
imprecisas;
Com poucos dados históricos sobre o processo de desenvolvimento
as estimativas só podem ser ruins;

Problemas de Qualidade do software


 Dificuldade de manutenção:
O software é muito difícil de ser
mantido e atualizado (a
manutenção é a causa de muitos
problemas de qualidade);
Diferentes de outras coisas
que as pessoas constroem não
existem “peças de reposição”;
Toda a falha do software
indica um erro de projeto:
A manutenção do software se
referindo ao processo de
desenvolvimento envolve
consideravelmente mais
complexidade do que a
manutenção do hardware.

Mitos e realidades
A descrição geral dos objetivos é suficiente para
começar a escrever programas;
A visão incompleta ou incorreta dos requisitos é a principal
causa de fracasso no desenvolvimento do software.
Se o cronograma atrasar basta aumentar a equipe de
desenvolvimento;
Pode atrasar mais ainda devido a necessidade de
treinamento e comunicação;
A meta do desenvolvimento é um programa que
funcione;
A documentação e medidas históricas estão na base de
desenvolvimentos bem sucedidos!

7
Qualidade do software hoje
As coisas melhoraram nas últimas décadas, mesmo
que orçamentos, prazos e requisitos continuem
sendo desrespeitados...
Os recursos e o ciclo de vida são cada vez mais apertados
enquanto que as exigências (convergência digital) são
cada vez maiores.

O desafio é de desenvolver o melhor sistema com o


mínimo de recursos.
Otimização: Qualidade com Produtividade!
Engenharia de Software!

Engenharia de software
Conjunto de teorias, métodos e ferramentas
necessárias para o desenvolvimento de software
com qualidade e produtividade.
Surgiu na década de 60 como reação à crise do software
que se assentou com o surgimento de sistemas de
terceira geração (distribuídos, embarcados, de
comunicação, inteligentes, ...) cada vez maiores e
complexos..
Os orçamentos estouravam, os prazos não eram
compridos e os requisitos não eram respeitados ...

Engenharia de software
MMétodos:
todos descrições sobre como proceder frente a um
amplo conjunto de atividades: planejamento; análise de
requisitos; concepção e projeto; implementação;
codificação; testes e manutenção (RUP);
TTécnicas:
cnicas são procedimentos definidos no âmbito de
uma etapa de um método; definem uma seqüência de
atividades, os produtos a serem entregues, os controles
que ajudam a assegurar a qualidade, etc... (OMT, SADT,
testes de interação, etc...)
Ferramentas:
Ferramentas apoio aos métodos e técnicas. Podem ser
Ferramentas
informatizados (CASE) ou não, como no caso de
formalismos, modelos, conhecimentos, etc.

8
Este curso de engenharia de software
Conteúdos
Introdução
Visão geral da Qualidade de Software
Qualidade do Processo: Normas ISO 9000, 15504, 12207, CMMI
Qualidade do Produto: Normas ISO 25000 (9126) e 9241
Qualidades do Produto
Modularização e Reutilização; arquiteturas, padrões de projeto, componentes;
Ergonomia do software e usabilidade;
Qualidades do Processo
Paradigmas para o ciclo de vida e o processo unificado;
Gestão do projeto: estimativas, riscos;
Engenharia de requisitos;
Projeto de IHC – Interfaces Humano-Computador
Processo de testes;
Controle de configuração;
Manutenção e o controle de alterações;
Fábrica de Software;
Automação do processo: Ferramentas CASE

Este curso de engenharia de software


Processos didáticos
Aulas expositivas;
Atividades:
Trabalhos práticos em aula e em casa;
Pesquisas com seminários em aula;
Leitura e síntese;

Sistema de Avaliação
Provas : 60%
Atividades : 20%
Seminários: 20%

Este curso de
engenharia de
software
Programa
de aulas

Você também pode gostar