Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
AULA 1-INTRODUÇÃO A PDS Atividade em grupo Elabore uma resposta para as seguintes perguntas: 1 - O que você imagina ser Engenharia de Software? 2 - O processo de desenvolvimento de SW é simples ou complexo? Justifique. 3 – Você seria capaz de utilizar alguma metáfora para definir o processo de desenvolvimento de SW? Unidade 1: Conceitos Gerais de Processo de Desenvolvimento de Software Cenário Atual Dependência de sistemas complexos baseados em computador Demanda de novos desenvolvimentos e manutenção dos programas atuais Definição de Engenharia de Software Sommerville (2007) “é um ramo da engenharia cujo foco é justamente o desenvolvimento de SW de alta qualidade dentro de custos adequados. “ Pressman (2006) “É a criação e a utilização de sólidos princípios de engenharia a fim de obter softwares econômicos que sejam confiáveis e que trabalhem eficientemente em máquinas reais Engenharia de Software Software : abstrato Demanda tempo maior de desenvolvimento se não for bem compreendido Risco de entrega de produto fora do planejamento original Estas e outras dificuldades vem sendo debatidas ao longo de décadas É uma crise da indústria de SW? Atividade em grupo: leitura e reflexão do texto ‘A Crise de Software’. A Crise de Software Reflexão que culminou o final da década de 60 Referência de artigo: The Humble Programmer (EDSGER DIJKSTRA, 1972) Segundo “The Standish Group”: “apenas um terço de projetos de software podem ser considerados bem-sucedidos, enquanto o restante é cancelado e/ou apresenta uma falha crítica (ou finalizado com atraso, ou custando mais do que inicialmente estimado, ou entregando menos funcionalidades do que havia sido previamente combinado com o cliente).” Segundo Booch, o assunto está na moda desde a década de 70 e ainda continuamos em busca de uma solução. Algumas causas da crise Ausência de metodologia de desenvolvimento Ignorar cliente e usuário final Requisitos e especificações incompletas Objetivos nebulosos (ausência de visão comum entre o que o cliente deseja e o que os desenvolvedores estão projetando) Expectativas irrealistas (incerteza quanto ao escopo a ser atingido) Problemas de comunicação (informalidades, pouca documentação, baixo entendimento entre as partes etc) Ausência de recursos (humanos, financeiros, infra-estrutura etc) CONSEQUÊNCIAS Projetos estouram prazos e orçamentos e gerando produtos de baixa qualidade SWs não atendem às necessidades dos usuários Em gestão de projetos... Engenharia de Software Desenvolvimento de técnicas desde 1968 para composição do escopo da engenharia de software Qual a melhor abordagem? Diversidade de abordagens em virtude de ampla diversidade de sistemas nas organizações Conceito de SW Sommerville (2007) “não é apenas o programa de computador. Ele representa todos os dados de documentação e configuração associados e necessários para que o programa opere corretamente” É composto de partes: Arquivos de configuração – são os arquivos utilizados para configurar o programa; Documentação do sistema – descreve a estrutura do sistema; Documentação do usuário – explica ao usuário como operar o sistema; Sites Web – meios através dos quais os usuários obtém informações recentes sobre o produto Tipos de SW Ainda de acordo com Sommerville (2007): Produtos genéricos – sistemas produzidos por uma empresa e vendidos no mercado para qualquer cliente . Produtos sob encomenda – programas solicitados por um cliente (customizado), feitos sob medida para uma necessidade de negócio específica. Mudança no cenário acima – muitas empresas de SW desenvolvem um produto genérico e modificam-no de acordo com as necessidades de um cliente específico. Métodos de engenharia de SW Sommerville (2007): Os métodos de engenharia de SW são abordagens estruturadas voltadas para o desenvolvimento de SW cujo objetivo é facilitar a produção de SW de alta qualidade dentro de custos adequados. Alguns destes métodos são: Análise estruturada Análise OO Atributos de um bom SW Sommerville (2007): Alguns exemplos: Comportamento do SW quando está em execução Estrutura e a organização do código-fonte Documentação do sistema O tempo de resposta do SW Facilidade de entendimento do código do programa Atributos de um bom SW Importante O que se espera de um programa depende de sua natureza. Exemplos: O que esperar de um sistema bancário? Segurança O que esperar de um jogo? Rapidez Atributos de um bom SW Outras características de um bom SW: Facilidade de manutenção Confiança Eficiência (SW não deve desperdiçar recursos do sistema, como memória e ciclos do processador) Usabilidade Atributos de um bom SW A contribuição de Pfleeger (2003) Qualidade de SW baseada em visões: Visão transcendental (o ideal de Platão) Visão do usuário Visão do fabricante (visão antes e depois da entrega do produto) Visão do produto (características internas do produto – métricas) Visão do mercado Desafios para a Engenharia de SW Sommerville (2007) O desafio da heterogeneidade O desafio da entrega O desafio da confiança Responsabilidades do engenheiro de SW Sommerville (2007) Confidencialidade Competência Direitos de Propriedade Intelectual Mau uso dos computadores Questões de origem cultural ou de princípios Uma analogia para engenharia de SW Pfleeger (2003) – a metáfora da construção da casa Cenário Chico e Bety contrataram alguém para construir uma casa. Devido a complexidade e tamanho, eles decidiram contratar a empresa Demolição C&A. O primeiro evento entre as partes acontece para que os clientes informem o que desejam. Aspectos discutidos neste encontro: Aparência desejada da casa Número de cômodos Área de lazer (piscina, sauna, churrasqueira) Intenções de expansão (andares superiores) Neste encontro, Chico e Bety falam sem embasamento técnico ou sequer sabem se o projeto da casa é viável Uma analogia para engenharia de SW A empresa Demolição C&A faz um estudo e elabora um projeto arquitetônico. Chico e Bety revisam o projeto e, uma vez aprovado, a construção da casa começa. Durante a construção, Chico e Bety inspecionarão o local da construção e, durante a obra, podem tentar modificar algo do projeto arquitetônico original. Várias destas mudanças podem ocorrer durante o projeto. Antes de se mudarem, vários componentes são testados na obra (encanamentos, sistema elétrico, etc). Havendo algo fora das especificações, Chico e Bety solicitam à empresa que verifique e conserte, se for necessário. Uma analogia para engenharia de SW Zoom no projeto.... Como há muitas pessoas trabalhando no projeto, e essencial ter uma documentação (plantas baixas, desenhos arquitetônicos, desenhos das instalações elétricas e hidráulicas) Chico e Bety podem intervir a todo instante durante a construção como causas de algumas situações: -Chico e Bety podem ter novas idéias à medida que a casa toma forma -Algumas partes da casa, como as janelas que eles queriam comprar, só estarão prontas depois que a casa estiver finalizada, o que os leva a substituí-las por outras que já estejam no mercado -Alguns detalhes do projeto planejados inicialmente podem se tornar inviáveis (expansão para andares superiores, por exemplo) Uma analogia para engenharia de SW -A construtora também pode sugerir algumas mudanças em resposta às solicitações de Chico e Bety, mudando algumas características da casa -A construtora deve fornecer cópias das plantas, dos diagramas elétricos e hidráulicos, dos manuais dos equipamentos ou qualquer outra documentação necessária que permitam a Chico e Bety eventuais modificações ou reparos depois de terem mudado para a casa Resumo do processo de construção: -Identificar e analisar os requisitos -Produzir e documentar todo o projeto da casa -Produzir as especificações detalhadas da casa -Identificar e projetar os componentes -Construir cada componente da casa -Testar cada componente da casa -Integrar os componentes e fazer as modificações finais depois de os moradores terem se mudado para a casa -Manutenção contínua da casa pelos moradores Construindo um sistema O processo de construção da casa é algo extremamente complexo e que envolve: Mudanças nos processos, produtos ou recursos utilizados Habilidade e experiência De forma semelhante, o desenvolvimento de SW é como o da casa Chico e Bety = clientes Empresa Demolição = desenvolvedor de SW Desenvolvimento de sistema envolve usuários, clientes e desenvolvedores. Construindo um sistema Uma solicitação de requisição para construção de um SW segue alguns passos: Definir requisitos que descrevem o sistema Criação do projeto do sistema, considerando a perspectiva do cliente (apresentação de telas, os relatórios que o sistema produzirá, como os usuários interagirão com o sistema) Projeto é revisado pelo cliente. Quando aprovado, o projeto geral é usado para projetar os programas individuais envolvidos Projeto do programa, incluindo a escrita (código) Testes (módulo, integração e de sistema) Entrega do sistema Manutenção