A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 ENGENHARIA DE SOFTWARE: INTRODUÇÃO Professora: Aline Vasconcelos

Apresentações semelhantes


Apresentação em tema: "1 ENGENHARIA DE SOFTWARE: INTRODUÇÃO Professora: Aline Vasconcelos"— Transcrição da apresentação:

1 1 ENGENHARIA DE SOFTWARE: INTRODUÇÃO Professora: Aline Vasconcelos

2 2 O que é Software? Instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados. [Pressman, 1995] Sistemas de software: conjunto de programas compreendendo perspectivas diversas como dados, procedimentos, interface e regras operacionais, associados a um projeto de concepção e uma documentação.

3 3 Histórico da sua Evolução Quarta Era: -Sistemas de desktop poderosos -Redes de computadores - Tecnologia de orientação a objetos - Sistemas especialistas - Redes neurais artificiais - Computação paralela Terceira Era: - Sistemas distribuídos - "Inteligência" embutida - Hardware de baixo custo - Impacto de consumo Figura 1 – A evolução do Software Primeira Era: - Orientação batch - Distribuição limitada - Software Customizado Segunda Era: - Multi-usuário - Tempo real - Bancos de dados - Produto de software

4 4 Primeira Era programação de computadores era vista como uma arte "secundária" para a qual havia poucos métodos sistemáticos; evolução e aperfeiçoamento do hardware eram colocados em primeiro plano; softwares eram projetados sob medida nas organizações.

5 5 Segunda Era multi-programação e sistemas multi-usuários; sistemas interativos através de terminais de acesso; armazenagem on-line leva à primeira geração de sistemas de gerenciamento de bancos de dados; altos custos e esforço em manutenção: primeira "crise do software.

6 6 Terceira Era advento e generalizado uso de microcomputadores, computadores pessoais e poderosas estações de trabalho (workstations); sistemas distribuídos x sistemas centralizados; redes locais:sistemas departamentais e em pequenas e médias empresas; crescem as software houses.

7 7 Quarta Era Problemas genéricos: nossa capacidade de construir programas não acompanha o ritmo da demanda de novos programas; nossa capacidade de manter programas existentes é ameaçada por projetos ruins e recursos inadequados. Mudança de paradigma em função da tecnologia de orientação a objetos.

8 8 Quinta Era (do ano 2000 em diante) Desenvolvimento geograficamente distribuído (trabalho cooperativo); Componentes de software (reutilização e reciclagem); Fortalecimento dos especialistas do domínio; Desenvolvimento para a Web.

9 9 Acontecimentos Marcantes: : boas práticas de programação - surge a linguagem Pascal : programação estruturada, ciclo de vida : procedimentos para teste sistemático e prova formal de programas; : focos: requisitos, especificação e projeto; paradigma de desenvolvimento estruturado : era CASE – 2004: orientação a objetos, desenvolvimento para Web, desenvolvimento baseado em componentes.

10 10 Componentes do Software: Componentes executáveis em máquina, como: instruções de programas, estruturas de dados (bancos de dados), interfaces. Componentes não executáveis, como: documentação de projeto e análise, manual de usuário e de produção. –A reutilização é uma característica importante de um componente de software de alta qualidade!!!

11 11 Categorias de Software Software Básico: uma coleção de programas escritos para servir a outros programas. Ex: compiladores, editores, sistemas operacionais, drivers etc. Software de Tempo Real: programas que monitoram, analisam e controlam eventos do mundo real. Um sistema de tempo real precisa responder dentro de restrições de tempo especificadas, requerendo um bom tempo de resposta (diferente de sistemas interativos ou on-line). Ex: software de controle de metrô, de usina nuclear, de satélites etc. Software para o Negócio: a maior área de desenvolvimento de software. Sistemas de Informação: controle escolar, controle de estoque, sistema de biblioteca, comércio eletrônico, pontos de venda etc. Software Aplicativo: softwares de escritório, para computadores pessoais. Ex: editores de texto, planilhas eletrônicas, software de acesso a s etc.

12 12 Categorias de Software Software de Inteligência Artificial: fazem uso de algoritmos não numéricos para a resolução de problemas complexos, que não podem ser tratados de forma convencional. Softwares baseados em heurísticas e em conhecimento. Ex: Redes Neurais (reconhecimento de voz, de imagem), Sistemas Nebulosos (jogos inteligentes, gerenciamento de informações imprecisas) etc. Software Embarcado (ou embutido): normalmente residem em memória não volátil (ROM) e são usados para controle de produtos e sistemas para o mercado consumidor industrial. Ex: programas em forno de microondas, celulares, computadores de bordo em automóveis etc. Software para Engenharia e Científicos: software para apoio a cálculos matemáticos, físicos e para apoio a atividades de engenharia. Ex: simulação de sistemas, ferramentas CASE (computer-aided software engineering), ferramentas CAD (computer-aided design) etc.

13 13 Problemas no Desenvolvimento de Software: As estimativas de prazo e custo freqüentemente são imprecisas. A produtividade do pessoal da área de software não tem acompanhado a demanda por seus serviços. A qualidade do software, às vezes, é inferior à adequada. Os índices de erros em novos programas muitas vezes causam insatisfação ao usuário e falta de confiabilidade no produto. Os esforços e custo em manutenção são, em geral, maiores que os próprios esforços e custo destinados ao desenvolvimento do produto.

14 14 Solução aos Problemas: O desenvolvimento de software pode ser visto como um problema de engenharia? Sim, pois busca: A criação de soluções economicamente efetivas para problemas práticos. A utilização de conhecimento científico para a criação de produtos a serviço do homem. Eng. de Software: "aplicação prática do conhecimento científico no projeto e construção de programas e da documentação requerida para desenvolver, operar e manter estes programas.[Barry Böehm]

15 15 Engenharia de Software: Uma disciplina que lida com a construção de sistemas de software tão grandes e complexos, que precisam ser construídos por uma equipe ou equipes de engenheiros. [Ghezzi, Jazayeri, Mandrioli] Uma disciplina que visa à produção de software sem falhas (confiáveis), entregue no prazo e dentro do orçamento previsto, satisfazendo às necessidades do usuário. Além do mais, o software deve ser fácil de ser modificado quando as necessidades do usuário se modificam. [Schach]

16 16 Para garantir um bom Desenvolvimento de Software: Modelo de Ciclo de Vida deve ser adotado; Processos devem ser seguidos; Métodos e ferramentas de apoio devem ser buscados; Utilização de técnicas para estimativa de custos; Produção de documentação adequada; Utilização de técnicas para o controle de qualidade.

17 17 Processos de Desenvolvimento de Software ProcessoUm Processo é um conjunto de passos parcialmente ordenados, constituídos por atividades, métodos, práticas e transformações, utilizado para se atingir uma meta. Esta meta está associada a um ou mais resultados concretos finais, que são os produtos da execução do processo. Um processo é uma receita que é seguida por um projeto: o projeto concretiza uma abstração, que é o processo. Em um Processo de Desenvolvimento de Software, o ponto de partida é a escolha de um Modelo de Ciclo de Vida. Ciclo de Vida do SoftwareCiclo de Vida do Software inicia-se com a definição do sistema e só termina com a operação do sistema na sua fase de produção até a sua descontinuação.

18 18 Processos de Desenvolvimento de Software ProcessoUm Processo de desenvolvimento de software abrange um conjunto de atividades relacionadas à concepção do software até a sua implementação, entrega, uso e manutenção. Em geral, define:Em geral, define: –Um modelo de ciclo de vida para o software e um paradigma; –Os métodos que serão adotados em cada atividade; –As ferramentas que suportam estes métodos; –Quem participa (papéis) e quando; –Planos de gerência, qualidade e testes.

19 19 Papéis no Desenvolvimento de Software Analista de Sistemas: responsável pela elicitação de requisitos e especificação do que o software fará. Projetista: responsável pela especificação de como o software irá implementar os requisitos definidos na análise. Programador: responsável pela construção dos módulos e programas, especificados no projeto, em uma linguagem de programação. Gerente de Projeto: responsável por definir o processo e os planos de desenvolvimento. Estabelece cronograma, estima prazo, custo e recursos. Acompanha o desenvolvimento.

20 20 Papéis no Desenvolvimento de Software Arquiteto: responsável pela elaboração da estrutura modular do software. Está surgindo no mercado. Arquitetos em tecnologias específicas, como J2EE. Desenvolvedor: atua em todas as etapas do desenvolvimento. Normalmente, o mercado exige especialidade em tecnologias e linguagens específicas. Usuário: pessoas, organizações ou departamentos que utilizam o sistema. Podem ser usuários diretos, que de fato operam o software, ou indiretos, que enviam dados ou recebem resultados do software. Cliente: companhia, organização ou pessoa que contrata e paga o sistema de software a ser desenvolvido.

21 21 Conceitos no Desenvolvimento de Software MétodoMétodo: procedimento formal para a produção de um resultado. Um método define as tarefas que serão realizadas e de que forma as mesmas deverão ser executadas. Define que tecnologias e linguagens deverão ser adotadas e os produtos que serão produzidos. –Ex: metodologia de Análise Essencial, OMT (Object Modeling Technique), RUP (Rational Unified Process) etc. FerramentaFerramenta: instrumento ou sistema automatizado (software) para suportar a realização de uma tarefa. –Ex: DFD (diagrama de fluxo de dados), Rational Rose (ferramenta CASE) etc. Paradigma Ex: paradigma estruturado e paradigma de orientação a objetos (OO).Paradigma: uma maneira, estilo ou filosofia para a construção de software, envolvendo um conjunto de princípios. Ex: paradigma estruturado e paradigma de orientação a objetos (OO). –Cada paradigma envolve um conjunto de métodos, linguagens de modelagem e de programação, ferramentas etc.

22 22 Conceitos no Desenvolvimento de Software ArtefatosArtefatos: sub-produtos produzidos pelas atividades ao longo do processo. Ex: casos de uso na análise, documentação de requisitos, diagramas de classe no projeto, programas etc.Ex: casos de uso na análise, documentação de requisitos, diagramas de classe no projeto, programas etc. DomínioDomínio: família de aplicações com requisitos similares. Ex: escolar, agropecuário, legislativo etc.Ex: escolar, agropecuário, legislativo etc.


Carregar ppt "1 ENGENHARIA DE SOFTWARE: INTRODUÇÃO Professora: Aline Vasconcelos"

Apresentações semelhantes


Anúncios Google