A ciência do Projeto de Software Profa. Reane Franco Goulart
O que é a ciência do projeto de software? É a ciência para elaborar planos e tomar decisões sobre software. Auxilia as pessoas a tomar decisões como: Qual deveria ser a estrutura do código de nosso programa? É mais importante focar em ter um programa rápido ou um programa cujo código seja de fácil leitura? Para nossas necessidades, qual linguagem de programação deveríamos usar?
Projeto de Software não aborda assuntos como!!! Qual deveria ser a estrutura da empresa? Quando deveríamos ter reuniões de equipe? Quais horas do dia os programadores deveriam trabalhar? Como deveríamos avaliar o desempenho de nossos programadores?
Projeto de Software não aborda assuntos como!!! Essas não são decisões sobre seu projeto, são decisões sobre você ou sua empresa. É importante tomar essas decisões de modo adequado muitos projetos de software falharam porque não tinham um bom gerenciamento.
Como tomar as decisões técnicas corretas sobre o software? Qualquer coisa que envolve a arquitetura de seu sistema de software ou as decisões técnicas que você toma enquanto cria o sistema se enquadra na categoria de projeto de software.
Pessoas envolvidas nas decisões Todo programador que está trabalhando em um projeto de software está envolvido em projeto. O desenvolvedor líder está encarregado de projetar a arquitetura geral do programa inteiro. Os programadores seniores estão encarregados de projetar suas próprias grandes áreas. Os programadores juniores estão encarregados de projetar suas partes do programa, mesmo que sejam tão simples quanto uma parte de um arquivo.
Pessoas envolvidas nas decisões Todas as pessoas que escrevem software são projetistas. Cada pessoa em uma equipe de software é responsável por se certificar de que seu código está bem projetado. Um projetista deve sempre estar disposto a ouvir sugestões e feedback, porque os programadores normalmente são pessoas que têm boas ideias. Qualquer decisão deve ser tomada por uma pessoa, não por um grupo de pessoas.
Como tornar a ciência de projeto de software em CIÊNCIA? O projeto de software não é uma ciência. O que é uma ciência? Sua definição é um pouco mais complexa, para que um assunto seja uma ciência, ele tem que passar por certos testes: Conhecimento coletado, ou seja, tem que ser composta de fatos - não de opiniões esses fatos devem ter sido reunidos em pesquisa em livros, artigos, dentre outros. Conhecimento deve ter algum tipo de organização dividido em categorias e as partes devem estar relacionadas umas às outras em termos de importância.
Como tornar a ciência de projeto de software em CIÊNCIA? Uma ciência deve conter verdades gerais ou leis básicas. Deve dizer como fazer algo no universo físico como é a aplicação no trabalho ou na vida. Uma ciência é descoberta e comprovada por meio de método científico. No mundo do software, tem-se muito conhecimento; ele foi coletado e também organizado. Todas as partes exigidas para se fazer uma ciência.
Leis Fundamentais do Projeto de Software Existem duas áreas importantes que devem ser observadas no desenvolvimento do projeto de software: leis claramente declaradas e verdades inabaláveis que nunca falharam. Desenvolvedores de softwares experientes sabem qual é a coisa certa a fazer, mas por que aquela é a coisa certa? O que torna algumas decisões certas e algumas decisões erradas?
Quais são as Leis Fundamentais do Projeto de Software? Existe um conjunto de definições, fatos, regras e leis para desenvolvimento de um software. Definições dizem o que algo é e como você o usaria. Fatos são apenas declarações verdadeiras sobre algo. Regras são declarações que abrange, algo específico e ajudam a orientar decisões, mas não o ajudam a prever o que acontecerá no futuro ou a descobrir outras verdades. As regras dizem se deve ou não tomar alguma decisão.
Quais são as Leis Fundamentais do Projeto de Software? Leis são fatos que serão sempre verdadeiros e abrangem uma ampla área de conhecimento. Elas ajudam a descobrir outras verdades importantes e permitem que você preveja o que acontecerá no futuro. De todas as leis são as mais importantes.
Quais são as Leis Fundamentais do Projeto de Software? Exemplo: Fato: diferença entre um mau e um bom programador é o entendimento: maus programadores não entendem o que estão fazendo, e bons programadores, sim. Regra: um bom programador deve fazer tudo o que puder para tornar o que ele escreve o mais simples possível a outros programadores. Definição: um programa é: uma sequencia de instruções dadas ao computador e as ações executadas por um computador como resultado de ter recebido instruções.
Quais são as Leis Fundamentais do Projeto de Software? Se a pessoa trabalha na área de desenvolvimento de software há muito tempo, possivelmente já se deparou com algumas dessas ideias antes. O que você já respondeu quando deparou com questões assim: Eu sabia que esse dado particular era comprovadamente verdadeiro? Eu sabia quão importante ele era?
Quais são as Leis Fundamentais do Projeto de Software? Eu poderia tê-lo comunicado claramente a outra pessoa para que ela o entendesse completamente? Eu entendi como ele se relacionava com outros dados na área de desenvolvimento de software? Se puder responder sim a algumas dessas perguntas, enquanto que antes dizia não ou talvez. Dessa forma você obteve um tipo específico de entendimento, e essa compreensão é uma parte enorme do que diferencia uma ciência de um mero conjunto de ideias.
Quais são as Leis Fundamentais do Projeto de Software? Vejam alguns exemplos no apêndice do livro: Apendice B - fatos - leis - regras - definicoes.pdf