Projeto de Software
Projeto de Software
1. Fundamentos
2. Questões básicas
3. Arquitetura de software
4. Análise e avaliação de qualidade
5. Notações
6. Estratégias e métodos
SWEBOK
Fundamentos (1)

Conceitos, noções e terminologia que
formam a base para compreender o papel e
o escopo do projeto de software.
a) Conceitos
b) Contexto do projeto de software
c) Processo do projeto de software
d) Princípios do projeto de software
Conceitos (1a)
Projeto de software

[IEEE 610.12-90]

“o processo de definir a arquitetura, os
componentes, as interfaces e outras
características de um sistema ou
componente”,
e

“o resultado de tal processo”.
SWEBOK
Conceitos (1a)

Visões

Projeto de software como um problema maligno
(“wicked”)




Compreensão dos limites da atividade de “design” e de
projeto de software
Projeto como processo desordenado
Projeto de software como um processo heurístico
Projeto de software: ciência, engenharia ou arte?
O contexto do projeto de software (1b)

Projeto de software inclui atividades que se
encaixam entre:


análise de requisitos de software e
construção de software
An. de Requisitos

e interage com:

teste de software
Projeto de software
Construção
SWEBOK
O processo de projeto de software (1c)

Atividade que transforma uma descrição
sobre o quê se quer resolver (usando termos
relevantes ao domínio do problema)
em uma descrição que explica como resolver
o problema
O quê
documento de requisitos
Como
modelos e artefatos
de projeto
Projeto de software
SWEBOK
Perspectiva de processo

Atividades principais



Projeto arquitetural (“top-level design”)
Projeto detalhado
Entrada


documento(s) de especificação de requisitos
Resultados

um conjunto de modelos e artefatos de projeto que
documentam as principais decisões tomadas.
Projeto de software
Perspectiva de resultado

Projeto de arquitetura


Projeto detalhado


descrição de como o sistema é decomposto e organizado
em
componentes,
das
interfaces
entre
esses
componentes, dos relacionamentos entre componentes
descrição detalhada dos componentes até um nível de
detalhamento que permita a sua construção.
Resultados

um conjunto de modelos e artefatos de projeto que
documentam as principais decisões tomadas
RUP: Alguns artefatos de projeto
Projeto de Software

Artefatos de projeto




podem ser analisados e avaliados para se verificar
se atendem aos requisitos
podem ser examinados na busca por diversas
soluções alternativas e avaliação de trade-offs
podem ser usados para planejar atividades de
desenvolvimento subsequentes
são usados como entrada e ponto inicial para as
atividades de construção e testes
Princípios do projeto de software (1d)

Princípios considerados fundamentais para
diversas abordagens de projeto de software





abstração
decomposição e modularidade
acoplamento e coesão
ocultamento de informação e encapsulamento
separação entre interface e implementação
Questões básicas do projeto de software (2)

Questões que a maior parte das abordagens de
projeto de software precisam se preocupar



Critérios para decompor, organizar, e “empacotar” software
Atributos de qualidade (ex. desempenho, usabilidade)
Outros aspectos






Concorrência
Tratamento de erros
Distribuição de componentes
Interação e apresentação
Persistência de dados
...
Arquitetura de software (3)
A software architecture for a system is the
structure or structures of the system, which
consists of elements, their externally visible
properties, and the relationships among
them.
(Bass, Clements, Kazman 1998)

Outras definições
Projeto estratégico x tático

Projeto arquitetural (estratégico)


global design constraints, such as programming
paradigms, architectural styles, component-based
software engineering standards, design principles.
Projeto detalhado (tático)

local design constraints, such as design patterns,
programming idioms, and refactorings.
Arquitetura de software
Tópicos relacionados


visões e estilos arquiteturais
padrões de projeto


micro-arquiteturas
frameworks, famílias de produtos
Análise e avaliação de qualidade (4)
Vários
atributos
são
considerados
importantes para se obter um projeto de
software de boa qualidade

vários “ilities”


maintainability, portability, testability, traceability, etc.
vários “nesses”


correctness, robustness, fitness of purpose
Atributos de Qualidade

Atributos de qualidade externos


performance, security, availability, functionality,
usability
Atributos de qualidade internos

modifiability, portability, reusability, integrability
and testability
Técnicas para análise e avaliação de
qualidade

Várias ferramentas e técnicas podem ajudar
a assegurar a qualidade de um projeto de
software




Revisões de projeto
Análises estáticas
Simulação
Prototipagem
Medições

Medições podem ser utilizadas para investigar ou
estimar quantitativamente vários aspectos do
projeto de software


tamanho, estrutura, etc.
Medições
em
geral
dependem
da
abordagem/estratégia usada durante a atividade de
projeto:

métricas de projeto orientado a objetos
SWEBOK
Projeto de software
Notações (5)

Descrição estrutural






caixas e setas
architecture descr. languages
(ADLs)
collaboration responsibilities
cards (CRCs)
diagramas de classe
DER
etc.

Descrição
comportamental




diagramas de sequência
diagramas de colaboração
diagramas de estado
etc.
Diagrama de objeto e diagrama de classe
Diagrama de sequência
Diagrama de colaboração
Estratégias e métodos (6)

There exist various general strategies to help guide
the design process





divide-and-conquer
stepwise refinement
top-downn, bottom-up
abstraction, information hiding
use patterns
Estratégias e métodos (6)

Métodos são mais específicos e provêm:







a set of notations to be used with the method,
a description of the process to be used when following the
method and
a set of guidelines in using the method
Projeto funcional (estruturado)
Projeto orientado a objetos
Projeto baseado em componentes
Métodos formais
Referências

SWEBOK
Download

Projeto de software