Desenvolvimento de Projeto Modelo - Parte 1: mudanças entre as edições
(36 revisões intermediárias por 5 usuários não estão sendo mostradas) | |||
Linha 2: | Linha 2: | ||
Ao final da aula o aluno deverá: | Ao final da aula o aluno deverá: | ||
*ter noções básicas sobre gerenciamento de complexidade; | |||
*compreender quais serão as fases de projeto usados no PI: Waterfalls; | *compreender quais serão as fases de projeto usados no PI: Waterfalls; | ||
* | *conhecer o modelo a ser usado como referência no PI: a calculadora; | ||
* ter iniciado seu aprendizado referente a elaborar um documento de especificação do projeto; | |||
=Introdução= | |||
==Gerenciamento de Complexidade== | |||
*Abstração: Omitindo detalhes que não são importantes. | |||
*Disciplina: Restringir intencionalmente as escolhas de projeto. | |||
*Os três "Y's": | |||
**Hierarquia (Hierarchy): Módulos e sub-módulos | |||
**Modularidade (Modularity): Funções e Interface bem definidas | |||
**Regularidade (Regularity): Estimular uniformidade | |||
[[Arquivo:rifle.jpg|400px |thumb|center|]] | |||
== Exemplo de complexidade e abstração/modularidade - Liquidificador == | |||
==== Quais os níveis de abstração de um liquidificador? ==== | |||
[[Arquivo:Liquidificador.jpg | 400px|center|]] | |||
'''Aplicação''' - tritura, filtra, mistura, tem botões, cursor, display | |||
'''Elétrico''' - tensão de alimentação, tipo de motor, tipo de comandos, proteção | |||
'''Mecânico''' - controle de vibração, engates das peças, engrenagens, lâminas para corte, robustez | |||
'''Material''' - tipos de materiais para o copo, a base, lâmina ... | |||
==== Como podemos modularizar o liquidificador? ==== | |||
[[Arquivo:Vista_explodida_do_liquidificador.png|center|]] | |||
{| class="wikitable" style="text-align: center; width: 85%;background-color: #fffff0" | |||
|+ | |||
|- | |||
|style="text-align: center;color: white;background-color: #d00000"|Lâmina e engrenagem | |||
|style="text-align: center;color: white;background-color: #d00000"| Base | |||
| style="text-align: center;color: white;background-color: #d00000"|Motor e seus controles | |||
| style="text-align: center;color: white;background-color: #d00000"|Copo | |||
|- | |||
|[[Arquivo:Lamina_liquidificador.jpg]] | |||
|[[Arquivo:Base_do_liquidificador.jpg |200px]] | |||
|[[Arquivo:Motor_liquidificador.jpg]] | |||
|[[Arquivo:Copo_do_liquidificador.jpg]] | |||
|} | |||
== Exemplo de diagrama de blocos == | |||
[[Arquivo:Diagrama_de_blocos.png|700px |thumb|center|]] | |||
==Desenvolvimento de Projeto== | |||
[[Arquivo:Desenvolvimento_do_projeto.jpg|700px |thumb|center|]] | |||
::::::::::::::::::::[http://www.s2i.com.br/2013/02/22/utopia-da-especificacao-de-requisitos: Fonte] | |||
Com fins de dar suporte ao desenvolvimento do PI, no que diz respeito a metodologia de desenvolvimento, iniciaremos a construção de um projeto modelo simples. O tema escolhido é a construção de uma calculadora. | |||
=O modelo em cascata (Waterfall)= | =O modelo em cascata (Waterfall)= | ||
Linha 41: | Linha 101: | ||
[[Arquivo:WaterfallModel.png|center|modelo Waterfall (FONTE: http://courses.cs.vt.edu/csonline/SE/Lessons/Waterfall/waterfallmodel.html]] | [[Arquivo:WaterfallModel.png|center|modelo Waterfall (FONTE: http://courses.cs.vt.edu/csonline/SE/Lessons/Waterfall/waterfallmodel.html]] | ||
=Sobre a metodologia de projeto a ser usada= | =Sobre a metodologia de projeto a ser usada= | ||
Linha 46: | Linha 107: | ||
*Definição, planejamento e análise de requisitos (ver[http://www.microtoolsinc.com/Howsrs.php],): | *Definição, planejamento e análise de requisitos (ver[http://www.microtoolsinc.com/Howsrs.php],): | ||
**Comunicação inicial com os clientes na forma de uma reunião: produto gerado -> [http://www.colegioweb.com.br/portugues/atas-de-reuniao.html ata da reunião] com os clientes (no caso, os professores); | **Comunicação inicial com os clientes na forma de uma reunião: produto gerado -> [http://www.colegioweb.com.br/portugues/atas-de-reuniao.html ata da reunião] com os clientes (no caso, os professores); | ||
**Definição inicial, planejamento([http://www.construx.com/File.ashx?cid=1190]) e levantamento de recursos necessários: reunião com o grupo para uma primeira definição do sistema e um planejamento das fases do Waterfalls -> geração de um documento de planejamento das etapas | **Definição inicial, planejamento([http://www.construx.com/File.ashx?cid=1190]) e levantamento de recursos necessários: reunião com o grupo para uma primeira definição do sistema e um planejamento das fases do Waterfalls -> geração de um documento de planejamento das etapas. Divisão de funções para a primeira etapa; | ||
**Análise de Requisitos: confecção do documento de análise de requisitos [http://techwhirl.com/skills/tech-docs/writing-software-requirements-specs/ Documento de Especificação]. Ver um exemplo [http://www.atunes.org/wiki/index.php?title=Software_Requirements_Specification aqui]. | **Análise de Requisitos: confecção do documento de análise de requisitos [http://techwhirl.com/skills/tech-docs/writing-software-requirements-specs/ Documento de Especificação]. Ver um exemplo [http://www.atunes.org/wiki/index.php?title=Software_Requirements_Specification aqui]. | ||
*Projeto | *Projeto | ||
Linha 70: | Linha 131: | ||
*Atributos: portabilidade, segurança, facilidades de manutenção; | *Atributos: portabilidade, segurança, facilidades de manutenção; | ||
*Limitações: limitações de recursos, limitações impostas por padrões, linguagens a serem usadas, ambientes de operação; | *Limitações: limitações de recursos, limitações impostas por padrões, linguagens a serem usadas, ambientes de operação; | ||
=A Especificação da Calculadora= | |||
*[https://docs.google.com/document/d/1Y3JbipX5PUBgaCexkWvl845-4Z4mQa7b_MowCt9V3S0 ET1.1: Especificação de Requisitos - Calculadora Minimalista] | |||
*[https://docs.google.com/document/d/19kaRcYWZKsrHXa2alHJ5jJcnk3l7tyE18F-84PkdCAQ ET1.2: Planejamento - Calculadora Minimalista] | |||
=Projeto da Calculadora Minimalista= | |||
São cometários/diretivas gerais para o projeto: | |||
*no projeto o foco é COMO será implementado o sistema. OBSERVE que a fase de projeto NÃO é ainda implementação do sistema (embora isto possa ser flexibilizado); | |||
*o projeto pode ter uma parte mais geral (preliminar) e um detalhamento: | |||
**projeto geral: esquematizar uma visão geral do sistema, separado em subsistemas com interfaces bem definidas entre estes subsistemas; definir/descrever as principais estruturas de dados do sistema; | |||
**projeto detalhado: olhar para dentro dos subsistemas e detalhar as suas partes (na forma de linguagem estruturada, por exemplo); | |||
*[https://docs.google.com/document/d/1IaNqTrBoBEHLiW-LrJ70ruTHtcnS_x_B0OIjRZ7JGvo ET2.1: Projeto - Calculadora Minimalista] | |||
{{PJI1-engtelecom}} |
Edição atual tal como às 13h12min de 2 de outubro de 2015
1 Objetivos
Ao final da aula o aluno deverá:
- ter noções básicas sobre gerenciamento de complexidade;
- compreender quais serão as fases de projeto usados no PI: Waterfalls;
- conhecer o modelo a ser usado como referência no PI: a calculadora;
- ter iniciado seu aprendizado referente a elaborar um documento de especificação do projeto;
2 Introdução
2.1 Gerenciamento de Complexidade
- Abstração: Omitindo detalhes que não são importantes.
- Disciplina: Restringir intencionalmente as escolhas de projeto.
- Os três "Y's":
- Hierarquia (Hierarchy): Módulos e sub-módulos
- Modularidade (Modularity): Funções e Interface bem definidas
- Regularidade (Regularity): Estimular uniformidade

2.2 Exemplo de complexidade e abstração/modularidade - Liquidificador
2.2.1 Quais os níveis de abstração de um liquidificador?

Aplicação - tritura, filtra, mistura, tem botões, cursor, display
Elétrico - tensão de alimentação, tipo de motor, tipo de comandos, proteção
Mecânico - controle de vibração, engates das peças, engrenagens, lâminas para corte, robustez
Material - tipos de materiais para o copo, a base, lâmina ...
2.2.2 Como podemos modularizar o liquidificador?

Lâmina e engrenagem | Base | Motor e seus controles | Copo |
![]() |
![]() |
![]() |
![]() |
2.3 Exemplo de diagrama de blocos

2.4 Desenvolvimento de Projeto

Com fins de dar suporte ao desenvolvimento do PI, no que diz respeito a metodologia de desenvolvimento, iniciaremos a construção de um projeto modelo simples. O tema escolhido é a construção de uma calculadora.
3 O modelo em cascata (Waterfall)
O modelo em cascata é o clássico modelo de ciclo de vida do software. Este modelo foi aceito até o início de 1980, representa o ciclo de vida de software utilizando processos e produtos. Cada processo transforma um produto para produzir um novo produto como saída. Em seguida, o novo produto torna-se a entrada do processo seguinte. A tabela abaixo lista os processos e produtos do modelo cascata.
Entrada de Produto | Processo | Saída de Produto |
---|---|---|
Comunicação dos Requisitos | Engenharia de Requisitos | Documento de Especificação de Requisitos |
Documento de Especificação de Requisitos | Projeto | Documento de Especificação do Projeto |
Documento de Especificação do Projeto | Implementação/Programação | Módulos de software executáveis |
Módulos de software executáveis | Integração e Testes | Módulos integrados no produto |
Módulos integrados no produto | Entrega | Produto de software entregue |
Produto de software entregue | Manutenção | Requisitos alterados |
Para entender melhor estes processos e produtos, ver a animação do modelo Waterfall.

4 Sobre a metodologia de projeto a ser usada
A metodologia usada para desenvolvimento do sistema será uma adaptação do modelo clássico Waterfalls:
- Definição, planejamento e análise de requisitos (ver[1],):
- Comunicação inicial com os clientes na forma de uma reunião: produto gerado -> ata da reunião com os clientes (no caso, os professores);
- Definição inicial, planejamento([2]) e levantamento de recursos necessários: reunião com o grupo para uma primeira definição do sistema e um planejamento das fases do Waterfalls -> geração de um documento de planejamento das etapas. Divisão de funções para a primeira etapa;
- Análise de Requisitos: confecção do documento de análise de requisitos Documento de Especificação. Ver um exemplo aqui.
- Projeto
- Implementação
- Integração, testes e apresentação

4.1 Especificação de Requisitos
4.1.1 Benefícios de uma boa especificação
- Estabelece uma base para o acordo entre o cliente e o fornecedor do sistema;
- Reduz o esforço de desenvolvimento;
- Estabele uma base para determinação de custos e tempo de desenvolvimento (e cronograma);
- Facilita a adaptação do software para outros contextos;
- Base para refinamentos futuros: foco no produto;
4.1.2 O que deve conter um Documento de Especificação
- Funcionalidade: O QUE o sistema faz;
- Interfaces externas: como o sistema interage com usuários e sistemas externos;
- Aspectos de Desempenho: tempo de resposta, tempo de recuperação após uma falha;
- Atributos: portabilidade, segurança, facilidades de manutenção;
- Limitações: limitações de recursos, limitações impostas por padrões, linguagens a serem usadas, ambientes de operação;
5 A Especificação da Calculadora
- ET1.1: Especificação de Requisitos - Calculadora Minimalista
- ET1.2: Planejamento - Calculadora Minimalista
6 Projeto da Calculadora Minimalista
São cometários/diretivas gerais para o projeto:
- no projeto o foco é COMO será implementado o sistema. OBSERVE que a fase de projeto NÃO é ainda implementação do sistema (embora isto possa ser flexibilizado);
- o projeto pode ter uma parte mais geral (preliminar) e um detalhamento:
- projeto geral: esquematizar uma visão geral do sistema, separado em subsistemas com interfaces bem definidas entre estes subsistemas; definir/descrever as principais estruturas de dados do sistema;
- projeto detalhado: olhar para dentro dos subsistemas e detalhar as suas partes (na forma de linguagem estruturada, por exemplo);