Projecto Final Do Semestre

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 14

FACULDADE DE CIÊNCIAS E TECNOLOGIA

CURSO DE ENGENHARIA EM TECNOLOGIAS E SISTEMAS DE


INFORMAÇÃO

Disciplina: Metodologias de Pesquisa

Tema: Engenharia de Software

Discentes:

 Edilson Olávio Muchave


 Gerson Carlos Emílio Madonela
 Jemisse Castigo Macuacaua

Docente: Eng. Cristóvão Uaciquete

Maputo, Novembro de 2023


Índice
1. INTRODUÇÃO ............................................................................................................ 1

1.2 Objectivos ............................................................................................................... 1

1.2.1 Gerais................................................................................................................ 1

1.2.2 Específicos........................................................................................................ 1

1.3. Justificativa ............................................................................................................ 1

2. REVISÃO DA LITERATURA .................................................................................... 2

2.1. Engenharia de Software: Definição e Conceitos Fundamentais ............................ 2

2.1.1. Princípios Básicos da Engenharia de Software ............................................... 2

2.1.2. Ciclo de Vida do Desenvolvimento de Software: ........................................... 3

2.2. Técnicas e Ferramentas para Garantir a Qualidade do Software ........................... 4

2.2.1. Análise Estática e Dinâmica de Código .......................................................... 4

2.2.2. Testes de Software: Tipos e Metodologias...................................................... 4

2.2.3. Uso de Ferramentas de Controle de Qualidade ............................................... 6

2.2.4. Importância da Construção de Sistemas de Software ..................................... 7

2.2.5. Impacto da Engenharia de Software na Vida Cotidiana.................................. 8

3. METODOLOGIA ......................................................................................................... 9

4. CONSIDERAÇÕES FINAIS ..................................................................................... 10

5. REFERÊNCIAS BIBLIOGRÁFICAS ....................................................................... 11


1. INTRODUÇÃO

A Engenharia de Software é um campo de estudo e prática que se concentra na aplicação


de princípios de engenharia no desenvolvimento, manutenção e evolução de software de
alta qualidade. Segundo Pfleeger e Atlee (2010), a engenharia de software é uma
disciplina que visa aplicar princípios de engenharia para construir software de alta
qualidade e confiabilidade. Ela envolve a aplicação de métodos sistemáticos,
disciplinados e quantificáveis para o desenvolvimento, operação e manutenção de
software, visando não apenas a produção de software funcional, mas também a garantia
de sua qualidade, confiabilidade, segurança e eficiência. A engenharia de software
também está fortemente relacionada a conceitos como gerenciamento de projectos,
garantia de qualidade, gerenciamento de configuração e engenharia de requisitos.

1.2 Objectivos
1.2.1 Gerais
1. Compreender os conceitos fundamentais da engenharia de software e sua
importância na construção de sistemas de software;
2. Conhecer as técnicas e ferramentas utilizadas na engenharia de software para
garantir a qualidade do software e a produtividade da equipe de desenvolvimento;

1.2.2 Específicos
 Descrever a Importância da Construção de sistemas de software;
 Identificar as ferramentas mais comuns usadas para proporcionar softwares de
qualidade;
 Explicar o impacto da engenharia de software na vida cotidiana;

1.3. Justificativa
O projecto visa atender às demandas dos usuários finais, oferecendo um software que
atenda às suas expectativas em termos de desempenho, usabilidade e funcionalidades. A
implementação de práticas de engenharia de software eficientes tem o potencial de
reduzir os custos operacionais a longo prazo, além de melhorar a eficiência do
desenvolvimento e da manutenção do software. De acordo com Sommerville (2011), A
ênfase na segurança e na conformidade com os padrões regulatórios é crucial para
proteger os dados dos usuários e manter a integridade do sistema, evitando violações de
segurança e possíveis penalidades.

1
2. REVISÃO DA LITERATURA

2.1. Engenharia de Software: Definição e Conceitos Fundamentais


A Engenharia de Software é o campo da engenharia que se preocupa com todos os
aspectos da produção de software, desde os estágios iniciais de especificação do sistema
até a manutenção do sistema após a entrega. De acordo com Pressman (2014), Ela envolve
a aplicação de princípios de engenharia para a criação de software de forma sistemática,
controlada e eficiente.

Alguns conceitos fundamentais incluem:

 Requisitos de Software: Especificações que descrevem o que o software deve


fazer e como deve funcionar.
 Design de Software: Processo de elaboração de uma solução para os requisitos
do software, considerando restrições de design e implementação.
 Testes de Software: Verificação do comportamento do software em condições
controladas para garantir que ele atenda aos requisitos especificados.
 Manutenção de Software: Modificações e actualizações feitas no software após
a sua entrega para corrigir erros, melhorar o desempenho ou atender a novos
requisitos.

2.1.1. Princípios Básicos da Engenharia de Software


Princípios básicos da Engenharia de Software fornecem directrizes fundamentais que
orientam as práticas e processos no desenvolvimento e manutenção de software. Esses
princípios orientadores são essenciais para garantir a eficiência, a qualidade e a eficácia
do processo de engenharia de software, ajudando a criar produtos de software robustos e
confiáveis que atendam às necessidades dos usuários e das organizações (Sommerville,
2011).

Alguns princípios básicos incluem:

1. Abordagem Sistémica: Considerar o software como parte de um sistema mais


amplo, levando em conta o contexto operacional e as interacções com outros
componentes. Isso envolve entender as necessidades dos usuários finais, as
restrições do sistema e as implicações de longo prazo do software.
2. Controle de Qualidade: Focar na entrega de software de alta qualidade, livre de
defeitos e que atenda aos requisitos dos usuários. Isso inclui a implementação de

2
testes contínuos ao longo do ciclo de vida do desenvolvimento para identificar e
corrigir problemas de forma proactiva.
3. Processo Iterativo e Incremental: Desenvolver o software em ciclos repetidos
de actividades, permitindo a revisão e aprimoramento contínuos do software. Isso
facilita a adaptação a mudanças nos requisitos e nas condições do ambiente,
garantindo uma abordagem flexível e ágil no desenvolvimento.
4. Gestão de Mudanças: Capacidade de lidar com mudanças nos requisitos do
software ao longo do tempo, mantendo a estabilidade e a integridade do sistema.
Isso envolve a implementação de processos eficazes de gerenciamento de
mudanças para controlar e documentar todas as alterações feitas durante o ciclo
de vida do software.
5. Foco no Usuário Final e nas Necessidades do Cliente: Colocar as necessidades
e expectativas do usuário final no centro do processo de desenvolvimento de
software. Isso implica uma compreensão profunda do público-alvo e a criação de
soluções que atendam às suas necessidades e ofereçam uma experiência
satisfatória e intuitiva.

2.1.2. Ciclo de Vida do Desenvolvimento de Software:


O ciclo de vida do desenvolvimento de software pode variar de acordo com a metodologia
adoptada, como o modelo em cascata, o modelo iterativo, o modelo ágil, entre outros.
Cada fase do ciclo de vida desempenha um papel crucial na produção de software de alta
qualidade e funcionalidade.

As fases geralmente incluem:

 Planeamento: Definição de metas, escopo e requisitos do projecto.


 Análise de Requisitos: Colecta e análise de requisitos do software.
 Design: Especificação da arquitectura, componentes e interfaces do sistema.
 Implementação: Codificação e desenvolvimento efectivo do software.
 Testes: Verificação de que o software atende aos requisitos e funciona conforme
o esperado.
 Implantação e Manutenção: Entrega e suporte contínuo do software, incluindo
correcção de bugs e implementação de actualizações.

3
2.2. Técnicas e Ferramentas para Garantir a Qualidade do Software
Para garantir a qualidade do software, uma variedade de técnicas e ferramentas são
empregadas ao longo do ciclo de vida de desenvolvimento. Essas abordagens ajudam a
identificar e corrigir problemas, melhorar o desempenho, garantir a segurança e atender
aos requisitos funcionais.

2.2.1. Análise Estática e Dinâmica de Código


A análise estática e dinâmica de código desempenha um papel importante na detecção de
erros e problemas de desempenho durante o desenvolvimento de software. Ambas as
abordagens são complementares e essenciais para garantir a qualidade e confiabilidade
do software (Pressman, 2014).

1. Análise Estática de Código

A análise estática de código é um método de análise que examina o código sem executá-
lo. Ela geralmente é realizada por meio de ferramentas de análise estática, que revisam o
código-fonte ou o código compilado sem a necessidade de execução do programa. Essa
técnica é útil para identificar possíveis problemas no código, como vulnerabilidades de
segurança, falhas de codificação, padrões de código não conformes e outras anomalias.
A análise estática pode ser realizada durante todo o ciclo de vida do desenvolvimento de
software e é especialmente útil durante as fases iniciais do desenvolvimento para garantir
que o código seja robusto e esteja em conformidade com os padrões estabelecidos.

2. Análise Dinâmica de Código

A análise dinâmica de código envolve a execução do código em um ambiente de teste


simulado para avaliar seu comportamento durante a execução. Isso inclui a identificação
de erros de lógica, problemas de desempenho, vazamentos de memória e outras questões
que só podem ser detectadas durante a execução real do programa. A análise dinâmica é
especialmente útil para testar a funcionalidade real do software em diferentes cenários e
condições, garantindo que o programa funcione como esperado e atenda aos requisitos
funcionais e de desempenho.

2.2.2. Testes de Software: Tipos e Metodologias


Os testes de software são fundamentais para garantir a qualidade, confiabilidade e
desempenho de um sistema de software. Eles ajudam a identificar e corrigir defeitos,
garantindo que o software atenda aos requisitos e expectativas dos usuários finais.
Existem diversos tipos de testes de software e várias metodologias para implementá-los.

4
Tipos de Testes de Software

1. Testes Unitários: Verificam se cada unidade individual do código funciona


conforme o esperado.
2. Testes de Integração: Testam a integração entre diferentes partes do sistema para
verificar se elas funcionam juntas de forma adequada.
3. Testes de Sistema: Testam o sistema como um todo para garantir que todos os
componentes funcionem correctamente em conjunto.
4. Testes de Aceitação: Verificam se o sistema atende aos critérios de aceitação e
aos requisitos do cliente.
5. Testes de Regressão: Garantem que as alterações no código ou no sistema não
introduzam novos defeitos ou causem problemas em funcionalidades existentes.
6. Testes de Carga: Avaliam o desempenho do sistema sob condições de carga e
estresse para verificar se ele pode lidar com cargas de trabalho esperadas.
7. Testes de Usabilidade: Avaliam a facilidade de uso, a interface do usuário e a
experiência do usuário para garantir que o sistema seja amigável e intuitivo.
8. Testes de Segurança: Verificam se o sistema é resistente a ameaças de segurança,
como ataques de hackers e violações de dados.

Metodologias de Teste de Software

1. Testes Manuais: Os testes são realizados manualmente por testadores humanos,


que verificam a funcionalidade do software sem o uso de ferramentas
automatizadas.
2. Testes Automatizados: Utilizam ferramentas e scripts para automatizar a
execução de testes, economizando tempo e recursos.
3. Desenvolvimento Orientado a Testes (TDD): Envolve escrever testes antes de
implementar o código, garantindo que o código atenda aos requisitos dos testes.
4. Desenvolvimento Orientado a Comportamento (BDD): Concentra-se no
comportamento do sistema do ponto de vista dos usuários, ajudando a garantir que
o software atenda às expectativas do cliente.
5. Testes Ágeis: Integrados directamente ao processo de desenvolvimento ágil, os
testes ágeis se concentram na entrega contínua e na colaboração entre equipes
multidisciplinares.

5
2.2.3. Uso de Ferramentas de Controle de Qualidade
O uso de ferramentas de controle de qualidade é essencial para garantir que o software
atenda aos padrões e requisitos de qualidade definidos. Essas ferramentas ajudam a
automatizar processos, identificar problemas e garantir que as melhores práticas de
desenvolvimento sejam seguidas.

1. Ferramentas de Gerenciamento de Testes:


 Jira: Uma ferramenta popular para o rastreamento de problemas, gerenciamento
de tarefas e acompanhamento de projectos de software.
 HP Quality Center: Uma plataforma abrangente para gerenciamento de testes,
rastreamento de defeitos e automação de processos de qualidade.
2. Ferramentas de Teste Automatizado:
 Selenium: Uma estrutura de automação de teste de código aberto usada para testar
aplicativos da web em vários navegadores e plataformas.
 Appium: Uma ferramenta de automação de código aberto usada para testar
aplicativos móveis em dispositivos iOS e Android.
3. Ferramentas de Análise Estática de Código:
 SonarQube: Uma plataforma de análise de código aberta usada para medir a
qualidade do código, identificar problemas de segurança e manter a integridade
do código.
 PMD: Uma ferramenta de análise estática de código usada para encontrar
problemas no código Java e outros idiomas baseados em JVM.
4. Ferramentas de Integração Contínua e Entrega Contínua (CI/CD):
 Jenkins: Uma ferramenta de automação de código aberto usada para construir,
testar e implantar software de forma contínua.
 Travis CI: Um serviço de integração contínua na nuvem usado para testar e
implantar projectos de software hospedados em repositórios do GitHub.
5. Ferramentas de Gerenciamento de Configuração:
 Git: Um sistema de controle de versão distribuído amplamente usado para
controlar mudanças no código fonte durante o desenvolvimento de software.
 SVN (Subversion): Um sistema de controle de versão centralizado que ajuda a
rastrear e controlar versões de arquivos e directórios.

6
2.2.4. Importância da Construção de Sistemas de Software
A construção de sistemas de software robustos e adaptáveis é crucial para atender às
demandas dos usuários e garantir a segurança e a manutenibilidade do software a longo
prazo. A relevância da arquitectura de software e a capacidade de adaptação dos sistemas
são fundamentais para o sucesso contínuo de qualquer solução de software (Pfleeger &
Atlee, 2010).

1. Relevância da Arquitectura de Software

A arquitectura de software desempenha um papel crucial na construção de sistemas, pois


fornece uma estrutura para o desenvolvimento e a operação do software. Uma
arquitectura bem projectada pode facilitar a escalabilidade, a manutenibilidade e a
eficiência do sistema, permitindo que ele cresça e evolua de maneira flexível e sustentável
ao longo do tempo. Uma arquitectura sólida também facilita a compreensão do sistema e
a identificação de possíveis pontos de falha ou de melhoria, permitindo que os
desenvolvedores implementem mudanças de maneira eficaz.

2. Garantia de Segurança e Manutenibilidade no Desenvolvimento

Ao construir sistemas de software, é fundamental garantir a segurança e a


manutenibilidade do código. Isso envolve a implementação de práticas de codificação
seguras, a adopção de protocolos de segurança robustos e a integração de medidas de
segurança em todas as fases do ciclo de vida de desenvolvimento. Além disso, a
manutenibilidade do código é essencial para facilitar futuras actualizações, correcções e
melhorias no sistema, permitindo que ele se adapte a mudanças e evolua conforme
necessário.

3. Adaptação de Sistemas às Necessidades do Usuário

A capacidade de adaptar os sistemas de software às necessidades e expectativas dos


usuários é crucial para garantir a satisfação do cliente e a utilidade do produto. Isso requer
uma compreensão aprofundada dos requisitos do usuário, bem como a implementação de
práticas de desenvolvimento ágil que permitam a rápida iteração e o feedback contínuo
dos usuários. A construção de sistemas flexíveis e adaptáveis é essencial para atender às
demandas em constante mudança do mercado e dos usuários finais.

7
2.2.5. Impacto da Engenharia de Software na Vida Cotidiana
A engenharia de software tem um impacto significativo na vida cotidiana, pois
desempenha um papel fundamental no desenvolvimento de uma ampla variedade de
tecnologias e sistemas que utilizamos regularmente. A engenharia de software
desempenha um papel crucial em vários aspectos da vida cotidiana, facilitando o
desenvolvimento de tecnologias inovadoras e sistemas que melhoram a eficiência, a
conectividade e a qualidade de vida das pessoas em todo o mundo.

1. Aplicações da Engenharia de Software em Dispositivos Móveis

A engenharia de software é essencial para o desenvolvimento de aplicativos móveis que


utilizamos em nossos smartphones e tablets. Ela possibilita a criação de aplicativos
intuitivos, funcionais e de alto desempenho que atendem às demandas dos usuários.
Desde aplicativos de comunicação e redes sociais até aplicativos de produtividade e
entretenimento, a engenharia de software desempenha um papel central no fornecimento
de experiências de usuário excepcionais em dispositivos móveis.

2. Sistemas Embarcados e Internet das Coisas (IoT)

A engenharia de software é crucial no desenvolvimento de sistemas embarcados e na


integração de dispositivos na Internet das Coisas (IoT). Ela possibilita a criação de
sistemas inteligentes e interconectados que são utilizados em uma variedade de sectores,
incluindo automação residencial, automotivo, saúde e indústria. A engenharia de software
garante que esses sistemas sejam confiáveis, seguros e capazes de colectar, processar e
transmitir dados de maneira eficiente.

3. Contribuições da Engenharia de Software para o Sector de Saúde e Educação

Na área da saúde, a engenharia de software desempenha um papel vital no


desenvolvimento de sistemas de registros médicos electrónicos, tecnologias de
monitoramento de pacientes e aplicativos de saúde móvel que melhoram o acesso e a
qualidade dos cuidados de saúde. Na educação, ela é fundamental para o desenvolvimento
de plataformas de aprendizagem online, software de gerenciamento de sala de aula e
aplicativos educacionais interactivos que melhoram a eficácia do ensino e aprendizagem.

8
3. METODOLOGIA

A metodologia desta pesquisa compreenderá uma revisão sistemática da literatura, com a


análise de artigos científicos, livros e documentos técnicos relevantes na área da
Engenharia de Software. Além disso, serão considerados estudos de caso e exemplos
práticos para ilustrar a aplicação dos conceitos teóricos discutidos.

9
4. CONSIDERAÇÕES FINAIS

A engenharia de software desempenha um papel essencial na construção de sistemas de


software confiáveis e funcionais, impactando positivamente a vida cotidiana das pessoas
por meio do desenvolvimento de tecnologias inovadoras e soluções práticas. Ao
compreender os fundamentos da engenharia de software e aplicar técnicas e ferramentas
adequadas, é possível garantir a qualidade, confiabilidade e segurança dos sistemas de
software, contribuindo assim para o avanço tecnológico e o aprimoramento da
experiência do usuário.

10
5. REFERÊNCIAS BIBLIOGRÁFICAS

 Pressman, R. (2014). Engenharia de Software: Uma Abordagem Profissional.


McGraw-Hill Education.
 Pfleeger, S. L., & Atlee, J. M. (2010). Engenharia de Software: Teoria e Prática.
Pearson.
 Sommerville,I. (2011). Engenharia de Software. Pearson Prentice Hall.

11
Cronograma

Etapas: Set-Out/X Out/X

Seleccionar as fontes da informação. X

Realizar a busca bibliográfica e X


seleccionar os estudos relevantes.

Escrever e organizar a revisão. X

Revisar e editar a revisão. X X

Citar correctamente as fontes. X

Actualizar a revisão bibliográfica. X

12

Você também pode gostar