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 Design Strategies
软件设计是将软件需求概念化为软件实现的过程。软件设计将用户需求视为挑战,并尝试寻找最优解决方案。在概念化软件时,会制定计划以找到最佳的设计来实现预期的解决方案。
有多种软件设计变体。让我们简要地学习它们:
Structured Design
结构化设计是将问题概念化为几个组织良好的解决方案元素。 它基本上涉及解决方案设计。 结构化设计的好处在于,它可以更好地理解问题是如何解决的。 结构化设计还可以使设计师更准确地集中精力解决问题。
结构化设计大多基于“分而治之”的策略,其中问题被拆分成几个小问题,每个小问题都被单独解决,直到整个问题得到解决。
通过解决方案模块来解决问题的小部件。结构化设计强调这些模块需要组织得很好,以实现精确的解决方案。
这些模块按层次结构排列。它们彼此通信。良好结构化的设计始终遵循一些规则,用于多个模块之间的通信,即 -
凝聚力 - 所有功能有关元素的分组。
连接 - 不同模块之间的通信。
一种良好的结构设计具有高内聚和低耦合的安排。
Function Oriented Design
在面向函数的设计中,系统由许多称为函数的小型子系统组成。这些函数能够在系统中执行重要的任务。系统被视为所有函数的顶层视图。
功能导向设计继承了一些结构化设计的属性,其中使用了分治法的方法。
这种设计机制将整个系统划分为更小的功能模块,提供了抽象的手段,通过隐藏信息和它们的操作。这些功能模块可以通过信息传递来共享信息,并使用全局可用的信息。
函数的另一个特点是,当程序调用函数时,函数会改变程序的状态,这有时会被其他模块所不接受。函数导向设计在系统状态不重要且程序/函数基于输入而不基于状态时能够很好地工作。
Design Process
The whole system is seen as how data flows in the system by means of data flow diagram.
DFD depicts how functions changes data and state of entire system.
The entire system is logically broken down into smaller units known as functions on the basis of their operation in the system.
Each function is then described at large.
Object Oriented Design
面向对象的设计围绕实体及其特征展开,而不是软件系统中涉及的函数。这种设计策略聚焦于实体及其特征。整个软件解决方案的概念都围绕着参与的实体展开。
让我们来看看面向对象设计的重要概念:
Objects - All entities involved in the solution design are known as objects. For example, person, banks, company and customers are treated as objects. Every entity has some attributes associated to it and has some methods to perform on the attributes.
类 - 类是一个对象的概括描述。对象是类的一个实例。类定义了对象可以拥有的所有属性和定义对象功能的方法。
在解决方案设计中,属性被存储为变量,功能则通过方法或程序来定义。
Encapsulation - In OOD, the attributes (data variables) and methods (operation on the data) are bundled together is called encapsulation. Encapsulation not only bundles important information of an object together, but also restricts access of the data and methods from the outside world. This is called information hiding.
Inheritance - OOD allows similar classes to stack up in hierarchical manner where the lower or sub-classes can import, implement and re-use allowed variables and methods from their immediate super classes. This property of OOD is known as inheritance. This makes it easier to define specific class and to create generapzed classes from specific ones.
Polymorphism - OOD languages provide a mechanism where methods performing similar tasks but vary in arguments, can be assigned same name. This is called polymorphism, which allows a single interface performing tasks for different types. Depending upon how the function is invoked, respective portion of the code gets executed.
Design Process
软件设计过程可以被视为一系列明确定义的步骤。虽然它因设计方法(面向功能或面向对象)而有所不同,但它可能涉及以下步骤:
A solution design is created from requirement or previous used system and/or system sequence diagram.
Objects are identified and grouped into classes on behalf of similarity in attribute characteristics.
Class hierarchy and relation among them is defined.
Apppcation framework is defined.
Software Design Approaches
这里有两种通用的软件设计方法:
Top Down Design
我们知道一个系统由多个子系统组成,其中包含若干个组件。此外,这些子系统和组件可能有各自的子系统和组件,从而在系统中创建层次结构。
自顶向下的设计将整个软件系统作为一个整体,然后根据某些特征将其分解为多个子系统或组件。然后将每个子系统或组件视为系统并进一步分解。此过程不断运行,直到达到自顶向下层次结构中最低级别的系统。
自上而下的设计从系统的概括模型开始,并不断定义其更具体的部分。当所有组件组合在一起时,整个系统就会出现。
自上而下的设计更适合在软件解决方案需要从头开始设计并且具体细节无法确定时使用。
Bottom-up Design
自下而上设计模型始于最具体和基础的组件。它通过使用基本或低级组件组成更高级别的组件。它不断创建更高级别的组件,直到所需的系统不再作为单个组件演化出来。随着每个更高的级别,抽象程度增加。
自下而上的策略更适合在需要从现有系统创建系统时使用,其中基本原语可以在新系统中使用。
顶下和底上方法单独使用都不实际。相反,使用两者的良好组合。
Advertisements