3process2rational_design_process_第1頁
3process2rational_design_process_第2頁
3process2rational_design_process_第3頁
3process2rational_design_process_第4頁
3process2rational_design_process_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、A rational design process: How and whyto fake itBy David L. Parnas THE SEARCH FOR THE PHILOSOPHERS STONE: WHY DO WE WANT A RATIONAL DESIGN PROCESS? A perfectly rational person is one who always has a good reason for what he does. Each step taken can be shown to be the best way to get to a well defin

2、ed goal. However, to many observers, the usual process of designing software appears quite irrational. Programmers start without a clear statement of desired behavior and implementation constraints. They make a long sequence of design decisions with no clear statement of why they do things the way t

3、hey do. Their rationale is rarely explained.2018/9/24Dong SHAO, Nanjing University28 Many of us are not satisfied with such a design process. That is why there is research in software design, programming methods, structured programming and related topics. Ideally, we would like to derive our program

4、s from a statement of requirements in the same sense that theorems are derived from axioms in a published proof. All of the methodologies that can be considered “top down” are the result of our desire to have a rational, systematic way of designing software. bad news and good news The bad news is th

5、at, in our opinion, we will never find the philosophers stone. We will never find a process that allows us to design software in a perfectly rational way. The good news is that we can fake it. We can present our system to others as if we had been rational designers and it pays to pretend do so durin

6、g development and maintenance.WHY WILL A SOFTWARE DESIGN“PROCESS” ALWAYS BE AN IDEALISATION? We will never see a software project that proceeds in the “rational” way. Some of the reasons are listed below: (1) In most cases the people who commission the building of a software system do not know exact

7、ly what they want and are unable to tell us all that they know. (2) Even if we knew the requirements, there are many other facts that we need to know to design the software. Many of the details only become known to us as we progress in the implementation. Some of the things that we learn invalidate

8、our design and we must backtrack. (3) Even if we knew all of the relevant facts before we started, experience shows that human beings are unable to comprehend fully the details that must be taken into account in order to design and build a correct system. The process of designing the software is one

9、 in which we attempt to separate concerns so that we are working with a manageable amount of information. However, until we have separated the concerns, we are bound to make errors. (4) Even if we could master all of the detail needed, all but the most trivial projects are subject to change for exte

10、rnal reasons. Some of those changes may invalidate previous design decisions. The resulting design is not one that would have been produced by a rational design process. (5) Human errors can only be avoided if one can avoid the use of humans. Even after the concerns are separated, errors will be mad

11、e. (6) We are often burdened by preconceived design ideas, ideas that we invented, acquired on related projects, or heard about in a class.Sometimes we undertake a project in order to try out or use a favorite idea. Such ideas may not be derived from our requirements by a rational process. (7) Often

12、 we are encouraged, for economic reasons, to use software that was developed for some other project. In other situations, we may be encouraged to share our software with another ongoing project. The resulting software may not be the ideal software for either project, i.e., not the software that we w

13、ould develop based on its requirements alone, but it is good enough and will save effort. For all of these reasons, the picture of the software designer deriving his design in a rational, error-free, way from a statement of requirements is quite unrealistic. No system has ever been developed in that

14、 way, and probably none ever will. Even the small program developments shown in textbooks and papers are unreal. They have been revised and polished until the author has shown us what he wishes he had done, not what actually did happen. WHY IS A DESCRIPTION OF A RATIONAL IDEALISED PROCESS USEFUL? If

15、 we have identified an ideal process but cannot follow it completely, we can still follow it as closely as possible and we can write the documentation that we would have produced if we had followed the ideal process. This is what we mean by “faking a rational design process”. reasons for such a pret

16、ense: (1) Designers need guidance. When we undertake a large project we can easily be overwhelmed by the enormity of the task. We will be unsure about what to do first. A good understanding of the ideal process will help us to know how to proceed. (2) We will come closer to a rational design, if we

17、try to follow the process rather than proceed on an ad hoc basis. For example, even if we cannot know all of the facts necessary to design an ideal system, the effort to find those facts before we start to code will help us to design better and backtrack less. (3) When an organization undertakes man

18、y software projects there are advantages to having a standard procedure. It makes it easier to have good design reviews, to transfer people, ideas, and software from one project to another. If we are going to specify a standard process, it seems reasonable that it should be a rational one. (4) If we

19、 have agreed on an ideal process, it becomes much easier to measure the progress that a project is making. We can compare the projects achievements with those that the ideal process calls for. We can identify areas in which we are behind (or ahead). (5) Regular review of the projects progress by out

20、siders is essential to good management. If the project is attempting to follow a standard process, it will be easier to review.WHAT IS THE RATIONAL DESIGN PROCESS? A. Establish and document requirements. If we are to be rational designers, we must begin knowing what we must do to succeed. That infor

21、mation should be recorded in a work product known as a requirements document. Completion of this document before we start would allow us to design with all the requirements in front of us.1. Why do we need a requirements document? (1) We need a place to record the desired behavior of the system as d

22、escribed to us by the user; we need a document that the user, or his representative, can review. (2) We want to avoid making requirements decisions accidentally while designing the program. Programmers working on a system are very often not familiar with the application. Having a complete reference

23、on externally visible behavior relieves them of any need to decide what is best for the user. (3) We want to avoid duplication and inconsistency. Without a requirements document, many of the questions it answered would be asked repeatedly throughout the development by designers, programmers and revi

24、ewers. This would be expensive and would often result in inconsistent answers. (4) A complete requirements document is necessary (but not sufficient) for making good estimates of the amount of work and other resources that it will take to build the system. (5) A requirements document is valuable ins

25、urance against the costs of personnel turnover. The knowledge that we gain about the requirements will not be lost when someone leaves the project. (6) A requirements document provides a good basis for test plan development. Without it, we do not know what to test for. (7) A requirements document ca

26、n be used, long after the system is in use, to define the constraints for future changes. (8) A requirements document can be used to settle arguments among programmers; once we have a complete and accurate requirements document, we no longer need to be, or consult, requirements experts. Determining

27、the detailed requirements may well be the most difficult part of the software design process because there are usually no well organized sources of information.2. What goes into the requirements document? The definition of the ideal requirements document is simple: It should contain everything you n

28、eed to know to write software that is acceptable to the customer, and no more. (1) Every statement should be valid for all acceptable products; none should depend on implementation decisions. (2) The document should be complete in the sense that if a product satisfies every statement, it should be a

29、cceptable. (3) Where information is not available before development must begin, the areas of incompleteness should be explicitly indicated. (4) The product should be organized as a reference document rather than an introductory narrative about the system. Although it takes considerable effort to pr

30、oduce such a document, and a reference work is more difficult to browse than an introduction, it saves labor in the long run. The information that is obtained in this stage is recorded in a form that allows easy reference throughout the project.3. Who writes the requirements document? Ideally, the r

31、equirements document would be written by the users or their representatives. In fact, users are rarely equipped to write such a document. Instead, the software developers must produce a draft document and get it reviewed and, eventually, approved by the user representatives. 4. How is the requiremen

32、ts document organized? (1) Computer Specification: a specification of the machines on whichthe software must run. (2) Input/Output Interfaces: a specification of the interfaces that the software must use in order to communicate with the outside world; (3) Specification of Output Values: for each out

33、put, a specification of its value in terms of the state and history of the systems environment; (4) Timing Constraints: for each output, how often, or how quickly, the software is required to recompute it; (5) Accuracy Constraints: for each output, how accurate it is required to be. (6) Likely Chang

34、es: if the system is required to be easy to change, the requirements should contain a definition of the areas that are considered likely to change. (7) Undesired Event Handling.B. Design and document the module structure Unless the product is small enough to be produced by a single programmer, one m

35、ust give thought to how the work will be divided into work assignments, which we call modules. The module guide should have a tree structure, dividing the system into a small number of modules and treating each such module in the same way until all of the modules are quite small.C. Design and docume

36、nt the module interfaces Efficient and rapid production of software requires that the programmers be able to work independently. The module guide defines responsibilities it does not provide enough information to permit independent implementation. A module interface specification must be written for each module. It must be formal and provide a black box picture of each module. butD. Design and document the uses hierarchy The “uses” hierarchy can be designed once we know all of the modules and their access programs. The “uses” hie

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論