为什么要使用概要?
现实中的不幸是数据是脏的。当为了深度学习而试图向量化一个数据集时,很少能找到没有错的文件。在使用神经网络训练神经网络之前,概要对于维护数据的意义是很重要的。
使用概要
概要基本上用于程序设计变换。在正确执行转换过程之前,需要传递正在转换的数据的概要。一个用于商家记录的概要的例子看起来如下:
Schema inputDataSchema = new Schema.Builder()
.addColumnsString("DateTimeString", "CustomerID", "MerchantID")
.addColumnInteger("NumItemsInTransaction")
.addColumnCategorical("MerchantCountryCode", Arrays.asList("USA","CAN","FR","MX"))
.addColumnDouble("TransactionAmountUSD",0.0,null,false,false) //$0.0 or more, no maximum limit, no NaN and no Infinite values
.addColumnCategorical("FraudLabel", Arrays.asList("Fraud","Legit"))
.build();
概要连接
如果你有两个你想要合并的不同的数据集,数据向理提供一个Join连接类,它有不同的连接策略,例如 Inner内连和RightOuter右外连
Schema customerInfoSchema = new Schema.Builder()
.addColumnLong("customerID")
.addColumnString("customerName")
.addColumnCategorical("customerCountry", Arrays.asList("USA","France","Japan","UK"))
.build();
Schema customerPurchasesSchema = new Schema.Builder()
.addColumnLong("customerID")
.addColumnTime("purchaseTimestamp", DateTimeZone.UTC)
.addColumnLong("productID")
.addColumnInteger("purchaseQty")
.addColumnDouble("unitPriceUSD")
.build();
Join join = new Join.Builder(Join.JoinType.Inner)
.setJoinColumns("customerID")
.setSchemas(customerInfoSchema, customerPurchasesSchema)
.build();
一旦你已经定义了你的连接并且你已经加载了数据到数据向量,你必须使用一个Executor执行器来完成连接。
Classes and utilities 类和实用工具
数据向量为2D和序列类型数据提供一些概要类和帮助工具。
Join 连接
连接类:用于指定一个连接(类似SQL的连接)
setSchemas 设置概要
public Builder setSchemas(Schema left, Schema right)
连接类型
内连:返回连接列值同时出现的实例。
左外连:返回从左边来的所有实例,不管是否有与右边的值匹配。(如果不匹配:右边的值将会以NullWritable来替代)
右外连:返回从右边来的所有实例,不管是否有与左边的值匹配。(如果不匹配:左边的值将会以NullWritable来替代)
全外连:返回左右所有实例,不管两边的数据是否匹配。(如果不匹配:值会以NullWritable来替代)
setKeyColumns 设置关键列
public Builder setKeyColumns(String... keyColumnNames)
- 弃用的 {- link #setJoinColumns(String…)}
setKeyColumnsLeft 设置关键列左边
public Builder setKeyColumnsLeft(String... keyColumnNames)
- 弃用的 {- link #setJoinColumnsLeft(String…)}
setKeyColumnsRight 设置关键列右边
public Builder setKeyColumnsRight(String... keyColumnNames)
- 弃用的 {- link #setJoinColumnsRight(String…)}
setJoinColumnsLeft 设置连接列左边
public Builder setJoinColumnsLeft(String... joinColumnNames)
为左边的数据指定连接的列名)思路:为所有i连接firstDataValues(joinColumNamesLeft[i]) == secondDataValues(joinColumnNamesRight[i])的实例
- 参数joinColumnNames 为连接的列名(用于左边的数据)
setJoinColumnsRight
public Builder setJoinColumnsRight(String... joinColumnNames)
为右边的连接指定列名)思路:为所有的i连接firstDataValues(joinColumNamesLeft[i]) == secondDataValues(joinColumnNamesRight[i]) 的实例。
- 参数joinColumnNames为连接的列名(用于右边的数据)
InferredSchema 推断概要
如果传入一个包括一个头和单行数据的CSV文件,它将返回一个概要。只有Double, Integer, Long, 和 String类型才被支持。如果不能推断出数字类型,字段类型将成为默认类型。需要注意的是如果你的列实际上是分类的,但表示为一个数字,则需要进行额外的转换。同时,如果你的样例字段为blank/null,则它也将成为默认类型。
Schema 概要
概要定义表格数据的布局。特别的,它抱括了每个列的名称,类型明细 (Integer, String, Long, Double, 等).每个列的类型数据也可以可选地包括为每个列指定允许的数据约束。
sameTypes 名称类型
public boolean sameTypes(Schema schema)
基于给定的元数据创建一个概要
- 参数columnMetaData为创建概要的元数据
newSchema 创建概要
public Schema newSchema(List<ColumnMetaData> columnMetaData)
计算在 ColumnMetaData中这个概要与传入的概要的不同。在org.datavec.api.transform.TransformProcess识别什么过程将会作用于一个给定的概要的过程中,这是很重要的。
- 参数schema是计算不同点的概要
- 返回在该概要与其他概要之间不同的(按顺序)的元数据。
numColumns
public int numColumns()
返回此概要的列或字段的数目
- 返回此概要的列或字段的数目
getName
public String getName(int column)
返回在指定索引处给定列的名称。
- 参数column为获取名称的列的索引
- 返回在指定索引处给定列的名称。
getType
public ColumnType getType(int column)
在指定的索引处返回列的类型
- 参数column是用于获取列的索引
- 返回指定索引处的列的类型
getType
public ColumnType getType(String columnName)
在指定的列名称处返回列的类型
- 参数columnName是用于获取列的名称
- 返回指定名称处的列的类型
getMetaData
public ColumnMetaData getMetaData(int column)
返回指定索引处的列元数据
- par参数column是用于获取列的索引
- 返回指定索引处的列的元数据
getMetaData
public ColumnMetaData getMetaData(String column)
返回指定名称处的列元数据
- 参数column是用于获取列的名称
- 返回指定名称处的列的元数据
getIndexOfColumn
public int getIndexOfColumn(String columnName)
返回指定列名的索引
- 返回指定的列名的索引
hasColumn
public boolean hasColumn(String columnName)
返回是否有这个列名的列
- 参数columnNames是需要索引的列名
- 返回是否有这个列名的列的布尔值
toJson
public String toJson()
系列化这个概要到json
- 返回一个此概要的json形式
toYaml
public String toYaml()
把这个概要系列化为yaml
- 返回这个概要的yaml形式
fromJson
public static Schema fromJson(String json)
从一个给定的json字符串创建一个概要
- 参数json是概要要从哪个JSON字符串中创建
- 返回一个基于json创建的概要
fromYaml
public static Schema fromYaml(String yaml)
从一个给定的yaml字符串中创建概要
- 参数yaml是概要要从哪个yaml字符串中创建
- 返回一个基于yaml创建的概要
addColumnFloat
public Builder addColumnFloat(String name)
添加浮点数据列,对允许值没有限制,除了不允许NAN/无限大值。
- 参数name是列的名称
addColumnFloat
public Builder addColumnFloat(String name, Float minAllowedValue, Float maxAllowedValue)
添加一个浮点数据列并指定约束(不允许NAN/无限值)
- 参数name 是指列的名称
- 参数minAllowedValue是允许的最小值,如果为空就没有约束。
- 参数maxAllowedValue是允许的最大值,如果为空就没有约束。
- return
addColumnFloat
public Builder addColumnFloat(String name, Float minAllowedValue, Float maxAllowedValue, boolean allowNaN,
boolean allowInfinite)
添加一个浮点数据列,指定约束
- 参数name 是指列的名称
- 参数minAllowedValue是允许的最小值,如果为空就没有约束。
- 参数maxAllowedValue是允许的最大值,如果为空就没有约束。
- 参数allowNaN 如果为false 则不允许为空值,如果为true则允许。
- 参数allowInfinite如果为false则不允许为无限,如果为true则允许。
addColumnsFloat
public Builder addColumnsFloat(String... columnNames)
添加多个浮点数据列,对列的允许值没有限制(除了不允许NAN/无限)
- 参数columnNames是指要添加的列的名称
addColumnsFloat
public Builder addColumnsFloat(String pattern, int minIdxInclusive, int maxIdxInclusive)
一个方便的方法,用于添加多个浮点类型的列。例如,添加这些列“myFloatCol_0”, “myFloatCol_1”, “myFloatCol_2”,使用{- code addColumnsFloat(“myFloatCol_%d”,0,2)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
addColumnsFloat
public Builder addColumnsFloat(String pattern, int minIdxInclusive, int maxIdxInclusive,
Float minAllowedValue, Float maxAllowedValue, boolean allowNaN, boolean allowInfinite)
一个方便的方法,用于添加多个浮点类型的列,带有额外的约束可以应用于所有的列。例如,添加这些列“myFloatCol_0”, “myFloatCol_1”, “myFloatCol_2”, 可以使用 {- code addColumnsFloat(“myFloatCol_%d”,0,2,null,null,false,false)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
- 参数minAllowedValue是指允许的最小列值。如果为空,则没有限制。
- 参数maxAllowedValue是指允许的最大列值,如果为空,则没有限制。
- 参数allowNaN如果是false则不允许空值。如果是true则允许。
- 参数allowInfinite如果是false则不允许无限大。如果是true则允许。
addColumnDouble
public Builder addColumnDouble(String name)
添加双精度数据列,对允许值没有限制,除了不允许NAN/无限大值。
- 参数name是列的名称
addColumnDouble
public Builder addColumnDouble(String name, Double minAllowedValue, Double maxAllowedValue)
- 添加双精度数据列,带有限制,并且不允许NAN/无限大值。
- 参数name是指列的名称
- 参数minAllowedValue是指允许的最小值,如果空,则没有限制
- 参数maxAllowedValue是指允午的最大值,如果空,则没有限制
- return
addColumnDouble
public Builder addColumnDouble(String name, Double minAllowedValue, Double maxAllowedValue, boolean allowNaN,
boolean allowInfinite)
- 添加双精度数据列,带有指定的限制
- 参数name是指列的名称
- 参数minAllowedValue是指允许的最小值,如果空,则没有限制
- 参数maxAllowedValue是指允午的最大值,如果空,则没有限制
- 参数allowNaN如果是false则不允许空值。如果是true则允许。
- 参数allowInfinite如果是false则不允许无限大。如果是true则允许。
addColumnsDouble
public Builder addColumnsDouble(String... columnNames)
添加多个双精度数据列,对列的允许值没有限制(除了不允许NAN/无限)
- 参数columnNames是指要被添加的那些列名
addColumnsDouble
public Builder addColumnsDouble(String pattern, int minIdxInclusive, int maxIdxInclusive)
一个方便的方法,用于添加多个双精度数据列。例如,添加这些列“myDoubleCol_0”, “myDoubleCol_1”, “myDoubleCol_2”, 可以使用 {- code addColumnsDouble(“myDoubleCol_%d”,0,2)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
addColumnsDouble
public Builder addColumnsDouble(String pattern, int minIdxInclusive, int maxIdxInclusive,
Double minAllowedValue, Double maxAllowedValue, boolean allowNaN, boolean allowInfinite)
一个方便的方法,用于添加多个双精度数据列,带有额外的约束可以应用于所有的列。例如,添加这些列“myDoubleCol_0”, “myDoubleCol_1”, “myDoubleCol_2”, 使用 {- code addColumnsDouble(“myDoubleCol_%d”,0,2,null,null,false,false)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
- 参数minAllowedValue是指允许的最小列值。如果为空,则没有限制。
- 参数maxAllowedValue是指允许的最大列值,如果为空,则没有限制。
- 参数allowNaN如果是false则不允许空值。如果是true则允许。
- 参数allowInfinite如果是false则不允许无限大。如果是true则允许。
addColumnInteger
public Builder addColumnInteger(String name)
添加一个整型数据列,在允许的值上不带限制
- 参数name是指列的名称
addColumnInteger
public Builder addColumnInteger(String name, Integer minAllowedValue, Integer maxAllowedValue)
添加一个整型数据列,带有指定的允午的最小值和最大值
- 参数name是列名
- 参数minAllowedValue是允许的最小值,如果是空,则没有限制
- 参数maxAllowedValue是允许的最大值,如果是空,则没有限制
addColumnsInteger
public Builder addColumnsInteger(String... names)
添加多个整型数据列,在允许的值上不带限制
- 参数names是指要添加的那些整数列的列名
addColumnsInteger
public Builder addColumnsInteger(String pattern, int minIdxInclusive, int maxIdxInclusive)
一个方便的方法,用于添加多个整数列。例如,添加这些列 “myIntegerCol_0”, “myIntegerCol_1”, “myIntegerCol_2”, 可以使用 {- code addColumnsInteger(“myIntegerCol_%d”,0,2)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
addColumnsInteger
public Builder addColumnsInteger(String pattern, int minIdxInclusive, int maxIdxInclusive,
Integer minAllowedValue, Integer maxAllowedValue)
一个方便的方法,用来添加多个整型数据列。例如,添加这些列“myIntegerCol_0”, “myIntegerCol_1”, “myIntegerCol_2”, 可以使用 {- code addColumnsInteger(“myIntegerCol_%d”,0,2,1,100)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
- 参数minAllowedValue是指允许的最小列值。如果为空,则没有限制。
- 参数maxAllowedValue是指允许的最大列值,如果为空,则没有限制。
addColumnCategorical
public Builder addColumnCategorical(String name, String... stateNames)
添加一个分类的列,带有指定的状态名
- 参数name是指列的名称
- 参数stateNames是指这个分类列允许的状态值
addColumnCategorical
public Builder addColumnCategorical(String name, List<String> stateNames)
添加一个分类的列,带有指定的状态名
- name是指列的名称
- 参数stateNames是指这个分类列允许的状态值
addColumnLong
public Builder addColumnLong(String name)
添加一个长整型数据列,在最小值和最大值上没有限制
- 参数name是指列的名称
addColumnLong
public Builder addColumnLong(String name, Long minAllowedValue, Long maxAllowedValue)
添加一个长整型数据列,带有指定的最小值和最大值
- 参数name是指列的名称
- 参数minAllowedValue是指允许的最小列值。如果为空,则没有限制。
- 参数maxAllowedValue是指允许的最大列值,如果为空,则没有限制。
addColumnsLong
public Builder addColumnsLong(String... names)
添加多个长整型数据列,在允许的值上不带有限制
- 参数names是指你要添加的那些列的列名
addColumnsLong
public Builder addColumnsLong(String pattern, int minIdxInclusive, int maxIdxInclusive)
一个方便的方法,用于添加多个长整型数据列。例如,添加这些列“myLongCol_0”, “myLongCol_1”, “myLongCol_2”, 可使用 {- code addColumnsLong(“myLongCol_%d”,0,2)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
addColumnsLong
public Builder addColumnsLong(String pattern, int minIdxInclusive, int maxIdxInclusive, Long minAllowedValue,
Long maxAllowedValue)
一个方便的方法,用于添加多个长整型数据列。例如,添加这些列“myLongCol_0”, “myLongCol_1”, “myLongCol_2”, 可使用 {- code addColumnsLong(“myLongCol_%d”,0,2,1,100)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
- 参数minAllowedValue是指允许的最小列值。如果为空,则没有限制。
- 参数maxAllowedValue是指允许的最大列值,如果为空,则没有限制。
addColumn
public Builder addColumn(ColumnMetaData metaData)
添加一个列
- 参数metaData是指这个列的元数据
addColumnString
public Builder addColumnString(String name)
添加一个字符列,在允许的值上不带有限制。
- 参数name是指列的名称
addColumnsString
public Builder addColumnsString(String... columnNames)
添加多个字符列,在允许的值上不带有限制。
- 参数columnNames是指那些要被添加的列名
addColumnString
public Builder addColumnString(String name, String regex, Integer minAllowableLength,
Integer maxAllowableLength)
添加一个例,带有指定的约束
- 参数name是指列的名称
- 参数regex是字符必须匹配的正则表大式,以便于被认为是有效的。如果是空,则没有正则限制。
- 参数minAllowableLength是指被认为有效的最短的字符长度
- 参数maxAllowableLength是指被认为有效的最长的字符长度
addColumnsString
public Builder addColumnsString(String pattern, int minIdxInclusive, int maxIdxInclusive)
一个方便的方法,用于添加多个字符列。例如,添加这些列“myStringCol_0”, “myStringCol_1”, “myStringCol_2”, 可以使用 {- code addColumnsString(“myStringCol_%d”,0,2)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
addColumnsString
public Builder addColumnsString(String pattern, int minIdxInclusive, int maxIdxInclusive, String regex,
Integer minAllowedLength, Integer maxAllowedLength)
一个方便的方法,用于添加多个字符列。例如,添加这些列“myStringCol_0”, “myStringCol_1”, “myStringCol_2”, 可以使用 {- code addColumnsString(“myStringCol_%d”,0,2,null,3,7)}
- 参数pattern是使用的模式(通过String.format)。“%d”会被列号替换。
- 参数minIdxInclusive是指最小的列索引
- 参数maxIdxInclusive是指最大的列索引
- 参数regex是字符必须匹配的正则表大式,以便于被认为是有效的。如果是空,则没有正则限制。
- 参数minAllowableLength是指被认为有效的最短的字符长度
- 参数maxAllowableLength是指被认为有效的最长的字符长度
addColumnTime
public Builder addColumnTime(String columnName, TimeZone timeZone)
添加一个时间列,在允许的最大和最小时间上不带约束。注意:时间列是用长整型的值代替的。为了让时间值变成人可读的格式,使用列+ StringToTimeTransform
- 参数columnName 是添加要列名
- 参数timeZone是时间列的时区
addColumnTime
public Builder addColumnTime(String columnName, DateTimeZone timeZone)
添加一个时间列,在允许的最大和最小时间上不带约束。注意:时间列是用长整型的值代替的。为了让时间值变成人可读的格式,使用列+ StringToTimeTransform
- 参数columnName 是添加要列名
- 参数timeZone是时间列的时区
addColumnTime
public Builder addColumnTime(String columnName, DateTimeZone timeZone, Long minValidValue, Long maxValidValue)
添加一个时间列,带有指定的约束。注意:时间列是用长整型的值代替的。为了让时间值变成人可读的格式,使用列+ StringToTimeTransform
- 参数columnName是要添加的列名
- 参数timeZone是时间列的时区
- 参数minValidValue是允许的最小时间,可以为空
- 参数maxValidValue是允许的最大时间,可以为空
addColumnNDArray
public Builder addColumnNDArray(String columnName, long[] shape)
添加一个NDArray列
- 参数columnName是指列的名称
- 参数shape是指这个NDArray列的形状。在条目中使用-1指定该维度中的“可变长度”
build
public Schema build()
创建概要
inferMultiple
public static Schema inferMultiple(List<List<Writable>> record)
推断基于记录的概要。列名基于索引。
- 参数record是指从哪个记录进行推断
- 返回推断的概要
infer
public static Schema infer(List<Writable> record)
推断基于记录的概要。列名基于索引。
- 参数record是指从哪个记录进行推断
- 返回推断的概要
SequenceSchema
inferSequenceMulti
public static SequenceSchema inferSequenceMulti(List<List<List<Writable>>> record)
基于记录推断一个序列概要
- 参数record是概要基于的需要推断的记录
- 返回被推断的序列概要
inferSequence
public static SequenceSchema inferSequence(List<List<Writable>> record)
基于记录推断一个序列概要
- 参数record是概要基于的需要推断的记录
- 返回被推断的序列概要
有任何问题请联系微信
相关推荐
概要设计实例-小型企业管理系统的概要设计 概要设计是软件开发过程中的重要步骤,它为软件的详细设计和实现提供了基础。本文档中所述的小型企业管理系统的概要设计,旨在提供一个实例,说明概要设计的步骤和要点。 ...
VizTracer是一种开销较低的确定性调试/概要分析工具,可以跟踪和可视化python代码,以帮助您更好地直观地理解代码并找出代码中耗时的部分。 VizTracer VizTracer是一种低开销的确定性调试/分析工具,可以跟踪和可视...
软件概要设计文档模板 软件概要设计文档模板是项目管理文档之一,旨在为软件开发提供指导和规范。该文档模板涵盖了软件概要设计的各个方面,包括设计概述、系统逻辑设计、系统组织设计、系统结构设计、系统接口设计...
软件开发概要设计模板 软件开发概要设计模板是一个重要的文档,用于记录软件开发项目的总体设计和接口设计。通过阅读该文档,我们可以了解软件开发项目的概要设计、总体设计、接口设计、用户接口设计等方面的知识点...
概要设计说明书(模板) 概要设计说明书是软件设计阶段的重要文档,为软件开发提供了详细的设计蓝图。下面是概要设计说明书中所涉及到的知识点: 1. 软件设计阶段:在软件开发过程中,软件设计阶段是非常重要的...
创建概要的过程一般遵循以下步骤:启动Profile Management Tool,选择创建概要的类型,设置概要的名称和位置,然后通过向导完成概要的创建。向导会根据所选的概要类型提供不同的选项和配置。 在创建部署管理器概要...
【软件概要设计方案模板】 软件概要设计是软件开发过程中的关键阶段,它在软件项目的初期扮演着承上启下的角色。此模板适用于计划阶段的软件系统设计或软件的概要设计,无论是在后台软件还是纯软件产品中,都能作为...
"接口概要设计说"文档通常用于详细阐述这些接口的基本结构、功能和通信协议,为后续的详细设计和实现提供指导。以下是根据标题和描述中涉及的接口概要设计知识点的详细说明: 1. **接口定义**:接口是系统间或系统...
《概要设计说明实例》是软件开发过程中一个重要的文档集合,它主要涵盖了软件系统在架构层面的规划和设计。这份压缩包文件包含了多个实例,旨在为开发者提供详细的概要设计思路和方法。以下是对概要设计及其说明实例...
标准化应急预案模板系统概要设计报告v3.0 信息系统概要设计报告 总体设计报告 信息系统概要设计报告 总体设计报告 信息系统概要设计报告 总体设计报告
概要设计模板概要设计模板概要设计模板概要设计模板概要设计模板概要设计模板概要设计模板概要设计模板 本资源文件是一个软件概要设计模板,旨在指导软件开发的概要设计阶段。该模板涵盖了软件开发的多个方面,包括...
概要设计文档是软件开发过程中的重要组成部分,它在需求分析之后,详细设计之前进行,目的是将需求转化为可操作的结构化设计,为后续的编码和实现提供清晰的蓝图。以下是对三个Word文档中可能包含的概要设计知识点的...
概要设计说明书(全面) 概要设计是软件开发过程中的重要步骤之一,旨在确定软件的总体架构和设计原则。本文将对概要设计的概念、过程和原则进行详细说明,并对相关的知识点进行解释。 一、概要设计的概念 概要...
概要设计模板概要设计模板概要设计模板概要设计模板
概要设计说明书 1引言 2 1.1编写目的 2 1.2背景 2 1.3定义 2 1.4参考资料 2 2总体设计 2 2.1需求规定 2 2.2运行环境 2 2.3基本设计概念和处理流程 3 2.4结构 3 2.5功能器求与程序的关系 3 2.6人工处理过程 3 2.7尚未...
软件概要设计模板知识点 软件概要设计模板是软件开发项目管理中的一种重要文档,它用于记录软件的总体设计和需求规格。下面是软件概要设计模板中的知识点: 1. 软件概要设计模板的作用:软件概要设计模板的主要...
在软件开发过程中,概要设计和详细设计是两个至关重要的阶段,它们构成了软件生命周期管理的重要环节。本压缩包“概要设计和详细设计文档模板.zip”包含了一系列模板,旨在帮助开发者按照规范有效地进行这两个阶段的...
系统概要设计说明书知识点 根据给定的文件信息,下面将对标题、描述、标签和部分内容进行详细的解释和分析,从而生成相关的知识点。 标题解释 "超详细的系统概要设计说明书 高清版"这个标题表明该文件是一份关于...