Você está na página 1de 14

26/08/2014

Construo de Software
Fundamentos da Construo de
Software
Prof. Rubens de Castro Pereira, Me.
rubens@inf.ufg.br

Chapter 3

Software
Construction
IEEE Computer
Society
Prof. Rubens de Castro Pereira

26/08/2014

Code Complete
Um guia prtico para a
construo de
software, 2 ed.
Steven McConnell
Bookman

Prof. Rubens de Castro Pereira

Construo de Software
Introduo
Construo de
Software
(SWEBok v3.0)

Fundamentos da
Construo de
Software

Gerenciamento
da Construo

Consideraes
Prticas

Tecnologias da
Construo

Ferramentas de
Construo de
Software

Fonte: SWEBOK - Guide to the


Prof.
Software
Rubens de
Engineering
Castro PereiraBody of Knowledge Version 3.0.

26/08/2014

Fundamentos da Construo de
Software
1.
2.
3.
4.
5.

Minimizando Complexidade;
Antecipando Mudanas;
Construindo para Verificao;
Reuso;
Padres de Construo.

Prof. Rubens de Castro Pereira

1. Minimizando Complexidade
As pessoas so limitadas na capacidade de manter
estruturas e informaes complexas na memria de
trabalho, sobretudo por longo perodo de tempo;
A necessidade de reduzir a complexidade aplica-se
construo e testes de software
alcanada enfatizando a criao de cdigo simples e
legvel ao invs de cdigo muito inteligente;
alcanada usando:
Padres de construo;
Desenho modular;
Outras tcnicas para a melhor codificao do sistema.
Prof. Rubens de Castro Pereira

26/08/2014

1. Minimizando Complexidade

Prof. Rubens de Castro Pereira

1. Minimizando Complexidade
Metforas para um melhor entendimento do
desenvolvimento de software (cap. 2, McConnell)

Metforas na computao : Sala estril, vrus, cavalos de tria, bugs, worms, incndio, erros fatais
...
Metforas visuais descrevem fenmenos de software especficos.
Importncia: contribuem para um melhor entendimento dos problemas de desenvolvimento de
software .
As metforas tm como virtude:

Um comportamento esperado que compreendido por todos.


A comunicao desnecessria e os mal-entendidos so reduzidos.
O aprendizado e a educao so mais rpidos.
So uma maneira de interiorizar e abstrair conceitos, permitindo que o pensamento de algum esteja em
um plano mais alto e que os enganos de baixo nvel sejam evitados.

Caligrafia de software: escrita de software


Cultivo de software: criao de sistemas
Cultura de ostras de software: incremento de sistemas
Construo de software: edificao de software
Aplicao de tcnicas de software: a caixa de ferramentas intelectual

Prof. Rubens de Castro Pereira

26/08/2014

1. Minimizando Complexidade

Prof. Rubens de Castro Pereira

2. Antecipando Mudanas
A grande maioria dos sistemas so alterados ao
longo do tempo;
Antecipar as mudanas pode direcionar a
construo do software, tornando-o mais
adaptvel/ajustvel a elas;
Mudanas no ambiente operacional tambm
afetam o sistema em diversas maneiras;
Pensar em mudanas auxilia os engenheiros de
software na construo de software extensvel,
possibilitando melhorias sem afetar a estrutura.
Prof. Rubens de Castro Pereira

10

26/08/2014

Pr-requisitos da Construo
Pr-requisitos para a Definio do Problema
Pr-requisitos para os Requisitos
Pr-requisitos para a Arquitetura

Prof. Rubens de Castro Pereira

11

Pr-requisitos para a
Definio do Problema
Exposio clara do problema que o sistema deve
resolver.
Sinnimos: Viso do produto, Exposio da viso,
Exposio da misso, Definio do produto e
Documento de viso.
Visa resolver o problema certo.

Prof. Rubens de Castro Pereira

12

26/08/2014

Pr-requisitos para os Requisitos


Elaborar uma lista de requisitos explcitos.
Nem sempre os requisitos so estveis e,
portanto, deve-se estar atento s mudanas que
ocorrem nesta fase.
Lista de verificao de requisitos.

Prof. Rubens de Castro Pereira

13

Pr-requisitos para a Arquitetura


A Arquitetura a etapa de alto nvel do projeto de
software que acomodar as partes mais detalhadas do
design.
Sinnimos: arquitetura do sistema, design de alto nvel,
design de nvel superior.
A qualidade da arquitetura determina a integridade
conceitual do sistema, culminando na qualidade final
do sistema.
Desmembra o trabalho de modo eu vrios
desenvolvedores ou vrias equipes de
desenvolvimento possam trabalhar independente.
Prof. Rubens de Castro Pereira

14

26/08/2014

Pr-requisitos para a Arquitetura

Organizao do programa
Classes principais
Projeto dos dados
Regras de negcio
Projeto da interface com o usurio
Gerenciamento de recursos
Segurana
Desempenho
Extensibilidade (crescimento futuro)
Interoperabilidade

Internacionalizao/Localizao
(idioma local)
Entrada/sada
Processamento de erros
Tolerncia a falhas
Praticabilidade arquitetnica
A deciso entre comprar e construir
Decises de reutilizao
Estratgia de alterao
Qualidade arquitetnica geral

Prof. Rubens de Castro Pereira

15

3. Construindo para Verificao


Construo de software de modo que as falhas
possam facilmente ser localizadas pelos
engenheiros de software, testados e usurios.
Tcnicas especficas que suportam a construo
para verificao incluem padres de codificao
para suportar revises de cdigo e testes
unitrios, testes automatizados e restringindo o
uso de estruturas complexas ou de difcil
compreenso.
Prof. Rubens de Castro Pereira

16

26/08/2014

3. Construindo para Verificao


Proteger o programa/classe de entradas
invlidas por meio de verificaes:
Dados de fontes externas;
Parmetros de entrada da rotina (funo,
procedimento e mtodo);
Tratamento de entradas incorretas.

Prof. Rubens de Castro Pereira

17

3. Construindo para Verificao

Prof. Rubens de Castro Pereira

18

26/08/2014

4. Reuso
Utilizando de ativos existentes para resolver problemas
diferentes;
Ativos (software): bibliotecas, mdulos, componentes,
cdigo fonte e ativos comerciais (commercial off-the-shelf);
Benefcios: melhor se praticado sistematicamente com o
aumento da produtividade, qualidade e custo;
Construo para reuso: criar ativos de software
reutilizveis;
Construo com reuso: criar novas solues com os ativos
pr-existentes;
Frequentemente transcende as fronteiras do projeto,
possibilitando atender a outras projetos e organizaes.
Prof. Rubens de Castro Pereira

19

5. Padres de Construo
O uso de padres internos e externos durante a
construo auxilia no alcance dos objetivos do projeto
para eficincia, qualidade e custo.
Alguns padres que afetam diretamente as questes
relativas a construo:
Mtodos de comunicao interna ao projeto: padres para
formato e contedo de documentos;
Linguagens padro de programao como Java, C++, .Net, etc;
Padres de codificao: conveno de nomes, leiaute e
indentao;
Plataformas: padro de interfaces para chamadas ao sistema
operacional, etc;
Ferramentas: padres diagramticos para notaes como UML
(Unified Modeling Language).
Prof. Rubens de Castro Pereira

20

10

26/08/2014

5. Padres de Construo
Padres internos:
Padres definidos pela organizao a serem utilizados em nvel
corporativo ou em projetos especficos;
Auxiliam na coordenaes de grupo de atividades, minimizao
da complexidade, antecipao de mudanas e construo para
verificao.

Padres externos:
Uso em linguagens de programao, ferramentas de construo,
interfaces tcnicas e interaes entre as reas de conhecimento;
Oriundos de diversas fontes, incluem especificaes de interface
de hardware e software (Object Management Group - OMG) e
organismos internacionais (Institute of Electrical and Electronics
Engineers IEEE ou International Organization for
Standardization - ISO).
Prof. Rubens de Castro Pereira

21

Estratgias para Construo

Sequencial
Iterativa
Prof. Rubens de Castro Pereira

22

11

26/08/2014

Estratgias para Construo


Sequencial

Prof. Rubens de Castro Pereira

23

Estratgias para Construo


Sequencial
Os requisitos so bastante estveis.
O projeto do software simples e est bem
assimilado.
A equipe envolvida no desenvolvimento est
familiarizada com a rea de aplicao.
O projeto apresenta pouco risco.
A previsibilidade a longo prazo importante.
O custo da mudana posterior dos requisitos, do
projeto do software e do cdigo provavelmente
ser alto.
Prof. Rubens de Castro Pereira

24

12

26/08/2014

Estratgias para Construo


Iterativa

Prof. Rubens de Castro Pereira

25

Estratgias para Construo


Iterativa
Os requisitos no esto bem entendidos ou voc
espera que eles sejam instveis por outros motivos.
O projeto do software complexo, desafiador ou
ambos.
A equipe de desenvolvimento no est familiarizada
com a rea de aplicao.
O projeto apresenta muito risco.
A previsibilidade a longo prazo no importante.
O custo de mudana posterior dos requisitos, do design
(projeto/desenho) e do cdigo provavelmente ser
baixo.
Prof. Rubens de Castro Pereira

26

13

26/08/2014

Comparao entre as estratgias:


Sequencial x Iterativo

Prof. Rubens de Castro Pereira

27

Fundamentos da Construo de
Software
Leitura extra aula:
1. SWEBok - chapter 3 - Software Construction

1. Software Construction Fundamentals pg. 3-1 a 3-4

2. Code Complete Um guia prtico para a construo


de software, 2 ed., Steven McConnell, Bookman

Cap. 2 Metforas para um melhor entendimento do


desenvolvimento de software pg. 47 a 58
Cap. 3 Mea duas vezes, corte uma: determinando os
pr-requisitos pg. 59 a 91
Cap. 4 Principais decises de construo pg. 95 a 102
Prof. Rubens de Castro Pereira

28

14