1 Universidade Federal Fluminense Campus de Rio das Ostras Curso de Ciência da Computação Introdução à Ciência da Computação Professor: Leandro Soares de Sousa e-mail: leandro.uff.puro@gmail.com site: http://www.ic.uff.br/~lsousa Aula 7: Engenharia de software e aplicativos
2 Peopleware Engenharia de software e aplicativos Software Hardware
3 Desenvolver software não é uma tarefa trivial! Os aplicativos são desenvolvidos para atender alguma necessidade dos usuários alvo (software básico ou de aplicação) Muitas pessoas estão envolvidas no processo de desenvolvimento... Problemas! No processo muitos erros ocorrem, graves prejuízos financeiros podem ser alcançados, vidas podem deixar de ser salvas ou podem ser perdidas. Nossa!!!
Capturar, modelar e representar um problema não é fácil!!! 4 A Engenharia de Software está aí para ajudar nessa tarefa!
O que é a engenharia de software: 5 Engenharia de Software é uma área da computação voltada à especificação, desenvolvimento, manutenção e criação de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade.
6 Objetivos da engenharia de software: Controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados Produtividade no desenvolvimento, operação e manutenção de software Qualidade versus Produtividade (questão complicada)
7 Características da engenharia de software A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduos Usa princípios de engenharia ao invés de arte, e Inclui tanto aspectos técnicos quanto não técnicos
Disciplina da engenharia de software 8 Desenvolvimento de sistemas de grande porte. Desenvolvimento exige os esforços de diversas pessoas por um longo tempo, sistema e pessoal pode ser modificado ao longo do projeto. Engenharia de Software inclui tópicos, como gestão de pessoal e administração de projetos. Desenvolvimento de projetos de software com padrões da engenharia
Disciplina da engenharia de software 9 Questões: Como estimar o custo, o tempo necessário e outros recursos para completar o projeto? Como dividir o projeto em partes operacionais e compatíveis entre si? Como projetar a comunicação entre as diversas partes? Como medir o progresso? Como medir a qualidade?
Alguns números: 10 Como contratante, o que fazer se você souber que: Se estiver na média, sua encomenda de software: custará 45% a mais que o contratado; terá um atraso de 63% sobre o prazo previsto para entrega; e não terá 33% das funcionalidades encomendadas.
11 Diferença entre as características do software e as dos outros campos da engenharia. Reuso Os campos tradicionais: construção a partir de componentes genéricos pré-fabricados. Ex:carro, rádio, ar-condicionado, trancas de portas, motor. No contexto do software, os componentes previamente projetados tendem a ser específicos de cada domínio. (reusar um componente pode exigir que ele seja reprojetado).
Diferença entre as características do software e as dos outros campos da engenharia. 12 Tolerância Áreas tradicionais da engenharia consideram aceitável se executarem suas tarefas dentro de certos limites. Ex: lavadora de roupa que gira em torno do eixo com 2% de tolerância. O software, ao contrário, apresenta um funcionamento correto ou incorreto. Ex: sistema de contabilidade que apresenta uma precisão com tolerância de 2% não é aceitável.
13 Escassez de Métricas Qualidade de um dispositivo mecânico frequentemente é medida em termos do tempo médio entre suas falhas. Software, ao contrário, não se desgasta, portanto tal método de medição de qualidade não pode ser aproveitado. Essa dificuldade é uma das principais razões pelas quais a engenharia de software ainda não encontrou uma base rigorosa de sustentação. Pesquisar em engenharia de software é avançar em dois níveis: prático e teórico.
14 Engenharia de software e aplicativos Escassez de Métricas Necessidade de avanços devido a sociedade se mostrar dependente dos sistemas computacionais e dos softwares correspondentes Erros de software têm causado muitos problemas: A perda de $5 milhões pelo Banco de Nova Iorque. A perda da sonda espacial Mariner 18. Sobrecargas de radiação Queda simultânea das comunicações
15 Ciclo de vida do software: Conceito mais fundamental em engenharia de software é o ciclo de vida do software Diferença entre software e outros produtos é que um software não se desgasta. Na fase de modificação são encontrados erros ou mudanças na aplicação Requer que uma pessoa (raramente é o próprio autor do programa original) estude e compreenda o programa, ou parte dele e sua documentação A maioria das pesquisas na engenharia de software se concentra na fase de desenvolvimento do ciclo de vida do software (maximizar custo/benefício). Desenvolvimento Utilização Manutenção
Custos: Engenharia de software e aplicativos 16 Especificação & Análise Projeto Desenvolvimento Produção
Engenharia de Software Assistida por Computadores (CASE) Sistemas mecanizados que incluem ferramentas para: Planejamento de projetos Gerenciamento de projeto Documentação Prototipação e simulação Interfaces Programação (escrita e depuração) Testes 17
Agora vamos aos aplicativos (software), conforme seus objetivos de desenvolvimento ou aspectos comerciais. 18
Classificação quanto a fonte (Software Livre e Software Proprietário): 19 Software Proprietário: é licenciado com direitos exclusivos para o produtor. Para fazer uso ou qualquer alteração no programa (quando possível) é necessário a compra de uma licença. Alguns dos mais conhecidos softwares proprietários são o Microsoft Windows, o Microsoft Office, o RealPlayer, o Adobe Photoshop, o Mac OS, o WinZip, algumas versões do UNIX, entre outros.
Classificação quanto a fonte (Software Livre e Software Proprietário): 20 Software Livre, segundo a definição da Free Software Foundation, é qualquer programa que possa ser utilizado, copiado, estudado e redistribuído sem restrições. O Software livre respeita os direitos dos utilizadores permitindo que partilhem com outros o que aprenderam, já quanto ao lucro, não se opõem a venda almejando lucro (software comercial) desde que respeitem o copyleft.
Licenças de uso: 21 Freeware: são softwares gratuitos, geralmente para pessoas físicas, havendo uma versão paga para uso corporativo. Normalmente, propagandas ou patrocinadores mantém o projeto vivo. Shareware: apenas funcionam por um determinado período de tempo (chamado período de avaliação) e depois o usuário deve decidir se adquire ou não o produto.
Licenças de uso: 22 Demo e Trial: versões demo e trials são limitadas. As versões demo geralmente são versões incompletas, mais curtas do software (ex.: jogos). Versões trial funcionam quase da mesma maneira, os programas funcionam, mas não de maneira completa, geralmente não salvando ou exportando os trabalhos realizados por completo, para utilizar todo o seu potencial o usuário deve comprar o software completo ou apenas a sua licença.
Licenças de uso: 23 Beta: Versões ainda em desenvolvimento ou em desenvolvimento constante (como o Gmail e outras aplicações do Google). Após a versão beta é lançada uma versão RC (Release Candidate) que é a última versão antes do lançamento oficial do software. Adware: São programas que vem junto com outros programas, como banners e barras de pesquisa. O adware pode ser uma limitação de um programa shareware, exibindo propagandas e outros tipos de anúncio para sustentar o projeto. O banner é removido depois de comprada a licença
Licenças de uso: 24 Opensource, GPL e GNU: É uma distribuição livre, de código-fonte aberto e disponível gratuitamente para download. O usuário tem total liberdade para fazer suas próprias alterações e posteriormente os desenvolvedores poderão utilizar esse código no projeto seguindo o mesmo padrão GPL (GNU Public License) que é o formato padrão Open-source. Software Comercial: a licença é adquirida e diz respeito ao uso do software, que inclui a versão do mesmo. (comentário prazo de validade técnica)
Aula 7 25 Engenharia de software e aplicativos FIM