Objetivo da aula


  • Introduzir o conceito de Modelo Estruturado para projetos de software
  • Entender as etapas que fazem parte do Modelo Estruturado
  • Enquadrar o projeto dentre 4 tipos possíveis



Modelo Estruturado


  • Modelo Estruturado:
Erro ao criar miniatura: Arquivo não encontrado


Etapas do Modelo Estruturado

Análise




  • Quando se começa a discutir a possibilidade ou a necessidade de se fazer algo, deve-se avaliar a relação custo-benefício => Why
  • Avaliação dos recursos técnicos disponíveis => Who
    • Tendo a certeza de que será feito, quem poderá gerenciar, desenvolver, usar, pagar, manter, etc
  • Hardware, software e pessoas => What
    • Com a definicação clara do que será feito e sabendo que um sistema é um processo de Input - Processamento - Saída pode-se definir tudo o que interagirá com o sistema em termos de dados.




  • Aspectos das soluções que implicarão mudanças de rotinas existentes => How
    • Um software depois de pronto tem que ser corrigido, melhorado, etc. Os dados devem ser backupeados, atualizados, etc. Existirão pessoas e ambientes que lidarão com ele.
  • Para o estudo da viabilidade operacional é preciso entender primeiramente o atual problema do software em questão, e, a partir daí, o programador, ou a equipe, devem se perguntar algumas coisas como: "Vale a pena resolver esse problema?", "A solução proposta pode realmente resolver o problema?" e "Qual será a experiência do usuário final ao utilizar esse programa?". Sendo assim é preciso fazer algumas comparações entre o programa em sua fase atual e como ele estaria depois das alterações necessárias. Alguns critérios interessantes de se analisar nesse quesito são:
    • Performance e eficiência: Nesse critério são feitas comparações do programa atual e o modificado a respeito do tempo de resposta, utilização de todos os recursos disponíveis e também as facilidades para a compreensão de seu funcionamento.
    • Informações: É necessário comparar os programas para ter certeza de que as informações adquiridas são de fato seguras, confiáveis e úteis para a empresa ou usuário que manipula o software.
    • Economia: Obviamente também é preciso checar se a nova solução é economicamente viável, tanto para o programador, quanto para a empresa ou usuário do software em questão.
  • Após esse estudo é possível dizer se é viável ou não a modificação do programa em questão, por isso, os temas acima são realmente necessários quando se trata do estudo da viabilidade operacional.
  • Impactos na área, na empresa, na sociedade. Discussões de ordem ética e moral => When
    • Durante ou depois que for desenvolvido, será utlizado por pessoas ou empresas. No tempo em que for usado interferirá em alguma regra, ambiental, legal ou regulatória?
      • No tópico acima foram abordados temas de maneira mais geral, mas também é preciso ver a unicidade de cada situação, sendo assim, é preciso entender que cada usuário, empresa ou organização que pode ser usuário desse software e para isso estuda-se as regras internas de cada empresa, os direitos dos trabalhadores e humanos. Não deve-se esquecer também que em pleno século XXI a natureza encontra-se cada vez mais desgastada e por isso faz-se necessária uma análise de legislação ambiental.
  • Concluí-se então que, após a análise dos temas do tópico acima somados com as peculiaridades de cada empresa, seus funcionários, usuários e o ambiente temos a compreensão se é viável ou não a alteração do software.



  • Possíveis soluções tecnicamente disponíveis e utilizáveis => Where
    • As estruturas que abrigarão o software devem ser consideradas porque efetivamente ele tem que rodar em algum lugar. Esse lugar tem custo e também requisitos técnicos
  • Investimento necessário => How much
    • Com os dados discutidos nos itens anteriores, deve-se ter a noção de custos nas seguintes fases: desenvolvimento, manutenção e operação.


Projeto Lógico


A solução escolhida começa a ser detalhada e criteriosamente desenhada.

Um sistema:

  • É um conjunto de componentes inter-relacionados organizados para atingir um certo objetivo
  • É organizado para executar certo método, procedimento ou controle ao processar informações
  • Automatiza ou apóia a realização de atividades humanas através do processamento das informações.


Codificação (Projeto Físico)


  • Implementação do código baseado numa linguagem com a adição de bibliotecas, APIs, Webservices, Banco de Dados e ambientes de desenvolvimento.


Testes


  • Avaliação do cumprimento dos requisitos pré-estabelecidos em testes unitários, de carga ou de serviço.



Operação


  • Período em que o software será executado em regime de produção.


Tipos de sistemas


  • Normalmente cada projeto se enquadra em um dos seguintes tipos:


I - Idéia Radical


  • Escopo cujo benchmarking mostra que não existe proposta igual ou que a solução mais parecida ainda está longe da definição do projeto encontrado.
    • Exemplo:
    • Dinâmica:
      • A. Se for de médio ou grande porte => requer projeto e protótipo
      • B. Se for de pequeno porte => requer projeto e implementação.


II - Idéia incremental


  • Escopo cujo benchmarking mostra que existe proposta parecida e que este projeto pretende manter o escopo básico e criar funções adicionais inovadoras.
    • Exemplo:
    • Dinâmica:
      • Se for de médio ou grande porte => requer projeto e protótipo
      • Se for de pequeno porte => requer projeto e implementação de todas funções adicionais


III - ­Prototipagem


  • Projeto que já tem um protótipo desenvolvido mas que não foi modelado. O escopo descreverá a proposta de construção de um sistema completo, com todas as funcionalidades possíveis para se tornar um produto profissional.
    • Exemplos:
    • Dinâmica:
      • Como já tem protótipo, se for de médio ou grande porte => requer projeto completo e demonstração
      • Como já tem protótipo, se for de pequeno porte => requer projeto e implementação de novas funções.


IV -­ Engenharia Reversa

  • Projeto que pretende usar uma solução existente e contribuir para sua evolução ou desenvolver um sistema com funcionalidades muito próximas do original.
    • Exemplos:
    • Dinâmica:
      • Como já tem o sistema pronto, se for de médio ou grande porte => requer projeto completo.
      • Como já tem o sistema pronto, se for de pequeno porte => requer projeto e implementação de novas funções.



  • Como se enquadra um sistema em pequeno, médio ou grande porte?
    • Número de funções
    • Número de interações
    • Complexidade das funções


Agora mãos a obra!!!!


  1. Definir problema
  2. Dar nome ao projeto
  3. Escrever escopo
  4. Executar Etapa de Requisitos
  5. Preencher 5W2H


Iniciando um projeto


  • Seleção do projeto:
    • Brainstorm
      • Discussão sobre ideias, necessidades ou problemas
    • Definição:
      • Nome e escopo do projeto
    • Criação do link no site
      • Template: 5W2H


  • Aquisição dos dados
    • Requisitos Funcionais
    • Requisitos Não-Funcionais


  • Análise
    • Discussão em grupo de todos os detalhes possíveis


  • Projeto Lógico:
    • Documentação
    • Projeto escrito
    • Diagramas


  • Prototipagem:
    • Transformação do projeto lógico em um projeto físico reduzido.
      • Se pequeno: implementação completa
      • Se médio: implementação da navegação e de poucas funções ou casos
      • Se grande: implementação da navegação e de uma função ou caso



Questões


  • 01. Com relação ao problema para o qual irá modelar um sistema como pretende coletar dados para aprofundar o máximo possível sobre ele?


  • 02. Descreva sucintamente as tecnologias que poderão ajudar a resolver seu problema.


  • 03. Quais especialistas sobre o assunto você conhece ou ouviu falar que poderá ajudar a conhecer mais sobre as possíveis soluções para seu problema?


  • 04. Você sabia que inovação tecnológica não quer dizer invenção? O que é então?


  • 05. Cite um exemplo de inovação tecnológica em qualquer área.


  • 06. Descreva um exemplo de operação, por exemplo, na Biblioteca da sua escola.
  • 07. Descreva um exemplo de operação, por exemplo, no site de comércio eletrônico.


  • 08. O problema que pretende resolver pode ser enquadrado em qual dos tipos de sistemas?


  • 09. O que é um SDK?