Você está na página 1de 5

ENGENHARIA DE SOFTWARE:

É uma área da computação voltada à especificação, desenvolvimento, manutenção e criação


de software, com a aplicação de tecnologias e práticas de gerência de projetos e outras
disciplinas, visando organização, produtividade e qualidade.

A Engenharia de Software capacita as pessoas com a utilização de teorias, técnicas e


ferramentas da Ciência da Computação para a produção e desenvolvimento de sistemas de
softwares.

O objetivo dessa engenharia é sempre acompanhar as inovações e ensinar aos alunos as


melhores técnicas e modelos a serem seguidos.

ciclo de vida:
O ciclo de vida de um software é uma estrutura que indica processos e atividades envolvidas
no desenvolvimento, operação e manutenção de um software, abrangendo de fato toda a vida
do sistema. Neste ciclo, existem modelos que definem como o software será desenvolvido,
lançado, aprimorado e finalizado. A escolha desse modelo, que definirá a sequência de etapas
das atividades, é feita entre o cliente e a equipe de desenvolvimento e várias coisas podem
impactá-la, como negócio, tempo disponível, custo, equipe etc. A ordem das fases é que vai
definir o ciclo de vida do seu software.

fases básicas de um ciclo de software:


Existem 3 fases básicas de um ciclo de software:

1- Definição

Deve-se conhecer a situação atual e fazer a identificação do problema para buscar uma
resolução do mesmo. É na definição que você fará a modelagem dos processos e a análise do
sistema. O modelo de ciclo de vida é a primeira escolha a ser feita no processo de software.

2- Desenvolvimento

Esta etapa envolve atividades relacionadas a design, prototipagem, codificação, testes, entre
outras atividades que forem necessárias, como por exemplo, a integração com um outro
sistema. É importante ressaltar que essas atividades devem seguir o que foi descrito nas
etapas anteriores, pois é aí que entra as regras de negócio.

3- Operação

Nesta etapa o software já estará em produção e você dará o devido suporte aos usuários e,
claro, corrigir possíveis bugs que possam aparecer. Aí também entra a continuidade do
software se for preciso, como atender novos requisitos, novas funcionalidades. Porém, tudo
depende do modelo de ciclo de vida adotado pelo projeto.

Modelos de processo de desenvolvimento de software


Os modelos de processo que foram utilizados no desenvolvimento do projeto foi o incremental
e o cascata pois tem métodos de ambos os ciclos de vida do software identificados nele.
Etapas de processo de software:

Modelo incremental:
No modelo de ciclo de vida incremental a empresa divide os requisitos e funcionalidades em
módulos. Cada um deles é, então, avaliado e classificado com um nível de prioridades. Sendo
assim, o time pode planejar etapas com foco nos módulos prioritários.

Ao término de cada etapa, o cliente recebe uma amostra do software com as funcionalidades já
criadas. Isso permite que os recursos mais importantes sejam testados rapidamente no
ambiente de produção. Ou seja, a empresa terá mais meios para coletar dados sobre o uso da
aplicação e o que pode ser feito pra otimizá-la.

As chances de o cliente ter elevado satisfação também são maiores. Afinal, ele poderá entregar
um feedback contínuo sobre os recursos e as suas expectativas. Portanto, a empresa pode
criar maior alinhamento com o usuário e as suas demandas.

Funcionamento:

No modelo de ciclo de vida incremental a empresa divide os requisitos e funcionalidades em


módulos. Cada um deles é, então, avaliado e classificado com um nível de prioridades. Sendo
assim, o time pode planejar etapas com foco nos módulos prioritários.

Ao término de cada etapa, o cliente recebe uma amostra do software com as funcionalidades já
criadas. Isso permite que os recursos mais importantes sejam testados rapidamente no
ambiente de produção. Ou seja, a empresa terá mais meios para coletar dados sobre o uso da
aplicação e o que pode ser feito pra otimizá-la.

As chances de o cliente ter elevado satisfação também são maiores. Afinal, ele poderá entregar
um feedback contínuo sobre os recursos e as suas expectativas. Portanto, a empresa pode
criar maior alinhamento com o usuário e as suas demandas.

Vantagens:

Entregas parciais facilitam a identificação e correção de erros entre os componentes do


software.

Necessidades não especificadas nas fases iniciais podem ser desenvolvidas nos incrementos.

Os incrementos podem ser desenvolvidos por menos pessoas.

Entrega dos incrementos (partes do Software)

Permite o cumprimento do prazo especificado.


Facilita a manutenção dos “módulos”.

O Modelo Incremental inclui o uso do software pelo usuário para que as mudanças sejam feitas
de acordo com o próprio usuário.

É flexível e fácil de gerenciar para fazer um software melhor com uma melhor estrutura.

Os testes são simples.

Desvantagens:

Podem surgir problemas relativos à arquitetura do sistema, porque nem todos os requisitos
estão reunidos na frente de todo o ciclo de vida do software.

O modelo Incremental precisa ser relativamente pequeno.

Número de iterações não pode ser definido no início do processo.

O fim do processo não pode ser previamente definido.

Gerenciamento e manutenção do sistema completo podem se tornar complexos.

Gerenciamento do custo é mais complexo devido ao número de iterações (dinheiro pode


acabar).

Etapas do modelo incremental:

modelo cascata:
O Modelo em Cascata é um modelo de desenvolvimento de software sequencial no qual o
processo é visto como um fluir constante para frente (como uma cascata) através das fases de
análise de requisitos, projeto, implementação, testes (validação), integração, e manutenção de
software.

A origem do termo cascata é frequentemente citada como sendo um artigo publicado em 1970
por W. W. Royce; ironicamente, Royce defendia uma abordagem iterativa para o
desenvolvimento de software e nem mesmo usou o termo cascata.
Royce originalmente descreve o que é hoje conhecido como o modelo em cascata como um
exemplo de um método que ele argumentava ser um risco e um convite para falhas.

O modelo em cascata apresenta uma grande vantagem quando o escopo do trabalho é


claramente definido, como licitações e serviços específicos para órgãos públicos, neste cenário
o modelo em cascata leva vantagem.

Entretanto percebe-se a fragilidade do modelo nos dias de hoje em virtude da pouca ou quase
nenhuma flexibilidade do modelo, daí então surgem os modelos lineares e iterativos.

Vantagens:

Por causa de sua natureza separada em unidades, o modelo em cascata possibilita a


implementação concorrente entre vários programadores, agilizando a entrega.

É útil quando o pessoal envolvido no projeto é fraco tecnicamente.

O modelo apresenta uma grande vantagem quando o escopo do trabalho é claramente


definido.

Se as especificações estiverem corretas (o que é muito difícil em projetos de médio e grande


porte), um software pode ser desenvolvido de forma muito rápida.

Desvantagens:

Projetos reais raramente seguem um fluxo sequencial.

Em geral, é difícil para o cliente estabelecer todos os requisitos a priorizar.

Difícil se adequar a mudanças inevitáveis de requisitos.

Uma versão executável somente ficará pronta na fase final do projeto.

O modelo cascata exige que o cliente estabeleça todos os requisitos no início do projeto.

O cliente irá visualizar alguma coisa apenas perto do fim do projeto.

Um esforço considerável na fase de teste do projeto e ocorrências de alguns “estados de


bloqueio”, nos quais alguns membros de equipe do projeto precisam esperar que outros
membros terminem as tarefas dependentes para que o projeto prossiga.

O congelamento prematuro de partes da implementação pode resultar em um sistema que não


faça o que o usuário quer. Também pode “levar a sistemas mal estruturados, quando os
problemas de projeto são contornados por artifícios de implementação.

Etapas do modelo cascata:


Comparação dos modelos de processo:
Enquanto que no modelo cascata a entrega da primeira versão funcional do software ocorre
somente no final da sua construção, o modelo incremental entrega a primeira versão funcional
consideravelmente antes, pois o software é entregue por incrementos. Com isso, a utilização
de métodos incrementais o investimento inicial seja menor que o de métodos cascatas.

Com já foi mencionado modelos incrementais liberam a primeira versão funcional do software
em produção mais rápido do que modelos cascatas. Com base nisso, o retorno sobre o
investimento é mais rápido, pois os usuários já estão usufruindo do software e colhendo os
benefícios que ele proporciona.

técnicas utilizadas:

as técnicas que foram usadas para desenvolver o sistema foi fazer por partes e testes,
corrigindo falhas e erros junto à equipe do projeto para aprimoração do software e junto a isso
foi se atentar a todas as regras e requisitos.

Ferramentas utilizadas:

1- CodeBlocks

CodeBlocks: é um ambiente de desenvolvimento integrado de código aberto e multiplataforma.


Ele foi desenvolvido em C++, usando wxWidgets. Sua arquitetura é orientada a plugin, de
forma que suas funcionalidades são definidas pelos plugins fornecidos a ele.

CodeBlocks é voltado para o desenvolvimento em C/C++ e Fortran, podendo também ser


usado para a criação de ARM, AVR, D (linguagem de programação), DirectX, FLTK, GLFW,
GLUT, GTK+, Irrlicht, Lightfeather, MATLAB, OGRE, OpenGL, Qt, SDL, SFML, STL, SmartWin
e programas ou aplicativos com wx, embora, em certos casos, a instalação de SDKs ou
frameworks seja necessária.

O CodeBlocks está sendo desenvolvido para Windows e Linux. Alguns usuários também
compilaram com sucesso o CodeBlocks para FreeBSD [3] e Mac OS X [4] (com alguns
problemas na interface.

2- Compilador

MinGW (Minimalist GNU for Windows) é o compilador que utilizamos pois já veio integrado ao
CodeBlocks. Este software inclui um conjunto de arquivos cabeçalho para a API do Windows
que permite aos desenvolvedores usar o GCC para criar programas nativos em Windows sem
precisar contar com uma emulação em tempo real de um sistema Unix-like.

3- Inno Setup

Inno setup foi usado pra criar o instalador do sistema é um criador de instalador dirigido a
scripts, criado por Jordan Russell, em 1997. É programa de código aberto e é implementado
em Delphi.

Você também pode gostar