Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
passo? Você iniciará pelas paredes, pela fundação ou pelo projeto? E quando você tem um problema e deseja
construir um software para solucioná-lo, por onde você deve começar?
Engenharia de Software:
Há 20 anos, menos de 1% do público poderia descrever de forma inteligível o que significa "software
de computador". Hoje, a maioria dos profissionais bem como a maior parte do público, acham que
entendem o que é software. Será que entendem?
Aplicações do Software:
• Software de Sistema: Finalidade de atender às necessidades de outros programas;
• Software de Aplicação: Finalidade de solucionar necessidades específicas de negócio;
• Software Científico/Engenharia: Finalidade em diversas áreas de pesquisa e simulações;
• Software Embutido: Residem em um produto ou sistema com finalidade de controlar as
atividades de equipamentos como por exemplo um ar-condicionado digital.
• Software Generalistas/Prateleira: Finalidade de suprir as necessidades de diversos clientes,
por exemplo, na criação de planilhas eletrônicas, editores de textos, entre outros para linhas
de produtos;
• Aplicações para a web (WebApps): Executados em um servidor conectado à rede e que pode
ser acessado e utilizado por diferentes usuários, desde que possuam acesso;
• Software de Inteligência Artificial: Utilizados na resolução de problemas complexos, com
aplicações em redes neurais artificiais, robótica, jogos, entre outras.
Problemas do Software:
A “Crise do Software” é o conjunto de problemas associados ao software que atingem seu
desenvolvimento, alguns desse problemas podem ser descritos como:
1. Estimativas de Prazos e Custos que são frequentemente imprecisos;
2. Produtividade dos profissionais;
3. A qualidade do software;
Importância do Software:
1. Avanços da Microeletrônica
2. Integração de informações
3. Praticidade e agilidade
4. Mensuração de resultados descomplicada
O Processo de Software:
É o conjunto de atividades executadas com o objetivo de criar um produto (software). Pressman
(2011) define cinco atividades para o processo de software são elas:
Os modelos de processos, também conhecidos como ciclos de vida de software mais utilizados são:
✓ O modelo cascata: Também conhecido como ciclo de vida clássico, possui suas atividades
sendo executadas de forma linear.
✓ O modelo evolucionário;
o Prototipagem: Utilizada como ferramenta para a descoberta de requisitos de forma
interativa, pondera-se a necessidade de reavaliação dos requisitos, fazendo assim com
que todas as etapas sejam revistas e ao final, um novo protótipo seja entregue ao
cliente.
o Espiral - BOEHM (1988): Seu ciclo não necessariamente termina quando o software é
entregue, ele pode ser adaptado para perdurar por toda a vida do software. A análise
de riscos é feita na etapa de planejamento e a cada volta em torno do eixo do espiral
pode ser utilizada para o desenvolvimento de um protótipo.
✓ O modelo incremental (Ciclo Interativo): Visa combinar as vantagens do modelo cascata com
as vantagens do modelo espiral. Os serviços a serem fornecidos pelo software a ser produzido
são devidamente identificados e desenvolvidos independentemente. Sendo assim, logo na
primeira entrega, o sistema já pode ser utilizado.
2. Gerenciamento de Projetos
Situação-problema: Você deseja aprender um novo idioma e de vez em quando assiste algumas aulas na
internet, ou faz algumas leituras esporádicas, isso pode ser considerado um projeto pessoal? Suponha agora
que você tenha planejado estudar duas horas por dia, três vezes na semana durante 18 meses, e após esse
período irá fazer uma viagem de 30 dias para exercitar a conversação. Isso pode ser considerado um projeto
pessoal?
Projeto:
✓ É um empreendimento único, com início e fim definidos, visando atingir metas e objetivos
pré-definidos e estabelecidos dentro de parâmetros de prazo, custo e qualidade (PMI 2008).
✓ Exige atividades de gerenciamento e conjuntos de habilidades.
✓ Realizados por pessoas, restringidos por recursos limitados, planejados, executados e
controlados.
Operações:
✓ São esforços contínuos que geram saídas repetitivas, com recursos designados para realizar
basicamente o mesmo conjunto de tarefas
✓ Exigem gerenciamento de processos de negócios.
✓ O gerenciamento de operações é responsável pela supervisão, orientação e controle das
operações de negócios.
✓ Realizados por pessoas, restringidos por recursos limitados, planejados, executados e
controlados.
Programa:
✓ É um grupo de projetos relacionados e gerenciados de modo coordenado para a obtenção de
benefícios e controle.
✓ Envolve empreendimento repetitivo ou cíclico e geralmente, maior tempo de duração.
Gerência de Projetos:
Monitoramento e
Iniciação Planejamento Execução Encerramento
Controle
Os itens que integram um gerenciamento de projetos são:
demorará para ser desenvolvido? Como nós descrevemos para os programadores todas as características que
devem ser implementadas? De que forma são listadas todas as funcionalidades que o software deve possuir?
Requisitos:
Existem dois tipos principais de requisitos:
✓ Funcionais: São declarações de como o sistema deve reagir a entradas específicas e como se
comportar em determinadas situações. É uma interação entre o sistema e o seu ambiente.
Também podem explicitar o que o sistema não deve fazer.
✓ Não-Funcionais:
➢ Organizacionais: Políticas e procedimentos nas organizações do cliente e do desenvolvedor.
➢ Externos: Fatores externos ao sistema e ao seu processo de desenvolvimento;
o Interoperabilidade com outros sistemas;
o Requisitos éticos ou legais;
➢ De produto: Comportamento do produto
o Eficiência: Desempenho, Espaço, Rapidez, Memória;
o Confiabilidade;
o Portabilidade.
Os requisitos ainda podem ser divididos em outra categoria, se vistos pelo aspecto da
implementação:
✓ Cliente ou Alto Nível: Expostos pelo cliente em linguagem natural, ou ainda em forma de
desenhos ou casos de uso, qualquer técnica que facilite o entendimento. Se caracterizam por
dizer apenas o que o usuário/cliente quer que o sistema faça, não há a preocupação de como
aquela funcionalidade será implementada;
✓ Sistema ou Baixo Nível: Relatam não só o que deve ser implementado, mas como deve ser
implementado, fazem restrições a aspectos de implementação e arquitetura, possuem detalhes
que geralmente são obscuros para o cliente, mas não para os desenvolvedores.
Engenharia de Requisitos:
O processo de Engenharia de Requisitos possui quatro subprocessos com finalidade de criação e
manutenção do documento de requisitos, com foco na qualidade do processo:
✓ Elicitação e Análise dos requisitos: Nessa atividade, os engenheiros de software trabalham com
os clientes e usuários finais do sistema para compreender sobre o domínio da aplicação, os
serviços do sistema, desempenho, restrições etc. Essa fase pode envolver vários stakeholders e
possui 4 atividades de processo:
➢ Obtenção de requisitos
➢ Classificação e organização de requisitos
➢ Priorização e negociação de requisitos
➢ Documentação de requisitos
Se utilizarmos apenas a entrevista como meio de obter requisitos, pode haver perda de
informações. Essa técnica deve ser utilizada em conjunto com outras técnicas de
Elicitação.
➢ Cenários: Geralmente as pessoas consideram mais fácil relatar exemplos da vida real do
que abstrair descrições. O cenário começa com um esboço da interação e, durante o
processo de Elicitação, os detalhes são adicionados para uma descrição completa dessa
interação.
➢ Casos de uso: Utiliza a linguagem de modelagem UML. É uma técnica baseada em
cenários para elicitação de requisitos. Os casos de uso identificam interações individuais
com o sistema.
✓ Validação: Finalidade de mostrar que os requisitos realmente definem o sistema que o usuário
deseja. Também está relacionada com a descoberta de problemas com os requisitos. Erros em
um documento de requisitos podem levar a custos excessivos. Devem ser realizadas verificações
nos requisitos do sistema:
➢ Verificação de validade
➢ Verificação de consistência
➢ Verificação de clareza
➢ Verificação de realismo
➢ Facilidade de verificação
➢ Revisão de requisitos
➢ Prototipação
➢ Geração de casos de teste
Componentes Principais:
Atores: Tenta identificar os tipos de usuários que irão interagir com o sistema, quais os papéis que
estes usuários irão assumir e quais funções serão requisitas por cada usuário específico;
• Pessoas (Normalmente)
• Hardware / software (Eventualmente)
Casos de Uso: Referem-se aos serviços, tarefas ou funções que podem ser utilizados pelos usuários
do sistema. Utilizados para expressar/documentar os comportamentos pretendidos para as funções
do sistema;
Documentação:
Associações:
➢ Atores e Casos De Uso
➢ Casos De Uso e Casos De Uso
Relacionamentos:
➢ Inclusão: Usada quando existe um serviço, situação ou rotina comum a mais de um Caso de
Uso, “Chamada de Sub-rotina”, representada por uma linha tracejada com texto
“<<Include>>”.
➢ Extensão: Descrever cenários opcionais de um Caso de Uso que somente ocorrerão em uma
situação específica – se uma determinada condição for satisfeita. Representada por:
“<<Extend>>”
➢ Generalização/Especialização: Associação entre Casos de Uso com características
semelhantes, onde a estrutura de um Caso de Uso generalizado é herdada pelos Casos de Usos
especializados.
5. Referências
✓ ANDRADE, Mayb. Qualidade de Software. 1ª Ed. Rio de Janeiro: SESES, 2015. Disponível em:
https://repositoriov2.azurewebsites.net/api/objetos/efetuaDownload/405d3e91-3eef-4471-9ead-702cee3d2861
✓ PRESSMAN, Roger; MAXIM, Bruce. Engenharia de Software. Porto Alegre: AGMH, 2016. Disponível em:
https://integrada.minhabiblioteca.com.br/#/books/9788580555349/
✓ SOMMERVILLE, Ian. Engenharia de Software. 10ª Ed. São Paulo: Pearson Prentice Hall, 2011. Disponível em:
https://plataforma.bvirtual.com.br/Leitor/Loader/168127/pdf
✓ Amui, Saulo. Processos de Desenvolvimento de Software. 1ª Ed.. Rio de Janeiro: SESES, 2015.Disponível em:
https://repositoriov2.azurewebsites.net/api/objetos/efetuaDownload/faf38cab-2fb5-48d6-ac0b-a2685e2f5f48
✓ Braga, Pedro H. C. (Organizador). Testes de Software. 1ª Ed.. São Paulo: Pearson, 2016. Disponível em:
https://plataforma.bvirtual.com.br/Leitor/Publicacao/150962/pdf/
✓ Galloti, Giocondo M. A. (Organizador). Qualidade de Software. 1ª Ed.. São Paulo: Pearson Education do Brasil, 2016.
Disponível em: https://plataforma.bvirtual.com.br/Acervo/Publicacao/124148
✓ PADUA FILHO, Wilson de Paula. Engenharia de Software. 3ª Ed.. Rio de Janeiro: LTC, 2009. Disponível em:
https://integrada.minhabiblioteca.com.br/#/books/978-85-216-1992-5/
✓ SCHACH, Stephen R. Engenharia de Software. 7ª Ed. Porto Alegre: ArtMed, 2010. Disponível em:
https://integrada.minhabiblioteca.com.br/#/books/9788563308443/