软件设计阅读(中英文对照)

软件设计阅读(中英文对照),第1张

软件设计阅读(中英文对照),第2张

SOFTWARE DESIGN
  Software design is a creative process.It requires a certain amount of flair on the part of the designer and the final design is normally an iteration from a number of preliminary designs.Design cannot be learned from a book—it must be practiced and learnt by experience and study of existing systems.Good design is the key to effective software engineering.A well-designed software system is straightforward [1] to implement and maintain,easily understood and reliable.Badly designed systems,although they may work,are likely to be expensive to maintain,difficult to test and unreliable.The design stage is therefore the most critical part of the software development process.
  Until fairly recently,software design was largely an ad hoc[2] process.Given a set of requirements,usually in natural language,an informal design was prepared,often in the form of a flowchart[3].Coding then commenced and the design was modified as the system was implemented.When the implementation stage was complete,the design had usually changed so much from its initial specification that the original design document was a totally inadequate description of the system.
  This approach to software design was responsible for many dramatic and very expensive project failures.Now it is realized that completely informal notations such as flowcharts,which are close to the programming language,are inadequate vehicles for formulating and expressing system design.It is recognized that precise(although not necessarily formal)specification is an essential part of the design process and that software design is an iterative,multi-stage activity which cannot be represented in any single notation.Accordingly,a number of design notations such as data flow diagrams.HIPO charts[4],structure diagrams and design description languages have been developed which are superior to flowcharts for expressing software designs.
  Given a requirements definition,the software engineer must use this to derive the design of a programming system which satisfies these requirements.This derivation is accomplished in a number of stages:
(1)The subsystems making up the programming system must be established.
(2)Each subsystem must be decomposed into separate components and the subsystem specification established by defining the operation of these components.
(3)Each program may then be designed in terms of interacting subcomponents.
(4)Each component must then be refined.This normally entails specifying each component as hierarchy of subcomponents.
(5)At some stage of this refinement process,the   algorithms used in each component must be specified in detail.
  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:松散地耦合。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 软件设计阅读(中英文对照)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情