Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

60

description

resumo sobre conceitos gerais de engenharia

Transcript of Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Page 1: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software
Page 2: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de

Engenharia de SoftwareProf. Msc. Thiago Salhab Alves

Page 3: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Todos os países dependem de sistemas

complexos baseados em computadores.

• A manufatura e a distribuição industrial estão

completamente automatizados.

• Produzir software e manter o software dentro

de custos adequados é essencial para o

funcionamento da economia nacional e

internacional.

• A Engenharia de Software é um ramo da

engenharia cujo foco é o desenvolvimento

dentro de custos adequados de sistemas de

software de alta qualidade.3

Page 4: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Software é algo abastrato e intangível.

• Não é limitado por materiais ou controlado por

leis da física ou por processos de manufatura.

• A falta de restriçõe naturais significa que o

software pode facilmente se tornar

extremamente complexo e muito difícil de ser

compreendido.

• O conceito Engenharia de Software foi proposto

inicialmente em 1968, em uma conferência

organizada para discutir o que foi chamado de

“crise de software”.

4

Page 5: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• A crise foi resultante da introdução de novo

hardware de computador baseado em circuitos

integrados.

• O seu poder fez com que softwares, até então

inviáveis de serem desenvolvidos, se

tornassem viáveis.

• O software resultante era ordens de grandeza

maior e mais complexo que sistemas

anteriores.

• A construção desses sistemas mostrou que o

desenvolvimento informal de software não era

suficiente.5

Page 6: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Projetos importantes apresentavam anos de

atrazo.

• O software, cujo custo superava as previsões,

não era confiável, difícil de manter e seu

desempenho era insatisfatório.

• O desenvolvimento de software estava em

crise.

• Os custos de hardware estavam caindo e de

softwares aumentando rapidamente.

• Novas técnicas e métodos eram necessários

para controlar a complexidade dos grandes

sistemas de software.6

Page 7: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Essas técnicas tornaram-se parte da

engenharia de software.

• Porém muitas empresas não aplicam essas

técnicas de forma efetiva, produzindo softwares

de baixa confiabilidade, com atraso e com

custo além do orçamento.

7

Page 8: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

O que é software?

•Muitas pessoas associam o termo software aos

programas de computadores.

•Este é uma visão muito restritiva.

•Software não é apenas o programa, mas todos os

dados de documentação e configuração

associados, necessários para que o programa

opere.

•Um sistema de software consiste, geralmente, de

um conjunto de programas separados; arquivos de

configuração; documentação do usuário.

8

Page 9: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

O que é Engenharia de Software?

•É uma disciplina de engenharia relacionada com

todos os aspectos da produção de software,

desde os estágios iniciais de especificação do

sistema até sua manutenção, depois que ester

entrar em operação.

9

Page 10: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

O que é processo de software?

• É um conjunto de atividades e resultados

associados que produz um produto de software.

• Existem quatro atividades fundamentais de

processo que são comuns a todos os processos

de softwares:

• Especificação de software: clientes e engenheiros

definem o software a ser produzido e as retrições

para a sua operação;

• Desenvolvimento de software: o software é projetado

e programado.

10

Page 11: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Validação de software: na qual o software é

verificado para garantir que é o que o cliente deseja.

• Evolução de software: o software é modificado para

se adaptar às mudanças dos requisitos do cliente e

do mercado.

11

Page 12: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

12

Page 13: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Paradigmas de desenvolvimento de

software

• Modelo em cascata: especificação de requisitos;

projeto de software; implementação; teste;

• Desenvolvimento iterativo: intercala as

atividades de especificação, desenvolvimento e

validação. Um sistema inicial é desenvolvido

rapidamente e refinado com as informações do

cliente, para produzir um sistema que satisfaça

as necessidades. O sistema, pode então, ser

entregue.

13

Page 14: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Engenharia de software baseada em

componentes: esta técnica supõe que partes do

sistemas já existam. O processo de

desenvolvimento concentra-se mais na

integração dessas partes do que no seus

desenvolvimento a partir do início.

14

Page 15: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Métodos de Engenharia de Software

• Um método de engenharia de software é uma

abordagem estruturada para desenvolvimento

de software cujo objetivo é facilitar a produção

de software de alta qualidade dentro de custos

adequados.

• Métodos como Análise Estruturada (DeMarco,

1978) e JSD (Jackson, 1983).

• Esses métodos tentaram identificar os

componentes funcionais básicos de um sistema;

os métodos orientados a funções ainda são

usados.15

Page 16: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Nas décadas de 1980 e 1990, os métodos

orientados a funções foram suplementados por

métodos orientados a objetos, como os

propostos por Booch (Booch, 1994) e

Rumbaugh (1991).

• As abordagens foram integradas em uma

abordagem única criada de acordo com a

Unified Modeling Language (UML).

16

Page 17: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Atributos de um bom software

• Facilidade de Manutenção: software deve ser

escrito de modo que possa evoluir para atender

às necessidades de mudança dos clientes.

• Confiança: o nível de confiança tem uma série

de características, incluindo confiabilidade,

proteção e segurança. Um software confiável

não deve causar danos físicos ou econômicos

no caso de falha no sistema.

17

Page 18: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Eficiência: o software não deve desperdiçar os

recursos do sistema, como memória e ciclos do

processador. A eficiência inclui tempo de

resposta, tempo de processamento e utilização

de memória.

• Usabilidade: o software deve ser usável, sem

esforço excessivo, pelo tipo de usuário para o

qual ele foi projetado. Apresentar uma interface

com o usuário e documentação adequadas.

18

Page 19: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Desafios da Engenharia de Software

• Desafio da heterogeneidade: cada vez mais é

necessário que os sistemas operem como

sistemas distribuídos, através de redes, que

incluem diferentes tipos de computadores, com

diferentes tipos de sistemas de apoio.

• Desafio da entrega: muitas técnicas tradicionais

da engenharia demandam tempo. O tempo que

necessitam é necessário para obter a qualidade

do software. O desafio é diminuir os tempos da

entrega sem comprometer a qualidade.

19

Page 20: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Desafio da confiança: é essencial que

possamos confiar no software. O desafio é

desenvolver tecnicas que demonstrem que o

software pode ter a confiança dos seus

usuários.

20

Page 21: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Engenharia de Sistemas

• É a atividade de especificação, projeto,

implementação, validação implantação e

manutenção do sistema.

21

Definição de

requisitos

Projeto do

sistema

Desenvolvimento

de subsistemas

Integração do

sistema

Instalação do

sistema

Evolução do

sistema

Desativação do

sistema

Page 22: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Processos de Software

• É um conjunto de atividades que leva à

produção de um produto de software.

• Os processos de software são complexos e,

como todos os processos intelectuais e

criativos, dependem do julgamento humano.

• A ferramentas de engenharia de software

(CASE – Computer Aided Software Engineering)

podem apoiar algumas atividades do processo.

22

Page 23: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Embora existam muitos processo de softwares,

algumas atividades fundamentais são comuns

a todos eles, como:

• Especificação de software: a funcionalidade do

software e as restrições sobre sua operação devem

ser definidas.

• Projeto e implementação de software: o software

que atenda à especificação deve ser produzido.

• Validação de software: o software deve ser validado

para garantir que ele faça o que o cliente deseja.

• Evolução de software: o software deve evoluir para

atender às necessidades mutáveis do cliente.

23

Page 24: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Modelos de processo de software

•Modelo em cascata: considera as atividades

fundamentais do processo, compreendendo

especificação, desenvolvimento, validação e

evolução, e as representa como fases de

processos separadas.

•Desenvolvimento evolucionário: intercala as

atividades de especificação, desenvolvimento e

validação. Um sistema inicial é desenvolvido

rapidamente baseado em especificações

abstratas. O sistema é refinado com as entradas

do cliente para produzir um sistema que satisfaça

as necessidades. 24

Page 25: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Engenharia de software baseada em

componentes: baseia-se na existência de um

número significativo de componentes

reusáveis. O processo de desenvolvimento do

sistema enfoca a integração desses

componentes, em vez de desenvolvê-los a

partir do zero.

25

Page 26: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Modelo em Cascata

• É o primeiro modelo de processo de

desenvolvimento de software publicado.

26

Page 27: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Os principais estágios do modelo demonstram

as atividades de desenvolvimento:

• Definição dos requisitos: os serviços, restrições

e objetivos do sistema são definidos por meio

de consulta aos usuários do sistema. Eles são,

portanto, definidos detalhadamente e servem

como uma especificação do sistema;

• Projeto do Software: divide os requisitos em

sisteams de hardware ou de software. Envolve

a identificação e a descrição das abstrações

fundamentais do sistema de software e suas

relações;27

Page 28: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Implementação e teste de unidade: o projeto de

software é realizado como um conjunto de

programas ou unidades de programa. O teste

unitário envolve a verificação de que cada

unidade atende às suas especificações;

• Integração e teste de sistema: as unidades

individuais de programa ou os programas são

integrados e testados como um sistema

completo para garantir que os requisitos de

software foram atendidos. Após os testes, o

sistema de software é liberado para o cliente.

28

Page 29: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Operação e Manutenção: geralmente esta é a

fase mais longa do ciclo de vida. O sistema é

instalado e colocado em operação. A

manutenção envolver a correção de erros não

detectados nos estágios anteriores do ciclo de

vida, no aprimoramento da implementação das

unidades de sistema e na ampliação dos

serviços de sistema à medido que novos

requisitos são identificados.

29

Page 30: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Desenvolvimento Evolucionário

• Baseia-se na ideia de desenvolvimento de uma

implementação inicial, expondo o resultado aos

comentários do usuário e refinando esse

resultado por meio de várias versões at;e que

seja desenvolvido um sistema adequado.

30

Page 31: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

31

Page 32: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Existem dois tipos fundamentais de

desenvolvimento evolucionário:

• Desenvolvimento exploratório: no qual o

objetivo do processo é trabalhar com o cliente

para explorar os requisitos e entregar um

sistema final. O desenvolvimento começa com

as partes do sistema compreendidas. O

sistema evolui por meio da adição de novas

características propostas pelo cliente.

32

Page 33: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Prototipação throwaway: na qual o objetivo do

processo de desenvolvimento evolucionário é

compreender os requisitos do cliente e, a partir

disso, desenvolver melhor definição de

requisitos para o sistema. O protótipo se

concentra na experimentação dos requisitos

mal compreendidos do cliente.

33

Page 34: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Do ponto de vista da engenharia e do

gerenciamento, a abordagem evolucionária tem

dois problemas:

• O processo não é viável. Os gerentes precisam de

produtos regulares para medir o progresso. Se os

sistemas são desenvolvidos rapidamente, não é

viável economicamente produzir documentos que

reflitam cada versão do sistema.

• Os sistemas são frequentemente mal estruturados.

A mudança contínua tende a corromper a estrutura

do software. A incorporação de mudanças de

software torna-se cada vez masi difícil e onerosa.

34

Page 35: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Para sistemas de pequeno e médio porte (até

500 mil linhas de código), penso que a

abordagem evolucionária seja o melhor método

de desenvolvimento.

• Os problemas de desenvolvimento

evolucionário tornam-se particulamente graves

para sistemas complexos de grande porte e de

longo ciclo de vida, nos quais diversas equipes

desenvolvem diferentes partes do sistema.

35

Page 36: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Engenharia de Software baseada em

componentes

• Depende de uma grande base de componentes

de softwares reusáveis e algum framework de

integração desses componentes.

• Esses componentes são sistemas comerciais

independentes que podem fornecer

funcionalidade específica, como a formatação

de texto ou um cálculo numérico.

36

Page 37: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Apresenta os seguintes estágios:

• Análise de componentes: dada uma

especificação de requisitos, é feita uma busca

pelos componentes para implementar essa

especificação.

• Modificação de requisitos: são modificados

para refletir os componentes disponíveis.

• Projeto de sistema com reuso: o framework do

sistema é projetado ou um framework existente

é reusada. Os projetistas levam em

consideração os componentes reusados.

37

Page 38: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Desenvolvimento e integração: o softwre que

não pode ser adquirido externamente é

desenvolvido e os componentes e os sistemas

são integrados para criar o novo sistema.

38

Page 39: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Iteração de processo

•Mudanças são inevitáveis em todos os projetos

de grande porte.

•Os requisitos de sistema mudam à medida que a

empresa que está adquirindo o sistema responde

às pressões externas.

•Quando novas tecnologias se tornam disponíveis,

projetos e implementações mudam.

39

Page 40: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Entrega Incremental

• A entrega incremental é uma abordagem

intermediária que combina as vantagens do

modelo em cascata.

• Em um processo de desenvolvimento

incremental, o cliente identifica, em linhas

gerais, os serviços a serem fornecidos pelo

sistema.

40

Page 41: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

41

Definir requisitos

iniciais

Atribuir requisitos

aos incrementos

Projetar arquitetura

de sistema

Desenvolver

incremento de

sistema

Validar incremento Integrar incremento

Validar sistema

Sistema incompleto

Sistema

final

Page 42: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Eles identificam quais serviços são mais

importante e quais são menos importantes.

• Assim, um número de incrementos de entrega

é definido, com cada incremento fornecendo

um subconjunto das funcionalidades do

sistema.

• A alocação dos serviços aos incrementos

depende da prioridade do serviço, com os

servicos de prioridade mais alta sendo

entregues primeiro.

• Após um incremento ser concluído e entregue,

os clientes podem colocá-lo em operação. Isso

significa que eles têm com antecedência a

entrega de parte da funcionalidade do sistema.

42

Page 43: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• À medida que novos incrementos são

concluídos, eles são integrados aos já

existentes, de tal forma que a funcionalidade do

sistema é aprimorada a cada incremento

entregue.

• O processo de desenvolvimento incremental

tem uma série de vantagens:

• Os clientes não precisam esperar até a entrega do

sistema inteiro para se beneficiarem dele. O primeiro

incremento satisfaz os requisitos mais críticos e,

dessa forma, é possível usar o software

imediatamente.

43

Page 44: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Os clientes podem usar os incrementos iniciais como

protótipos e ganhar experiência, obtendo

informações sobre os requisitos dos incrementos

posteriores do sistema.

• Existe um risco menor de falha geral do projeto.

Embora possam ser encontrados problemas em

alguns incrementos, é provável que alguns sejam

entregues com sucesso aos clientes.

44

Page 45: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Problemas com a entrega Incremental:

• Os incrementos devem ser relativamente pequenos;

• A maior parte dos sitemas requer um conjunto de

recursos básicos usados por diferentes partes do

sistema;

• Uma variante dessa abordagem incremental é

denominada extreme programming.

• Ela se baseia no desenvolvimento e na entrega

de incrementos muito pequenos de

funcionalidade, envolvimento do cliente no

processo, aprimoramento constante de código

e programação em pares.45

Page 46: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Desenvolvimento em espiral

• O modelo em espiral do processo de software

foi orieginalmente proposto por Boehm.

• Em vez de apresentar o processo de software

como uma sequência de atividades com algum

retorno entre uma atividade e outra, o processo

é representado como um espiral.

• Cada loop na espiral representa uma fase do

processo de software.

46

Page 47: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Cada loop na espiral está dividido em quatro

setores:

1. Definição de objetivos: os objetivos específicos

dessa fase do projeto são definidos. As

restrições sobre o processo e o produto são

identificadas e um plano detalhado de

gerenciamento é elaborado.

2. Avaliação e redução de riscos: para cada risco

de projeto identificado, uma análise detalhada é

realizada. Providências são tomadas para

reduzir o risco.

47

Page 48: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

3. Desenvolvimento e Validação: após a avaliação

de risco, um modelo de desenvolvimento para o

sistema é selecionado.

4. Planejamento: o projeto é revisado e uma

decisão é tomada para prosseguimento ao

próximo loop da espiral. Se a decisão for pelo

prosseguimento, serão elaborados planos para a

próxima fase do projeto.

48

Page 49: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

49

Page 50: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• A principal diferença entre o modelo em espiral

e os outros modelos do processo de software é

o reconhecimento explícito do risco no modelo

em espiral.

• Risco significa simplesmente algo que pode dar

errado. Por exemplo, se a intenção for usar

uma nova linguagem de programação, um risco

é que os compiladores disponíveis não sejam

confiáveis ou não produzam código-objeto

suficientemente eficaz.

50

Page 51: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Especificação de software

•A especificação de software ou engenharia de

requisitos é o processo para compreender e definir

quais serviços são necessários e identificar as

restrições de operação e de desenvolvimento do

sistema.

•A engenharia de requisitos é um estágio

particularmente crítico do processo de software,

pois os erros conduzem inevitavelmente a

problemas posteriores no projeto e na

implementação do sistema.

51

Page 52: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Esse processo leva à produção de um

documento de requisitos, que é a especificação

do sistema.

52

Page 53: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Existem quatro fases principais no processo de

engenharia de requisitos:

• Estudo de viabilidade: é feita uma avaliação

para verificar se as necessidades dos usuários

identificadas podem ser satisfeitas por meio

das tecnologias atuais de software e harware.

O estudo considera se o sistema proposto terá

custo adequado do ponto de vista comercial e

se pode ser desenvolvido.

53

Page 54: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Elicitação e Análise de Requisitos: é o processo

de derivação de requisitos de sistema através

da observação de sistemas existentes,

discussões com usuários potenciais e

compradores. Pode envolver o

desenvolvimento de um ou mais modelos de

sistema e protótipos.

• Especificação de Requisitos: atividade de

traduzir as informações coletadas durante a

atividade de análise em um documento que

define um conjunto de requisitos

54

Page 55: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Validação de requisitos: essa atividade verifica

os requisitos em relação ao realismo,

consistência e abrangência. Durante esse

processo, erros no documento de requisitos

são inevitavelmente descobertos. Devem,

então ser feitas modificações para corrigir

esses problemas.

55

Page 56: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

Projeto e implementação de software

• É o processo de conversão de uma

especificação de um sistema em um sistema

executável.

• Um projeto de software é a descrição da

estrutura de software a ser implementada, dos

dados que são partes do sistema, das interfaces

entre os componentes do sistema.

56

Page 57: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

57

Page 58: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• As atividades específicas do processo de

projeto são:

• Projeto de arquitetura: os subsistemas

constituintes do sistema e os seus

relacionamentos são identificados e

documentados.

• Especificação abstrata: para cada subsistema,

são produzidas um especificação abstrata dos

serviços e as retrições sob as quais ele deve

operar.

58

Page 59: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Conceitos Gerais de Engenharia de Software

• Projeto de Interface: para cada subsistema é

projetada e documentada a interface com

outros subsistemas. A especificação de

interface não deve ser ambígua pois ela

permite que o subsistema seja usado sem que

se tenha conhecimento da sua operação.

• Projeto de componente: os serviços alocados

aos componente e as interfaces desses

componentes são projetadas.

• Projeto de estruturas de dados: as estruturas

de dados usadas são projetadas.

• Projeto de algoritmo: os algoritmos usados são

projetados. 59

Page 60: Aula 1 e 2 - Conceitos Gerais de Engenharia de Software

Bibliografia

• SOMMERVILLE, Ian. Engenharia de Software .

9ª ed. : Pearson, 2011.

60