THE SOFTWARE DESIGN PROCESS.ppt
《THE SOFTWARE DESIGN PROCESS.ppt》由会员分享,可在线阅读,更多相关《THE SOFTWARE DESIGN PROCESS.ppt(38页珍藏版)》请在麦多课文档分享上搜索。
1、THE SOFTWARE DESIGN PROCESS,CSCE 315 Programming Studio Spring 2010,Design when?,Software design activity that turns requirements to a plan or an outline of code When software design takes place varies (size, required quality, e.g., affect). Two opposite ends: Full detailed spec before anything prog
2、rammed Design takes place during construction (at the keyboard)Usually a mix More often than not, some design in front of a keyboard,Outline,Challenges in Design Design Concepts Heuristics Practices,Challenges in Design,Design is a “wicked” problem Rittel, Webber 73 A problem that can only be (clear
3、ly) defined by solving it Only after “solving” it do you understand what the needs actually are e.g. Tacoma Narrows bridge “Plan to throw one away” Problem of this class Design problems are not “wicked”,Challenges in Design,Process is Sloppy Mistakes Wrong, dead-end paths Stop when “good enough” It
4、is not a bad thing that design is a sloppy activity Cheap to correct errors when nothing built yet Tradeoffs and Priorities Goodness of a design dependent on priorities Fast develoment time? Scalable? High-performance? Adaptable Designers task to strike the right balance Priorities can change,Challe
5、nges in Design,Restrictions are necessary Constraints improve the result Force simplifications and generalizations Nondeterministic process Not one “right” solution A Heuristic process Rules of thumb vs. fixed process Emergent Evolve and improve during design, coding,Brooks: Accidental vs. Essential
6、 Difficulties,Accidental difficulties have been and are addressed Better languages, better IDEs, better debuggers, etc. Essential difficulties unavoidable Even with a perfect programming language, software must precisely model parts of real world. This is inherently complex.,Primary goal of software
7、 design,Managing Complexity,Managing Complexity,All other goals secondary Goal of minimizing complexity suggests two goals Minimize the amount of complexity that a human (programmer) must deal with at any one point of time Minimize accidental complexity,Levels of Design,Software system as a whole Di
8、vision into subsystems/packages Classes within packages Data and routines within classes Internal routine designWork at one level can affect those below and above. Design can be iterated at each level,Key Design Concepts,Most Important: Manage Complexity Software already involves conceptual hierarch
9、ies, abstraction Goal: minimize how much of a program you have to think about at once Should completely understand the impact of code changes in one area on other areas,Good Design Characteristics,Minimal complexity,Favor “simple” over “clever”,Good Design Characteristics,Minimal complexity Ease of
10、maintenance,Imagine what maintainer of code will want to know Be self-explanatory,Good Design Characteristics,Minimal complexity Ease of maintenance Loose coupling,Keep connections between parts of programs minimized Avoid n2 interactions! Abstraction, encapsulation, information hiding,Good Design C
11、haracteristics,Minimal complexity Ease of maintenance Loose coupling Extensibility,Should be able to add to one part of system without affecting others,Good Design Characteristics,Minimal complexity Ease of maintenance Loose coupling Extensibility Reusability,Design so code could be “lifted” into a
12、different system Good design, even if never reused,It should be pointed out that the preparation of a library sub-routine requires a considerable amount of work. This is much greater than the effort merely required to code the sub-routine in its simplest possible form. Whe52,Good Design Characterist
13、ics,Minimal complexity Ease of maintenance Loose coupling Extensibility Reusability High fan-in,For a given class, have it used by many others Indicates reuse effective,Good Design Characteristics,Minimal complexity Ease of maintenance Loose coupling Extensibility Reusability High fan-in Low-to-medi
14、um fan-out,Do not use too many other classes Complexity management,Good Design Characteristics,Minimal complexity Ease of maintenance Loose coupling Extensibility Reusability High fan-in Low-to-medium fan-out Portability,Consider what will happen if moved to another environment,Good Design Character
15、istics,Minimal complexity Ease of maintenance Loose coupling Extensibility Reusability High fan-in Low-to-medium fan-out Portability Leanness,Dont add extra parts Extra code will need to be tested, reviewed in future changes,Good Design Characteristics,Minimal complexity Ease of maintenance Loose co
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- THESOFTWAREDESIGNPROCESSPPT
