一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Seven Principles Of Software Development

 chenge 2005-11-20

Seven Principles Of Software Development

Seven Principles of Software Development

	by DavidHooker - 9/5/96.
	mailto:DavidH@mindless.com


The First Principle: The Reason It All Exists (Pattern: TheReason)

A software system exists for one reason: to provide value to its users. All decisions should be made with this in mind. Before specifying a system requirement, before noting a piece of system functionality, before determining the hardware platforms or development processes, ask yourself questions such as: "Does this add real VALUE to the system?" If the answer is "no", don‘t do it. All other principles support this one.

I agree about the value bit, but as JerryWeinberg noted in QualitySoftwareManagement, volume 1 (SystemsThinking), value is a relative not an absolute

The Second Principle: KISS (Keep It Simple, Stupid!) (Pattern: KeepItSimpleStupid)

Software design is not a haphazard process. There are many factors to consider in any design effort. All design should be as simple as possible, but no simpler. This facilitates having a more easily understood, and easily maintained system. This is not to say that features, even internal features, should be discarded in the name of simplicity. Indeed, the more elegant designs are usually the more simple ones. Simple also does not mean "quick and dirty." In fact, it often takes a lot of thought and work over multiple iterations to simplify. The payoff is software that is more maintainable and less error-prone.

The Third Principle: Maintain the Vision (Pattern: MaintainTheVision)

A clear vision is essential to the success of a software project. Without one, a project almost unfailingly ends up being "of two [or more] minds" about itself. Without conceptual integrity, a system threatens to become a patchwork of incompatible designs, held together by the wrong kind of screws. As Brooks states:

Conceptual integrity is the most important consideration in system design.

Stroustrup also notes:

Having a clean internal structure is essential to constructing a system that is understandable, can be extended and reorganized, and is maintainable and testable.

From which Booch summarizes:

It is only through having a clear sense of a system s architecture that it becomes possible to discover common abstractions and mechanisms. Exploiting this commonality ultimately leads to systems that are simpler, and therefore smaller and more reliable.

Compromising the architectural vision of a software system weakens and will eventually break even the most well designed systems. Having an empowered Architect who can hold the vision and enforce compliance helps ensure a very successful software project.

The Fourth Principle: What You Produce, Others Will Consume (Pattern: WhatYouProduceTheyConsume)

Seldom is an industrial-strength software system constructed and used in a vacuum. In some way or other, someone else will use, maintain, document, or otherwise depend on being able to understand your system. So, always specify, design, and implement knowing someone else will have to understand what you are doing. The audience for any product of software development is potentially large. Specify with an eye to the users. Design, keeping the implementers in mind. Code with concern for those that must maintain and extend the system. Someone may have to debug the code you write, and that makes them a user of your code. Making their job easier adds value to the system.

The Fifth Principle: Be Open to the Future (see Pattern BuildForTodayDesignForTomorrow)

A system with a long lifetime has more value. In today‘s computing environments, where specifications change on a moment‘s notice and hardware platforms are obsolete when just a few months old, software lifetimes are typically measured in months instead of years. However, true "industrial-strength" software systems must endure far longer. To do this successfully, these systems must be ready to adapt to these and other changes. Systems that do this successfully are those that have been designed this way from the start. Never design yourself into a corner. Always ask "what if ", and prepare for all possible answers by creating systems that solve the general problem, not just the specific one. This could very possibly lead to the reuse of an entire system.

Abusing this principal is where I see many developers go wrong. One of the benefits of having both years of experience and many of them on a single project is that you learn the virtues of YouArentGonnaNeedIt. As developers we often guess wrong on how a system is going to change unless we are also domain experts. Further, systems do change but often converge so the generalized solution becomes baggage. -Sal Mangano

The Sixth Principle: Plan Ahead for Reuse

Reuse saves time and effort. Achieving a high level of reuse is arguably the hardest goal to accomplish in developing a software system. The reuse of code and designs has been proclaimed as a major benefit of using object-oriented technologies. However, the return on this investment is not automatic. To leverage the reuse possibilities that OO programming provides requires forethought and planning. There are many techniques to realize reuse at every level of the system development process. Those at the detailed design and code level are well known and documented. New literature is addressing the reuse of design in the form of software patterns. However, this is just part of the battle. Communicating opportunities for reuse to others in the organization is paramount. How can you reuse something that you don t know exists? Planning ahead for reuse reduces the cost and increases the value of both the reusable components and the systems into which they are incorporated.

(See CommentsOnPrincipleSix)

The Seventh Principle: Think!

This last Principle is probably the most overlooked. Placing clear, complete thought before action almost always produces better results. When you think about something, you are more likely to do it right. You also gain knowledge about how to do it right again. If you do think about something and still do it wrong, it becomes valuable experience. A side effect of thinking is learning to recognize when you don t know something, at which point you can research the answer. When clear thought has gone into a system, value comes out. Applying the first six Principles requires intense thought, for which the potential rewards are enormous.

(see CommentsOnPrincipleSeven)


The two most important principles in SoftwareDevelopment are OnceAndOnlyOnce and WhatNotHow

EditText of this page (last edited February 8, 2005)
FindPage by searching (or browse LikePages or take a VisualTour)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    中文字幕精品人妻一区| 狠狠做深爱婷婷久久综合| 亚洲中文在线中文字幕91| 亚洲欧美日韩综合在线成成| 大香蕉大香蕉手机在线视频| 亚洲三级视频在线观看免费| 日本本亚洲三级在线播放| 成人精品一级特黄大片| 大香蕉大香蕉手机在线视频| 亚洲少妇人妻一区二区| 一二区不卡不卡在线观看| 日本国产欧美精品视频| 日韩精品小视频在线观看| 九七人妻一区二区三区| 99久久精品午夜一区二区| 五月天六月激情联盟网| 国产精品色热综合在线| 九九热精彩视频在线免费| 高清国产日韩欧美熟女| 亚洲精选91福利在线观看| 欧美日韩国产二三四区| 日本不卡在线一区二区三区| 夜色福利久久精品福利| 蜜桃av人妻精品一区二区三区| 国产又粗又黄又爽又硬的| 亚洲一区二区三区一区| 亚洲视频一区二区久久久| 婷婷伊人综合中文字幕| 国产欧美日韩在线精品一二区| 亚洲熟妇中文字幕五十路| 亚洲国产成人爱av在线播放下载| 国产精品日韩欧美一区二区 | 日韩欧美综合中文字幕| 好吊日在线视频免费观看| 偷拍洗澡一区二区三区| 欧美成人国产精品高清| 国产一区二区三区色噜噜| 国产色偷丝袜麻豆亚洲| 欧美日韩精品视频在线| 护士又紧又深又湿又爽的视频| 麻豆看片麻豆免费视频|