Engenharia de Software

Definição de Engenharia de software Segundo Fritz Bauer

É a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais". O próprio significado de engenharia já traz os conceitos de criação, construção, análise, desenvolvimento e manutenção.

A engenharia de software se concentra nos aspectos práticos da produção de um sistema de software, enquanto a ciência da computação estuda os fundamentos teóricos dos aspectos computacionais.

A Engenharia de Software surgiu em meados dos anos 70 numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funções, módulos, objetos ou agentes e interconectados entre si, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.

Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantido suas qualidades. Além disto, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento. Empresas desenvolvedoras de software passaram a empregar os conceitos de Engenharia de Software sobretudo para orientar suas áreas de desenvolvimento, muitas delas organizadas sob a forma de Fábrica de Software. A engenharia de sistemas é uma área mais ampla por tratar de todos os aspectos de sistemas baseados em computadores, incluindo hardware e engenharia de processos além do software.

Processo de Software

Processo de software é uma sequência coerente de práticas que objetiva o desenvolvimento ou evolução de sistemas de software. Estas práticas englobam as atividades de especificação, projeto, implementação e testes e caracterizam-se pela interação de ferramentas, pessoas e métodos. Devido ao uso da palavra projeto em muitos contextos, por questões de clareza, há vezes em que se prefira usar o original em inglês design.

Modelos

  •  Sequencial ou Cascata (do inglês waterfall) - com fases distintas de especificação, projeto e desenvolvimento.
  •  Evolucional - especificação, projeto e desenvolvimento são entrelaçados.
  •  V-Model - Parecido com o modelo cascata, mas com uma organização melhor, que permite que se compare com outros modelos mais modernos.
  •  Espiral - evolução através de vários ciclos completos de especificação, projeto e desenvolvimento.
  •  Componentizado - reuso através de montagem de componentes já existentes.
  •  Formal - implementação a partir de modelo matemático formal.
  • Ágil
  • RAD
  • Quarta geração

Metodologias

  • Rational Unified Process ( RUP )
  • Programação extrema ( XP )
  • Microsoft Solution Framework ( MSF )
  • Feature Driven Development ( FDD )

Modelos de Maturidade

Os modelos de maturidade surgiram para avaliar a qualidade dos processos de software aplicados em uma organização (empresa ou instituição). O mais conhecido é o Capability Maturity Model Integration (CMMi), do Software Engineering Institute - SEI.

Através do CMMi, uma organização pode ter sua maturidade medida em 5 níveis:

  • Nível 1 - Caótico
  •  Nível 2 - Capacidade de repetir sucessos anteriores pelo acompanhamento de custos, cronogramas e funcionalidades
  • Nível 3 - O processo de software é bem definido, documentado e padronizado
  • Nível 4 - Realiza uma gerência quantitativa do processo de software e do produto
  • Nível 5 - Usa a informação quantitativa para melhorar continuamente e gerenciar o processo de software

CMMi é um novo modelo de maturidade surgido recentemente com o fim de agrupar as diferentes usabilidades que o CMM estava sendo utilizado. No Brasil temos 3 empresas que contam com a certificação CMMi-5: Accenture Technology Solutions(ATS), IBM, TCS - Tata Consulting and Services.

Gerência de Projetos

A gerência de projetos se preocupa em entregar o sistema de software no prazo e de acordo com os requisitos estabelecidos, levando em conta sempre as limitações de orçamento e tempo.

A gerência de projetos de software se caracterizam por tratar sobre um produto intangível, muito flexível e com processo de desenvolvimento com baixa padronização.

Planejamento

O planejamento de um projeto de desenvolvimento de software inclui: * organização do projeto (incluindo equipes e responsabilidades).

  •  estruturação das tarefas (do inglês work breakdown structure)
  •  cronograma do projeto (do inglês project schedule)
  •  análise de risco

Essas atividades sofrem com dificuldades típicas de desenvolvimento de software. A produtividade não é linear em relação ao tamanho da equipe e o aumento de produtividade não é imediato devido à custos de aprendizado de novos membros. A diminuição de qualidade para acelerar o desenvolvimento constantemente prejudica futuramente a produtividade.

A estimativa de dificuldades e custos de desenvolvimentos são muito difíceis, além do surgimento de problemas técnicos. Esses fatores requerem uma análise de riscos cuidadosa.

Análise

As atividades de análise concentram-se na identificação, especificação e descrição dos requisitos do sistema de software. Em resumo, requisito é uma necessidade que o software deve cumprir.

Há várias interpretações e classificações sobre requisitos, entre elas:

  •   funcional ou não funcional
  •   de usuário ou de sistema

É comum que o cliente não saiba o que ele realmente deseja, que haja problemas na comunicação e ainda que haja mudança constante de requisitos. Todos esses fatores são recrudescidos pela intangibilidade sobre característicos de sistemas de software, principalmente sobre o custo de cada requisito.

Modelagem

A abstração do sistema de software através de modelos que o descrevem é um poderoso instrumento para o entendimento e comunicação do produto final que será desenvolvido.

A maior dificuldade nesta atividade está no equilíbrio (tradeoff) entre simplicidade (favorecendo a comunicação) e a complexidade (favorecendo a precisão) do modelo. É comum a utilização de linguagens para modelagem como UML.

Gestão

  • Pessoal
  • Produto
  • Processo
  •  Projeto

Tecnologias e Práticas

A engenharia de software aborda uma série de práticas e tecnologias, principalmente estudadas pela ciência da computação, enfocando seu impacto na produtividade e qualidade de software.

Destacam-se o estudo de linguagem de programação, banco de dados e paradigmas de programação, como:

  • Programação estruturada
  • Programação funcional
  • Programação orientada a objetos
  • Componentes de Software
  • Programação orientada a aspecto

Ferramentas

Outro ponto importante é o uso de ferramentas CASE (do inglês Computer-Aided Software Engineering). Essa classificação abrange toda ferramenta baseada em computadores que auxiliam atividades de engenharia de software, desde de análise de requisitos e modelagem até programação e testes.

Os ambientes de desenvolvimento integrado (IDEs) têm maior destaque e suportam:

  • Editor
  • Compilador
  • Debug
  • Geração de código
  • Modelagem
  • Deploy
  • Testes automatizados
  • Refatoração

 

Comentários  

 
SUSANA SOBREIRA
0 # SUSANA SOBREIRA 18-03-2013 18:07
OLÁ, GOSTARIA DE SABER QUAl O CONTEUDO COBRADO NO CONCURSO DO TRT, OBRIGADA.
Responder | Responder com citação | Citar
 
 
Equipe OK Concursos
0 # Equipe OK Concursos 20-03-2013 12:35
Olá Susana.
Agradecemos o contato.

Veja em nosso site as matérias do concurso para os Tribunais Regionais através do link abaixo:

okconcursos.com.br/.../...
Responder | Responder com citação | Citar
 
 
Jessyca
0 # Jessyca 15-05-2013 17:32
Ola gostaria de saber qual conteudo cobrado no concurso do Banco do Brasil,o estado do ES....a prova ja esta chegando...obri gada!!!
Responder | Responder com citação | Citar
 
 
Equipe Ok Concursos
0 # Equipe Ok Concursos 16-05-2013 13:08
Olá Jessyca,
Agradecemos seu contato.

Procure no edital do Banco do Brasil as matérias que cairão no concurso e veja se os conteúdos das apostilas grátis atenderão os seus interesses:

okconcursos.com.br/.../...

Veja também as matérias dos antigos concursos do Banco do Brasil:

okconcursos.com.br/.../...
Responder | Responder com citação | Citar
 

Gostou do conteúdo? Compartilhe!


Questões de Concurso

Respondendo prova de simulado

Para treinar e se aperfeiçoar, o ideal é responder a questões que irão testar os seus conhecimentos em concursos públicos. Confira em nossa site.

Questões de Concurso

Matérias do Concurso

Estudantes lendo livro Concurso Público

Você já escolheu a área em que você vai prestar concurso público? Se sim, aproveite para ler os conteúdos que mais caem nas provas.

Matérias do Concurso

Edital de Concurso

Ler livros óculos

Nesta seção você encontra os editais de concursos separados por áreas. Escolha uma área de seu interesse e fique por dentro de tudo sobre a vaga escolhida!

Edital de Concurso