Baixe o app para aproveitar ainda mais
Prévia do material em texto
ANÁLISE E PROJETO DE SOFTWARE Socorro Vânia Alves Socorro.vania@gmail.com O que veremos hoje? FUNDAMENTOS DA ANALISE E PROJETO DE SISTEMAS Definição de Sistemas Características Tipos de Sistemas Análise de Sistemas Abordagem Sistêmica x Abordagem Analítica Análise e Projeto de Sistemas de Software Definição de Software Processos de Software Modelos Tradicionais de Processos de Software Conceituando Sistemas Afinal, O que é um Sistema? Conceituando Sistemas Quantas vezes já nos referimos ou ouvimos a palavra sistema: O sistema telefônico ficou mudo! O sistema de trânsito da cidade está horrível. O sistema de coleta de lixo está perfeito. Outros exemplos de Sistemas Conceituando Sistema É importante conhecer os sistemas em geral, pois embora muitos tipos de sistemas pareçam ser totalmente diferentes, eles têm muitas semelhanças. Existem princípios comuns e teorias que se aplicam a quase todos os tipos de sistemas independentemente da área onde se encontram. Teoria Geral dos Sistemas. Conceituando Sistema A Teoria Geral dos Sistemas ajuda a compreender melhor os sistemas baseados em computador (automatizados). Vamos iniciar com a definição do termo sistema. Conceituando Sistema “Um conjunto de entidades relacionadas, interdependentes, que interagem entre si, buscando atingir um objetivo declarado.” (Rosini, 2008) Exemplo de Sistema Exemplo de Sistema Conceituando Sistema Subsistema Os componentes que formam um sistema também podem ser vistos como outros sistemas. Um sistema poderá ser composto por outro nível de sistema, mais simples, ou seja um subsistema. Conceituando Sistema O corpo humano se divide em outros subsistemas: Exemplo de Sistema Componentes do Sistema Digestivo Conceituando Sistema Definição Vários autores contribuíram para que o entendimento do que é um sistema pudesse ficar claro para todos. Um dos conceitos que possui grande aceitação e aplicação para a área da Computação é definido por Peter Schoderbek (SCHODERBEK et al., 1990 apud MARTINELLI; VENTURA, 2006, p. 6), segundo o qual: Conceituando Sistema Outra Definição “É o conjunto de objetos ou entidades, com relações entre os objetos e os atributos relacionados com cada um deles e com o ambiente, de maneira a formar um todo”. Peter Schoderbek (SCHODERBEK et al., 1990 apud MARTINELLI; VENTURA, 2006). Conceituando Sistema Na definição de Schoderbek identificamos: os objetos ou entidades são os elementos que compõem o sistema; os relacionamentos são as fronteiras que ligam os objetos; os atributos são as características tanto dos objetos como dos relacionamentos; o ambiente é o que está fora do sistema, ou seja, aquele que não participa do sistema. O sistema é cercado pelo ambiente no qual opera. Conceituando Sistema Ambiente Conceituando Sistema Entidades, relacionamentos, atributos (características) Características dos Sistemas Características dos Sistemas Será o homem um Sistema? Objetivo Componentes Estrutura Comportamento Ciclo de Vida Manter o corpo vivo Sistema esquelético, sistema nervoso, etc. O sistema nervoso permite a comunicação entre as várias partes do corpo. A comunicação é feita por meio de impulsos nervosos, que são mensagens que percorrem as células do sistema nervoso, os neurônios. Na exposição ao calor o corpo transpira mais intensamente. Nasce, cresce, envelhece e morre Análise de Sistemas E agora... O que significa fazer a Análise de Sistemas? O que significa “Análise”? “Estudo profundo...” “Exame de qualquer coisa, parte por parte...” “Decomposição do todo em seus elementos...” Dicionário de Língua Portuguesa. A palavra Análise significa o processo de decomposição de uma objeto/elemento/problema em seus diversos elementos constituintes, a fim de se poder compreendê-lo melhor. Dedução Raciocínio dedutivo O que significa “Análise”? Raciocínio Dedutivo O que significa “Análise”? Raciocínio Dedutivo O que significa “Análise”? O que é Análise de Sistemas? Analisar um sistema implica realizar um estudo profundo de forma a entender como ele funciona e verificar se é necessário introduzir melhorias. Analisar um sistema consiste em: Conhecer os seus objetivos Decompô-lo em componentes Conhecer cada um dos seus componentes e as relações entre si. Análise de Sistemas Na Análise de Sistemas o sistema pode ser abordado de duas formas clássicas: analítica ou sistêmica Então teremos a Abordagem Sistêmica e a Abordagem Analítica Ambas as abordagens são muito usuais dependendo do que se quer ao estudar um determinado sistema. Análise de Sistemas Abordagem Sistêmica A abordagem sistêmica é aquela na qual se “olha” para o sistema de uma forma geral e abrangente. Nela não se observam partes ou as relações entre partes específicas. Procura-se identificar as bordas do sistema e o que está dentro e fora dessa borda (limite do sistema). Análise de Sistemas Abordagem Analítica Preocupa-se com o detalhamento das partes que compõem um sistema. Nessa abordagem o “olhar” se volta para cada parte e cada relacionamento presentes no interior do sistema. Análise de Sistemas Quem é o responsável de executar a Análise de Sistemas? O Analista de Sistemas Funções do Analista Identificar os objetivos do sistema, conhecendo os resultados que se pretende alcançar Efetuar um levantamento prévio dos requisitos para a analise do sistema Criar modelos que representem o sistema para facilitar a análise do mesmo Encontrar soluções alternativas para alcançar os objetivos O Analista de Sistemas Características do Analista O Engenheiro de Software http://pt.wikihow.com/Se-Tornar-um-Engenheiro-de- Software “Entenda que fazer a engenharia do software não é o mesmo que programar o mesmo. Todo engenheiro de software sabe como programar, mas nem todo programador sabe sobre engenharia de software.” Análise de Sistemas Que tipo de Sistemas iremos tratar? Definindo Software Software é: Instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados Estrutura de dados que permitem a manipulação das informações Documentos que descrevem a operação e uso de programas Isto é, um software é um programa de computador e toda a sua documentação associada, tais como requisitos, modelos de projetos e manuais de usuários Definindo Software Antigamente o foco era mais no hardware sendo o software apenas uma consequência A programação não era um área organizada Poucos métodos formais eram aplicados Esquema baseado na tentativa e erro O que foi a Crise do Software? Atividade #01 Pesquise sobre a Crise do Software A seguir, elabore uma resenha descrevendo o que você entendeu sobre a Crise do Software Definindo Software A Crisedo software foi um termo que surgiu nos anos 70. O termo expressava as dificuldades do desenvolvimento de software frente ao rápido crescimento da demanda, da complexidade dos problemas a serem resolvidos e da inexistência de técnicas estabelecidas para o desenvolvimento de sistemas. Definindo Software Solução para a Crise do Software Utilização de técnicas, ferramentas e processos sistematizados para produzir software Treinamento e educação em conjunto com a mudança de paradigma sobre o que é desenvolver software e como deveria ser feito Criação da Engenharia de Software A Engenharia de Software A criação da Engenharia de Software surgiu numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos Engenharia de Software O termo Engenharia de Software tornou-se conhecido após uma conferência em 1968, quando as dificuldades e armadilhas de projetar sistemas complexos foram discutidas. A busca de soluções começou. Ela se concentrou em melhores metodologias e ferramentas. Engenharia de Software Uma característica importante dos sistemas de software é a complexidade de seu desenvolvimento. Esta complexidade cresce à medida que cresce o tamanho do sistema. A Evolução do Software O rápido crescimento da capacidade computacional das máquinas resultou na demanda por sistemas de software cada vez mais complexos. O surgimento de sistemas de software mais complexos resultou na necessidade de reavaliação da forma de se desenvolver sistemas. Consequentemente as técnicas utilizadas para a construção de sistemas computacionais têm evoluído de forma impressionante, notavelmente no que tange à modelagem de sistemas. O desenvolvimento de Software Muitas vezes queremos programar diretamente nossos sistemas em vez de projetá-los anteriormente. Essa não é uma boa prática. O desenvolvimento de Software Os principais problemas encontrados foram: falta de qualidade do produto final; não cumprimento dos prazos; não cumprimento dos custos. A partir desses resultados surgiram estudos de processos e técnicas para melhoraria da qualidade e confiabilidade dos produtos, e também a produtividade dos desenvolvedores. O desenvolvimento de Software Uma forma de se aumentar a qualidade do software é definindo um processo de desenvolvimento eficaz que contemple todas as fases necessárias para sua produção. O desenvolvimento de Software Portanto, a tarefa de desenvolver software com qualidade Demanda uma série de atividades com diferentes níveis de abstração, valendo-se de diferentes técnicas e propósitos O desenvolvimento de software requer algumas ETAPAS que, de acordo com a forma com que se relacionam entre si, originam os diferentes processos de desenvolvimento de Software Processos de Desenvolvimento de Software Processo de software é uma metodologia É um “roteiro” Uma série de passos previsíveis Tem a finalidade de auxiliar na criação de um resultado com alta qualidade e dentro do prazo estabelecido Processos de Desenvolvimento de Software Um Processo de Software pode ser descrito como um conjuntos de atividades coerentes para especificar, projetar, implementar e testar sistemas de software. Consiste na aplicação de um processo sistemático, disciplinado e quantificado ao desenvolvimento, à operação e à manutenção de software. Propicia estabilidade, controle e organização para uma atividade que pode, sem controle, tornar-se bastante caótica Características de Software A aplicação de um processo de desenvolvimento de software possibilita que o software adquira atributos ou características que o classifiquem como um bom software? Mas quais são esses atributos? O software deve proporcionar ao usuário a funcionalidade e o desempenho requeridos e deve ser passível de manutenção, confiável e de fácil uso. Processos de Desenvolvimento de Software Modelo de Processo de Software O que é um modelo de Processo de Software? Foram propostos para trazer ordem aos casos existentes na área de desenvolvimento de software Modelo de Processo de Software Modelos tradicionais: O modelo Cascata O modelo Evolucionário Modelo Espiral Prototipação O modelo Iterativo e Incremental O Modelo Cascata Comunicação Início do projeto Levantamento de Requisitos Planejamento Estimativas Cronograma Acompanhamento Modelagem Análise Projeto Construção Codificação testes Emprego entrega suporte O Modelo Cascata Outra representação do Cascata O Modelo Cascata Vantagens: É simples Fácil de gerenciar, pois consiste em dividir a tarefa em tarefas menores e autocontidas. O Modelo Cascata Desvantagens Os sistemas devem ser totalmente entendidos e analisados, antes que possam ser projetados e implementados. Dificuldade de acomodar mudanças depois que o processo está em andamento Uma versão operacional do software só estará disponível no final do projeto Os riscos são protelados para as etapas finais em grandes projetos, cada etapa consome grande quantidade de tempo e recursos Erros graves não detectados podem ser desastrosos O Modelo Espiral O problema relatado pelo cliente é abordado em ciclos. Um ciclo completo é chamado de ciclo de vida Ao final de cada ciclo, há a liberação de uma versão aprimorada do software, ou seja, uma versão mais completa O software evolui ao longo do tempo O Modelo Espiral O Modelo Espiral Outra representação do Espiral O Modelo Espiral Outra representação do Espiral O Modelo Espiral Vantagens O grupo de desenvolvimento será capaz de trabalhar em todo um ciclo de vida do projeto e o cliente vai fornecer “feedback” bem cedo para a equipe de desenvolvimento, tornando a detecção de problemas mais fácil e rápida. Qualquer mudança no sistema pode ser incorporada ao ciclo seguinte Normalmente o cliente fica satisfeito ao ver que as versões que são geradas de seu software estão ficando conforme sua expectativa. Isso mostra para os desenvolvedores que estão no caminho certo do desenvolvimento do sistema. O Modelo Espiral Desvantagens O processo é mais difícil de gerenciar, pois há falta de visibilidade do processo Sistemas são, em geral, pobremente estruturados O modelo espiral não se “encaixa” bem com as ferramentas de gerência de projetos tradicionais, tais como gráfico de Gantt, PERT, etc.; Pode ocorrer precipitação e entrega de código, sem que seja feita análise completa do alcance dos seus objetivos O Modelo Espiral Aplicabilidade Para sistemas interativos pequenos ou médios Para partes de sistemas grandes (ex. a interface de usuário) Para sistemas de curto-prazo O Modelo Iterativo e Incremental Esse modelo é um aprimoramento do modelo espiral e incorpora mais formalismos e rigor. Baseado em “incrementos” no software Há a necessidade de expandir e refinar o software deacordo com novas informações A medida que o tempo vai avançando o modelo incremental aplica uma sequência linear gerando “incrementos” O Modelo Iterativo e Incremental O Modelo Iterativo e Incremental Outra representação do Iterativo e Incremental O Modelo Iterativo e Incremental Tem-se n iterações de tempo fixo, por exemplo de 3 semanas Dentro de cada uma dessas iterações todas as atividades necessárias dentro do processo de desenvolvimento são desenvolvidas e em muitas vezes em paralelo Dentro de uma iteração fazemos a analise de requisitos, projetamos, implementamos, testamos, integramos e entregamos o software no final da iteração para o cliente O Modelo Iterativo e Incremental No final de uma iteração entregamos uma fatia para o cliente e com base no seu feedback fazemos as adaptações necessárias para que sejam tratadas talvez na próxima iteração O sistema vai evoluindo ao final de cada iteração O resultado entregue no final de cada iteração é um sistema executável, porém incompleto. O Modelo Iterativo e Incremental Outra representação do Iterativo e Incremental O Modelo Iterativo e Incremental Por exemplo, um software de processamento de texto: 1º incremento : funções básicas de gerenciamento de arquivo, edição e produção de texto 2º incremento: recursos sofisticados de edição e produção de texto 3º incremento: revisão ortográfica e gramatical 4º incremento: recursos avançados de formatação (layout) O Modelo Iterativo e Incremental Normalmente o primeiro incremento é um produto essencial Os requisitos básicos são atendidos Cada etapa final de uma sequência linear requer uma atividade de prototipação Outros Processos de Desenvolvimento de Software A partir dos modelos tradicionais vários processos de software foram elaborados Processos Ágeis Extreme Programming – XP Scrum Lean Desenvolvimento dirigido à funcionalidade (FDD) Método de desenvolvimento de sistemas dinâmicos (DSDM) PU (Processo Unificado) RUP (Processo Unificado da Rational) Atividade #02 Leia o artigo Modelos de Processos Ágeis: conceitos e princípios Atividade #03 Elabore uma pequena apresentação destacando os pontos chaves dos processos XP e Scrum Referências Engenharia de Software – Uma abordagem profissional. 7º Edição. Pressman, R. S. Editora Bookman. Capítulo 1 Engenharia de Software 6º Edição. Sommerville, I. Editora Persson. Capítulo 1 FIM
Compartilhar