"We see three critical differences between programming and software engineering: time, scale, and the trade-offs at play. On a software engineering project, engineers need to be more concerned with the passage of time and the eventual need for change. In a software engineering organization, we need to be more concerned about scale and efficiency, both for the software we produce as well as for the organization that is producing it. Finally, as software engineers, we are asked to make more complex decisions with higher-stakes outcomes, often based on imprecise estimates of time and growth."
"Within Google, we sometimes say, “Software engineering is programming integrated over time.” Programming is certainly a significant part of software engineering: after all, programming is how you generate new software in the first place. If you accept this distinction, it also becomes clear that we might need to delineate between programming tasks (development) and software engineering tasks (development, modification, maintenance). The addition of time adds an important new dimension to programming. Cubes aren’t squares, distance isn’t velocity. Software engineering isn’t programming."
A engenharia de Software vai gerenciar todo o processo de desenvolvimento e manutenção do produto. O foco está no planejamento e organização dos recursos, obejtivo, riscos e premissas que envolvem o projeto, procurando o equilibrio entre custo, tempo e escopo, para que os mesmo não interfiram na qualidade do produto. A relação entre programação e engenharia de software está na utilização, a engenharia de software utiliza a programação como ferramenta para a criação dos produto e alcançe dos objtivos.
Requisitos são objetivos, comportamentos ou propriedades que um produto deve atender. É através dos requisitos que entendemos qual é foco do produto, alinhando objetivos, expectativas e necessidade.
2.1 - Requistos funcionais Requisitos funcionais são os objetivos ou necessidades que o software deverá solucionar atráves de suas funções ou serviços. (Necessidade do cliente) - Exemplos: Funcionalidades.
2.2 - Requisitos Não funcionais Requisitos não funcionais está relacionado a forma com que o projeto/produtos deve acontecer. Ele estabele parametros que não estão completamente ligado a um objetivo ou necessidade, mas a qualidade o usabilidade do que estpa sendo contruido. Exemplos: Escalabilidade, manutenção e segurança
2.3 - Dê 2 exemplos de trade-off em requisitos não funcionais? Trade-off está ligada as tomadas de decisões, eliminação dos conflitos com foco nas prioridades e melhor manuntenção do produto. Exemplos: A escolha de uma linguagem de programação para a execução de uma tarefa ou a forma com que o sistema será arquitetado, visando o publico ou fatures de manutenção.