Software Engineering Tutorial
S / W -考试问题与答案
S / W工程资源
S/W 工程资源
S/W Engineering Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Software Analysis & Design Tools
软件分析与设计包括所有帮助将需求规范转化为实现的活动。需求规范指定了软件的所有功能和非功能期望。这些需求规范以人类可读和理解的文件形式出现,与计算机无关。
软件分析和设计是中间阶段,它可以将可读的人类需求转化为实际的代码。
让我们来看看软件设计师使用的一些分析和设计工具:
Data Flow Diagram
数据流程图是信息系统中数据流动的图形化表示。它能够描述传入数据流、传出数据流和存储数据。DFD并未涉及数据在系统中如何流动的细节。
DFD和流程图之间有明显的区别。流程图描绘程序模块中控制流程。DFD描绘系统中各种级别的数据流动。DFD不包含任何控制或分支元素。
Types of DFD
数据流程图可以是逻辑的或者物理的。
Logical DFD - This type of DFD concentrates on the system process, and flow of data in the system.For example in a Banking software system, how data is moved between different entities.
Physical DFD - This type of DFD shows how the data flow is actually implemented in the system. It is more specific and close to the implementation.
DFD Components
DFD可以使用以下组件表示数据的来源、目的地、存储和流动 -
Entities - Entities are source and destination of information data. Entities are represented by a rectangles with their respective names.
Process - Activities and action taken on the data are represented by Circle or Round-edged rectangles.
Data Storage - There are two variants of data storage - it can either be represented as a rectangle with absence of both smaller sides or as an open-sided rectangle with only one side missing.
Data Flow - Movement of data is shown by pointed arrows. Data movement is shown from the base of arrow as its source towards head of the arrow as destination.
Levels of DFD
Level 0 - Highest abstraction level DFD is known as Level 0 DFD, which depicts the entire information system as one diagram conceapng all the underlying details. Level 0 DFDs are also known as context level DFDs.
Level 1 - The Level 0 DFD is broken down into more specific, Level 1 DFD. Level 1 DFD depicts basic modules in the system and flow of data among various modules. Level 1 DFD also mentions basic processes and sources of information.
第二级 - 在这个级别,DFD显示了Level 1中提到的模块内部的数据流动情况。
除非达到所需的规范水平,否则可以将更高级的DFD转化为具有更深层次理解的更具体的较低级别DFD。
Structure Charts
结构图是从数据流程图派生出来的图表。它比数据流程图更详细地展示了系统。它将整个系统分解成最低的功能模块,并比数据流程图更详细地描述了每个模块的功能和子功能。
结构图表示模块的分层结构。每个层级都执行特定的任务。
这里是构建结构图所使用的符号 -
Module - It represents process or subroutine or task. A control module branches to more than one sub-module. Library Modules are re-usable and invokable from any module.
Condition - It is represented by small diamond at the base of module. It depicts that control module can select any of sub-routine based on some condition.
Jump - An arrow is shown pointing inside the module to depict that the control will jump in the middle of the sub-module.
Loop - A curved arrow represents loop in the module. All sub-modules covered by loop repeat execution of module.
Data flow - A directed arrow with empty circle at the end represents data flow.
Control flow - A directed arrow with filled circle at the end represents control flow.
HIPO Diagram
HIPO(分层输入过程输出)图表是分析系统并提供文档手段的两种有组织方法的组合。 HIPO模型是IBM于1970年开发的。
HIPO图表表示软件系统中模块的层次结构。分析师使用HIPO图表以获取系统功能的高层次视图。它以层次结构的方式将功能分解为子功能。它描绘了系统执行的功能。
HIPO图表适用于文档化目的。它们的图形表示使得设计师和管理者更容易地获得系统结构的图像化概念。
与IPO(输入-处理-输出)图相比,它描述模块中的控制和数据流程,HIPO不提供任何关于数据流或控制流的信息。
Example
Both parts of HIPO diagram, Hierarchical presentation and IPO Chart are used for structure design of software program as well as documentation of the same.
Structured Engpsh
大多数程序员并不了解软件的大局,因此他们只能依赖经理告诉他们该做什么。更高级的软件管理人员有责任向程序员提供准确的信息,以开发准确但快速的代码。
其他形式的方法,如使用图表或图示,有时可能会被不同的人解释不同。
因此,软件的分析师和设计师提出了像结构化英语这样的工具。它只是对编码所需的描述以及如何编码的说明。结构化英语有助于程序员编写无误的代码。
其他使用图表或图示的方法有时可能被不同的人解释不同。在这里,结构化英语和伪代码都试图减少这种理解差距。
结构化英语是它使用结构化编程范式中的简单英语词汇。它不是最终的代码,而是一种描述编码和如何编码的方式。以下是一些结构化编程的标记。
IF-THEN-ELSE, DO-WHILE-UNTIL
分析员使用相同的变量和数据名称,这些名称存储在 数据字典 中,使编写和理解代码更加简单。
Example
我们以在线购物环境中的客户认证为例。可以将验证客户的过程以结构化英语方式写成:
Enter Customer_Name SEEK Customer_Name in Customer_Name_DB file IF Customer_Name found THEN Call procedure USER_PASSWORD_AUTHENTICATE() ELSE PRINT error message Call procedure NEW_CUSTOMER_REQUEST() ENDIF
Structured Engpsh所写的代码更像日常口语英语。它不能直接作为软件代码实施。Structured Engpsh不依赖于编程语言。
Pseudo-Code
伪代码更接近编程语言。 可以将其视为增强程序语言,充满注释和描述。
伪代码避免了变量声明,但它们使用一些实际编程语言的结构,如C、Fortran、Pascal等。
伪代码包含比结构化英语更多的编程细节。它提供了一种执行任务的方法,就像计算机执行代码一样。
Example
打印前n个斐波那契数的程序。
void function Fibonacci Get value of n; Set value of a to 1; Set value of b to 1; Initiapze I to 0 for (i=0; i< n; i++) { if a greater than b { Increase b by a; Print b; } else if b greater than a { increase a by b; print a; } }
Decision Tables
决策表是以结构化表格格式表示条件和相应行动以解决条件的。
它是一个强大的调试和防止错误的工具。它可以将相似的信息组合到一个单一的表中,然后通过结合表格来提供方便易用的决策。
Creating Decision Table
要创建决策表,开发人员必须遵循基本的四个步骤:
Identify all possible conditions to be addressed
Determine actions for all identified conditions
Create Maximum possible rules
Define action for each rule
决策表应由最终用户进行验证,最近可以通过消除重复规则和动作来简化。
Example
让我们以日常互联网连接问题的简单示例为例。我们从确定启动互联网可能出现的所有问题及其各自可能的解决方法开始。
We pst all possible problems under column conditions and the prospective actions under column Actions.
Conditions/Actions | Rules | ||||||||
---|---|---|---|---|---|---|---|---|---|
Conditions | Shows Connected | N | N | N | N | Y | Y | Y | Y |
Ping is Working | N | N | Y | Y | N | N | Y | Y | |
Opens Website | Y | N | Y | N | Y | N | Y | N | |
Actions | Check network cable | X | |||||||
Check internet router | X | X | X | X | |||||
Restart Web Browser | X | ||||||||
Contact Service provider | X | X | X | X | X | X | |||
Do no action |
Entity-Relationship Model
实体关系模型是一种基于真实世界实体及其关系的数据库模型。我们可以将真实世界情景映射到ER数据库模型中。 ER模型创建了一组具有属性、一组约束和它们之间关系的实体。
ER模型最适用于数据库的概念设计。ER模型可以表示如下:
实体 - 在ER模型中,实体是一个真实世界的存在,它具有称为属性的一些属性。每个属性由其相应的值集合域定义。
例如,考虑一个学校数据库。在这里,学生是一个实体。学生具有各种属性,如姓名,id,年龄和班级等。
关系 - 实体之间的逻辑关联称为关系。关系以多种方式与实体进行映射。映射基数定义两个实体之间的关联数量。
映射基数:
one to one
one to many
many to one
many to many
Data Dictionary
数据字典是关于数据的集中化信息收集。它存储数据的意义和来源,与其他数据的关系,数据格式的使用等。数据字典具有严格的定义,以便于用户和软件设计师。
数据字典通常被称为元数据(关于数据的数据)存储库。它是与软件程序的数据流程图(DFD)模型一同创建的,预计在每次DFD更改或更新时进行更新。
Requirement of Data Dictionary
设计和实现软件时,数据是通过数据字典进行引用的。数据字典消除了任何模糊性的可能性。它有助于在程序中的所有位置使用同一个对象引用的情况下,保持程序员和设计师的工作同步。
数据字典提供了一种在一个地方对整个数据库系统进行文档化记录的方式。使用数据字典进行DFD的验证。
Contents
数据词典应包含以下信息
Data Flow
Data Structure
Data Elements
Data Stores
Data Processing
数据流通过早先研究过的数据流图来描述,并通过代数形式来表示。
= | Composed of |
---|---|
{} | Repetition |
() | Optional |
+ | And |
[ / ] | Or |
Example
地址=房屋号码+(街道/地区)+城市+州
课程编号 = 课程号 + 课程名称 + 课程级别 + 课程成绩
Data Elements
数据元素包括数据和控制项的名称和描述,内部或外部数据存储等,具体如下:
Primary Name
Secondary Name (Apas)
Use-case (How and where to use)
Content Description (Notation etc. )
Supplementary Information (preset values, constraints etc.)
Data Store
它会存储数据进入系统和离开系统的信息。数据存储可能包括 -
Files
Internal to software.
External to software but on the same machine.
External to software and system, located on different machine.
Tables
Naming convention
Indexing property
Data Processing
有两种数据处理类型:
Logical: As user sees it
Physical: As software sees it