Escolar Documentos
Profissional Documentos
Cultura Documentos
Software
cpadovani@fatecbt.edu.br
1
Significado
• Engenharia
– É o conjunto de atividades e funções de
um engenheiro, que vão da concepção e
do planejamento até a responsabilidade
pela construção e pelo controle dos
equipamentos de uma instalação técnica
ou industrial.
3
Definição
• Atualmente, essas tecnologias e
práticas englobam linguagens de
programação, bases de dados,
ferramentas, plataformas, bibliotecas,
padrões, processos e a questão da
Qualidade de Software.
4
Definição
5
Sistema
6
Sistema
7
Sistema
Exemplo
8
Categorias de softwares
• Sistemas Genéricos
• Sistemas Específicos
9
Produto de software
10
Começo da vida de um software
11
Pontos importantes da construção de um
software
do usuário.
• 2 - Software reutilizável.
12
Processo de desenvolvimento de um
software:
• 1 - Desenvolvimento: as funcionalidades
e as restrições à operacionalidade do
produto são especificadas e produzidas
13
Processo de desenvolvimento de um
software:
14
Processo de desenvolvimento de um
software:
17
Engenharia de software - Princípios
• Formalidade
• Abstração
• Decomposição
• Generalização
• Flexibilização
18
Engenharia de software - Princípios
• Formalidade:
• Criatividade x Formalidade
• Produto = realidade das necessidades
19
Engenharia de software - Princípios
• Abstração
• Processo de identificação dos aspectos
importantes de um determinado fenômeno
• Diferentes abstrações da mesma realidade,
cada um fornecendo uma visão diferente
20
Engenharia de software - Princípios
• Decomposição
• A complexidade sendo tratada por meio da
subdivisão do processo em atividades
específicas
21
Engenharia de software - Princípios
• Generalização
• Possibilidade que a solução para o
problema tenha potencial para ser reutilizada
• Sistema específico para um genérico, mais
amplo (Exemplos: biblioteca, acadêmico)
22
Engenharia de software - Princípios
• Flexibilização
• Permitir que o produto possa ser modificado
com facilidade.
23
Paradigmas
24
Paradigmas
• Função:
• Diminuir os problemas encontrados no
processo de desenvolvimento do software.
25
Paradigmas
• Ciclo de vida clássico (sistemático e seqüencial)
26
Paradigmas
27
Paradigmas
28
Paradigmas
29
Paradigmas
• Ciclo de vida clássico
• 2 - Projeto
• Representação das funções do sistema
em uma forma que possa ser
transformada em um ou mais programas
executáveis.
• Produto: documento de especificação de
projeto
30
Paradigmas
31
Paradigmas
32
Paradigmas
33
Paradigmas
• Estudo de viabilidade
• Evitar de gastar tempo solucionando o
problema errado
• Objetivo: relação custos e benefícios
• Documento contendo:
• Definição do problema
• Soluções alternativas, com benefícios esperados
• Fontes necessárias, custos e datas de entrega
34
Paradigmas
35
Paradigmas
• Documentação
• Verificação e Validação
• Processo de controle de qualidade
• Objetivo: monitorar a qualidade do produto durante o
desenvolvimento
• Gerenciamento
• Controlar o processo de desenvolvimento
• Gerenciamento de recursos materiais e humanos
36
Paradigmas
38
Paradigma Evolutivo
• Desenvolvimento Exploratório
39
Paradigma Evolutivo
• Protótipo descartável
40
Paradigma Espiral
• Tenta englobar as melhores característica:
• Ciclo de Vida Clássico + Paradigma Evolutivo
+
ANÁLISE DE RISCO
41
• Paradigma Espiral
42
Áreas que influem e são influenciadas
na Engenharia de Software
• Teoria da computação
• Semântica formal
• Ex: Regras de controle de linha do trem
• Linguagens de programação
• Modularização/bibliotecas
• Desenvolvimento de compiladores
• Sistemas Operacionais
43
Áreas que influem e são influenciadas
na Engenharia de Software
• Banco de dados
• Gerenciamento de acesso concorrente
• Linguagem SQL
• Sistemas multiagentes (decomposição)
• Sistema de processamento de Textos (análise
sintática, semântica, pragmática, etc)
• Sistemas especialistas
44
EXTRAÇÃO DE REQUISITOS
Parte 2
45
Paradigmas
• Ciclo de vida clássico (sistemático e seqüencial)
46
Extração de requisitos
• Requisito
certo objetivo.
47
Extração de requisitos
OBJETIVOS/FUNÇÕES e as RESTRIÇÕES do
software.
48
Estudo de Caso
• Gostaria que fosse construído um sistema para monitorar a
temperatura e a pressão de pacientes UTI, que deverão ficar
ligados on-line à rede de computadores do hospital, que é
formada por um computador principal e vários terminais que
monitoram os pacientes. Se a temperatura ou pressão do
paciente lida pelo terminal se tornarem críticas, o computador
principal deverá mostrar uma tela de alerta com um histórico
das medidas realizadas para o paciente. Um aviso sonoro
deve ser ativado nesse caso.
•A verificação da pressão é feita comparando-se a pressão
do paciente com um valor padrão de pressão (máximo e
mínimo) a ser digitado pelo responsável e verificando-se se a
pressão medida está dentro dos parâmetros considerados
normais para o paciente (valores próximos ao máximo e
mínimo são permitidos). Temos vários sistemas on-line no
computador e todos devem rodar ao mesmo tempo.
49
Estudo de Caso
50
Estudo de Caso
• FUNÇÕES (requisitos funcionais):
• Monitorar temperatura e pressão;
•Controle temp. e pressão (máximo e mínimo),
providenciar um aviso sonoro de temperatura e
pressão críticas.
• Entrada de pressão e temperatura máx e min.
51
Extração de requisitos
52
Extração de requisitos
Fases:
• Entendimento do domínio
53
Extração de requisitos
Dificuldades:
• Quanto mais complexo for o produto, mais
difícil se torna o processo.
• Complexidade pode ser tratada com o
princípio da decomposição.
54
Extração de requisitos
Dificuldades:
• Falta de conhecimento do usuário das suas reais
necessidades.
• Falta de conhecimento do desenvolvedor do
domínio do problema.
• Domínio do processo de extração pelos
desenvolvedores.
• Comunicação inadequada entre desenvolvedores
e usuários (mal-entendido entre usuários e desenvolvedores)
55
Extração de requisitos
Dificuldades:
• Dificuldade de o usuário tomar decisões.
• Problemas de comportamento (omissão de
requisitos por insegurança dos usuários).
56
Extração de requisitos
Participantes:
• Desenvolvedor.
ambiente.
57
Extração de requisitos
58
Extração de requisitos
Técnicas informais:
Entrevistas
Fases:
1. Identificação dos candidatos para entrevista.
2. Preparação para uma entrevista.
3. Condução da entrevista.
4. Finalização da entrevista.
59
Extração de requisitos
Técnicas informais:
Brainstorming
Fases:
1. Geração de idéias.
2. Consolidação de idéias (filtragem).
Participantes.
Finalidade:
Geração de visões do problema.
60
Extração de requisitos
Técnicas informais:
Brainstorming
Fases:
1. Geração de idéias.
• Proibido criticar as idéias.
• Número grande de idéias.
• Estímulo à idéias não convencionais.
• Estímulo a enriquecer outras idéias.
61
Extração de requisitos
Técnicas informais:
Brainstorming
Fases:
2. Consolidação das idéias.
• Organização.
• Revisão e esclarecimento.
• Adoção, junção e descarte.
• Priorização.
62
Extração de requisitos
Técnicas informais:
Brainstorming
Vantagens:
1. Estimula o pensamento imaginativo.
2. Interação social.
3. Fácil implementação e baixo custo.
Desvantagem:
1. Processo não estruturado (baixa qualidade).
63
Extração de requisitos
Técnicas informais:
Pieces
Ajuda na formulação das perguntas.
Sigla de:
• Desempenho (performance).
• Informação e dados.
• Economia.
• Controle.
• Eficiência.
• Serviços.
64
Extração de requisitos
Pieces
Desempenho (performance).
65
Extração de requisitos
Pieces
Informação e dados.
66
Extração de requisitos
Pieces
Economia.
67
Extração de requisitos
Pieces
Controle.
• Alerta de erros.
• Segurança – Controle de acesso.
• Auditoria.
68
Extração de requisitos
Pieces
Eficiência.
69
Extração de requisitos
Pieces
Serviços.
70
Extração de requisitos
Técnicas informais:
JAD (Joint Application Design)
Promover cooperação, entendimento e trabalho
em grupo.
Princípios:
1. Dinâmica de grupo.
2. Uso de técnicas visuais.
3. Manutenção do processo organizado e racional.
4. Utilização de documentação-padrão que é
preenchida e assinada por todos os participantes.
71
Extração de requisitos
Técnicas informais:
JAD (Joint Application Design)
Participantes:
1. Líder (facilitador).
2. Engenheiro de requisitos.
3. Executor.
4. Representantes dos usuários.
5. Representantes de produtos de software.
6. Especialista.
72
Extração de requisitos
Técnicas informais:
JAD (Joint Application Design)
Fases:
1. Adaptação.
2. Sessão (definir objetivos, benefícios, estratégias,
restrições, segurança, auditoria, controle e o
escopo).
3. Finalização
73
Extração de requisitos
Técnicas informais:
Prototipagem
74
Extração de requisitos
Importância:
75
Modelos para especificação de sistemas
de software – Projeto
Parte 3
Modelo de função:
- DFD (Diagrama de Fluxo de Dados)
- UML (Unified Modeling Language)
É uma linguagem de modelagem não proprietária de terceira geração.
A UML não é uma metodologia de desenvolvimento, o que significa
que ela não diz para você o que fazer primeiro e em seguida ou
como projetar seu sistema, mas ela lhe auxilia a visualizar seu
desenho e a comunicação entre objetos.
76
Modelos para especificação de sistemas
de software – Projeto
Parte 3
Modelo de dados:
- DER / MER (Modelo Entidade
Relacionamento)
77
Implementação de Software
Parte 4
Referência bibliográfica:
Livro: Introdução a Informática Autor: Peter Norton
Capítulo: 13 – p. 442 - 491
78
Implementação de Software
79
Implementação de Software
Fluxograma
80
Implementação de Software
•Etapa de Implementação:
• Fase que ocorre a materialização de um
projeto de software.
• Onde o projeto é codificado em uma
determina linguagem.
81
Implementação de Software
• Linguagens:
• Baixo nível
• Alto Nível
82
Implementação de Software
Linguagem
Estruturada
(código-fonte)
•Rotinas:
•Procedimentos
•Funções
83
Implementação de Software
• Funcionamento
• Exemplos: BASIC , Bash, Perl, PHP, Asp, Python,
Euphoria, Forth, JavaScript, Logo, Lisp, Lua, MUMPS,
Ruby, Haskell, etc.
84
Implementação de Software
• Montadas
• Funcionamento
• Exemplo: Assembly
85
Implementação de Software
• Compiladas
• Funcionamento
• Exemplos: Cobol, Fortran, C, Pascal, VB, Clipper,
Dataflex, Java, etc.
86
Implementação de Software
Linguagens compiladas
87
Implementação de Software
Linguagem Assembly
88
Implementação de Software
Linguagem
Fortran
89
Implementação de Software
Linguagem
Cobol
90
Implementação de Software
Linguagem
Basic
Linguagem
...
Pascal
92
Implementação de Software
Linguagem
C
93
Implementação de Software
Linguagem
C++
POO
94
Implementação de Software
• Outras linguagens:
• Win32 / Client-Server:
• Object Pascal (Delphi).
• Visual Basic
• Internet:
• ASP
• Html ???
• PHP
95
Implementação de Software
• Funcionamento:
• Win32 x Internet
96
Implementação de Software
• Outras linguagens:
• JAVA
• Criação: Sun Microsystems - 1991
• Alto nível – similar ao C++
• POO
• Independência de plataforma (portabilidade)
• JVM (Java Virtual Machine)
97
Implementação de Software
• JAVA e .NET
• Bytecode
• Resultado de um processo semelhante ao
dos compiladores de código-fonte que não é imediatamente
executável.
• bytecode será interpretado em uma máquina virtual, que fará a
execução.
• bytecode é um estágio intermédio entre o código-fonte e
a aplicação final.
98
Borland Delphi
• Não é apenas uma linguagem de
programação, mas um ambiente de
desenvolvimento integrado
– acesso a um editor de códigos
– ferramenta para construção da
interface gráfica
• formulários;
• botões;
• caixas de texto;
• menus;
• etc.
99
Inprise/Borland Delphi
4.0
• Linguagem Object Pascal
• Aplicações “visuais” com o uso de
componentes
• Componentes possuem
– Propriedades (properties)
– Métodos (methods)
– Eventos (events)
• Orientação a Objetos (OO) e
Eventos
100
Ambiente
Janela
Principal
Object
Inspector Form1
101
Ambiente
1) Janela Principal
Barra de título
Barra de menu
Caixa de Paleta de
Ferramentas componentes
102
Ambiente
2) Object Inspector
Acesso direto às
propriedades e eventos
relacionados a um
componente ou
formulário.
103
Ambiente
3) Form1
– Formulário default, criado
automaticamente pelo Delphi
– O que o Delphi chama de formulário, é
na verdade uma janela de uma
aplicação Windows.
104
Ambiente
4) Editor de Código (Code Editor)
• Linguagem
Object Pascal;
• Normalmente não
está visível;
• Já cria
automaticamente
uma unidade de
código (unit)
default.
105
Ambiente
5) Janela de
Exploração de
Código (Code
Explorer)
– Acesso direto a vários
trechos do programa
(unit)
– Situada à esquerda
do Code Editor
106
Ambiente
• É no Editor de Códigos que você digitará os
comandos em Pascal. O Delphi já acrescenta
algumas linhas de código automaticamente.
• A criação da interface gráfica é apenas uma das
etapas necessárias à criação do aplicativo.
• É através dos códigos de programa que
conseguimos que a nossa aplicação se
comporte como desejamos.
• O objetivo das ferramentas visuais de
programação é simplificar o desenvolvimento
da interface.
107
Ambiente
• Uma aplicação no Delphi
contém
– Projetos *.dpr, que Project1.dpr
contém...
– Unidades de código *.pas
unit1.pas
(UNITs), que possuem...
unit1.dfm
108
Caixa de Ferramentas
Gravar tudo Adicionar/Remover
Abrir... arquivos no Projeto
Abrir
Novo... Gravar Projeto...
Ajuda
109
Object Pascal
unit Unit1;
Estrutura de um interface
programa uses Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs;
Seção de type
interface do TForm1 = class(TForm)
private
código { Private declarations }
public
{ Public declarations }
end;
Definição de
classes var Form1: TForm1;
implementation
{$R *.DFM}
Seção de
end.
implementação
110
Object Pascal
• Diretivas de Programação
– usadas para habilitar/desabilitar opções
do compilador
– são definidas em Project/Options
– ex: { $R *.DFM }
• diz que as propriedades do formulário
serão armazenadas em um arquivo
*.dfm (com o mesmo nome dado a
UNIT: unit1.pas => unit1.dfm)
111
Revisão de Pascal
• Comentários
{...}, (* ... *)
• uses
– especifica as unidades de código (units)
que serão usadas
• type
– definição de novos tipos e classes de
objetos
• var
– declaração de variáveis: integer, byte,
longint, word, char, boolean, string,
widestring, real, single, double, extended,
variant (qualquer tipo!)
112
Pascal
• Estruturas de Controle
–Sequência
–Condição (se...então)
–Repetição (enquanto...)
113
Pascal
• Estruturas Condicionais (IF)
simples composta
if condicao then if condicao then
bloco; bloco1
else
bloco2;
114
Pascal
• Algumas funções pré-definidas
– date (conforme armazenado no
sistema)
– time (conforme armazenado no
sistema)
– datetostr
– datetimetostr
– inttostr
– strtoint
– floattostr
– strtofloat
115
OO
• Programação OO (Orientada a
Objetos)
– Os objetos são a base da tecnologia
– Consistem de modelos (abstrações) de
objetos reais
– Preservam as características essenciais
de um objeto real: suas propriedades e
seu comportamento (métodos)
• Exemplos de linguagens OO
– Simula 67’, Smalltalk, C++, Delphi,
Java, etc.
116
OO
• O que é um Objeto ?
– é a representação de um objeto real
– é uma abstração
– tudo que é manipulável e/ou
manufaturável
– coisa, peça, artigo de compra e venda
– pode ser uma composição de outros
objetos
• Exemplos
• automóvel, pessoa, elevador, janela,
etc..
117
OO
1) Propriedades de um Objeto
– é o estado do objeto
– são atribuitos da “coisa”
– exemplo
• Em um automóvel temos
–ligado/desligado
–posição
–velocidade
–marca/modelo
–cor, placa, número de portas, etc.
118
OO
2) Métodos de um objeto
– representa o comportamento do objeto
– muda o estado do objeto
– exemplo
• Em um automóvel temos
–ligar/desligar
–acelerar
–freiar
–virar p/ esquerda
–virar p/ direita
119
OO
3) Eventos de um Objeto
– são acontecimentos que fazem o objeto
responder de determinada maneira
– alteram o estado e mudam o
comportamento
– exemplo
• Em um automóvel temos
– usuário...
» pisa no acelerador ou no freio
» vira o volante para esquerda ou
direita
» vira a chave na ignição para ON
ou OFF
120
OO
• Classe de Objetos
– Definição de um tipo de objetos
– Define a forma de se criar objetos
– É uma fábrica de objetos
– Todos os objetos de uma classe têm uma
estrutura idêntica, mas cada objeto terá
seus próprios atributos
– Exemplo
• Classe: CARROS (cor, portas, placa, posição,
velocidade, etc.)
• Objeto: carro vermelho/2
pts/XXX9999/(100,10)/100km/h...
121
OO
• Porque usar Objetos ?
– Simplicidade: os objetos escondem a
complexidade do código. Pode-se criar
aplicações sem se conhecer a
complexidade do código.
– Reutilização de código: um objeto,
depois de criado, pode ser reutilizado por
outras aplicações, e até extender suas
funções.
– Inclusão dinâmica: objetos podem ser
incluídos dinâmicamente durante a
execução, reduzindo o tamanho do arquivo
final.
122
OO
• Princípios básicos de uma linguagem
OO
1) Abstração
– é o processo de extrair as
características essenciais de um objeto
– a abstração de um objeto é diferente de
acordo com a visão de cada pessoa
– ex: livro
Livraria: autor, título, assunto, editora, preço
Transportadora: número de páginas, formato e
tipo de capa (=>peso)
123
OO
• Princípios básicos de uma linguagem OO
(cont.)
2) Encapsulamento
– é o processo de combinar dados e funções
relacionadas em um único objeto
– agrupa o estado do objeto e as funções que
ele é capaz de executar, e que alteram seu
próprio estado
– esconde a complexidade do código
– exemplo: radio.ligar := true;
radio.gravar(musica);
124
OO
• Princípios básicos de uma linguagem OO
(cont.)
3) Herança
– é o aproveitamento e extensão das
características de uma classe existente
– uma classe mais sofisticada herda as
características e funcionalidades de uma classe
básica
– exemplo: Classe CARROS_ESPORTIVOS
como herança da Classe CARROS
* Novos Atributos: turbo, barra de
proteção, rádio intercomunicador, temperatura do
óleo, etc.
125
OO
• Princípios básicos de uma linguagem OO
(cont.)
4) Polimorfismo
– é a propriedade de se utilizar um mesmo
nome ou forma para fazer coisas diferentes
– muito útil para escrever programas
versáteis, que possam lidar com vários tipos
diferentes de objetos
– exemplo: triângulo.Desenhe;
retângulo.Desenhe; Sobreposição
círculo.Desenhe; de métodos
reta.Desenhe;
126
Paradigmas
127
Paradigmas
POG
PROGRAMAÇÃO ORIENTADA A GAMBIARRAS
128
Paradigmas
• Fatores Favoráveis:
• Sistemas originalmente mal projetados.
• Clientes chatos.
• Falta de vontade.
• Falta de tempo.
• Gente que pensa que é DBA.
• Arquiteto de software achando que é o
máximo.
129
Paradigmas
• Fatores Favoráveis:
• Término do estoque de café.
• Aproximação do final da tarde.
• Véspera de feriado/fim de semana.
• Ter o Jackie Chan como chefe.
• Ter o MacGyver como coordenador.
• Governo descarregando regras ou MPs que entram
em vigor imediatamente.
• Requisitos dinâmicos.
130
Paradigmas
• Princípios da POG:
• Se funciona então tá certo.
• Deixe o amanhã para amanhã.
• Comentários são para amadores.
• Fé em Deus.
• 1337 H4XOR5 DUD3 LOL.
• Capacidade de abstração.
• Murphy.
131
Paradigmas
132