2. Etapas e Processos de Desenvolvimento - franAnder/Engenharia-de-software-FACIMP GitHub Wiki

O engenheiro de software deverá definir qual processo de desenvolvimento a ser aplicado em um determinado projeto de software como especificação de requisito não funcional. Inicialmente, terá que identificar quais as atividades que irão compor o desejado processo e, em seguida, definir o sequenciamento das referidas atividades, ou seja, o fluxo do processo. As atividades típicas que compõem o processo de desenvolvimento de software são:

Levantamento de requisitos:

O levantamento de requisitos está ligado diretamente a qualidade de software que será entregue ao usuário final. Ele tem como objetivo fazer a ponte entre o cliente e o programador. Etapa de levantamento de requisitos tem como principal objetivo sincronizar a expectativa do cliente com o produto final, o software que será produzido pelos programadores - reduzindo custos e potencial retrabalho gerado por esses ruídos de comunicação. As principais características do levantamento de requisitos são:

 Se preocupar em buscar informações do cliente para construir um software.
 Organizar o projeto antes de iniciar qualquer implementação.
 Entregar um software de qualidade e que atenda de fato às necessidades do usuário.

Nesta etapa, são identificados os requisitos que serão implementados no software projetado. O grande desafio é que o engenheiro de software tenha o mesmo entendimento do negócio que os usuários. A partir dessa conceituação, identificamos a tipificação de requisitos comumente utilizada: requisitos funcionais, não funcionais e de domínio.

Requisito funcionais: Estão relacionados com os serviços fornecidos pelo sistema, ou seja, as funcionalidades que estarão disponíveis no software. Requisitos não funcionais: Incluem as restrições operacionais impostas ao software, tais como, o sistema gerenciador de banco de dados, a linguagem de programação, legislação pertinente á compliance, entre outros, bem como os requisitos de qualidade, tais como: confiabilidade, manutenibilidade, usuabilidade e outros.

Análise:

Na etapa de análise, as especificações contidas no documento de requisitos são convertidas em modelos de análise que incluem artefatos gráficos e textuais. Como exemplos, os requisitos funcionais evoluem para uma especificação gráfica denominada modelo de casos de uso, sendo este composto por diagramas de caso de uso, artefatos gráficos, e descrições de caso de uso, artefatos textuais. A análise de requisitos ou engenharia de requisitos é um aspecto importante no gerenciamento de projetos, é a responsável por coletar dados indispensáveis, necessários, exigências de que o usuário necessite para solucionar um problema e alcançar seus objetivos. Assim como determinar as suas expectativas de um usuário para determinado produto. Segundo a IEEE (1990) a análise de requisitos é um processo que envolve o estudo das necessidades do usuário para se encontrar uma definição correta ou completa do sistema ou requisito de software. Essa análise de requisitos é vital para o desenvolvimento do sistema, ela vai determinar o sucesso ou o fracasso do projeto. Os requisitos colhidos devem ser quantitativos, detalhados e relevantes para o projeto. Pois eles fornecerão a referência para validar o produto final, estabelecerão o acordo entre cliente e fornecedor sobre o que o software fará e consequentemente reduzirão os custos de desenvolvimento, pois os requisitos mal definidos implicam num retrabalho.

Projeto:

O projeto e a implementação formam o processo que literalmente converte aquilo que foi especificado em um sistema executável. É nessa etapa que acontece o desenvolvimento e a programação do sistema executável. É nessa etapa que acontece o desenvolvimento e a programação propriamente dita. As atividades podem variar, tudo depende do tipo de sistema a ser desenvolvido.

  • Projeto de arquitetura - Identifica a estrutura geral do sistema, os componentes principais (subsistemas ou módulos), relacionamentos e como ocorre a distribuição.

  • Projeto de interface - Define as interfaces entre os componentes do sistema, o reaproveitamento e o desenvolvimento simultâneo.

  • Projeto de componente - É a projeção do funcionamento de cada componente do sistema. Pode ser uma funcionalidade a ser implementada ou uma lista de alterações a serem feitas em um componente de reuso.

  • Projeto de banco de dados - Projeção das estruturas de dados do sistema e como eles deve ser representadas em um banco de dados

Implementação:

A etapa de implementação é aquela em que os desenvolvedores, programadores e engenheiros começam a escrever, de fato, o código de programação do software, utilizando como base para isso os projetos elaborados na fase anterior.

É aqui que cada um dos módulos, que forma imaginados durante a fase de design do projeto, ganha vida. Por isso, também, essa pode ser uma das etapas mais longas e árduas do ciclo do desenvolvimento. Durante a implementação de software, e comum que os profissionais utilizem ferramentas para agilizar o processo de desenvolvimento. Exemplos disso são as bibliotecas, assim, é possível aproveitar as funções que já foram feitas nessas bibliotecas, ao invés de ter que programar cada uma delas do zero. Muitas equipes utilizam as ferramentas CASE para acelerar e dinamizar a etapas de desenvolvimento. CASE, que vem do inglês "Computer-aided software engineering", são softwares de programação que auxiliam com diversos processos de ciclo, desde a modelagem e análise de requisitos até a codificação e testagem do programa.

Testes:

Durante esta fase, são normalmente envolvidos o personagem do analista de teste e o testador. O analista de teste é responsável por planejar, elabora e documentar todas as verticais passíveis de verificação em uma implementação ou correção de software.

A importância da análise de testes

O analista de testes, utiliza os artefatos de documentação de software gerados nas etapas anteriores para direcionar a análise e o plano de teste. Buscando sempre como objetivo final a verificação ou não da aderência de cada funcionalidade individual com o seu respectivo requisito de sistema, e requisito de negócio.

Implantação:

É a fase do ciclo da vida de um software, no contexto de um sistema de informação, que corresponde textualmente á passagem do software para a produção. O processo de implantação universal consiste de várias atividades intercaladas como possíveis transições entre elas. Estas atividades podem ocorrer no ambiente de produção e ou no ambiente de desenvolvimento ou em ambos. Pelo o fato de cada software ser único, o processo preciso ou procedimentos a serem seguidos são difíceis de definir. Além disto, a implantação pode ser interpretada como um processo universal que tem de ser customizado de acordo com requerimento específicos ou características.