Mudanças entre as edições de "Desenvolvimento de Projeto Modelo - Parte 1"
(24 revisões intermediárias por 4 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= | =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. | 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. | ||
Linha 46: | 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 51: | 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 81: | Linha 137: | ||
*[https://docs.google.com/document/d/19kaRcYWZKsrHXa2alHJ5jJcnk3l7tyE18F-84PkdCAQ ET1.2: Planejamento - Calculadora Minimalista] | *[https://docs.google.com/document/d/19kaRcYWZKsrHXa2alHJ5jJcnk3l7tyE18F-84PkdCAQ ET1.2: Planejamento - Calculadora Minimalista] | ||
− | =Projeto= | + | =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] | *[https://docs.google.com/document/d/1IaNqTrBoBEHLiW-LrJ70ruTHtcnS_x_B0OIjRZ7JGvo ET2.1: Projeto - Calculadora Minimalista] | ||
{{PJI1-engtelecom}} | {{PJI1-engtelecom}} |
Edição atual tal como às 13h12min de 2 de outubro de 2015
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;
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
Exemplo de complexidade e abstração/modularidade - Liquidificador
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 ...
Como podemos modularizar o liquidificador?
Lâmina e engrenagem | Base | Motor e seus controles | Copo |
Exemplo de diagrama de blocos
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.
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.
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
Especificação de Requisitos
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;
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;
A Especificação da Calculadora
- ET1.1: Especificação de Requisitos - Calculadora Minimalista
- 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);