大数跨境
0
0

软件需求分析与设计实现工作坊培训班

软件需求分析与设计实现工作坊培训班 企业培训咨询服务李正华
2024-08-27
1
导读:内容介绍:布鲁克斯在他的论文《没有银弹:软件工程中的根本和次要任务》中指出,所有软件开发活动包括根本任务和次要

内容介绍:

布鲁克斯在他的论文《没有银弹:软件工程中的根本和次要任务》中指出,所有软件开发活动包括根本任务和次要任务:前者指打造构成抽象软件实体的复杂概念结构;后者指使用编程语言表达这些抽象实体,并在空间和时间限制内将它们映射成机器语言。基于我(指讲师)自己的实践与认知,我称前者为软件设计,后者为编码,用公式表示是软件开发 = k*软件设计 + 编码”,其中k是一个远大于1的常数,以示软件设计在软件开发活动中的主导地位。

不过,软件设计是相当抽象的活动,背后涉及大量的思考和对业务、专业知识的掌握,还需要通过实践才能领悟现实工作中,无论工程师是否意识到软件设计活动的存在,他所写的代码都是经过软件设计后的产物,只不过是好的软件设计还是差的软件设计的问题。糟糕的软件设计包含但不限于这些表现:

l概念不清晰,无法基于生活常识去塑造概念,帮助他人基于生活常识快速地理解自己的软件设计;

l概念不连续、缺乏一致性,导致不同模块之间的概念得做适配或转换,这样的“胶水”代码让人觉得很难维护,结果整个软件的代码毫无优雅可言,工程师在这样的“脏乱差”的环境中,很难建立起对软件设计质量的重视,并掌握有助于构建职业安全竞争壁垒的软件设计能力;

l概念之间的关系因为呈现面条状而让人难以理解,很容易因为解决一个问题而引发另一个问题,甚至出现补来补去质量水平也不见得提高的现象;

l以上问题导致最终设计出的软件无论是API还是人机交互都难用,将软件设计层面的混乱传递给了客户或用户。

即便工程师有良好的软件设计意识,但后面还有更重要的、来自非专业技术方面的挑战,那就是如何确保软件设计是符合客户的需要,以及在整个开发活动中如何确保软件设计与需求的连续性,前者涉及个人的业务技能——做对客户有价值的事,后者涉及个体的知识管理技能——掌握相应的工具、通过文档实现知识的传承与交换。忽视这些技能所带来的问题包含但不限于:

l开发工作不能很好地满足客户需求,出现返工而带来研发低效的问题;

l不能很好地表达软件设计,除了导致与客户难以就软件设计进行交流外,内部也很难就软件设计进行交流(比如,评审、阅读);

本工作坊旨在帮助学员和企业解决以上问题或挑战。让学员从意识、工具和方法等维度掌握软件设计,通过以工作中碰到的实际问题的解决,实现以练促学,帮助学员走完学习的“最后一公里”,即完成所学知识的转化。

学习目标:

本工作坊将帮助学员:

l理解什么是业务技能,为何对于工程师来说,确保软件设计质量需要有良好的业务技能

l理解领域驱动设计(DDD)能很好地改善软件的设计质量,并实现与客户的高效交流

l学习UML建模语言的语法,练习通过UML工具来表达软件设计

l对软件设计有更为深刻的认识,并掌握一定的设计原则与方法。

l掌握高质量的软件设计文档应当包含哪些关键内容,如何写出一份不错的软件设计文档

l建立起知识管理的意识,对知识管理的价值和意义有很好的理解

学习对象:

l软件开发工程师。

学习条件

l学员得自带笔记本电脑并提前安装好Visual Paradigm或Visio UML,以及Xmind工具。

l学员将采用分组的方式组织学习,并需要通过在线文档协作编辑的方式完成课堂上的软件设计任务。

l因为存在分组,所以对场地有一定的要求,需要能布置大约7人一组的学习环境。

l每组需要有纸或白板做话题讨论,如果环境受限,可以采用线上文档来解决。

l会场需要能访问互联网,以便学员搜索学习资料。

讲师介绍:

l职业经历跨越电力、通信、互联网、芯片行业。

l有电气、硬件和软件开发经验及十年技术管理经验。

l曾任摩托罗拉全球系统架构师:

o负责4G方面的软件架构工作。

l阿里巴巴高级技术专家:

oUC浏览器电脑版技术团队主管;

o作为技术一号位负责新技术在阿里集团内部落地。

l曾担任拟上市公司的高管:

o负责包含售前、售后、生产和产品研发多个部门。

l对软件行业的核心竞争力——软件设计能力和工程能力——有深刻的认识。

l浙江大学工商管理硕士。

l两本书的作者:

o《专业嵌入式软件开发:全面走向高质高效编程》(2012长销书

o《全面效能:从个人发展到团队进化的方法论与实践》(20248~9月上市)

l线上课程作者:

o极客时间App:《工程师个人发展指南》


培训大纲:

环节、目的与内容

环节一:Check-in

(破冰)

目的:

 

工作坊因为需要大家一起合作,通过这个环节调整学员的情绪,达到活跃气氛的目的。这个环节也讲师与学员相互了解和拉近距离的过程。

 

内容:

1. 讲师介绍自己并做开场,讲清楚培训的目的和需要学员的帮助。

2. 每位学员介绍自已。

3. 通过有意打散进入会场坐在一起的人完成分组,避免熟悉的人分到同一个组。

环节二:小组讨论

目的:

针对培训主题,收集大家在工作中的困难和能想到的解决方案。这个环节的目的,是为了让学员有更多的参与和对培训内容的认可,避免变成只是听讲师讲,因为没有参与感而不认可讲师所倡导的那些改变。

 


内容:

1. 各小组讨论四个问题:

培训或学习的本质是什么?

当前工作中存在哪些与本次培训相关的挑战?

如何解决这些挑战?

2. 各小组选一名学员上台分享。

3. 讲师总结。

环节三:讲师分享

目的:

帮助学员建立本次培训主题在工作中应建立起来的意识,以及传授后续环节需要用到的UML知识。

 

内容:

 

1. 工程师除了应掌握专业技能,还得掌握哪些技能?围绕这个问题,主要是要引出业务技能知识管理这两大技能,因为这两大技能是本次培训非常重要的内容,关系到软件设计和设计文档的撰写质量。

2. 什么是软件设计?通过这个问题,同时引出大家对培养软件设计能力的重视,因为这是个人在职场中的核心竞争力。

3. 什么是软件架构?这是软件设计工作不可回避的问题,如果没有建立起软件架构的认识,在设计时就不会注意从不同的视角去表达,结果就会做不好软件设计工作。

4. UML的学习方法和语法介绍(用例图、活动图和顺序图)。

5. 什么是领域驱动设计(Domain-Driven DevelopmentDDD)。




环节、目的与内容

环节四:小组作业

(需求建模)

目的:

基于所介绍的UML用例图和DDD,通过小组作业进行巩固学习的同时,调整大家的学习状态

 


内容:

1. 基于xxx”这一产品需求,采用UML完成需求的分析、捕获和表达。

2. 各小组选一名学员上台分享。

3. 讲师和学员点评。

环节五:讲师分享

目的:

传授接下来的后续环节需要用到的UML知识,以便软件设计工作的深化。

 

内容:

 

1. UML中的类图、部署图等的语法介绍。

环节六:小组作业

(软件设计)

目的:

基于所学到的UML知识,通过小组作业进行巩固学习的同时,调整大家的学习状态

 

内容:

1. 基于xxx”这一产品需求,采用UML完成软件设计的表达。

2. 这次作业需要小组在讲师没有指导软件设计文档如何编写的情形下,完成软件设计文档的编写。

3. 各小组选一名学员上台分享自己小组的软件设计文档。

4. 讲师和学员点评。

环节七:讲师分享

目的:

介绍软件设计文档模板帮助学员掌握好的软件设计文档的关键要素。

 

内容:

1. 讲解软件设计文档模板。





环节、目的与内容

环节八:小组作业

(软件设计)

目的:

基于软件设计文档模板,重新完成之前的软件设计工作。

 


内容:

1. 各小组基于新的软件设计文档模板对设计进行重做。

2. 完成模块的API接口设计。

3. 各小组选一名学员上台分享。

4. 讲师和学员点评。

环节九:讲师分享

目的:

就本次培训进行总结和延伸。

 

内容:

 

1. 软件设计的一些原则和好方法。

2. 工作中注意使用脑图帮助更好表达。

环节十:考试

目的:

强化本次培训的学习效果。

 

内容:

1. 基于本次的培训内容,设计总和20个的单选和多选题,通过考试检验学习效果。

2. 讲师带领大家过一下考试答案。


【声明】内容源于网络
0
0
企业培训咨询服务李正华
提供可靠性设计/SI/PI/高速电路设计/EMC/热设计/ESD/SMT/UI/需求分析/Hadoop/架构/重构/Android/Linux/产品中试管理/研发团队管理/IPD/研发质量管理等等电子技术、软件技术及研发管理相关的培训和咨询
内容 464
粉丝 0
企业培训咨询服务李正华 提供可靠性设计/SI/PI/高速电路设计/EMC/热设计/ESD/SMT/UI/需求分析/Hadoop/架构/重构/Android/Linux/产品中试管理/研发团队管理/IPD/研发质量管理等等电子技术、软件技术及研发管理相关的培训和咨询
总阅读14
粉丝0
内容464