Olá sejam bem-vindos ao canal engenharia de software comas média Eu sou professor Denis gues eu já atuo na área de modelagem H vários anos eu tenho quatro vos publicados sobre o assunto e eu já ministrei diversas palestras e cursos técnicos sobre modelagem de software coml na aula de hoje eu vou iniciar o conteúdo a respeito de processos de software então vamos dar início à nossa aula Então primeiramente eu vou apresentar alguns conceitos básicos de alguns autores renomados então de acordo com presma um processo de software seria uma metodologia para as atividades ações e tarefas necessárias
para desenvolver um software de alta qualidade Já segundo sandil um processo de software é um conjunto de atividades relacionadas que leva a produção de um produto de software e finalmente de acordo com o vsl um processo de desenvolvimento de software é um conjunto de atividades interdependentes com responsáveis e com entradas e saídas definidas eh antes de continuar o conteúdo eh é importante destacar que muito do conteúdo que vai ser apresentado muito material que vai ser apresentado foi baseado num material seguido pelo professor João Pablo Silva da Silva ah Bom primeiramente Por que desenvolveremos software se
desenvolve software para que problemas que existem no mundo real possam ser solucionados Total ou parcialmente por meio de computadores porém desenvolver software não é uma tarefa simples pelo contrário ela é uma tarefa bastante complexa então para poder solucionar os problemas por meio de software é preciso antes de mais nada compreender corretamente o problema em questão Eu costumo dizer com bastante frequência se não se conhece corretamente o problema não é possível produzir uma solução correta para o problema então Primeiro é preciso preciso compreender bem o problema que se quer resolver depois disso então passa-se a pensar
estabelecer determinar como o problema será solucionado bom com relação aos processos de desenvolvimento de software bom eh a maioria das empresas de desenvolvimento de software e mesmo os profissionais que atuam de forma particular e eles provavelmente terão ao longo de sua história ou ao longo de sua carreira vivenciado casos de sucesso e casos de fracasso bom ah existe aquela máxima porque esse estuda história se estuda história para não repetir os erros do passado Então se estuda história se Analisa que erros foram cometidos e tenta-se evitá-los com relação aos processos de desenvolvimento a comparação é um
pouco semelhante provavelmente a empresa a equipe o profissional tiveram casos de fracasso então eles devem estudar esses casos e tentar descobrir por houve esse fracasso porque são situações que se desejar por outro lado Muito provavelmente a empresa a equipe ou profissional obtiveram caso de sucesso e eles querem repetir essa Então a gente tem que estudar por aquele aquela situação específica foi bem sucedida então com base nas situações que deram certo e com base nas situações que deram errado tenta-se identificar procedimentos e fatores que permitam o sucesso de um projeto de forma a repeti-los e da
mesma maneira quais procedimentos e fatores levar ao fracasso de um projeto e como evitados bom então um processo de desenvolvimento ele é composto por um conjunto de etapas que irão envolver atores nós vamos explicar que são atores daqui a pouco mas basicamente são grupos de atividades recursos e restrições que lev de um produto de só as etapas costumam representar as experiências que foram eh identificadas como bem-sucedidas essas etapas elas devem ser bem documentadas de tal forma que elas possam ser replicadas ã então processos de desenvolvimento de software eles são utilizados principalmente para desenvolver software a
partir do zero desenvolver um software novo desenvolver uma nova solução manter ou seja alterar ou evoluir softwares já existentes e customizar ou adaptar um software que foi desenvolvido por terceiros Essas são as TR principais eh atividades para as quais os processo de desenvolvimento foram projetados bom os processos eles podem ser públicos ou privados um processo público é um processo que foi considerado bem-sucedido para determinadas situações e cuja eh que foi documentado e foi publicado divulgado Tornado disponível para o público geral então qualquer pessoa ou ou organização podem utilizar os processos públicos já os processos privados
eles não são divulgados são processos particulares processos internos de organizações que só elas TM direito de utilizar nós vamos trabalhar obviamente com processos públicos Bom na verdade toda organização possui algum tipo de processo algumas não sabem exatamente disso ah existe os processos implícitos que são processos que os prof as equipes desenvolvem software a partir da sua experiência sem seguir nenhum conjunto de Passos específicos apenas eles utilizam a experiência a forma como estão acostumado a desenvolver software podem ser tendo simplesmente uma entrevista Geral com cliente e partindo código não é o ciclo de vida não é
o processo de desenvolvimento mais inteligente ou mais profissional Mas é uma alternativa já quando os processos são líos então eles possuem Como já foi falado anteriormente etapas e procedimentos que estão definidos claramente são ensinados são compartilhados são institucionalizados todos os membros da das equipes de desenvolvimento devem utilizar o processo em questão pelo menos para situações as quais eles Se mostraram mais adequados bom se um processo for fraco muito geral por exemplo o produto isso vai refletir no produto final o produto final provavelmente será fraco ou seja apresentará problemas não satisfará o cliente já se o
processo ele tiver uma ênfase muito forte hã em detal em detalhismo Então ele pode causar pode acarretar uma perda de produtividade e objetividade bom vamos falar um pouquinho sobre as características principais dos processos de desenvolvimento software então um processo de desenvolvimento software ele utiliza recursos ele está sujeito a restrições e gera artefatos intermediários e finais no contexto de engenharia de software artefato é qualquer produto intermediário a final como já fo falado que é gerado durante o processo de desenvolvimento software então o artefato não necessariamente se traduz em código executável um artefato ele pode ser uma
um documento de especificação de requisitos podem ser modelos uml gerados tanto durante a fase de engen requisitos Como projeto podem ser casos de testes casos de aceitação etc então basicamente uma de fato é qualquer documento qualquer produto gerado ao longo do processo de desenvolvimento de softw ã um processo de software ele também pode ser composto por subprocessos relacionados que estarão organizados em uma hierarquia eh e as atividades do processo costumam ter critérios de entrada e saída bem definidos ainda as atividades elas possuem uma organização lógica eh os processos costumam ter um conjunto de diretrizes que
servem de justificativa para cada atividade e deve haver provavelmente haverão restrições e controles que são aplicados a uma determinada atividade ou recurso ou produto Aqui nós temos uma figura representando a arquitetura básica de um processo de desenvolvimento sót ele possui um processo ele possui três elementos principais que são os papéis as tarefas e os produtos e esses eh elementos principais eles são auxiliados por orientações modelos e ferramentas Vamos estudar isso ao longo dessa aula então vamos falar sobre atores então atores eles representam grupos de usuários pessoas que podem assumir um determinado papel ao longo do
processo uma pessoa ela pode assumir o papel de ah engenheira de requisitos ou de projetista ou de testador ou de codificador ao longo do processo por exemplo Então os atores são as pessoas responsáveis pela execução das tarefas de um determinado processo de desenvolvimento e cada papel ele vai possuir uma um conjunto de capacidades relacionadas às atividades ah que ele é responsável então como eu falei H papéis não são exatamente pessoas papéis na verdade se se referem a grupos de pessoas classes de pessoas conjuntos de pessoas Então as pessoas que atuam em um processo elas são
instâncias desse papéis uma pessoa uma mesma pessoa pode assumir mais de um papel ao longo de um processo então por exemplo papéis podem ser como eu já falei eh um engenheiro de equisitos um analistas requisitos um projetista um programador um testador bom com relação às tarefas basicamente as tarefas são as ações que irão produzir um resultado que vai atender Total ou parcialmente um objetivo H as tarefas elas determinam o que cada papel para se executar para gerar ou modificar um determinado produto as tarefas elas possuem entradas que são basicamente as informações necessárias para que elas
possam ser executadas e possuem saídas que são os resultados dessas tarefas eh então a sequenciação das tarefas determina quando determinado papel deverá atuar naquela tarefa então alguns exemplos de tarefa podem ser validar requisitos estabelecer arquitetura integrar um conjunto de componentes entre outras funções desenvolver modelos eh projetar a solução do do do software e assim vai já os produtos são os artefatos produzidos por meio de determinadas tarefas executadas por um determinado papel esses produtos ou artefatos eles podem ser intermediários como por exemplo um diagrama de classe seja a de conceitual de domínio ou podem ser artefatos
sinais que se traduzem no software funcionando eles podem ser artefatos novos ou podem ser artefatos refinados refos melhorados então alguns exemplos de de produtos ou artefatos H documento de especificaçõ de requisitos modelo de classe conceitual modelo de classe de domínio casos de teste existem n tipos de teste eh módulos funcionais do software basicamente qu funcionar eh vou falar um pouco pouquinho também dos componentes complementares da arquitetura básica do processo que são os modelos as ferramentas e as orientações modelos são essencialmente diagramas que tentam ajudar na compreensão do processo ou a definir a solução do produto
Aliás na compreensão do problema ou na solução de produto então o o uso de modelos eh permitem H padronizar os artefatos que são produzidos durante o processo ferramenta ferramentas são basicamente softw que auxiliam ao longo do processo de desenvolvimento então pode ser ferramentas significa computer sofw engia softw computador podem ser ferramentas de teste podem ser a própria linguagem de programação utilizada e assim vai e orientações são diretrizes normas regras que guardam alguma experiência anterior e que ajudam a tomar a decisão durante a execução de determinadas tarefas do processo aqui eu vou apresentar alguns tipos de
fluxos de processo que serão melhor aprofundados nas próximas aulas então Aqui nós temos exemplo de fluxo de processo linear onde cada etapa é executada linearmente Ou seja você executa uma etapa e depois passa para seguinte is é mais comum nos processos prescritivos que são um pouco mais rígidos e com etapas um pouco mais definidas nós vamos estudar processos prescritivos nas próximas aulas Então as etapas podem ser comunicação planejamento modelagem construção e entrega então isso aqui um fluxo de processo linear você executa primeira uma etapa Se conclui se passa para a seguinte até concluir o processo
e Aqui nós temos um fluxo de processo interativo aliás abrindo parênteses um exemplo de fluxo de processo linear é o modelo em cascata com suas diversas variações e Aqui nós temos um exemplo de fluxo de processo interativo um exemplo de processo interativo por exemplo é o processo Unificado ele é interativo E incremental então Aqui nós temos um fluxo que não é exatamente linear ele pode possuir vários ciclos e várias iterações então aqui nós podemos ver nesse exemplo que se conclui estap de comunica se passa para etapa de planejamento por algum motivo pode se voltar paraa
etapa de comunicação e ficar nesse ciclo diversas vezes depois pode se passar para etapa de modelagem que e produzir vários ciclos de modelagem depois se passa para a etapa de construção se produz um hipó produz um ciclo que volta paraa comunicação e assim vai existem alguns processos interativos incrementais que trabalham com esse tipo de conceito de vários ciclos eh de trabalho sem eh necessariamente em um determinado ciclo concluir completamente o processo mas apenas uma parte dele existem também fluxo de processo evolucionário em que eh se enfoca a o conceito que o software ele não é
concluído quando o software entregue mas sim que ele sofrerá evoluções Ele precis precisará sofrer manutenções precisará sofrer h evoluções em termos da produção de novas versões então eh o o o a vida de software será composta de diversas versões diversas evoluções então por isso aqui é um exemplo de fluxo de processo evolucionário então a etapa de comunicação passa para a etapa de planejamento a etapa de planejamento passa para etapa de modelagem a etapa de modelagem passa para etapa de construção a de construção passa de passa para etapa de entrega ela libera o software Total ou
parcialmente e depois se volta paraa etapa de comunicação eh eventualmente quando for ser necessário eh produzir uma nova versão do softw o fluxo de processo evolucionário não impede que ele o desenvolvimento seja trabalhado em ciclos interativos e Aqui nós temos um outro exemplo de fluxo que é o fluxo de processo paralelo em que as etapas podem ocorrer paralelamente então por exemplo durante as etapas de comunicação e planejamento pode haver modelagem O que é comum se pode produzir modelos já durante a engenharia de quisitos e depois durante a a fase de projeto e depois se passa
paraas etapas de construção e entrega então is aqui um exemplo de fluxo de processo paralelo CL claro isso aqui são exemplos de fluxos Gerais nas próximas aulas nós iremos detalhar melhor alguns exemplos desses flos então nós concluímos a nossa primeira parte sobre o processo de desenvolvimento de software eu espero que esse conteúdo tenha sido útil Nós voltamos a falar sobre esse tema nas próximas aulas eu agradeço a atenção de todos m