Você está na página 1de 11

07/05/2015

CONTEÚDO VISTO EM....

Engenharia de Software – 2ª série.


DESENVOLVIMENTO DE Analise e Desenvolvimento de Sistemas.- 3ª série.
Gerencia de Projetos – 4ª série
SISTEMAS Tópicos especiais em Sistemas de Informação – 4ª série

Prof. Izabel Cristina Mioranza


izabel@unipar.br
Livro: Princípios de Sistemas de Informação
http://izabel.blogs.unipar.br Ralph M. Stair
Capitulo 12

CONCEITOS BÁSICOS - SOFTWARE CONCEITOS BÁSICOS - SOFTWARE


Um produto comercializado que consiste em um sistema de
rotinas e funções; SOFTWARE
Conjunto de instruções que manipulam estruturas de dados
(informação);
Normalmente o termo software é associado a programas de
computadores;
Não é só um “programa”, mas também toda a Consiste em uma série de programas separados + arquivos de
configuração + documentação do sistema + documentação do
documentação associada e os dados de configuração
usuário + ,se for o caso, sites na WEB para os usuários fazerem
necessários pra fazer com que esses “programas” operem download de informações recentes.
normalmente;

CONCEITOS BÁSICOS - SOFTWARE PARTICIPANTES NO DESENVOLVIMENTO DE SISTEMAS

Uma equipe é formada por tomadores de decisões, usuários,


gerentes, especialistas no desenvolvimento de sistemas e vários
profissionais de apoio.
Considerações Importantes: A equipe é conhecida como equipe de desenvolvimento e é
O software não se desgasta, mas se deteriora; responsável por determinar os objetivos do sistema de informação e
A maioria é feita sob medida em vez de ser montado a partir de por disponibilizar um sistema que atenda a esses objetivos.
componentes existentes; Uma equipe possui um Gerente de Projetos que coordena a equipe e
Custo, adequação do prazo e qualidade são os principais responsáveis pela as atividades desenvolvidas no projeto em execução.
competitividade de um software. Um projeto é um conjunto planejado de atividades que alcança um
determinado objetivo, como por exemplo: o desenvolvimento de um
software que irá controlar o faturamento de uma empresa; ou um
software que irá controlar o funcionamento de uma fabrica de roupas.
Um projeto possui como características uma data de inicio e uma data
provável de termino; e um orçamento do que será gasto no
desenvolvimento do projeto.

1
07/05/2015

PARTICIPANTES NO DESENVOLVIMENTO DE SISTEMAS PARTICIPANTES NO DESENVOLVIMENTO DE SISTEMAS

Funções de um gerente de projetos: Tomadores de decisões são pessoas que irão utilizar o sistema pronto e que
irão se basear nas informações disponibilizadas para tomar as decisões na
Execução das atividades propostas no projeto; organização que administram.
Responsável pelo sucesso ou fracasso do projeto; Usuários são os que irão interagir com o sistema desenvolvido. Pode ser
Responsável pela qualidade do projeto; funcionários, gerentes ou fornecedores.
Treinamento da equipe; Analista de sistemas é o profissional especializado na analise e elaboração
Facilitador da comunicação; de um projeto de sistemas de negócios. Sua funcionalidade pode ser
comparada a de um arquiteto que desenvolve as plantas de um novo
Administra riscos quando for necessário; edifício. Um analista desenvolve planos detalhados para um sistema novo
Possuir características de líder e conseguir a confiança dos integrantes da ou modificado.
equipe entre si e no projeto a ser desenvolvido. Programador é o responsável por modificar ou desenvolver programas que
atendam as solicitações dos usuários. Sua funcionalidade pode ser
“Um sistema de gerenciamento de projeto é somente uma ferramenta: comparada a um empreiteiro que constrói um edifício baseado nas
um carpinteiro pode comprar um martelo, mas o martelo não construirá definições do arquiteto. O programador recebe os planos do analista e
uma casa; em TI são as pessoas que constroem e não a tecnologia....”. constrói ou modifica o software de acordo com o que foi estabelecido.

CONCEITOS BÁSICOS - ENGENHARIA DE SOFTWARE CONCEITOS BÁSICOS - ENGENHARIA DE SOFTWARE


Aplicando tecnologias e práticas da área de
Se ocupa de todos os aspectos da produção do software, desde os ciência da computação,
estágios iniciais de especificação do sistema até a manutenção desse gerência de projetos
sistema. objetivando
organização, produtividade e qualidade.
Trabalhando com técnicas, teorias, métodos e ferramentas que
Atualmente, essas tecnologias e práticas englobam
auxiliam na produção do software.
linguagens de programação,
É uma área do conhecimento da informática voltada para: bases de dados,
especificação, ferramentas,
desenvolvimento e plataformas,
bibliotecas,
manutenção de sistemas de Software padrões,
processos e a
questão da Qualidade de Software.

ENGENHARIA DE SOFTWARE – DEFINIÇÕES: ENGENHARIA DE SOFTWARE – DEFINIÇÕES:

“É uma disciplina da engenharia que se ocupa de todos os aspectos da “Engenharia de Software é a área interdisciplinar que engloba vertentes tecnológicas e
produção de software, desde os estágios iniciais de especificação do gerencial visando a abordar, de modo sistematico, os processos de construção,
implantação e manutenção de produtos de software com qualidade assegurada por
sistema até a manutenção desse sistema, depois que ele entrou em construção, segundo cronogramas e custos previamente definidos.”
operação.” Ian Sommervile Bruno Maffeo

“A aplicação de uma abordagem sistemática, disciplinada e quantificável para o


“Engenharia de Software é o estabelecimento e uso de sólidos desenvolvimento, operação e manutenção do software. O estudo de abordagens e
princípios de engenharia para que se possa obter economicamente um princípios a fim de obter economicamente softwares confiáveis e que executem de
software que seja confiável e que funcione eficientemente em forma eficiente nas máquinas reais”.
máquinas reais”. Ian Sommervile IEEE, 1993

2
07/05/2015

ENGENHARIA DE SOFTWARE ENGENHEIRO DE SOFTWARE:


Em suma, desenvolver software é uma atividade que não se confunde Desenvolvem produtos de software que são vendidos a um
com escrever programas para computador. cliente;
Dois tipos:
Desenvolvimento de software complexo envolve procedimentos que Produtos Genéricos: são produtos desenvolvidos por uma empresa que atua
exigem a abordagem simultânea e integra de aspectos técnicos e na área de desenvolvimento e vendidos no mercado para quem quiser adquirir
gerenciais. o produto. Conhecidos como pacote de software. Ex: processadores de texto,
pacotes de desenho, ferramentas em geral.
Produtos sob encomenda (personalizados): são sistemas encomendados
Deve-se prover o software com um modelo de alto nível onde os
por um cliente em particular e feitos exclusivamente para atender a esse
aspectos técnicos e gerenciais coexistam. cliente. Ex: sistema para um negócio especifico, sistema para dispositivos
eletrônicos e outros mais...

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE


Área da informática que se preocupa com todos os aspectos da
Por que o software demora tanto para ser concluído? produção de software.

Por que os custos de produção têm sido tão elevados? Ferramentas

Métodos
Por que não é possível detectar todos os erros antes que o
software seja entregue ao cliente? Processo

Por que é tão difícil medir o progresso durante o processo de Qualidade


desenvolvimento de software?

ENGENHARIA DE SOFTWARE Engenharia de Software


Ferramentas

Métodos
Ferramentas

Métodos Processo

Processo Qualidade
Qualidade
Como fazer
Instrumento Engloba um conjunto de tarefas: análise de requisitos, projeto,
Dão suporte automatizado ou semi-automatizado ao processo e aos métodos; construção de programas, teste e manutenção.
quando as ferramentas se integram tem-se um sistema denominado CASE -
Engenharia de Software Auxiliada por Computador.

3
07/05/2015

Engenharia de Software Engenharia de Software


Ferramentas
Ferramentas
Métodos
Métodos
Processo
Processo

Qualidade Qualidade

Fundação Solo
É um conjunto de atividades e resultados associados que levam à O gerenciamento da qualidade produz uma mudança cultural que permite
produção de um produto de software. É a camada que liga as demais o desenvolvimento crescente de abordagens mais maduras para a ES.
camadas de ES.

Envolve a coleta de requisitos (Engenharia de


CICLO DE VIDA
Analise de Requisitos Requisitos) mais intensificada e concentrada no
software a ser desenvolvido.
Em geral, um ciclo de vida envolve as seguintes
Projeto Tradução dos requisitos do software
FASES:
para um conjunto de representações Investigação dos Sistemas
Análise dos Sistemas
Codificação
Projeto
Implementação
Tradução das representações em linguagem
de programação Teste e Manutenção Testes
Entrega e Implantação
Operação
Efetua os testes, se necessário os diagnósticos e a correção de Manutenção
defeitos

CICLO DE VIDA CICLO DE VIDA

Investigação dos Sistemas: Projeto


Fornece uma estrutura que possibilita ao gerente fazer estimativas iniciais de
recursos, custos e prazos; Envolve duas grandes etapas: projeto da arquitetura do software e
O escopo do software é estabelecido; projeto detalhado.
Um plano de projeto deve ser elaborado configurando o processo a ser Implementação:
utilizado.
O projeto é traduzido para uma forma passível de execução pela
máquina.
Análise dos Sistemas
Testes:
Análise e Especificação de Requisitos Testes de unidade e documentação dos resultados;
O escopo do software é refinado; Integração dos componentes e teste do software como um todo;
Descreve “o que“ o software deve fazer; Alguns modelos de processo preveem a realização de testes já
Devem ser analisados o domínio do problema e o domínio da solução. nas primeiras etapas.

4
07/05/2015

CICLO DE VIDA CICLO DE VIDA


Entrega e Implantação

O software deve ser instalado em ambiente produção. Manutenção


Envolve:
Treinamento de usuários;
Configuração do ambiente de produção; Adaptativas
Conversão bases de dados (se necessário). Corretivas
Principal propósito desta fase: Evolutivas
Realiza-se os Testes de Aceitação (estabelecer que o software satisfaz os
requisitos dos usuários).
Operação
Após o teste de aceitação, o software passa a ser utilizado de
fato em ambiente de produção.

RESUMINDO....
Entender o
problema...
Investigação dos
sistemas

Entender a
Analise dos
sistemas
solução ...
MODELO EM CASCATA OU
Projeto de sistemas
Selecionar e
planejar a melhor
SEQUENCIAL LINEAR
solução...

Colocar a
Implantação do
solução em
sistema
prática...

Manutenção e Avaliar os
revisão do sistema resultados de
uma solução...

MODELO EM CASCATA, OU CICLO DE VIDA CLÁSSICO OU MODELO MODELO EM CASCATA, OU CICLO DE VIDA CLÁSSICO OU MODELO
SEQUENCIAL. SEQUENCIAL.
Baseado em projetos de engenharia clássicos ou ciclo da engenharia Características:
convencional, criado em 1970 por Royce;
Ajuda os desenvolvedores a descrever o que precisam fazer (útil);
Organizam o processo em uma sequência linear de fases.
Ajuda a explicar o processo de desenvolvimento aos clientes (simples
Quando empregar: situação cujos requisitos são muito bem definidos.
e fácil);
O modelo de ciclo de vida em cascata foi o primeiro modelo a ser
conhecido em engenharia de software e está na base de muitos ciclos Os produtos intermediários são finalizados para começar próximo
de vida utilizados hoje em dia. Este consiste basicamente num modelo estágio e servem de insumo para o seu desenvolvimento;
linear em que cada passo deve ser completado antes que o próximo Seu enfoque está nos documentos e artefatos (requisitos, projetos,
passo possa ser iniciado. códigos);
O modelo em cascata é um exemplo de um processo dirigido a planos,
isto é, as atividades devem ser programadas e planejadas antes de
serem iniciadas.

5
07/05/2015

Ciclo de Vida Clássico: modelo Cascata Análise e definição de requisitos. As funções, as restrições e
os objetivos do sistema são estabelecidos por meio da consulta
aos usuários do sistema.
Deve-se compreender o domínio da informação, a função,
desempenho e interfaces exigidos.
Definição de
Requisitos Os requisitos (para o sistema e para o software)são
Definição
Projeto de de
documentados e revistos com o Cliente.
Sistemas e de Requisitos
Software Projeto de
Sistemas e de
Implementação Software
e testes
unitário Implementação
e testes
unitário
Integração e
Testes de
Sistemas Integração e
Testes de
Sistemas
Operação e
Manutenção
Operação e
Manutenção

Projeto de sistemas e de software. Define a arquitetura do sistema geral. É a


tradução dos requisitos do software para um conjunto de representações que podem Implementação e teste unitário. O software é um conjunto de programas ou unidades
ser avaliadas quanto à qualidade, antes que a codificação se inicie. de programas. É a tradução das representações do projeto para uma linguagem
Quatro etapas: “artificial” resultando em instruções executáveis pelo computador.
Estrutura de Dados; O teste envolve verificar que cada unidade atenda a sua especificação.
Arquitetura de Software;
Detalhes Procedimentais;
Caracterização de Interfaces. Integração e teste de sistemas. O teste se
concentra nos aspectos lógicos internos do
software, garantindo que todas as instruções
Definição de Definição de
tenham sido testadas; e também nos aspectos
Requisitos Requisitos
funcionais externos, para descobrir erros e
Projeto de Projeto de garantir que a entrada definida produza
Sistemas e de Sistemas e de
Software Software
resultados que concordem com os esperados
Implementação e Implementação
testes unitário e testes
unitário

Integração e Integração e
Testes de Testes de
Sistemas Sistemas

Operação e Operação e
Manutenção Manutenção

Operação e manutenção. Normalmente é a fase mais longa do ciclo. O


sistema é instalado e colocado em operação. A manutenção envolve MODELO EM CASCATA, OU CICLO DE VIDA CLÁSSICO OU
corrigir erros que não foram descobertos no estágios anteriores.
Causas de Manutenção: erros, adaptação do software para acomodar MODELO SEQUENCIAL.
mudanças em seu ambiente externo e exigência do cliente para
acréscimos funcionais e de desempenho. Problemas encontrados:
• Projetos reais raramente seguem o fluxo sequencial que o modelo propõe,
Definição de desta forma modificações podem causar confusão à medida que a equipe
Requisitos
prossegue com o projeto.
Projeto de
Sistemas e de
Software • É difícil para o cliente estabelecer todos os requisitos na fase inicial. No inicio
Implementação do projeto sempre existe uma incerteza natural.
e testes
unitário
• O cliente precisa ter paciência.
Integração e
Testes de
Sistemas • Pode ocorrer um bloqueio onde membros da equipe precisam esperar que
Operação e outras fases sejam cumpridas.
Manutenção

6
07/05/2015

Modelo Seqüencial Linear

MODELO DE PROTOTIPAÇÃO
Engenharia de Sistemas

Análise Projeto Codificação Testes

MODELO DE PROTOTIPAÇÃO MODELO DE PROTOTIPAÇÃO


Pode ser usado tanto como um modelo específico a ser seguido, como
Processo que possibilita que o desenvolvedor crie um modelo do também um sub-processo para um outro modelo;
software que deve ser construído. Construído de forma rápida para que questões sejam entendidas ou
Idealmente, o modelo(protótipo) serve como um mecanismo para esclarecidas;
identificar os requisitos de software. Reduz os riscos e as incertezas do desenvolvimento do produto final.
Apropriado para quando o cliente definiu um conjunto de objetivos Exemplo:
gerais para o software, mas não identificou requisitos de entrada, ◦ Começa com um conjunto simples de requisitos;
processamento e saída com detalhes. ◦ Os usuários fazem experimentações e decidem o que querem e como querem.
◦ Os requisitos são revisados, alterados, detalhados, documentados e o sistema
passa a ser codificado novamente;
◦ As alternativas são discutidas e assim por diante até a entrega do software final.

Modelo de Prototipação Modelo de Prototipação


Coleta e refinamento dos Requisitos: o
desenvolvedor e cliente definem os objetivos gerais Avaliação do Protótipo: cliente avalia o protótipo
do software, identificando quais os requisitos são
conhecidos inicialmente.

Refinamento do Protótipo: cliente e desenvolvedor refinam


Projeto Rápido: representação dos aspectos do os requisitos do software a ser desenvolvido.
software que são visíveis ao usuário (abordagens de Ocorre neste ponto um processo de interação que pode
entrada e formatos de saída) conduzir à primeira atividade até que as necessidades do
cliente sejam satisfeitas e o desenvolvedor compreenda o
que precisa ser feito.

Construção Protótipo: implementação rápida


do projeto. Engenharia do Produto: identificados os requisitos, o
protótipo deve ser descartado e a versão de produção
deve ser construída considerando os critérios de
qualidade.

7
07/05/2015

Modelo de Prototipação
MODELO DE PROTOTIPAÇÃO - VANTAGENS
Ouça o
Cliente Todo o requisitos de sistema não tem que ser completamente
determinado antecipadamente e pode mesmo ser trocado durante o
curso do projeto;
A satisfação e interação do cliente no desenvolvimento do protótipo;
Testes através do protótipo para atingir o objetivo final proposto.
Teste do
Construa e
Protótipo
Revise o
pelo
Protótipo
Cliente

MODELO DE PROTOTIPAÇÃO - DESVANTAGENS MODELO DE PROTOTIPAÇÃO


Como a modelagem é iniciada antecipadamente, não é dada a real
importância para a analise da situação desejada;
O problema e a formulação da solução é tão importante quanto a própria Ainda que possam ocorrer problemas, a prototipação é um ciclo de vida
solução. eficiente.
O processo de prototipação pode dar ao usuário final a impressão que A chave é definir as regras do jogo logo no começo.
praticamente qualquer sugestão pode ser implementada, não importa qual
O cliente e o desenvolvedor devem ambos concordar que o protótipo
estágio do processo de desenvolvimento se está.
seja construído para servir como um mecanismo a fim de definir os
Além disso, para o usuário final não está claro o porquê da demora para requisitos necessários para o produto de software final.
entregar a aplicação final depois que uma versão demo do sistema foi exibida.
O desenvolvedor frequentemente faz uma implementação comprometida
(utilizando o que está disponível) com o objetivo de produzir rapidamente um
protótipo. Depois de um tempo ele se familiariza com essas escolhas, e
esquece que elas não são apropriadas para o produto final.

DESENVOLVIMENTO ÁGIL DE SOFTWARE MÉTODOS ÁGEIS

As empresas operam em um ambiente global com mudanças rápidas. Desenvolvimento ágil de software ou Método ágil é um conjunto de metodologias de
Softwares fazem parte de quase todas as operações de negócios. desenvolvimento de software. O desenvolvimento ágil, tal como qualquer
metodologia de software, providencia uma estrutura conceitual para reger projetos
Desta forma novos softwares são desenvolvidos rapidamente para as de engenharia de software.
empresas obterem proveito de novas oportunidades e responder as As definições modernas de desenvolvimento de software ágil evoluíram a partir da
pressões competitivas. metade de 1990 como parte de uma reação contra métodos "pesados",
caracterizados por uma pesada regulamentação, regimentação e micro
Com a mudança rápida do mercado é impossível obter um conjunto
gerenciamento usado o modelo em cascata para desenvolvimento.
completo de requisitos de software estável.
A expressão “Metodologias Ágeis” tornou-se conhecida em 2001, quando
Processos de desenvolvimento rápido de software são concebidos especialistas em processos de desenvolvimento de software representando entre
para produzir, de forma rápida, software úteis. outros, os métodos Scrum e Extreme Programming (XP), foram estabelecidos
princípios e características comuns destes métodos. Assim foi criada a “Aliança
Ágil” e efetuou-se o estabelecimento do “Manifesto Ágil”.

8
07/05/2015

Manifesto Ágil Princípios dos métodos ágeis

Métodos ágeis focam em simplicidade, software funcional no início


das iterações, flexibilidade e intensa comunicação tanto internamente Princípios Descrição
quanto com clientes.
Envolvimento do cliente Os clientes devem estar envolvidos no processo de desenvolvimento.
Seu papel é fornecer e priorizar novos requisitos dos sistema e avaliar
suas interações.
Indivíduos e interações são mais importantes que processos
e ferramentas. Entrega incremental O software desenvolvido em incrementos com o cliente, especificando
os requisitos para serem incluídos em cada um.
Pessoas não processos As habilidades da equipe de desenvolvimento devem ser
Software funcionando é mais importante do que documentação reconhecidas e exploradas. Os membros da equipe tem a liberdade
completa e detalhada. de desenvolver suas próprias maneiras de trabalhar.
Aceitar as mudanças Deve-se ter em mente que os requisitos do sistema vão mudar. Por
Colaboração com o cliente é mais importante do que negociação isso o sistema projetado de acomodar tais mudanças.
de contratos. Manter a simplicidade Foco na simplicidade, tanto do software a ser desenvolvido como do
processo de desenvolvimento. Trabalhar de forma ativa para eliminar
Adaptação a mudanças é mais importante do que seguir o a complexidade do sistema.
plano inicial.

METODOLOGIAS ÁGEIS Desenvolvimento Iterativo e Incremental

Métodos de desenvolvimento de software ágil aplicam desenvolvimento iterativo e incremental,


planejamento adaptativo, flexibilidade e rápida resposta para mudanças.

Planejamento Adaptativo
Planejamento adaptativo é adequado para
desenvolvimento de novos produtos.

Requisitos são escritos para um contexto e ambiente


específico que estão em constante mudança.

Desenvolvimento de novos produtos solicita um certo grau de


pesquisa, inovação e criatividade.

A tecnologia envolvida exige ferramentas que podem estar ou


em desenvolvimento ou estabilização.

Desenvolvimento Iterativo e Incremental Desenvolvimento Iterativo e Incremental

9
07/05/2015

Desenvolvimento Iterativo e Incremental

Desenvolvimento Incremental é Desenvolvimento iterativo é


uma estratégia de planejamento uma estrategia de planejamento
estagiado em que várias partes do de retrabalho em que o tempo
sistema são desenvolvidas em de revisão e melhorias de
paralelo, e integradas quando partes do sistema é pré-
completas. definido.

A ideia básica por trás da abordagem iterativa é desenvolver um sistema de software


incremental, permitindo ao desenvolvedor tirar vantagem daquilo que foi aprendido durante a
fase inicial de desenvolvimento de uma versão do sistema.
Os passos fundamentais do processo estão em iniciar o desenvolvimento com um
subconjunto simples de Requisitos de Software e iterativamente alcançar evoluções
subseqüentes das versões até o sistema todo estar implementado. A cada iteração, as
modificações de projeto são feitas e novas funcionalidades são adicionadas.

A Concepção identifica...

A Elaboração cria a arquitetura...

e Requisitos funcionais e não


funcionais.

10
07/05/2015

A Construção transforma tudo em


código e testes...

E a Transição coloca tudo em ambiente


de produção..

MÉTODOS ÁGEIS

Os métodos ágeis iniciais:


Scrum (1986),
Crystal (1997),
Programação extrema (1996),
ASD (Desenvolvimento de Software Adaptativo, 2000) ,
FDD (Desenvolvimento Guiado por Funcionalidades, 1997), e
DSDM (Metodologia de Desenvolvimento de Sistemas Dinâmicos,1995).

11

Você também pode gostar