Вы находитесь на странице: 1из 28

Introdução

Prof:
Zeferino Saugene
Objectivos

Fazer uma introdução da engenharia de


software e entender sua importancia
Procurar responder as questões chave
relacionadas a engenharia de software
Introduzir questões eticas e profissionais e
explicar a sua importancia para os engenheiros
de software
Engenharia de Software

A economia de TODAS nações desenvolvidas


dependem de software
Mais e mais sistemas são controlados via
software
Engenharia de Software agrega teorias,
metodos e ferramentas para desenvolvimento
professional de software
Custos de Software
Custos de software são varias vezes denominados
custos do sistema. Os custos de software no PC são
várias vezes elevadas que os custos do hardware
Os custos de manutenção do software são mais
elevados comparando aos custos de
desenvolvimento. Para sistemas com muito tempo
de vida, manutenção pode custar muito mais
Engenharia de software preocupa-se com
desenvolvimento de software com contenção de
custos “cost-effective software development”
FAQs acerca de engenharia de
software
O que é software?
O que é engenharia de software?
Qual é a diferença existente entre engenharia
de software e “computer science”?
Qual a diferença existente entre engenharia de
software e engenharia de sistemas?
O que é “software process”?
O que é “software process model”?
FAQs acerca de engenharia de
software ...
Quais são os custos de “software engineering”?
O que são metodos de “software engineering”?
O que é CASE (Computer-Aided Software
Engineering)
Quais são os atributos de um bom software?
Quais são os desafios chaves enfrentados na
engenharia de software?
O que é software?

Programas de computador e a documentação a


ele associada
Produtos de software podem ser desenvolvidos
para um cliente particular ou desenvolvidos para
um mercado em geral
Produtos de software podem ser
– Genericos – devenvolvidos para ser vendido para
um grupo de clientes
– Bespoke (cliente) – devenvolvido para um cliente
especifico de acordo com as especificações
O que é “software engineering”?

Engenharia de Software é uma disciplina de


engenharia que se preocupa com todos os
aspectos da produção de software
Engenheiros de software devem adotar uma
abordagem sistemática e organizada no seu
trabalho e usar ferramentas e técnicas
apropriadas a depender:
– do problema a ser resolvido
– das restrições do desenvolvimento e
– dos recursos disponíveis
Qual a diferença entre “software engineering” e
“computer science”?

Ciência da computação se preocupa com a


teoria, os fundamentos e métodos de
computadores e sistemas de software
Engenharia de software se preocupa com com
as questões práticas de desenvolvimento e
entrega de software
Qual a diferença entre “software engineering” e
“system engineering”?

Engenharia de sistema preocupa-se com todos


aspectos relacionados a sistemas baseados em
computador incluido hardware, software e
processo de engenharia. Software engineering é
parte deste processo

Engenheiros de sistemas estão involvidos na


especificação de sistemas, desenho de
arquitectura, integração e desenvolvimento
O que é processo de software?

Um conjunto de actividade cujo objectivo é


desenvolver ou melhorar (evolution) de software
Actividades genericas em todos processos de
software são:
– Especificação - o que o sistema deverá fazer e os constrangimentos do
seu desenvolvimento
– Desenvolvimento – produção do sistema de software
– Validação - fazer um “checking” de modo a verificar se o sistema
responde as requisitos do cliente
– Evolução- alterando o software de modo a responder as demandas
O que é “software process model”?
Uma representação simplificada do processo de
software, apresentado sob uma perspectiva especifica
Exemplos de perspectivas de processos são:
– Modelo Workflow – sequencia de actividades
– Modelo Data-flow – fluxo de informação
– Modelo “Role/action” – quem faz oque?
“Process models” genericos
– Waterfall ou Modelo em Cascata
– Desenvolvimento Evolutionario
– Transformação Formal
– Integração apartir de componentes reutilizaveis
Quais são os custos de engenharia de software?

Aproximadamente 60% dos custos estão


relacionados com a fase de desenvolvimento,
40% são custos dos testes.
Custos variam dependendo do tipo de sistemas
a desenvolver e os requisitos do sistema como
por exemplo performance e confiabilidade
A distribuição dos custos depende no modelo de
desenvolvimento adoptado
O que são métodos de “software engineering”?

Abordagens estruturadas do desenvolvimento de software que inclui modelos


de sistemas, notações, regras, sugestões de desenho e guião de processo
Descrição do modelo
– Descrição de modelos gráficos que deverão ser produzidos
Regras
– Restrições aplicadas aos modelos do sistema
Recomendações
– Aconcelhamentos sobre as melhores prácticas de desenho
Guião de processo
– Que actividades deverão ser seguidas
O que é CASE (Computer-Aided Software
Engineering)
Sistemas de Software cujo objectivo é providenciar
suporte automatizado para as actividades do
processo de software. Em geral sistemas CASE
são utilizados para dar suporte a
Upper-CASE
– Ferramentas usadas para suportar as actividades nas
fases iniciais da colheita de requisitos e desenho
Lower-CASE
– Ferramentas para suportar as actividades das fases
avançadas como programação e teste
Quais os atributos de um bom software?
O software deve apresentar a funcionalidade e
desempenho desejados ao utilizador e deve se
preocupar com os seguintes aspectos:
– Manutenção
• O software deve evoluir
– Dependability
• O software deve ser confiável
– Eficiência
• O software deve fazer bom uso dos recursos do sistema
– Utilização
• O software deve ser utilizável pelo usuários para os quais foi
projetado
Quais são os desafios enfretados na engenharia
de software?
Lidar com os sistemas legados, com a diversidade,
com os prazos de entrega reduzidos

– Sistemas legados (Legacy Systems)


• Sistemas antigos que devem ser mantidos e atualizados

– Heterogeneidade
• Os sistemas são distribuídos e incluem uma combinação de HW e SW

– Entrega (delivery)
• Há uma constante pressão para uma entrega mais rápida de software
Responsabilidades professionais e éticas

Engenharia de Software involve um vasto leque


de responsibilidades mas do que simples
aplicação de habilidades tecnicas

Engenheiros de Software deverão ser honestos


na responsabilidade tecnica para que sejam
respeitados profissionalmente
Responsabilidades professionais

Confidentiality
– Engineers should normally respect the confidentiality
of their employers or clients irrespective of whether
or not a formal confidentiality agreement has been
signed.
Competence
– Engineers should not misrepresent their level of
competence. They should not knowingly accept
work which is outwith their competence.
Responsabilidades professionais
Intellectual property rights
– Engineers should be aware of local laws governing the use
of intellectual property such as patents, copyright, etc. They
should be careful to ensure that the intellectual property of
employers and clients is protected.
Computer misuse
– Software engineers should not use their technical skills to
misuse other people’s computers. Computer misuse ranges
from relatively trivial (game playing on an employer’s
machine, say) to extremely serious (dissemination of
viruses).
Code of ethics - preamble
– Software engineers shall commit themselves to
making the analysis, specification, design,
development, testing and maintenance of software a
beneficial and respected profession.

– In accordance with their commitment to the health,


safety and welfare of the public, software engineers
shall adhere to the following Eight Principles:
Principios éticos
1. PUBLIC
– Software engineers shall act consistently with the
public interest.
2. CLIENT AND EMPLOYER
– Software engineers shall act in a manner that is in
the best interests of their client and employer
consistent with the public interest.
3. PRODUCT
– Software engineers shall ensure that their products
and related modifications meet the highest
professional standards possible.
Principios éticos
5. JUDGMENT
– Software engineers shall maintain integrity and
independence in their professional judgment.
5. MANAGEMENT
– Software engineering managers and leaders shall subscribe
to and promote an ethical approach to the management of
software development and maintenance.
6. PROFESSION
– Software engineers shall advance the integrity and reputation
of the profession consistent with the public interest.
Principios éticos
7. COLLEAGUES
– Software engineers shall be fair to and supportive of their
colleagues.

8. SELF
– Software engineers shall participate in lifelong learning
regarding the practice of their profession and shall promote
an ethical approach to the practice of the profession.
Dilemas éticos

Discordância em relação à política dos


superiores

– Seu empregador age de forma desonesta e


disponibiliza um sistema crítico sem finalizar os
testes

Participação no desenvolvimento de sistemas


nucleares ou sistemas militares
Key points
Engenharia de Software uma disciplina de engenharia que se
preocupa com todos aspectos relaciondados com a produção de
software.
Produtos de Software consiste de programas desenvolvidos e a
documentação associada a estes. Atributos essenciais de produto são
maintainability, dependability, efficiency and usability.
O processo de software consiste de actividades que estão involvidade
no desenvolvimento de produtos de software. Actividades basicas são
especificação, desenvolvimento, validação e evolução.
Metodos são formas de organizadas de produção de software. Incluem sugestões a
serem seguidas no processo, a notação a ser usada, regras que governam a decrição
do sistema.
Key points
Ferramentas CASE são sistemas software desenhados para suportar
actividades rotineiras no processo de software como por exemplo
edição de diagramas de desenho, verificação de consitencia de
diagramas, e fazendo rastreamento dos testes efectuados sobre
programas.

Engenheiros de Software tem responsabilidades sobre a profissão de


engenharia e a sociedade. Este não devem estar apenas preocupados
com aspectos técnicos.
Exercícios
Relacione e discuta questões de conhecimento
público que possam estar relacionadas a
aspectos éticos em:
– comercialização de software
– uso de software em processos eleitorais
– uso de spam
– venda de endereços eletrônicos
– registro e manutenção de informações pessoais em
bases de dados privadas sem o consentimento das
pessoas
– propaganda/marketing de produtos de informática

Вам также может понравиться