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
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
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
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
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.
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
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.
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.