400 likes | 562 Views
Fundamentos de Engenharia de Software. Willamys Araújo. Motiva ç ão . Quando um Software é bem sucedido? Possui as necessidades das pessoas que o usam ( who use it ) Executa perfeitamente em um longo período de tempo ( long period of time ) Fácil de modificar e utilizar
E N D
Fundamentos de Engenharia de Software Willamys Araújo
Motivação • Quando um Software é bem sucedido? • Possui as necessidades das pessoas que o usam (who use it) • Executa perfeitamente em um longo período de tempo (long period of time) • Fácil de modificar e utilizar • PODE E MUDA COISAS PARA MELHOR • Quando um Software falha? • Usuários estão insatisfeitos • Erros ocorrem • Difícil de modificar e utilizar • COISAS RUIM PODEM E ACONTECEM
Forma de Avaliação • Prova Escrita • Projeto – Estudo de Caso - Software • Seminário
Projeto • Os projetos visam aplicar os conceitos da ES no desenvolvimento de um software - vivenciando um estudo de caso. • Construir o plano de desenvolvimento, análise, projeto, programação (protótipo) e testes utilizando metodologia orientada a objetos. • Os Grupos devem ser de 2 ou 3 alunos • Os grupos devem definir o tema de pesquisa e desenvolvimento do Software • A avaliação do Projeto é subdivida em 5 fases. • Cada uma tem data a ser finalizada.
Fases de Desenvolvimento do Software • F1 - Definição do Tema e do Documento de Especificação do Sistema. • F2 - Modelos de Análise (Especificação de Requisitos e Modelos). • F3 - Modelos de Projeto. • F4 - Protótipo do Software (Implementação). • F5 - Proposta de Teste/Manutenção.
Seminários • As apresentações dos seminários iniciam aproximadamente no início de outubro. Após definidos os grupos será divulgado o horário de cada apresentação. • As apresentações devem ter no máximo 45min de duração • Os grupos devem entregar como parte da avaliação do seminário um artigo (segundo estrutura definida) de no máximo 10 páginas sobre o tema explorado. O artigo deve ser entregue como parte da avaliação do seminário e no máximo uma semana após a realização do mesmo.
Temas • Fábrica de Software • Teste e Depuração de Software • Qualidade e Gestão de Configuração de Software • Métricas no desenvolvimento do software • Modelos de Melhoria de Processo de Software
Bibliografia • Pressman, Roger S. Engenharia de Software. McGraw-Hill. 2006. • Sommerville, Ian. Engenharia de Software. Prentice Hall. 2003. • Cardoso, Caíque. UML na Prática. Ciência Moderna. 2003. • Conallen, Jim. Desenvolvendo Aplicações Web com UML. Editora Campus, 2003. • Gustafson, David A.Teoria e problemas de engenharia de software. Porto Alegre : Bookman, 2003. • Brooks Jr., Frederick P. The mythical man-month essays on software engineering . Reading; Menlo Park : Addison-Wesley, 1975.
O Software • 1950 -1970: Desafio principal era desenvolver Hardware • reduzir o custo de processamento e armazenamento de dados • Hoje: Reduzir o custo e melhorar a qualidade dos Softwares (potencial da computação) • Funcionalidade • Human-Friendly
Definição Software • Dicionário Aurélio: • Programa • Aquilo que pode ser executado por um equipamento (o hardware) • Um produto comercializado que consiste em um sistema de rotinas e funções
Definição Software 1- INSTRUÇÕES (programas de computador) que quando executadas produzem a função e o desempenho desejados 2 - ESTRUTURAS DE DADOS que possibilitam que os programas manipulem adequadamente a informação 3 - DOCUMENTOS que descrevem a operação e o uso dos programas
Definição Software Definição mais exata • Analisar as características que o tornam diferente dos outros produtos • Hardware: produto em forma física • Software: elemento de sistema lógico
Características do Software 1. desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico (industrial) sucesso é medido pela qualidade e não quantidade
Defeitos de projeto e manufatura “desgaste” “mortalidadeinfantil” índice de falhas Problemas Ambientais (poeira, vibração, abuso, temperaturas, ...) tempo Características do Software 2. não se “desgasta”, mas se deteriora devido as mudanças Curva de falhas para o hardware
mudanças curva real índice de falhas curva idealizada tempo Características do Software Curva de falhas do software
Falhas Hardware/software • Quando um componente de hardware se desgasta é substituído por uma “peça de reposição” • Não existe “peça de reposição” para software • Toda falha indica um erro no projeto ou no processo de tradução para o código executável • Manutenção do software é mais complexa do que a do hardware
Como Desenvolver um Software? • Aplicado a qualquer problema em que um conjunto previamente de passos procedimentais tiver sido definido (algoritmo) • Exceção: Softwares de Inteligência Artificial
Aplicações SOFTWARE BÁSICO coleção de programas escritos para apoiar outros programas. Forte interação com o hardware • sistema operacional, compiladores, ... SOFTWARE DE TEMPO REAL software que monitora, analisa e controla eventos do mundo real • sistema de controle de tráfego aéreo, relógio digital, ... SOFTWARE COMERCIAL sistemas de operações comerciais e tomadas de decisões administrativas • folha de pagamentos, contas a pagar e a receber, ...
Aplicações SOFTWARE CIENTÍFICO E DE ENGENHARIA caracterizado por algoritmos de processamento de números • astronomia, vulcanologia, análise de fadiga da mecânica de automóveis, biologia molecular, projeto CAD, ... SOFTWARE EMBUTIDO usado para controlar produtos e sistemas para os mercados industriais e de consumo • controle de microondas, de combustível, sistemas de freio
Aplicações SOFTWARE DE COMPUTADOR PESSOAL envolve processamento de textos, planilhas eletrônicas, computação gráfica, diversões, etc. SOFTWARE DE INTELIGÊNCIA ARTIFICIAL fazuso de algoritmos não numéricos para resolver problemas que não sejam favoráveis à computação ou à análise direta • sistemas especialistas, reconhecimento de padrões, jogos, ...
Evolução do Software Hardware: maior desempenho, menor tamanho e custo • A terceira era • Sistemas Distribuídos • “Inteligência” embutida • Hardware de baixo custo • (PCs) • workstation • Impacto de consumo • A segunda era • Multiusuário • Tempo real • Banco de Dados • Software Houses • A quarta era • Tecnologia O. O. • Sistemas Especialistas • Redes Neurais • Computação Paralela • Os primeiros anos • Orientação batch • Distribuição limitada • Software customizado 1970 1980 1990 2000 1950 1960
Crise do Software Refere-se a um conjunto de problemas encontrados no desenvolvimento de software: (problemas não se limitam a softwares que não funcionam adequadamente) 1 - As estimativas de prazo e de custo freqüentemente são imprecisas • “Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software” • “Estimativas são feitas a olho, com resultados ruins”
Crise do Software • “Os prazos arrastam-se por meses” • “Causa insastifação para o cliente e falta de confiança” • “Sem nenhuma indicação sólida de produtividade, não podemos avaliar com precisão a eficácia de novas ferramentas, métodos ou padrões”
Crise do Software 2 - A produtividade das pessoas da área de software não tem acompanhado a demanda por seus serviços • “Os projetos de desenvolvimento de software normalmente são efetuados apenas com um vago indício das exigências do cliente” • “A comunicação entre o cliente e o desenvolvedor de software é muito fraca”
Crise do Software 3- A qualidade de software às vezes é menos que adequada • Não uso de técnicas de teste sistemáticas e completas • Só recentemente começam a surgir conceitos quantitativos sólidos de garantia de qualidade de software
Crise do Software 4- O software existente é muito difícil de manter • A tarefa de manutenção devora o orçamento destinado ao software • A facilidade de manutenção não foi enfatizada como um critério importante • Esses problemas podem ser corrigidos • Abordagem de engenharia de software aliada a técnicas e ferramentas
Causas da Crise do Software 1- PRÓPRIO CARÁTER DO SOFTWARE • O software é um elemento de sistema lógico e não físico. Consequentemente o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas • O software não se desgasta, mas se deteriora
Causas da Crise do Software 2- FALHAS DAS PESSOAS RESPONSÁVEIS PELO DESENVOLVIMENTO DE SOFTWARE • Gerentes sem nenhum background em software • Os profissionais da área de software têm recebido pouco treinamento formal em novas técnicas para o desenvolvimento de software • Resistência a mudanças.
Causas da Crise do Software 3- MITOS DO SOFTWARE • “Não oferecem lições humanas” • Muitas causas da crise de software podem ser localizadas pela mitologia que surgiu durante a história do desenvolvimento do software • Propagaram desinformação e confusão • Mitos • Administrativos, do Cliente e do Profissional
Qual é a Solução? • Reconhecer os problemas e suas causas e desmascarar os mitos do software são os primeiros passos • Métodos e Técnicas para o disciplinar o processo de desenvolvimento do software Engenharia de Software
Definição Engenharia de Software • Fritz Bauer - 1969 “O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais”
Definição Engenharia de Software • IEEE “A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software e o estudo das abordagens para tal”
Definição Engenharia de Software • Arndt Von Staa, 1987 “O desenvolvimento e a aplicação de ciência, matemática, técnicas, métodos e ferramentas para o desenvolvimento e a manutenção econômica de sotfware de qualidade preditível e controlável, operando de modo econômico em máquinas e ambientes reais”
Engenharia de Software “Uma disciplina da Ciência da Computação que oferece Métodos, Técnicas e Ferramentas para desenvolver e manter softwares com alta qualidade para a resolução de problemas”. (Anneliese Mayrhauser, 1990)