Introdução à Computação Desenvolvimento de Software - Evolução e Conceitos Aspectos Importantes - Desenvolvimento de Software Motivação • • • • A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os custos de software superam os custos de hardware. A manutenção de software é onde se tem os maiores gastos. Principalmente em sistemas de vida longa. Evolução: Primeiros Anos –características •orientação batch (em lote) para a maioria dos sistemas •Na maior parte, entretanto, o hardware dedicava-se à execução de um único programa que, por sua vez, dedicava-se a uma única aplicação específica •software, por outro lado, era projetado sob medida para cada aplicação e tinha uma distribuição relativamente limitada •ambiente de software personalizado o projeto era processo implícito realizado no cérebro de alguém e a documentação muitas vezes não existia. Segundo era –características •Os sistemas multiusuários introduziram novos conceitos de interação homem-máquina •técnicas interativas •avanços da armazenagem on-line levaram à primeira geração de sistemas de gerenciamento de banco de dados Introdução à Computação Desenvolvimento de Software - Evolução e Conceitos •aparecimento "software houses“ •software desenvolvido para ampla distribuição no mercado •Surgimento da "manutenção de software“ Terceira era –características •As redes globais, as comunicações digitais de largura de banda elevada e a crescente demanda de acesso "instantâneo" a dados exigem muito dos desenvolvedores de software. •caracterizada pelo advento e o generalizado uso de microprocessadores, computadores pessoais e poderosas estações de trabalho de mesa. Quarta era –características •As tecnologias orientadas a objetos, orientadas a documentos, estão ocupando o lugar das abordagens mais convencionais para o desenvolvimento de software em muitas áreas de aplicação. •As técnicas para o desenvolvimento de software já estão mudando a maneira segundo a qual alguns segmentos da comunidade de software constroem programas de computador. •O software de inteligência artificial finalmente saíram do laboratório para a aplicação. Desenvolvimento de Software Inclui basicamente Programas de computador e documentação associadas. Categorias tradicionais de classificação: SOFTWARE E Aplicativos Utilitário s Básico Introdução à Computação Desenvolvimento de Software - Evolução e Conceitos Aplicativos: Efetuar tarefas que sirvam diretamente ao usuário. Ex: controle de contas a pagar processador de textos contabilidade Tipos de Software Aplicativo • • • • • • • • • • • • Processador de Textos Dicionários Eletrônicos Desenhos Técnicos e Artísticos Editoração Eletrônica (publisher) Edição de Imagens Administração/Contabilidade Matemática Engenharia e Arquitetura Planilhas Eletrônicas Medicina Jogos Periódicos Software Utilitário Fornecem ao usuário ferramentas para organizar os discos, verificar disponibilidade de memória, corrigir falhas de processamento. Úteis ao sistema computacional. Administram o ambiente. Exemplo de Utilitários • • • • Compactadores Formatadores Backup Antivírus Introdução à Computação Desenvolvimento de Software - Evolução e Conceitos Software Básico Todo o programa que é necessário ao funcionamento do computador. Mais importante Sistema Operacional (gerencia e disponibiliza para o usuário os recursos da máquina e seus periféricos,permitindo que o equipamento torne-se operável.) Tipos de Software Básico • • Windows, OS2, Unix, AIX, Linux Windows 3.11, Windows 95, Windows 98, Windows NT, Windows XP, Windows Wista Introdução à Computação Desenvolvimento de Software - Evolução e Conceitos Engenharia de Software - Conceitos Engenharia de software é uma área do conhecimento da informática voltada para a especificação, desenvolvimento e manutenção de sistemas de software aplicando tecnologias e práticas de ciência da computação, gerência de projetos e outras disciplinas, objetivando organização, produtividade e qualidade. Atualmente, essas tecnologias e práticas englobam linguagens de programação, bases de dados, ferramentas, plataformas, bibliotecas, padrões, processos e a questão da Qualidade de Software. O seu objetivo é estabelecer uma sistemática abordagem de desenvolvimento, através de ferramentas e técnicas apropriadas, dependendo do problema a ser abordado, considerando restrições e recursos disponíveis. Qual é a diferença entre a Engenharia de Software e a Ciência da Computação? A Ciência da Computação tem como objetivo o desenvolvimento de teorias e fundamentações, enquanto que a Engenharia de Software se preocupa com as práticas de desenvolvimento de software. Introdução à Computação Desenvolvimento de Software - Evolução e Conceitos Métodos e Técnicas: como fazer Metodologias: como aplicar Ferramentas: Automatizam os métodos, dão apoio à utilização dos mesmos. CASE => (Computer-Aided Software Engineering): Ferramentas integradas para desenvolver software. -> abrangem desde a fase de análise até a geração do produto final, inclusive incluindo o desenvolvimento em alguma linguagem de programação. Ciclo de Vida dos Sistemas Todos os sistemas têm ciclo de vida bem definido, ou seja, todos eles passam pelos estágios de: • Concepção: enfoca a questão “o que?” – o que é o sistema Engloba: Análise do sistema Planejamento do projeto de software Análise de requisitos Introdução à Computação Desenvolvimento de Software - Evolução e Conceitos As atividades de análise concentram-se na identificação, especificação e descrição dos requisitos do sistema de software. Em resumo, requisito é uma necessidade que o software deve cumprir. É comum que o cliente não saiba o que ele realmente deseja, que haja problemas na comunicação e ainda que haja mudança constante de requisitos. • Desenvolvimento: enfoca a questão “como” – como implementar o sistema Engloba: projeto de software Codificação Testes • Manutenção: enfoca “mudanças” – no sistema e no ambiente Engloba: correção Adaptação Expansão Estas etapas ocorrem independente da metodologia utilizada para o desenvolvimento do sistema. Características do Software Software não é um elemento físico; é um elemento lógico (não tem propriedades físicas, como visualizar, medir ...) O software não pode ser manufaturado; custos estão concentrados no desenvolvimento (normalmente calcula-se horas de projeto) O processo de gerenciamento é diferente; o relacionamento entre as pessoas é diferente; Existem diferentes abordagens (podemos fazer de várias maneiras) para se chegar ao produto final O software não se desgasta com o uso; mas deteriora-se. Não há peças de reserva e sim manutenção, correção, aperfeiçoamento. Pode ser construído aproveitando-se componentes prontos -> reusabilidade Um erro durante um teste => erro de projeto por isso a fase de projeto é muito importante. O desenvolvimento de software tem como principais características e funcionalidades a de automatizar um determinado processo, a melhora da qualidade das informações, o apoio de decisões estratégicas, além de ser um instrumento de melhoria da qualidade de vida da sociedade. Introdução à Computação Desenvolvimento de Software - Evolução e Conceitos Dificuldades para se desenvolver software • • • • • Saber o que o software deve fazer: quais os requisitos (abstração); Ferramentas; linguagem; SO Tempo e custos elevados de desenvolvimento. Prever falhas (antes de entregar). Tratar manutenção e versões. Quais são os custos da Engenharia de Software? • • • • Pesquisas mostram que 60% dos custos é para o desenvolvimento e 40% para os testes. O custo de evolução do software, normalmente, excede o custo de desenvolvimento. O custo depende do tipo de sistema a ser desenvolvido e suas restrições. A distribuição dos custos depende do modelo de desenvolvimento adotado. Desenvolvimento de software para a educação A decisão de utilização da tecnologia da informática, em particular do software, como apoio ao processo de ensino-aprendizagem, deve ser baseada em critérios levando-se em consideração os mais variados aspectos, tanto pelos recursos tecnológicos oferecidos pela engenharia de software, quanto pelas possibilidades pedagógicas e metodológicas de uso no ensino. O software é apenas uma ferramenta. O professor tem um papel preponderante em sua inserção no processo educacional. Desse modo, ele deve ser parte ativa em todas etapas referentes ao uso de software na educação: acesso, análise, experimentação, aquisição, utilização, avaliação e produção. Assim, as equipes de desenvolvimento devem, não apenas ouvir ou consultar educadores, mas incorporá-los na criação de software para educação.