19
Aula 01 Introdução a Eng. De Software Processos e modelos de Desenvolvimento de Software Marcos Devaner Desenvolvimento de Sistema

Aula 01 - Processos e modelos de desenvolvimento de software

Embed Size (px)

Citation preview

Page 1: Aula 01 - Processos e modelos de desenvolvimento de software

Aula 01Introdução a Eng. De SoftwareProcessos e modelos de Desenvolvimento de Software

Marcos DevanerDesenvolvimento de Sistemas I

Page 2: Aula 01 - Processos e modelos de desenvolvimento de software

A im

portâ

ncia

da

Eng.

de

Softw

are

Page 3: Aula 01 - Processos e modelos de desenvolvimento de software

Engenharia de Software

Disciplina que utiliza um conjunto de métodos, técnicas e ferramentas para analisar, projetar e gerenciar o desenvolvimento e manutenção de software, visando produzir e manter software dentro de prazos, custos e qualidade estimados.

Objetivo: Maximizar a qualidade do software e aumentar a produtividade e satisfação, tanto dos clientes quanto dos profissionais e engenheiros de software envolvidos.

Page 4: Aula 01 - Processos e modelos de desenvolvimento de software

Engenharia de Software

Princípios

Métodos e Técnicas

Metodologias

Ferramentas

Como fazer ?

Como aplicar ?

O que fazer ?

Como automatizar ?

Page 5: Aula 01 - Processos e modelos de desenvolvimento de software

Princípios da Eng. de SoftwareModularidade - Consiste na divisão de sistemas complexos em partes menores e mais simples com características desejáveis (coesão e acoplamento). Decomposição é o ato de dividir um problema original em subproblemas recursivamente. Composição é o ato de juntar os elementos componentes de um problema até chegar ao sistema completo.

Separação de Conceitos - Separar conceitos permite-nos trabalhar com aspectos individuais e diferentes de um mesmo problema. Esta separação facilita o entendimento, focando a atenção em certas características mais significativas (Abstração).

Generalidade/Especialidade - Soluções genéricas tendem a ser mais caras em termos de recursos e em tempo de desenvolvimento, ao contrário das soluções específicas.

Page 6: Aula 01 - Processos e modelos de desenvolvimento de software

Princípios da Eng. de Software

Rigor e Formalidade - O processo de software é uma atividade criativa tendendo naturalmente à imprecisão. O rigor é a abordagem que produz produtos mais confiáveis pelo controle das variáveis envolvidas. Formalidade implica que o processo esteja dirigido e avaliado por leis matemáticas.

Incrementabilidade - Caracteriza o processo em modo passo a passo, incrementalmente. O objetivo desejado é atingido por aproximações sucessivas. Útil quando os requisitos iniciais não foram todos obtidos antes do início do desenvolvimento da aplicação.

Antecipação de Mudanças - Sistemas de software são desenvolvidos enquanto seus requisitos ainda não estão totalmente claros. Quando o sistema é finalmente liberado, novos requisitos podem ser descobertos e requisitos antigos atualizados através do “feedback” do usuário.

Page 7: Aula 01 - Processos e modelos de desenvolvimento de software

Responsabilidade profissional e ética

Computadores desempenham papel central na Sociedade e Engenheiros de Software contribuem e participam de todo o processo de desenvolvimento de sistemas. Engenheiros de Software devem se comportar de maneira honesta e responsável e aderir al compromisso de exercer sua profissão de forma benéfica e respeitada.

•Confidencialidade•Competência •Direitos de propriedade intelectual•Uso indevido do computador

Questões de responsabilidade profissional:

Page 8: Aula 01 - Processos e modelos de desenvolvimento de software

Sobre o Processo de SoftwareUm processo de desenvolvimento de software tem como objetivo a formalização e sistematização das atividades relacionadas à elaboração de sistemas. Nele são definidos:

- As atividades a serem executadas ao longo do projeto.- Quando, como e por quem serão executadas.- Prover pontos de controle para verificar o andamento.- Padronizar o desenvolvimento de Software

Um processo de ser:

- Reproduzível - Definido - Medível em relação a rendimento. - Otimizável.

Page 9: Aula 01 - Processos e modelos de desenvolvimento de software

Etapas do Processo de Software

Um processo de software é Conjunto estruturado de atividades necessárias para desenvolver um sistema de software.

Especificação: Foca no que será desenvolvido. Aplicado a engenharia de requisitos e construção de interfaces e protótipos.Desenvolvimento: Codificação do sistema com base na documentação de requisitos.Validação: O software deve ser validado para garantir que ela faça o que o cliente deseja. Para isto são utilizadas técnicas de testes de software.Evolução: o software deve evoluir para atender aos novos requisitos que naturalmente surgirão.

Page 10: Aula 01 - Processos e modelos de desenvolvimento de software

Ciclo de Vida de Software

O ciclo de vida é a estrutura contendo processos, atividades e tarefas envolvidas no desenvolvimento, operação e manutenção de um produto de software, abrangendo a vida do sistema, desde a definição de seus requisitos até o término de seu uso.

O modelo de ciclo de vida é a primeira escolha a ser feita no processo de software. A partir desta escolha definir-se-á desde a maneira mais adequada de obter as necessidades do cliente, até quando e como o cliente receberá sua primeira versão operacional do sistema.

Page 11: Aula 01 - Processos e modelos de desenvolvimento de software

Modelo Cascata

- Projetos reais raramente seguem o fluxo sequencial que o modelo propõe

- É difícil estabelecer todos os requisitos no início.

- Dificuldade de acomodação de mudanças.

- A versão executável do software só fica disponível numa etapa avançada do desenvolvimento.

Modelo dirigido a planos onde as fases de especificação e desenvolvimento são separadas e distintas.

Page 12: Aula 01 - Processos e modelos de desenvolvimento de software

Desenvolvimento incrementalEspecificação, desenvolvimento e validação são intercaladas. Pode ser dirigido a planos ou ágil.

Page 13: Aula 01 - Processos e modelos de desenvolvimento de software

Problemas do des. incremental

O processo não é visível:Gerentes precisam de entregas regulares para medir o progresso. Se os sistemas são desenvolvidos de forma rápida, não é viável do ponto de vista do custo produzir documentação para refletir todas as versões do sistema.

A estrutura do sistema tende a degradar conforme novos incrementos são adicionados:A menos que tempo e dinheiro sejam gastos na reconstrução para melhorar o software, as mudanças regulares tendem a corromper a estrutura do sistema. A incorporação posterior de mudanças no software se torna progressivamente mais difícil e cara.

Page 14: Aula 01 - Processos e modelos de desenvolvimento de software

Engenharia de software orientada a reúsoBaseada no reúso sistemático em que os sistemas são integrados com componentes existentes ou sistemas COTS (Commercial-off-the-shelf).

Atualmente, o reúso é a abordagem padrão para a construção de vários tipos de sistemas de negócio.

Os tipos de componentes podem ser Web services, Coleções de objetos ou Sistemas de software stand-alone (COTS).

Page 15: Aula 01 - Processos e modelos de desenvolvimento de software

Incremental

- Os requisitos de usuário são priorizados e os requisitos de maior prioridade são considerados nos incrementos iniciais.- Uma vez que um incremento é iniciado, os requisitos são congelados, no entanto, requisitos para incrementos posteriores podem continuar a evoluir.

Combina elementos do modelo cascata com a filosofia iterativa da prototipação. O desenvolvimento e entrega do sistema aos clientes é particionado em incrementos, onde cada incremento realiza uma parte da funcionalidade requerida, até que o produto final é obtido.

Valida teincrement

Develop systemincrement

Design systemarchitecture

Integrateincrement

Valida tesystem

Define outline requirements

Assign requirements to increments

System incomplete

Finalsystem

Page 16: Aula 01 - Processos e modelos de desenvolvimento de software

Incremental: Vantagens

- Valor de cliente pode ser entregue em cada incremento, assim as funcionalidades do núcleo do sistema são alcançadas mais cedo.

- Incrementos iniciais atuam como um protótipo na busca de elicitar os requisitos de incrementos posteriores.

- Reduz o risco de falha sobre o projeto.

- Riscos técnicos podem ser administrados.

- Serviços do sistema de prioridade mais alta tendem a receber mais testes parciais.

Page 17: Aula 01 - Processos e modelos de desenvolvimento de software

Espiral- Engloba as melhores características do ciclo de vida Cascata e

da Prototipação numa estrutura iterativa , adicionando um novo elemento: a Análise de Risco.

- Usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de riscos

- É a abordagem mais realística para o desenvolvimento de software em grande escala.

- Usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva.

- Abordagem "evolutiva" é mais difícil de controlar.- Exige considerável experiência na determinação de riscos e

depende dessa experiência para ter sucesso.

Page 18: Aula 01 - Processos e modelos de desenvolvimento de software

01/05/23

Espiral

Avaliação do Cliente

Planejamento

Engenharia

Análise dos Riscos

Page 19: Aula 01 - Processos e modelos de desenvolvimento de software

Atividade“Para o gerenciamento de uma loja de confecções é necessário cadastrar a empresa, assim como dos seus colaboradores e suas respectivas funções. É necessário também cadastrar os produtos que serão vendidos aos clientes. Os produtos comercializados são distribuídos para a empresa por meio de fornecedores os quais devem ser cadastrados no sistema. O sistema desenvolvido possibilitará que clientes comprem produtos. É necessário fazer o controle desses produtos em estoque e vendidos. Esse sistema também deve fornecer apoio ao gerenciamento do negócio por meio de um controle simples de contas a pagar e a receber. “

Dada a descrição acima, defina qual o modelo de desenvolvimento melhor se aplica para a construção do software. Justifique sua

resposta .