Engenharia de Software
Tópico 1 - Visão Geral da Engenharia de Software Sistemas Computacionais o Definição e conceitos básicos o Evolução do desenvolvimento Natureza do produto software Definição de Engenharia de Software
Uma empresa de software de sucesso é aquela que consistentemente produz software de qualidade que vai ao encontro das necessidades dos seus clientes. Uma empresa que consegue desenvolver tal software, de forma previsível, cumprindo os prazos, com uma gestão de recursos, quer humanos quer materiais, eficiente e eficaz, é uma empresa que tem um negócio sustentável. Booch, Rumbaugh e Jacobson
Sistema Um sistema é um grupo de componentes inter-relacionados que trabalham rumo a uma meta comum, recebendo insumos e produzindo resultados em um processo organizado de transformação. Componentes de um Sistema Feedback e Controle Entrada Processamento Saída
Sistema de Informação Computadorizado, ou simplesmente, Sistema de Informação...Pode ser definido como o processo de transformação de dados em informações que são utilizadas na estrutura decisória da empresa e que proporcionam a sustentação administrativa visando à otimização dos resultados esperados (Rezende, 2002).
Sistema de Informação Computadorizado, ou simplesmente, Sistema de Informação (continuação) Informação: é todo o dado trabalhado, útil, tratado, com o valor significativo atribuído ou agregado e com um sentido natural e lógico para quem o usa. Dado: é compreendido como um elemento da informação, um conjunto de letras, números ou dígitos, que tomado isoladamente não transmite nenhum conhecimento
Sistema de Informação Computadorizado, ou simplesmente, Sistema de Informação (continuação) Características: Grande volume de dados e informações; Complexidade de processamento; Muitos clientes e / ou usuários envolvidos; Contexto abrangente, mutável e dinâmico; Interligação de diversas técnicas e tecnologias; Suporte a tomada de decisões empresariais; Auxílio na qualidade, produtividade e competitividade organizacional.
O sistema de informação é um sistema sócio-técnico cujos componentes são indivíduos, tarefas e equipamentos necessários ao seu funcionamento Implantar um sistema de informação em uma Organização equivale a nela intervir visando a uma mudança.
Componentes de um Sistema de Informática ENTRADAS Pessoas Documentos Procedimentos Hardware Software Hardware Base de Dados Sistema Pessoas Software Banco de dados SAÍDAS Documentos de diversas naturezas Procedimentos manuais que se integram aos automatizados
Software É a parte programável de um sistema de informação. Ele é um elemento central: realiza estruturas complexas e flexíveis que trazem funções, utilidade e valor ao sistema. O software pode ser: Genérico desenvolvido para ser vendido para uma gama de clientes diferentes. Encomendado (personalizado) desenvolvido para um único cliente, de acordo com a sua especificação.
Atributos de um bom Software O software deve entregar a funcionalidade e desempenho exigidos pelo usuário e deve ser manutenível, digno de confiança e utilizável. Manutenibilidade - O software deve evoluir para alcançar necessidades de mudança; Confiabilidade - O software deve ser confiável; Eficiência - O software não deve desperdiçar recursos do sistema; Usabilidade - O software deve ser usável pelos usuários para os quais ele foi projetado.
A importância dos softwares As economias de TODAS as nações desenvolvidas dependem de software; Mais e mais sistemas são controlados por software; O gasto com engenharia de software representa uma parte significativa do PIB em todos os países desenvolvidos; Os custos de software freqüentemente dominam os custos do sistema; Os custos de software são maiores para mantê-lo do que para desenvolvê-lo.
Problemas dos Sistemas de Informática: Não fazem o que deveriam fazer; São caros; São entregues tarde demais; São de baixa qualidade (cheios de defeitos, difíceis de usar e lentos).
Origem dos problemas dos Sistemas de Informação Falta de treinamento das pessoas que operam; Processos de negócios inadequados; Deficiências da tecnologia; Falta de empenho dos órgãos de topo das organizações; Falta de comprometimento e empenho dos usuários; Incompreensão do valor dos sistemas de informação; Falta de entendimento entre o pessoal da Informática e os usuários; Deficiências no processo de desenvolvimento; Falhas na coordenação do projeto; Mudanças freqüentes dos requisitos do negócio.
Definição da Engenharia de Software Uma das definições mais utilizada hoje em dia foi proposta pelo Institute of Electrical and Electronics Engineering (IEEE) em 1993, e defende que "a Engenharia de Software é a aplicação de um processo sistemático, disciplinado, e quantificado ao desenvolvimento, operação e manutenção de software; ou seja, a Engenharia de Software é a aplicação de técnicas de engenharia ao software". A Engenharia de Software preocupa-se com as teorias, os métodos e as ferramentas para o desenvolvimento profissional de software. Seu objetivo é o desenvolvimento e operação de um produto (software).
Desafios enfrentados pela Engenharia de Software Lidar com sistemas legados, lidar com diversidade crescente e lidar com necessidades de tempos de entrega reduzidos. Sistemas legados - Sistemas velhos e valiosos devem ser mantidos e atualizados; Heterogeneidade - Os sistemas são distribuídos e incluem uma combinação de hardware e software; Entrega - Há uma pressão crescente para entrega mais rápida do software.
Mitos e Realidades no Desenvolvimento de Software Mito Minha equipe tem as ferramentas mais atuais de Engenharia de Software e os melhores computadores. Realidade Não basta!!! Mesmo a melhor ferramenta não pode fazer um desenvolvedor medíocre se tornar um bom desenvolvedor.
Mitos e Realidades no Desenvolvimento de Software (continuação) Mito O problema de atraso no cronograma pode ser resolvido aumentando a equipe. Realidade Não são todas as tarefas que podem ser divididas. Novas pessoas precisam ser treinadas pelas pessoas que já estão no projeto. Acrescentar mais pessoas a um projeto atrasado pode fazer com que ele se atrase ainda mais.
Mitos e Realidades no Desenvolvimento de Software (continuação) Mito Todos os programadores são iguais. Todos os programadores experientes têm as mesmas habilidades. Realidade Programadores com a mesma experiência podem ser bastante diferentes.
Mitos e Realidades no Desenvolvimento de Software (continuação) Mito O programa está 95% pronto. Realidade Programadores são extremamente otimistas. Programadores costumam acreditar na própria capacidade de resolver problemas de forma imediata, mesmo na contínua evidência do contrário.
Mitos e Realidades no Desenvolvimento de Software (continuação) Mito Para iniciar a programação basta uma identificação geral dos objetivos. Os detalhes podem ser identificados depois. Realidade A falta de identificação adequada dos objetivos é a principal causa de fracasso de projetos. A descrição detalhada dos requisitos de informação, funções, desempenho e interface, das restrições de projeto e dos critérios de validação é essencial e deve ser feita com o usuário/cliente.
Mitos e Realidades no Desenvolvimento de Software (continuação) Mito Requisitos mudam continuamente, mas mudanças no software podem ser feitas rapidamente porque o software é flexível. Realidade Requistos mudam continuamente, mas o impacto das mudanças varia de acordo com o momento em que estas ocorrem.
Mitos e Realidades no Desenvolvimento de Software (continuação) Mito Enquanto não se tem um programa rodando avaliar a sua qualidade. não é possível Realidade O software pode ser avaliado desde a sua concepção através de revisões que são mais efetivas do que testes.
Mitos e Realidades no Desenvolvimento de Software (continuação) Mito O único produto de um projeto de desenvolvimento de software é um programa funcionando. Realidade Um programa funcionando é apenas parte de uma configuração do software que inclui programa, documentação e dados. A documentação é a base para um proheto bem sucedido e guia para a manutenção de software.
Engenharia de Sistemas x Engenharia de Software A engenharia de sistemas preocupa-se com todos os aspectos do desenvolvimento de sistemas baseados em computador, incluindo hardware, software e engenharia de processos. A engenharia de software faz parte desse processo. Engenheiros de sistemas estão envolvidos na especificação, projeto arquitetural, integração e desenvolvimento de sistemas.
Atividades associadas à Engenharia de Software Concepção Implementação Manutenção Ao longo de cada fase existem tarefas, subprodutos a desenvolver, pontos de verificação e intervenientes. Existe também um conjunto de atividades de suporte contínuas: gestão de projeto, controle de qualidade, gestão da configuração, elaboração de documentação, elaboração de estimativas, gestão do risco, entre outras.