20080910

ENGENHARIA DE SOFTWARE

Nossa.. são 4 e poko da manhã já... vamo que vamo neh...

Agora vou falar sobre Engenharia de Software, de novo.

Bem, seu conseito está baseado em camadas (é, lembrei do Sherek tb e das cebolas). Mas essa cebola é bem fininha eu diria , porque só tem 4 camadas ( que já ta mais do que bom na minha opinião pq já to ficando com sono!)
São elas: Ferramentas, Métodos, Processos e Foco na Qualidade ( nessa mesma ordem de cima pra baxo)

Agora vamos tratá-las individualmente, hmmm
  • Ferramentas : processos automatizados ou semi-automatizados para os processos e métodos ( como as ferramentas CASE, nossa realmente salvam a nossa pele, pelo menos poupamos um bocado de tempo utilizando-as)
  • Métodos: fornecem a definição do "como fazer" o desenvolvimento de software
  • Processos: é a base da engenharia de software! lol.. É o tal do processo que une as ferramentas com os métodos, massa neh?
  • Qualidade: toda a engenharia deve se fundamentar no compromentimento com a qualidade ( na minha opinião TUDO deve se comprometer com a tal da qualidade, mas tudo bem neh... eu nem dormi ainda, nem sei o que to falando)

Devemos SEMPRE levar em consideração algumas perguntinhas "básicas" na hora de elaborar um software, tais como:
  • Qual o problema a ser resolvido? ( lembre-se sempre de não oferecer laranjas quando se quer maçãs)
  • Quais características do software a ser gerado resolvem o problema ? ( as vezes respostas simples ajudam também)
  • Como o software ( a solução) serão concebidos? ( eh neh, ai complica)
  • Como o software será construído? ( é viável também?)
  • Qual a abordagem que será utilizada para cobrir erros feitos no projeto e na construção do software?
  • Como o software será mantido a longo prazo, quando a correções, adaptações e melhorias forem requeridas por usuários do software? ( lembre-se NUNCA é bom deixar o seu usuário totalmente dependente de vc pra qualquer modificação no software, tende deixa-lo o mais flexivel possivel, afinal de contas, vc quer ser encomodado toda hora todo dia?)
FASES GENÉRICAS DA ENGENHARIA DE SOFTWARE
DEFINIÇÃO
  • Foco no " O quê" será feito : qual informação? qual funcionalidade? quais interfaces? quais restrições? quais validações?
  • O método de definição depende do paradigma uzado

DESENVOLVIMENTO
  • Foco no "como" : como estrutura dados? como a funcionalidade será implementada? como as interfaces serão caracterizadas? como o projeto será traduzido para a linguagem de programação? como será testado?
  • Três tarefas devem ser realizadas: PROJETO DE SOFTWARE, CODIFICAÇÃO DO SOFTWARE, TESTE DO SOFTWARE

SUPORTE
  • Foco na mudança : correção ( defeitos), adaptação ( evolução do software), melhoria ( novos requisitos), prevenção ( manutenção preventiva)
  • Replica os passos de definição e desenvolvimento para o software existente
MODELOS DE PROCESSOS DE SOFTWARE
Ta tudo muito bonito, muito legal, mas e dai?
Pro profissional, o tal engenheiro de software, resolver o problema ele deve desenvolver uma estratégia que envolva todas as camadas e que de fato resolva o problema, para isso existem alguns modelos que auxiliam a esses profissionais uma ordem de como o projeto pode ser implementado. São elas os modelos de processo de desenvolvimento de software ( comentado no outro post sobre Engenharia de Software...)

MODELOS DE PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE
  • Modelo Linear Sequencial: também chamado de "ciclo de vida clássico" e "modelo cascata", ele sugere uma abordagem sequencial para o desenvolvimento de software. O grande problema desse modelo é que só serão visiveis os erros no final do projeto e também é complicado para os usuários conseguirem definir os requisitos.
  • Modelo de Prototipação: permite que o usuário tenha uma noção do software que está sendo gerado, de natureza iterativa e as atividades se repetem até que o software fique pronto. O maior problema é que, como o usuário nunca está satisfeito, dificilmente o software é finalizado , muitas vezes um código gerado como teste (não sendo formulado da melhor maneira possivel) acaba virando definitivo e isso pode gerar muito lixo na execussão do software.
  • Evolucionário incremental: ele combina elementos do modelo linear sequencial, só que aplicada repetinamente, com a filosofia iterativa da prototipação. Dessa forma, cada sequencia linear produz um "incremento " entregavel do software. O problema é que o software nunca terá uma versão final
  • Evolucionário Espiral: ele acopla a natureza iterativa da prototipação, só que com aspectos sistemáticos do modelo linear sequencial. Foi desenvolvido em uma série de "reliases" incrementais: nas primeiras iterações podem apenas ser um modelo em papel ou protótipo e nas ultimas versões, mais completas, o software é produzido. O problema é convencer alguém que a abordagem é controlável. Não é usado na mesma extenção que o linear sequencial e o de prototipação e, por isso, não foi testado suficiente. Ele é um bom modelo, no entanto não é muito seguro, vale mais a pena utilizar esse modelo quando se trata de software livre que interessa que o cliente teste pra achar o erro, e não em empresas das quais dependem do software a ser implementado funcione corretamente xD

Nenhum comentário: