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

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

ENGENHARIA DE SOFTWARE: INTRODUÇÃO

Apresentações semelhantes


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

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

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 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 Primeira Era: - Orientação batch - Distribuição limitada - Software Customizado Segunda Era: - Multi-usuário - Tempo real - Bancos de dados - Produto de software Figura 1 – A evolução do Software

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 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 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 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 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 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. 1990 – 2004: orientação a objetos, desenvolvimento para Web, desenvolvimento baseado em componentes.

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 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 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 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 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 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 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 Processos de Desenvolvimento de Software
Um 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 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 Processos de Desenvolvimento de Software
Um 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: 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 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 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 Conceitos no Desenvolvimento de Software
Mé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. Ferramenta: 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: 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 Conceitos no Desenvolvimento de Software
Artefatos: 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. Domínio: família de aplicações com requisitos similares. Ex: escolar, agropecuário, legislativo etc.


Carregar ppt "ENGENHARIA DE SOFTWARE: INTRODUÇÃO"

Apresentações semelhantes


Anúncios Google