Você está na página 1de 31

Engenharia de

Software

Professores ADS e CCP


Perguntas Básicas

• O que é software?

• O que é engenharia de software?

2
Perguntas Básicas

• O que é software?
– São os programas de computador e sua
documentação associada. Produtos de
software são desenvolvidos para um cliente
específico ou para o mercado.

• O que é engenharia de software?


– É uma disciplina que se ocupa de todos os
aspectos da produção de software.

3
Sobre a disciplina

Perguntas Básicas

• Qual é a diferença entre engenharia de software e


ciência da computação?

• Qual a diferença entre engenharia de software e


engenharia de sistemas?

4
Sobre a disciplina

Perguntas Básicas

• Qual é a diferença entre engenharia de software e


ciência da computação?
– A ciência da computação se ocupa da teoria e dos
fundamentos; a engenharia de software trata da
praticidade de desenvolver e fornecer software útil.
• Qual a diferença entre engenharia de software e
engenharia de sistemas?
– A engenharia de sistemas se ocupa de todos os
aspectos relacionados.ao desenvolvimento de
sistemas com base em computadores,incluindo
hardware, software e engenharia de processos. A
engenharia de software é parte desse processo.
5
Perguntas Básicas
• O que é um processo de software?
– É um conjunto de atividades, cuja meta é o
desenvolvimento ou a evolução do software.

• O que é um modelo de processo de software?


– É uma representação simplificada de um processo de
software, apresentada a partir de uma perspectiva
específica.

• Quais são os custos da engenharia de software?


– Aproximadamente 60 por cento dos custos são
relacionados ao desenvolvimento e 40 por cento são
custos referentes aos testes.
6
Sobre a disciplina

Perguntas Básicas

• O que são métodos de engenharia de software?


– São abordagens. estruturadas para o desenvolvimento de
software, que incluem modelos de sistemas, notações, regras,
recomendações de projetos e diretrizes de processos.
• O que é CASE: computer aided software
engineering?
– São sistemas de software destinados a proporcionar apoio
automatizado às atividades de processo de software.
• Quais são os atributos de um bom software?
– O software deve proporcionar ao usuário a funcionalidade e o
desempenho requerido e deve ser passível de manutenção,
confiável e de fácil uso.

7
Perguntas Básicas

• Quais são os principais desafios enfrentados pela


engenharia de software?
– Lidar com sistemas legados, atender à crescente diversidade
e atender às exigências quanto a prazos de entrega
reduzidos.

8
Modelo de Processo de Software
• Um processo de software é um conjunto de atividades e
resultados associados que geram um produto de
software.

– Especificação do software: A funcionalidade do software


e as restrições em sua operação devem ser definidas.
– Desenvolvimento do software: O software deve ser
produzido de modo que atenda a suas especificações.
– Validação do software: O software tem de ser validado
para garantir que ele faz o que o cliente deseja.
– Evolução do software: O software deve evoluir para
atender às necessidades mutáveis do cliente.
9
Modelo de Processo de Software

• Um modelo de workflow: Ele mostra a sequência de


atividades no processo, juntamente com suas entradas,
saídas e dependências. As atividades, nesse modelo,
representam ações humanas.

• Um modelo de fluxo de dados ou de atividade: Ele


representa o processo como um conjunto de atividades,
cada uma das quais realiza alguma transformação de dados.
Esse modelo mostra como a entrada para o processo, tal
como uma especificação, é transformada em uma saída,
como um projeto. As atividades, nesse caso, podem estar
em um nível inferior ao das atividades em um modelo de
workflow. Elas podem representar transformações
realizadas por pessoas ou por computadores. 10
Modelo de Processo de Software
• Um modelo de papel/ação: Esse modelo representa os
papéis das pessoas envolvidas no processo de software e as
atividades pelas quais elas são responsáveis.
• O modelo em cascata: Ele considera as atividades mostradas
anteriormente e as representa como fases separadas do
processo, como especificações de requisitos, projeto de
software, implementação, testes e assim por diante.
• Desenvolvimento evolucionário: Essa abordagem intercala
as atividades de especificação, desenvolvimento e validação. Um
sistema inicial é rapidamente desenvolvido a partir de
especificações muito abstratas. Em seguida, ele é refinado com
as informações do cliente, a fim de produzir um sistema que
satisfaça a suas necessidades. O sistema pode então ser
entregue.
11
Modelo de Processo de Software

• Transformação formal: Essa abordagem se baseia na


produção de uma especificação formal matemática do
sistema e na transformação dessa especificação,
utilizando-se métodos matemáticos, em um programa.

• Montagem de um sistema a partir de componentes


reutilizáveis: Essa técnica supõe que partes do sistema já
existam. O processo de desenvolvimento do sistema se
concentra na integração dessas partes, em vez de
desenvolvê-las a partir do zero.

12
Métodos de Engenharia de Software

• Um método de engenharia de software é uma abordagem


estruturada para o desenvolvimento de software, cujo
objetivo é facilitar a produção de software de alta
qualidade, apresentando uma boa relação custo-benefício.
– UML (unified modeling language - linguagem de
modelagem unificada).

13
Componentes do Método
Componente Descrição Exemplo
Descrições de Descrições de modelos de sistema a Modelos de objeto, modelos de
modelos de serem desenvolvidos e a notação fluxo de dados, modelos de
sistema utilizada para definir esses modelos máquinas de estado, etc.

Restrições que sempre se aplicam a Cada entidade em um modelo de


Regras
modelos de sistemas sistema deve ter um único nome

Heurísticas que caracterizam (ou


distinguem) a boa prática de projeto Nenhum objeto deve ter mais
Recomendações nesse método. Seguindo essas que sete sub-objetos
recomendações, deve-se chegar a um associados a ele.
modelo de sistema bem-organizado.

Descrições das atividades que podem Atributos de objetos devem ser


Diretrizes de ser seguidas para desenvolver os documentados antes de serem
processo modelos de sistema e a organização definidas as operações a um
dessas atividades. objeto.

14
Ferramentas CASE

• Diferentes tipos de programas utilizados para apoiar as


atividades de processo de software, como a análise de
requisitos, a modelagem de sistema, a depuração e os
testes.

15
Atributos de um bom Software

• Refletem seu comportamento quando em


funcionamento, a estrutura e a organização do
programa fonte e também a documentação associada.

– Exemplos desses atributos (às vezes, chamados de


atributos não funcionais) são o tempo de resposta do
software à consulta de um usuário e a facilidade de
compreensão do código do programa.

16
Atributos Essenciais de um bom Software
Característica do produto Descrição
O software deve ser escrito de modo que possa evoluir para
atender às necessidades mutáveis dos clientes. Esse é um
Facilidade de manutenção atributo crucial, porque as modificações em um software
são uma consequência inevitável de um ambiente de
negócios em constante mutação.
O nível de confiança do software tem uma gama de
características que incluem confiabilidade, proteção e
Nível de confiança
segurança. O software confiável não deve ocasionar danos
físicos ou econômicos, no caso de um defeito no sistema.
O software não deve desperdiçar os recursos do sistema,
como memória e ciclos do processador. A eficiência,
Eficiência
portanto, inclui a rapidez de resposta, o tempo de
processamento, a utilização da memória, entre outros.
O software deve ser utilizável, sem esforços indevidos, pelo
tipo de usuário para quem foi projetado. Isso significa que
Facilidade de uso
ele deve dispor de uma interface apropriada com o usuário e
de documentação adequada.

17
Propriedades de Sistemas

• Significa que o sistema é mais do que simplesmente a


soma de suas partes. Alguns exemplos:

– o peso total do sistema: Esse é um exemplo de uma


propriedade emergente, que pode ser computada a partir de
propriedades de componentes individuais.
– a confiabilidade do sistema: Depende da confiabilidade
dos componentes do sistema e do relacionamento entre eles.
– a facilidade de uso de um sistema: Essa é uma
propriedade muito complexa, que não depende só do hardware e
do software do sistema, mas também dos operadores do sistema
e do ambiente em que ele é usado.

18
Propriedades de Sistemas

• Propriedades funcionais, que aparecem quando todas as


partes de um sistema trabalham em conjunto para atingir algum
objetivo.

• Propriedades emergentes não funcionais, como


confiabilidade, desempenho, segurança e proteção. Essas
propriedades se relacionam com o comportamento do sistema em
seu ambiente operacional.

– Confiabilidade de hardware.
– Confiabilidade de software.
– Confiabilidade do operador.
19
Hierarquia de Sistemas

20
Mudanças
• Mudanças no processo: O sistema requer mudanças nos
processos de trabalho, no ambiente?
– Se isso acontecer, certamente será exigido treinamento específico.

• Mudanças nas tarefas: Os sistemas diminuem a habilidade dos


usuários em um ambiente ou faz com que eles modifiquem o modo
como trabalham?
– Se esse for o caso, eles podem resistir ativamente à introdução do
sistema na organização.

• Mudanças organizacionais: O sistema modifica a estrutura de


poder político em um organização?
– Se uma organização depende de um sistema complexo, aqueles que
sabem como operar o sistema têm poder político.
21
Modelagem de Sistemas

22
Funcionalidade de Subsistemas

Subsistemas Descrição

Sensor de movimento Detecta movimento nos cômodos monitorados pelo sistema.

Sensor de porta Detecta a abertura de porta nas portas externas do edifício.

Controlador de alarme Controla a operação do sistema.

Sirene Emite um aviso sonoro quando um intruso é detectado.

Sintetiza uma mensagem de voz dando a localização do possível


Sintetizador de voz
intruso.

Discador de telefone Faz as chamadas externas para avisar a segurança, a polícia, etc.

23
Componentes Funcionais de Sistemas

• Componentes de sensores coletam informações do


ambiente do sistema.
• Componentes de atuadores causam alguma mudança no
ambiente do sistema.
• Componentes de computação são componentes que,
considerando alguma entrada (input), realizam algumas
computações sobre essa entrada e produzem uma saída
(output).

24
Componentes Funcionais de Sistemas

• Componentes de comunicação são componentes cuja


função é permitir que outros componentes do sistema se
comuniquem entre si.
• Componentes de coordenação são os componentes de
sistema cuja função é coordenar operação de outros
componentes.
• Componentes de interface são os componentes que
transformam a representação utilizada por um
componente de sistema em uma representação
empregada por outro componente.

25
Tipos de Componentes
Componente Descrição Exemplo

Sensor de
Detecta movimento em um espaço protegido, detecta
Sensor movimento, sensor
abertura de uma porta protegida.
de porta.

Atuador Sirene. Aviso sonoro de intrusão.

Aciona o centro de controle externo para emitir um


Discador de
Comunicação aviso de intrusão. Recebe comandos do centro de
telefone.
controle.

Coordena todos os componentes do sistema. Atua nos


Controlador de
Coordenação comandos do painel de controle e do centro de
alarme.
controle.

Interface Sintetizador de voz. Sintetiza mensagem dando a localização da intrusão.

26
Processo de Engenharia de Sistemas

27
Requisitos

• Requisitos funcionais abstratos As funções básicas


que o sistema deve oferecer são definidas em um nível
abstrato.

• Propriedades de sistemas Estas são propriedades


emergentes de sistemas não funcionais, como foi
discutido anteriormente. Elas podem incluir propriedades
como disponibilidade, desempenho, segurança, entre
outras.

• Características que o sistema não deve exibir Às


vezes, é tão importante especificar o que o sistema não
deve fazer quanto o que ele deve fazer.
28
Projeto de Sistemas
• Agrupar os requisitos: Os requisitos são analisados e reunidos
em grupos relacionados.
• Identificar subsistemas: São identificados diferentes
subsistemas que podem, individual ou coletivamente, atender aos
requisitos.
• Atribuir requisitos a subsistemas: Os requisitos são atribuídos
a subsistem as. Em princípio, isso deverá ser direto, se o
agrupamento dos requisitos for utilizado para orienta a identificação
de subsistemas.
• Especificar a funcionalidade de subsistemas: As funções
específicas fornecidas por cada subsistema são definidas.
• Definir as interfaces de subsistemas: Essa tarefa envolve a
definição das interfaces que são fornecidas e exigidas por cada
subsistema.
29
Processo de Suprimento de Sistemas Software

30
Obrigado!

www.cruzeirodosul.edu.br
www.cruzeirodosulvirtual.com.br
31

Você também pode gostar