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.