Engenharia de software

A engenharia de software ou tecnologia de software , English Software Engineering ( SE ), está envolvida na produção ou desenvolvimento de software , organização e modelagem das estruturas de dados associadas e operação de sistemas de software . Uma definição de Helmut Balzert descreve a área como

"Provisão orientada para objetivos e uso sistemático de princípios , métodos e ferramentas para a divisão do trabalho, desenvolvimento semelhante à engenharia e aplicação de sistemas de software extensivos."

- Lit .: Balzert, p. 36

A tecnologia de software abrange um grande número de subáreas que, em sua totalidade, acompanham o desenvolvimento de software. A investigação experimental da tecnologia de software também é importante para medir e melhorar seu uso prático. Para descrever o "estado da arte" do departamento, existem diferentes abordagens, incluindo o Guia para o Corpo de Conhecimento em Engenharia de Software (SWEBOK) da IEEE Computer Society .

A disciplina de TI tecnologia de software é referida em linguagem e como sinônimo de "desenvolvimento de software"; No sentido linguístico mais restrito, entretanto, “desenvolvimento de software” representa as atividades que são realizadas dentro da disciplina de engenharia de software.

Em um sentido mais amplo, a tecnologia de software é entendida - além do desenvolvimento - também para operar software usando tecnologia da informação e / ou os dispositivos técnicos e software de sistema que são usados ​​para isso ou para o desenvolvimento de software.

Subáreas

Devido ao grande esforço envolvido na criação e manutenção de softwares complexos, o desenvolvimento é realizado por desenvolvedores de software com base em um plano estruturado (projeto). Este plano (o modelo procedimental ) divide o processo de desenvolvimento em fases gerenciáveis ​​que são limitadas em termos de tempo e conteúdo. O software é concluído passo a passo. As fases estão intimamente interligadas durante todo o processo de desenvolvimento. Na prática, também são usados ​​métodos que abandonam a análise do sistema em vários estágios, projeto / conceito do sistema e posterior implementação e teste, por exemplo, sob prototipagem , desenvolvimento ágil de software .

A tecnologia de software inclui todo o processo, desde a identificação do requisito até o comissionamento de uma solução de TI específica e, às vezes, além. O objetivo principal é o fornecimento e introdução de software de aplicação , em alguns casos, mais o hardware e as redes necessárias .

O software a ser implementado pode ser um software individual ou uma combinação e configuração de software padrão .

Os projetos são frequentemente realizados por ou com empresas de serviço externas, mas frequentemente também como desenvolvimentos internos. As abordagens para o desenvolvimento de projetos são correspondentemente diversas, também dependendo do tipo de projeto: de uma abordagem muito estruturada, consulte o modelo em cascata , passando por várias formas mistas, até métodos abertos e muito flexíveis, como o desenvolvimento ágil de software . Conseqüentemente, é feita uma distinção entre as abordagens de cima para baixo e de baixo para cima .

A seguir, são descritos alguns aspectos importantes e estágios / fases típicos de desenvolvimento do projeto que são mais ou menos pronunciados na prática.

As fases e suas tarefas estão listadas na tabela a seguir:

Processos centrais

1. Planejamento

2. Análise

3. Calado

4. Programação

5. Validação e verificação

Processos de suporte

6. Gerenciamento de requisitos

7. Gerenciamento de projetos

8. Gestão de qualidade

9. Gerenciamento de configuração

10. Implementação de software

11. Documentação

As subetapas de desenvolvimento de software mencionadas acima não são necessariamente executadas na íntegra para todos os projetos. Em vez disso, os processos individuais são selecionados especificamente para o respectivo requisito. Isso é necessário do ponto de vista de redução de custos e administração.

Gerenciamento de Projetos

Todo o processo de desenvolvimento do projeto está geralmente sujeito a um gerenciamento de projeto mais ou menos pronunciado . No caso de implementação por um provedor de serviços de TI, o gerenciamento independente do projeto é normalmente realizado tanto pelo cliente quanto pelo contratado . A fim de resolver os conflitos entre os dois gerentes de projeto, um comitê de controle ( comitê de direção ) composto pela gestão do cliente e do contratante é frequentemente estabelecido.

Normalmente, os projetos maiores também envolvem um maior esforço de gerenciamento de projetos, enquanto os projetos de médio ou pequeno porte são frequentemente tratados "paralelamente".

Os consultores externos de TI costumam ser usados para complementar e apoiar as pessoas envolvidas no gerenciamento de projetos.

Gestão da Qualidade

A gestão da qualidade dentro do projeto é entendida como uma subárea da gestão de projetos. Compreende as subáreas:

  • Planejamento da qualidade, ou seja, identificação dos critérios de qualidade relevantes para o projeto e os métodos com os quais eles podem ser atendidos.
  • Garantia de qualidade, ou seja, avaliação regular e regular do desempenho do projeto para que o projeto atenda aos padrões de qualidade.
  • Controle de qualidade, ou seja, acompanhamento dos resultados do projeto para verificar se os padrões de qualidade estão sendo atendidos e eliminar as causas do desempenho inadequado.

O gerenciamento da qualidade no projeto deve abordar o desempenho do projeto e a qualidade do produto do projeto. A gestão de qualidade moderna e a gestão de produto moderna complementam-se. Ambas as disciplinas reconhecem a importância de

  • Satisfação do cliente
  • A prevenção tem precedência sobre a verificação
  • Responsabilidade de gestão

no. Os programas de melhoria da qualidade executados pela organização patrocinadora, por exemplo de acordo com o TQM ou ISO 9000 , podem ser integrados para melhorar a qualidade do projeto e do produto.

Triângulo mágico

Como em geral no gerenciamento de projetos, o conflito permanente de metas entre qualidade, custos e tempo deve ser levado em consideração. Em projetos de software em particular, a equipe de gerenciamento de projetos frequentemente tem prazos apertados e está exposta a um risco particularmente alto de negligenciar a qualidade.

Gerenciamento de riscos

Devido à complexidade dos sistemas de informação , segurança ou qualidade “absoluta” não são economicamente viáveis. Por este motivo, os métodos de gestão de risco são frequentemente usados ​​para categorização e priorização , a fim de garantir um nível adequado de segurança e qualidade do sistema para o respectivo projeto.

Aspectos da gestão de risco devem ser levados em consideração ao longo de todo o ciclo de vida do sistema , ou seja, começando com o conceito, através do desenvolvimento ou programação, implementação e configuração e durante a operação até o descomissionamento do sistema.

Levantamento de requisitos

Em conexão com o desenvolvimento do projeto, a análise do sistema para a preparação do projeto é feita aqui. O assunto é o registro relacionado ao conteúdo dos requisitos questionando futuros usuários, bem como a investigação sistemática de outros requisitos factuais e técnicos e condições de limite (interfaces para sistemas de terceiros, requisitos legais, etc.). O resultado geralmente é um conceito técnico , muitas vezes também uma folha de especificações .

Uma especificação funcional contém todas as funções e requisitos de um programa. Isso especifica quais funções são necessárias e o que exatamente elas fazem. Esta visão geral é usada para tomar as decisões de design técnico básico e, a partir disso, a arquitetura do sistema é derivada. Se uma empresa de serviços for contratada, a folha de especificações é a base contratual para os serviços acordados. Portanto, a completude e exatidão das especificações e requisitos nelas constantes são de particular importância para o cliente.

Projeto de sistema / concepção técnica

Um analista de sistema ou designer, e também o programador para projetos menores, determina a arquitetura do programa com base nas especificações . Se produtos de software padrão são usados, a integração ou adaptação planejada do produto também é especificada nesta fase . Para que um novo software seja desenvolvido, o modelo de dados e as funções e algoritmos individuais ou a estrutura de objetos e classes são projetados. Se o software existente tiver que ser adaptado (adaptado), esta fase define quais alterações e extensões são necessárias. O resultado do projeto do sistema também é chamado de conceito de TI .

implementação

Na fase de implementação , a solução de aplicativo projetada anteriormente é implementada tecnicamente por meio da configuração de produtos de software, adaptação do software existente ou recriação completa de programas / partes de programas.

Uma nova criação de software é feita principalmente por programação , i. H. as funções individuais, objetos, classes, etc. são codificados em uma linguagem de programação com a ajuda de um ambiente de desenvolvimento integrado .

Teste de software

O software é testado de duas maneiras no teste de software , por um lado

  • técnico, d. H. na implementação correta do conceito de TI e nos erros do programa , e por outro lado
  • conteúdo, d. H. para integridade no que diz respeito à especificação e adequação para a finalidade pretendida.

Embora o teste do sistema seja de responsabilidade exclusiva do contratante, o teste do processo geralmente é realizado em cooperação com os usuários finais do cliente.

No desenvolvimento de software, é normal que os programas apresentem falhas. Ocasionalmente, partes inteiras precisam ser completamente reprojetadas, ou seja, reprogramadas. Visto que, em aplicações mais complexas, não pode ser descartado com certeza que as partes do programa alteradas não podem influenciar outras funções do programa (efeitos colaterais), um teste completo de todo o sistema deve ser executado novamente após o erro ter sido eliminado. Vários testes e ciclos de eliminação de erros (procedimento iterativo) são normalmente necessários antes que o software seja finalmente lançado.

Implementação de software

O software completo junto com quaisquer produtos de software padrão, hardware, etc. que possam ser necessários. é então instalado no sistema de computador do cliente ou da operadora (um provedor de serviços de aplicativo ) e pronto para uso durante a instalação . Uma distinção é freqüentemente feita entre instalações paralelas “produtivas”, “de teste”, “treinamento” e “desenvolvimento”.

Dependendo da plataforma técnica, a instalação ocorre no computador central ( servidor ) ou nas estações de trabalho ou em ambos. No caso de aplicativos de banco de dados, o banco de dados também pode ser ajustado . Em alguns casos, há uma migração de soluções de aplicativos mais antigas.

Para projetos maiores, geralmente há apenas uma instalação em um sistema de teste ou com alguns usuários piloto. A expansão subsequente (instalação e comissionamento) para outros locais é chamada de implantação .

Uma parte essencial do projeto é o suporte à implementação, em particular na forma de treinamento ou instrução para usuários finais, usuários avançados e administradores .

Existem conceitos de treinamento muito diferentes. Muitas vezes, um grande número de usuários é treinado por meio dos chamados "multiplicadores". Multiplicadores são usuários que, por sua vez, treinam outros usuários. Este processo também é denominado treinar os treinadores . O treinamento de usuários também está ocorrendo cada vez mais pela Internet, com aplicativos de treinamento apropriados.

Manutenção / cuidado

Após o comissionamento de uma solução de software, o suporte contínuo é necessário e usual. Isso inclui suporte ao usuário, por exemplo B. via linha direta durante a operação, bem como extensões de software, se necessário. No caso de desenvolvimento de software externo / gerenciamento de projetos, ambos são regulamentados em um contrato de suporte .

É feita uma distinção entre o suporte de primeiro nível e o suporte de segundo nível . O suporte de primeiro nível (também help desk ) é o primeiro ponto de contato para todas as perguntas de suporte recebidas e aceita todos os relatórios de problemas. No entanto, ele apenas direciona problemas sérios para o suporte de segundo nível. B. no fabricante do produto.

A adaptação contínua do software às mudanças de requisitos ou condições ambientais, por ex. B. às novas versões do software padrão usado , é referido como " manutenção de software ". Mudanças maiores são processadas em seus próprios projetos de manutenção , enquanto ajustes menores são frequentemente realizados como tarefas de manutenção com regras de processo mais simples. O gerenciamento da introdução subsequente de mudanças em um sistema em execução é chamado de gerenciamento de mudanças .

Embora uma separação estrita entre desenvolvimento e manutenção de software tenha sido assumida até o início do milênio, esse limite está desaparecendo cada vez mais. De um modo geral, a evolução do software ainda é usada .

literatura

  • Helmut Balzert : Livro - texto de tecnologia de software. Vol. 1. Desenvolvimento de software. Spektrum Akademischer Verlag, Heidelberg 1996, 1998, 2001, ISBN 3-8274-0480-0 .
  • Thomas Grechenig, Mario Bernhart, Roland Breiteneder, Karin Kappel: tecnologia de software. Com estudos de caso de projetos de desenvolvimento reais . Pearson Studium, Hallbergmoos 2010, ISBN 978-3-86894-007-7 .
  • Jochen Ludewig, Horst Lichter: Engenharia de Software. Noções básicas, pessoas, processos, técnicas . 3. Edição. dpunkt, Heidelberg 2013, ISBN 978-3-86490-092-1 .
  • Gustav Pomberger , Wolfgang Pree : Engenharia de Software. Projeto de arquitetura e orientação de processos . 3. Edição. Hanser, Munich 2004, ISBN 3-446-22429-7 .
  • Ian Sommerville : Engenharia de Software . 9ª edição. Pearson, Hallbergmoos 2012, ISBN 978-3-86894-099-2 .
  • Joachim Goll: Princípios de design e conceitos de construção de tecnologia de software: Estratégias para software fracamente acoplado, correto e estável. 2., atualizar Ed., Springer Vieweg, Wiesbaden [2019], ISBN 978-3-658-25974-7 .

Links da web

Wikibooks: tecnologia de software  - materiais de aprendizagem e ensino

Evidência individual

  1. Aprenda a programar programação vs. desenvolvimento de software
  2. ^ A b O Project Management Institute (Ed.): Um Guia para o Conjunto de Conhecimentos em Gerenciamento de Projetos (Guia PMBOK). Edição alemã de 2000, Newton Square, Penn., Project Management Institute. ISBN 978-1-930699-21-2 , pp. 95-103
  3. Kessler, Heinrich; Winkelhofer, Georg: Project Management . 4ª edição. Heidelberg 2004, Springer. Pág. 55-56
  4. Wendt, Dierk (porta-voz do grupo de trabalho): Erros clássicos no desenvolvimento de software , TU Ilmenau , versão de 6 de outubro de 2005, acessado em 9 de fevereiro de 2011
  5. ^ Ian Sommerville, Software Engineering, PEARSON, Versão 9, 2012, p. 276, ISBN 978-3-86894-099-2