关于语文和设计的思考——论语文能力在软件设计中的作用

关于语文和设计的思考——论语文能力在软件设计中的作用

       首先我得承认,本文的标题起的有点大,或者不够严谨。题中的“语文”二字这里特指语文能力,再进一步,是指语文中的语法结构分析和理解能力。而“设计”二字这里特指软件领域的需求分析和概念设计。因此更准确的标题应该是,关于语文语法结构分析和理解能力与软件需求分析和概念设计的思考,但这样虽然准确了,但又显得啰嗦、不够精简,最终不得已又加了个副标题。

1 语文与设计概述****

       乍一看你可能会觉得,这题目是在谈文科生的能力在理科生工作中的作用?没错,我的确是想谈这个,因为我现在终于知道语文为什么一直都是三大主课之一了。

简单说,语文能力指运用语言文字表达想法、与人交流的能力;软件设计是指分析用户需求、为开发出能解决用户需要的软件的设计活动。用户需求的收集总结是由产品经理(PM)负责完成的工作,这项工作的主要输出是产品需求文档(PRD);软件设计是程序员(RD)的工作,他们要根据PRD理解需求、拆解并转换需求为软件蓝图和编程计划,这项工作的输出是系统设计文档。

        PM和RD的这两份产出的一个不同点是,PRD通常就是一份文档,如一个word或pdf文件即可,而设计文档通常包括了一系列文档,如概要设计和详细设计,或者架构设计、接口设计、数据库设计、交互和界面设计等。可见需求的表达和对实现方案的表达,其工作量、复杂度的差异是何其巨大。

上面简要阐述了软件开发整个生命周期中处于编码阶段之前的工作。可以看出这些工作,无论是对PM还是对设计师而言,其本质就是一种人们内心想法的梳理和表达,换句话说主要就是思维活动。

       我以为,在这些思维活动中,语文能力是极其重要的,特别是提炼中心句子、以及从中心句中提取主干词的能力显得尤为重要,因为掌握了这些中心句和主干词,就可以顺利转换出设计中的概念模型,而概念模型是设计活动的第一份重要输出,是全部设计的大纲、是软件的蓝图。

       下面我介绍一种从语法结构分析出发,如何完成软件设计的方法,这里姑且命名为语文法软件设计

2 语文法软件设计

      所谓语文法软件设计,分为这几步:①提炼中心句、②提取主干词、③明确系统边界、④然后设计概念模型,并最终以概念模型为指引完成整个软件设计方案。

2.1 提炼中心句

       要从冗长的PRD中提取出关键的中心句来,并非一件容易的事情,但绝非不可能。事实上站在用户角度看,他们最本真的需求往往就是几句话的事情,这也是为什么现实中往往会存在很多“一句话需求”的原因。那么到底该怎么提炼呢?

      中心句是能回答谁在哪里以什么方式干什么事的问题,也就是能回答用户是谁、他要做什么和怎么做的关键几句话。例如对于一个CRM系统的PRD来说,它的中心句可能是下面这几句:

① 销售团队通过CRM系统实现对客户关系的开发与维护,以实现高效的订单转化。

② 客户关系在CRM系统中的表现就是一条条的商机和客户资料。

③ 开发和维护就是通过电话等方式说服客户下单,并及时记录与客户有关的新信息。

④ 销售团队主要分为管理者和销售员,管理者通过CRM实现对销售员工作的分配、监控等管理。

2.2 提取主干词

       相对而言,从中心句中提取主干词还是比较简单的。只要熟知基本的主谓宾语法结构即可。这一步要从关键的几个中心句中,提取并罗列出每一句的主语、谓语和宾语,并去重。主语和宾语肯定是名词,这些名词将成为概念模型中的核心对象。谓语当然是动词了,它们将是系统中的核心处理模块。继续沿用前面的CRM例子,我们可以提取出如下主干词:

       销售员,管理者,商机,客户,打电话,记录,订单,分配,监控。

       提取主干词的要点是:区分动词和名词,删繁就简并去重后取落脚词。

2.3 明确系统边界

       一个软件就是一个系统,也往往属于另一个更大的系统。明确系统的边界是极其重要的,否则容易在迷宫般的赛博空间里迷失。为什么这么说呢?

       我们都知道,在计算机世界中,任何程序、代码、文字、图片、视频等等,归根到底都是数字,是一堆0和1,当计算机运行起来后,组成其核心的CPU、内存、总线等部件,就在电能的驱动下,不停地变换转运着那些0和1。明确系统边界就是给这些浩渺的01串设定秩序,把它们有机地组织起来,形成层次分明、高效协同的严密部队,按照人的设想去流动,最终实现人的想象和解决人的问题。这当然是一段文学化的比拟,我认为更形象的描述是《三体》中“

嬴政以秦兵打造出人肉计算机系统”那段描述。

       明确系统边界最重要的两件事是,明确人机边界和明确不同系统的边界。如何明确呢?那就要从提取出的主干词中分清楚:

① 哪些名词代表的是用户;

② 哪些名词代表的是系统;

③ 哪些动词是属于本系统的;

④ 哪些动词是属于外周系统的。

2.4 描述概念模型

       经过对PRD的消化,提取了一组清晰的名词和动词后,我们便有了一组清晰的概念,将这些概念有机地组织起来便形成了一个软件系统的概念模型。

对概念模型的描述首先要用到概念,其次是采用何种方式进行表述。最直观的表述当然是采用图形化的语言,例如业内著名的UML。当然,如果你觉得UML太复杂,也大可不必非得使用它。拿一支笔和一张纸,用一些框和线按照你想的样子画出你心中的系统模型,并与其他人讨论。至于你的框和线是否标准那就是一个次要问题了(不标准的线框图,会影响团队交流的效率)。

3 举例说明

      为了更好地解释这种设计方法,本打算用一个案例来说明,限于篇幅暂且省略。

4 总结与赘述

       本文主要想表达语文能力——尤其是对大段文本提取中心思想和对句子提取主干的能力——在软件设计领域的重要性。当然这种重要性其实不仅仅体现在软件设计领域,在任何需要 正式的人际交流沟通的领域,语文素养都是极其重要的。

       另外,本文聚焦到软件设计的需求分析和概念设计阶段,提出了如何通过提取主干词来进行概念模型设计的一种方法。希望对大家有所启发,欢迎大家试用和探讨。

分类:
代码人生
标签: