ies - aula 01 - 02.08
Post on 29-Jun-2015
1.204 Views
Preview:
TRANSCRIPT
TÍTULO DA APRESENTAÇÃOTÍTULO DA APRESENTAÇÃO
subtítulosubtítulo
Profº Vanilson Araújo (Branco)
Curso de Especialização
Engenharia de Software
Objetivo da DisciplinaObjetivo da Disciplina
Apresentar os principais conceitos e práticas utilizadas e estudadas na área de Engenharia de software, fornecendo uma visão geral de como desenvolver software de qualidade.
BibliografiaBibliografiaSOMMERVILLE, Ian, Engenharia de Software, 8ª Edição, Addison-Wesley, 2007.PRESSMAN, Roger S. Engenharia de Software. São Paulo : Makron Books, 1995.PAULA Filho, Wilson de Pádua. Engenharia de software: fundamentos, métodos e padrões. Rio de Janeiro :LTC, 2001.PETERS, James F. Engenharia de Software Teoria e Prática. Rio de Janeiro : Campus, 2001.ROCHA, Ana R. C. Qualidade de Software Teoria e Prática. Rio de Janeiro: Campus, 2001.
Introdução à Introdução à Engenharia de SoftwareEngenharia de Software
Para reconhecer e entender a importância da engenharia de software, é preciso primeiro saber qual é a importância do próprio software.
Para isso, é necessário em primeiro lugar entender o que é um software.
O que é software?
Definição de SoftwareDefinição de Software SoftwareSoftware - - conjunto de programas,
documentação e procedimentos operacionais com os quais pode-se fazer com que os computadores e outros dispositivos eletrônicos sejam úteis aos homens. Sendo que os programas são conjuntos de instruções arranjadas de forma que possam ser entendidas e executadas por um computador
Em segundo lugar, é necessário compreender a vasta gama de tipos de software.
TiposTipos de Software de Software1.- Software Básico1.- Software Básico Também conhecidos como “software de
sistema” Se caracterizam por uma forte interação
com o hardware do computador Executam as funções de controle que
permitem que o software aplicativo tenha interface com outros elementos do sistema
Exemplos: sistemas operacionais, drivers, compiladores, etc.
2.- Software Aplicativo2.- Software Aplicativo Podem ter diversas funções e ser
divididos em duas categorias:
Software de Tempo Real
Software Comercial
1) Software de Tempo Real Funções de monitoramento, análise e
controle de eventos. A resposta do sistema deve obedecer a
severas restrições de tempo (em mili-segundos).
Exemplos: controle de tráfego aéreo, relógio digital
2-Software 2-Software Aplicativo - Aplicativo - CategoriasCategorias
2) Software Comercial Uma das maiores áreas de aplicação de
software. Facilitam operações comerciais e
tomadas de decisões administrativas. Exemplos: folha de pagamentos, contas
a pagar e a receber, controle de estoque, etc.
2-Software 2-Software Aplicativo - Aplicativo - CategoriasCategorias
Caracteriza-seCaracteriza-se pelo processamento de pelo processamento de dados numéricosdados numéricos
Exemplos: astronomia, vulcanologia, Exemplos: astronomia, vulcanologia, análise da fadiga de materiais, biologia análise da fadiga de materiais, biologia molecular, etc…molecular, etc…
Outros exemplos: auxílio de Outros exemplos: auxílio de desenvolvimento de projetos, como os desenvolvimento de projetos, como os programas CAD (Computer-Aided programas CAD (Computer-Aided Design)Design)
3 - Software 3 - Software Científico Científico
e de Engenhariae de Engenharia
Controle de produtos e sistemas para os mercados industriais e de consumo.
Exemplos: controle do teclado de fornos de microondas, funções digitais de automóveis (como controle de combustível, mostradores no painel e sistemas de freio), etc.
4 - Software 4 - Software EmbutidoEmbutido
Esta categoria envolve diversos tipos de software utilizados para diferentes fins.
Exemplos: processadores de textos, planilhas eletrônicas, jogos, gerenciamento de dados, etc.
5-Software de 5-Software de Computador Computador PessoalPessoal
Sistemas que utilizam abordagens e metodologias da inteligência artificial.
Principais aplicações: problemas difíceis de serem modelados computacionalmente por modelos tradicionais.
Principais técnicas: sistemas baseados em conhecimento, sistemas especialistas, redes neurais, algoritmos genéticos, etc.
Exemplos: jogos, prova de teoremas, robótica, aprendizado de máquina, etc.
6-Software de Inteligência Artificial
Sistemas feitos para serem utilizados na internet por meio de um browser
Tecnologias: HTML, ASP, .Net, PHP, Java, XML, etc.
Exemplos: Páginas pessoais, portais, consulta a bases de dados, etc.
7 - Software 7 - Software Baseado na WebBaseado na Web
HistóricoHistórico da Engenharia de da Engenharia de SoftwareSoftware
Para entender como surgiu a área de Engenharia de Software, é preciso analisar a história da evolução do software ao longo dos anos.
divide-se a evolução dos softwares em 4 eras:
1950 1960 1970 1980 1990 2000
1a. Era
2a. Era
3a. Era
4a. Era
Programas Batch. Software customizado e produzido somente sob encomenda.
Distribuição limitada. Durante esses anos, a maior parte do software era desenvolvida e usada pela própria pessoa ou organização.
1ª Era 1950 – 1963 (aprox).1ª Era 1950 – 1963 (aprox).
O desenvolvedor era um funcionário da empresa contratado para desenvolver o sistema e ficar disponível para corrigir erros que pudessem surgir.
Como apenas uma pessoa era responsável pelo desenvolvimento e manutenção do sistema, não havia a necessidade de documentação ou estruturação, já que apenas o desenvolvedor deveria ser capaz de entender o software que ele próprio desenvolveu.
1ª Era 1950 – 1963 (aprox).1ª Era 1950 – 1963 (aprox).
Começaram a surgir sistemas multi-usuários, sistemas de tempo real, banco de dados. Rede ponto a ponto.
Começou a surgir também software como produto, ou seja, aplicativos produzidos para serem vendidos para diferentes organizações..
2ª Era 1963 – 1978 (aprox).2ª Era 1963 – 1978 (aprox).
Foi nessa época que começaram a surgir as empresas desenvolvedoras de software.
Softwares desenvolvidos para mainframes e minicomputadores eram distribuídos para centenas e, às vezes, até milhares de usuários.
Começaram a ser criadas bibliotecas de códigos, inclusive eram comprados produtos no exterior para acrescentar mais instruções às bibliotecas.
2ª Era 1963 – 1978 (aprox).2ª Era 1963 – 1978 (aprox).
No entanto, quando aumentou o uso e distribuição dos softwares, começaram a aumentar também os problemas.
Às vezes os programas tinham de ser corrigidos devido à descoberta de falhas, ou alterados conforme as exigências do usuário ou adaptados a novos hardware, atividades atualmente chamadas de “manutenção de software”.
2ª Era 1963 – 1978 (aprox).2ª Era 1963 – 1978 (aprox).
A chamada “crise de software” surgiu porque a natureza personalizada dos programas e a falta de documentação em alguns casos praticamente impossibilitava a sua manutenção..
2ª Era 1963 – 1978 (aprox).2ª Era 1963 – 1978 (aprox).
Surgem os sistemas distribuídos, ou Surgem os sistemas distribuídos, ou sistemas sistemas em redeem rede. .
Surgem eletrodomésticos e máquinas Surgem eletrodomésticos e máquinas eletrônicas com software embutido.eletrônicas com software embutido.
O hardware nessa época já tem um custo O hardware nessa época já tem um custo mais baixo. mais baixo.
Foi nessa era que surgiram os microprocessadores de computadores pessoais, que passaram a ser amplamente , que passaram a ser amplamente consumidos pelo público geral, estimulando o consumidos pelo público geral, estimulando o crescimento de muitas empresas de software crescimento de muitas empresas de software e o surgimento de novas empresase o surgimento de novas empresas. .
3ª Era 1975 – 1990 (aprox).3ª Era 1975 – 1990 (aprox).
O número de cópias vendidas de um software chegava a centenas de milhares. .
Nessa era, o hardware passa a ser Nessa era, o hardware passa a ser considerado um produto primário básico, considerado um produto primário básico, sendo que o sendo que o softwaresoftware é responsável pela é responsável pela diferenciação. diferenciação.
Enquanto a taxa de crescimento das vendas Enquanto a taxa de crescimento das vendas de hardware se estabilizaram na década de de hardware se estabilizaram na década de 80, as vendas de software continuaram a 80, as vendas de software continuaram a crescercrescer..
3ª Era 1975 – 1990 (aprox).3ª Era 1975 – 1990 (aprox).
Podemos dizer que a quarta era se estende até os dias atuais.
Esta era caracteriza-se pelas tecnologias orientadas a objeto, sistemas de inteligência artificial (sistemas especialistas, redes neurais), computação paralela e multi-processada.
4ª Era 1990 – até hoje4ª Era 1990 – até hoje
As diferentes eras da evolução do software mostram que ele se tornou mais importante à medida que o hardware tornou-se um “problema resolvido”.
Quando o computador começou a ser usado, aproximadamente na década de 50 e nas três décadas seguintes, o principal desafio era desenvolver hardware para reduzir custos de processamento e armazenagem de dados, bem como reduzir o seu tempo de processamento.
A importância do SoftwareA importância do Software
Naquela época(50´s), o software era apenas um conjunto de instruções que dizia ao computador como efetuar os cálculos o mais rápido possível.
Aproximadamente no fim da década de 80 esse cenário mudou radicalmente.
Os computadores já eram rápidos o suficiente e os pesquisadores perceberam que o hardware estava sendo mal aproveitado, que ele podia ser utilizado para resolver outros tipos de problemas.
A importância do SoftwareA importância do Software
Então, a chave para o bom aproveitamento de um computador passou a ser o software.
Claro que a preocupação com a evolução do hardware continua. Não se passam seis meses sem o lançamento de um processador ou outro dispositivo mais veloz que os anteriores.
No entanto, é crucial que o software acompanhe essa evolução, fazendo bom uso do hardware.
A importância do Software (80A importância do Software (80´s)´s)
A Crise de SoftwareA Crise de Software
Durante as primeiras eras do software, o desenvolvimento de software era feito de forma totalmente desorganizada.
Não era feito nenhum projeto, planejamento, ou análise de requisitos e o pior era que o software não estava documentado.
O software era simplesmente produzido conforme o conhecimento e experiência pessoal do programador.
A Crise de Software (70´s)A Crise de Software (70´s) Com o tempo, o desenvolvimento
desorganizado levou a diversos problemas.
O principal problema era quando surgiam erros ou quando era necessária ou desejada alguma mudança no software.
Como o código não era documentado e não obedecia a nenhuma estrutura formal, apenas o desenvolvedor conseguia entender e modificá-lo.
Em alguns casos, quando a mudança era realizada muito tempo após o desenvolvimento do software, mesmo o próprio desenvolvedor tinha dificuldades para entender o código que ele mesmo desenvolveu.
Assim, as mudanças eram altamente custosas. Ao conjunto de problemas encontrados no desenvolvimento
de software deu-se inicialmente o nome de “crise de software”, sendo posteriormente chamado de “aflição crônica”.
Mais adiante, veremos ainda diversos outros tipos de problemas causados pela falta de planejamento e programação estruturada, como: a insatisfação do cliente, a dificuldade de cumprir prazos, erro na previsão dos custos, entre outros.
Devido a esses problemas, verificou-se que era preciso tomar vários cuidados antes e durante o desenvolvimento de software, para evitar que esses problemas ocorressem.
Assim, a Eng. de Software surgiu para propor estratégias que evitassem que esses problemas acontecessem.
Definições de Engenharia Definições de Engenharia de Softwarede Software
“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”. (Fritz Bauer,1969):
Foco nos objetivos:• Economia• Confiabilidade• Eficiência
“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 software de qualidade preditível e controlável, operando de modo econômico em máquinas e ambientes reais”. Arndt Von Staa (1987):
Foco nos objetivos:• Economia • Eficiência• Qualidade “preditível” e Manutenção
“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 resolução de problemas”. Anneliese Mayrhayser (1990):
Foco nos objetivos:• Software de qualidade • Resolução de problemas
Foco nas metodologias: • Métodos• Técnicas • Ferramentas
Métodos, Ferramentas e Procedimentos definidos na disciplina de Engenharia de
Software:
Permitem que o engenheiro controle todo o processo de desenvolvimento do software.
Oferecem ao profissional desenvolvedor uma base para a construção de software de alta qualidade.
Levam à produção de um software que atenda aos requisitos e expectativas do cliente.
Um desafio constante da área de Engenharia de Software é melhorar o processo de desenvolvimento de software.
Definem diversos tipos de tarefas a serem realizadas antes, durante e após o desenvolvimento de um software.
Incluem a especificação de notações a serem utilizadas, critérios para medir a qualidade do software e medidas de levantamento de requisitos
MétodosMétodos
Principais Tarefas: Planejamento e estimativa de
projeto; Análise de Requisitos; Projeto da Estrutura de Dados; Algoritmo de Processamento; Codificação; Teste; Manutenção.
Abrangência dos MétodosAbrangência dos Métodos
Problema é o excesso de formalidade nos modelos de processo propostos nos últimos 30 anos.
Existe hoje a necessidade de desenvolver software de forma mais rápida, mas com qualidade.
Os desenvolvedores são geralmente inimigos das formalidades – Prática X Teoria
Problemas dos MétodosProblemas dos Métodos
A Prática Comprova que:A Prática Comprova que:
Indivíduos e interações são mais importantes que processos e ferramentas;
Software funcionando é mais importante do que documentação detalhada;
Colaboração dos clientes é mais importante do que negociação de contratos;
Adaptação às mudanças é mais importante do que seguir um plano.
FERRAMENTASFERRAMENTAS Podem auxiliar o desenvolvimento
de software em diversos níveis: Apenas ambientes para codificação Apoio semi-automático Apoio automatizado
CASE (Computer-Aided Software Engineering) Ambientes de apoio ao desenvolvimento de
software. Podem incluir diferentes ferramentas integradas,
de forma que a informação gerada por uma das ferramentas do ambiente possa ser utilizada por outra ferramenta do mesmo ambiente.
Exemplo 1: um ambiente contendo compilador, banco de dados e ferramentas de auxílio ao teste de software;
Exemplo 2: ambiente para a coordenação de desenvolvimento de software em equipe;
Exemplo 3: ambiente que gera o código com base na modelagem.
PROCEDIMENTOSPROCEDIMENTOS Indicam como executar, na prática, as
tarefas definidas pelos métodos. Podem indicar:
A seqüência na qual os métodos serão aplicados
Os produtos a serem entregues (documentos, relatórios, etc),
Controles de qualidade, Coordenação de mudanças, etc.
top related