软件设计师系列1——软件设计师都干点儿啥

本文通过职业类比,探讨了软件设计师作为程序员的一种高级职称,如何从更高的层次和更大的范围来分析问题并寻找解决方案。软件设计师不仅需要具备编写代码的能力,还需要能够使用UML等工具来描述解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说到软件设计师都干点儿啥,很多人会想到写设计文档,画UML图,而我想从另一方面来说说

从职业类比说起

医生是个职业,医师、主治医师、主任医师是职称
律师是个职业,四级律师、三级律师、二级律师、一级律师是职称
程序员是个职业,你可以将软件设计师、软件架构师理解为职称

三种职业的相同点

医生一般是,通过检查确认身体的病因,寻找治疗方案,再进行治疗
抽象地说就是:分析问题,寻找解决方案,解决方案落地

律师一般是,通过对证据进行分析,在法律上找到解决纠纷的方法,打官司
抽象地说就是:分析问题,寻找解决方案,解决方案落地

程序员一般是,通过分析要实现的功能,梳理设计思路,写代码
抽象地说就是:分析问题,寻找解决方案,解决方案落地

这三种职业及其相似,都是在:分析问题,寻找解决方案,解决方案落地

三种职业的不同点

这三种职业的不同点也很明显,就是:问题所处的领域不同

不同职称有何区别

以医生为例,我父亲生病住院,主治医师当晚就说,可能是GBS。第二天主任医师查房,要求做CT和脊髓穿刺,排除中枢神经的一些病变并确诊是GBS。
抽象地说就是:主任能从更高的层次、更大的范围,去分析问题并寻找解决方案

所以,比起普通程序员,软件设计师也是一样,能从更高的层次、更大的范围,去分析问题并寻找解决方案

结论

软件设计师都干点儿啥?
软件设计师也是程序员,除了写代码之外,软件设计师可以解决更高的层次、更大的范围的问题。
更高层次和更大范围的问题的解决方案,描述起来需要用更宏观的方式,这就是UML。虽然解决方案最终也是用代码实现,但如果要描述并讨论解决方案,会由于代码太细致,导致只见树木不见森林。
UML只不过是描述解决方案的一种工具,并且在软件行业已经达成一致,所以它非常有利于交流。

进行软件设计

找需求人员把问题理解清楚,分析问题并思考解决方案,把解决方案用UML描述出来,这就是软件设计。
软件设计的过程不需要面面俱到的文档,只要能自己想清楚,并且用UML描述出来就行了。
思考的过程,会发现很多需求的细节,过程中应该和需求人员深入地讨论。

设计评审

往往会有多个方案拿不准,或者自己的方案担心有缺陷,这就需要设计评审了。
设计评审更不应该有面面俱到的文档,我的经验是:

把设计草图画在纸上,拍个照
把大家召集在一起,一定要有白板
大家一边看你的设计草图(投影或显示器),一边讨论,一边在白板上重绘
将白板上的结论拍照留底,直到所有问题讨论结束

写设计文档

设计文档就是把问题描述清楚,再把解决方案描述清楚就可以了。
解决方案就是设计评审通过时,大家在白板上绘制的照片。
具体的方法和模板,在下一篇有详细描述。

### AI在软件测试中的应用场景 #### 自动化测试用例生成 AI能够通过分析现有的代码库和历史数据,自动生成高效的测试用例。这种能力显著减少了手动编写测试用例的时间成本,并提高了覆盖率。例如,Selenium with AI 工具可以结合 Selenium 的传统功能与 AI 技术,动态生成适合特定场景的测试脚本[^3]。 #### 视觉验证 视觉测试是确保用户界面(UI)一致性和正确性的关键环节之一。Applitools 是一种利用 AI 进行视觉验证的工具,它可以自动检测 UI 中的变化并区分哪些变化是有意义的,从而减少误报率。这种方法不仅加快了测试速度,还提升了用户体验的一致性[^3]。 #### 复杂业务流程测试 某些企业级应用涉及多个系统的交互以及复杂的逻辑处理,在这些情况下采用 Worksoft 或 Tricentis Tosca 等具备强大 AI 功能的支持尤为重要。它们可以通过学习真实用户的操作模式来自定义测试路径,覆盖更广泛的边界条件,进而发现潜在问题。 #### Web 应用程序自动化测试 针对现代 web 应用快速迭代的特点,Testim 提供了一个云端解决方案——Testim.io 平台。该平台允许开发者轻松创建维护跨浏览器兼容性的回归测试集,同时借助内置算法优化执行顺序以达到最佳性能表现[^3]。 #### 缺陷预测与优先级评估 通过对过往项目经验的学习积累,AI 能够提前预估可能存在的风险区域,并据此调整资源分配策略;另外还可以依据严重程度等因素对已知 bug 设置合理的解决先后次序,帮助团队集中精力于最关键的任务上[^1]。 ```python import testim # 初始化 Testim 客户端 client = testim.Client() # 创建新的测试计划 test_plan = client.create_test_plan(name="Sample Plan") # 添加具体步骤到测试计划中 step_1 = test_plan.add_step(description="Open Login Page", action="navigate_to_url('https://example.com/login')") step_2 = step_1.then_add(description="Enter Username and Password", action="fill_form({'username': 'admin', 'password': 'secret'})") final_step = step_2.then_add(description="Submit Form & Verify Success Message", action="click_button_and_assert_text_present('#submit-button', 'Login Successful')") # 执行整个测试序列 results = final_step.run() if not results.passed(): raise Exception(f"Tests failed: {results.errors()}") ``` 上述代码片段展示了如何使用 Testim API 构建基本的功能性测试框架。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值