aula 01 - processos e modelos de desenvolvimento de software
Post on 21-Feb-2017
43 Views
Preview:
TRANSCRIPT
Aula 01Introdução a Eng. De SoftwareProcessos e modelos de Desenvolvimento de Software
Marcos DevanerDesenvolvimento de Sistemas I
A im
portâ
ncia
da
Eng.
de
Softw
are
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.
Engenharia de Software
Princípios
Métodos e Técnicas
Metodologias
Ferramentas
Como fazer ?
Como aplicar ?
O que fazer ?
Como automatizar ?
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.
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.
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:
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.
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.
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.
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.
Desenvolvimento incrementalEspecificação, desenvolvimento e validação são intercaladas. Pode ser dirigido a planos ou ágil.
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.
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).
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
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.
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.
01/05/23
Espiral
Avaliação do Cliente
Planejamento
Engenharia
Análise dos Riscos
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 .
top related