As well as these various stages of programming system design,the software engineer may also be required to design communication mechanisms allowing processes in the system to communicate[5].He or she may have to design file structures,and will almost certainly have to design the data structures used in his programs.He or she will have to design test cases to validate his programs.
There is no definitive way of establishing what is meant by a“good”design.Depending on the application and the particular project requirements,a good design might be a design which allows very efficient code to be produced,it might be a minimal design where the implementation is as compact as possible,or it might be the most maintainable design.This latter criterion is the criterion of“goodness”adopted here.A maintainable design implies that the cost of system changes is minimized and this means that the design should be understandable and that changes should be local in effect.Both of these are achieved if the software design is highly cohesive and loosely coupled[6].
Effective software design is best accomplished by using a consistent design methodology.There have been a vast number of design methodologies developed and used in different applications.Some of these are described by Peters(1980)and by Blank and Krijger(1983).In essence,most of these methodologies can be classified into one of three areas:
(1)Top-down functional design.The system is designed from a functional viewpoint,starting with a high-level view and progressively refining this into a more detailed design.This methodology is exemplified by Structured Design and stepwise refinement.
(2)Object-oriented design.The system is viewed as a collection of objects rather than as functions with messages passed from object to object.Each object has its own set of associated operations.Object-oriented design is based on the idea of information hiding which was first put forward by Parnas(1972)and which has been described more recently by Robson(1981)and Booch(1983).
(3)Data-driven design.This methodology,suggested by Jackson(1975)and Warnier(1977)suggests that the structure of a software system should reflect the structure of the data processed by that system.Therefore,the software design is derived from an analysis of the input and output system data.
NOTES
[1] straightforward:直接了当的,简单明了的。
[2] ad hoc:特别的(地)。
[3] flowchart:流程图。
[4] HIPO charts:层次输入一处理一输出图。
[5] allowing... :修饰communication mechanisms。
[6] loosely coupled:松散地耦合。
KEYWORDS
software design 软件设计
object-oriented design 面向目标的设计
maintainable design 可维护性设计
data-driven design 数据驱动的设计
top-down functional design 自顶向下的功能设计
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |