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:
Postar um comentário