ENGENHARIA DE SOFTWARE: INTRODUÇÃO

Slides:



Advertisements
Apresentações semelhantes
Projeto Qualified Curriculum
Advertisements

Introdução a Algoritmos
Os projetos.
Rational Unified Process
Engenharia de Software
Gerência de Projetos Wesley Peron Seno Introdução
Engenharia de Software
Engenharia de Software
> Fases de Engenharia de SW > Gestão de Projectos de SW
Rational Unified Process(RUP)
INTRODUÇÃO A INFORMÁTICA
Mitos e Problemas Relacionados ao Software
Metodologia de Desenvolvimento de Software
CK 119: Engenharia de Software DC/CC/UFC © Rossana Andrade, Setembro CK119: Engenharia de Software Rossana Andrade Ph.D, SITE, University of Ottawa,
Análise e Projeto de Sistemas
Professora: Aline Vasconcelos
Professora: Aline Vasconcelos
Implementação de Sistemas
Introdução Visão Geral do Método.
Como Desenvolver Sistemas de Informação
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Engenharia de Software
Engenharia de Software
Engenharia de Software e Sistemas de Informação e Gestão
Engenharia de Software Respostas do Questionário 01
Introdução à Modelagem de Software
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
RUP - Cap. 2 – Os 4 P’s (Pessoas, Projeto, Produto e Processo)
RUPinho Qualidade de Software
Engenharia de Software
Técnicas e Projeto de Sistemas
Planejamento e Gerenciamento de Projetos
Fundamentos de Engenharia de SW
Cap 2 – Processo de Software
Universidade São Marcos Curso: Gestão de Negócios Internacionais
PMBOK 5ª Edição Capítulo 3
Processos de Desenvolvimento de Software – Parte 2
Análise e Projeto de Sistemas
IFSul – Campus Venâncio Aires
Engenharia de Software I
LABORATÓRIOS DE INFORMÁTICA IV ENGENHARIA DE SOFTWARE: DA TEORIA À PRÁTICA GRUPO 13.
Arquitetura do Software
GESTÃO DE PROJETOS Aula 5 1.
Prof. Alexandre Vasconcelos
Engenharia de Software
Desenvolvimento Rápido de Aplicação (RAD)
Técnicas e Projeto de Sistemas
Análise e Projeto de Sistemas de Informação 2o. Semestre de 2014
Processo de Aquisição Adilson de Almeida Cezar Meriguetti
O Processo de desenvolvimento de software
Introdução à Engenharia de Software
Análise e Projeto de Sistemas de Informação 2o. Semestre de 2014
Bruno Silva Desenvolvido a partir de
O Processo Unificado (UP)
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Engenharia de Software
Engenharia de Software
Engenharia de Software
METODOLOGIA, MÉTODOS E FERRAMENTAS
1. Como a engenharia de software pode contribuir no desenvolvimento de sistemas? 1.1 O problema do software 1.2 A velha crise do software 1.3 Os velhos.
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Uma Introdução à Engenharia de Software
Aula 02 de Eng. de Requisitos
Apresentação Leonardo Brussolo de Paula
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
Engenharia de Software Conceitos e elementos 1. Engenharia   Resolução de problemas através de soluções economicamente viáveis  Motivacão: Limitação.
Transcrição da apresentação:

ENGENHARIA DE SOFTWARE: INTRODUÇÃO Professora: Aline Vasconcelos e-mail: aline.vasconcelos@terra.com.br

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.

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 1950 1960 1970 1980 1990 2000 Figura 1 – A evolução do Software

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.

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”.

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”.

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.

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.

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

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!!!

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 e-mails etc.

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.

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.

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]

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]

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.

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.

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.

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.

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.

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.

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.