Monday, September 15, 2008

SOFTWARE ENGINEERING PRACTICE

People who create computer software practice the art or craft or discipline that is software engineering. But what is software engineering “practice”? in a generic sense, practice is a collection of concepts, principles, methods, and tools that a software engineer calls upon on a daily basis. Practice allows managers to manage software projects and software engineers to build computer programs. Practice populates a software process model with the necessary technical and management how-to’s to get the job done. Practice transforms a haphazard unfocused approach into something that is more organized, more effective, and more likely to achieve success.

The essence of practice

How to solve it, engineers outlined the essence of problem solving, and consequently, the essence of software engineering practice.

1. Understand the problem (communication and analysis).
2. Plan a solution (modeling and software design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and quality assurance).

Core principles

The dictionary defines the word principle as “an important underlying law or assumption required in a system of thought” throughout this book we discuss principles at many different levels of abstraction. Some focus on software engineering as a whole, others consider a specific generic framework activity (e.g., customer communication), and still others focus on software engineering actions (e.g., architectural design) or technical tasks (e.g., write a usage scenario). Regardless of their level of focus, principles help us establish a mind set for solid software engineering practice. They are important for that reason.

First principle: The reason it all exists

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 nothing 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.

The second principle: Kiss (Keep it simple, stupid)
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 facilities 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 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 pay-off is software that is more main tainable and less error prone.
The third principle: Maintain the vision

A clear vision is essential to the success of a software project. Without one, a project almost unfailingly ends up being “of two minds” about itself. Without conceptual integrity, a system threatens to become a patchwork of incompatible design, held together by the wrong kind of screws.
Compromising the architectural vision of a software system weakens and will eventually break even a well-designed system. 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, other will consume
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 other wise 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 who must maintain and extend the system. Someone may have to debug the code write, and that makes them a user of your code. Making their job easier adds value to the system.

Sunday, September 14, 2008

Database systems

A database-management system is a collection of interrelated data and a set of programs to access those data. The collection of data, usually referred to as the database, contains information relevant to an enterprise. The primary goal of a DBMS is to provide a way to store and retrieve database information that is both convenient and efficient.

Database systems are designed to manage large bodies of information. Management of data involves both defining structures for storage of information and providing mechanisms for the manipulation of information. In addition, the database system must endure the safety of the information stored, despite system crashes or attempts at unauthorized access. If data are to be shared among several users, the system must avoid possible anomalous results.

Because information is so important in most organizations, computer scientists have developed a large body of concepts and techniques for managing data.


DATA BASE-SYSTEM APPLICATIONS

Databases are widely used. Here are some representative applications

Banking: For customer information, accounts, loans, and banking transactions.

Airlines: For reservations and schedule information. Airlines were among the first to use database in a geographically distributed manner.

Universities: For student information, course registrations, and grades.

Credit card transactions: For purchases on credit and generation of monthly statements.

Telecommunication: For keeping records of calls made, generating monthly bills, maintaining balances on prepaid calling cards, and storing information about the communication networks.

Sales: For customer, product, and purchase information.

On-line retailers: For sales data noted above plus on-line order tracking, generation of recommendation lists, and maintenance of on-line product evaluations.

Manufacturing: For management of the supply chain and for tracking production of items in factories, inventories of items in warehouse and stores, and orders for items.

Human resources: For information about employees, salaries, payroll taxes, benefits, and for generation of paychecks

PURPOSE OF DATABASE SYSTEMS

Database systems arose in response to early methods of computerized management of commercial data. As an example of such methods, typical of the 1960s consider part of a bank enterprise that, among other data, keeps information about all customers and savings accounts. One way to keep the information on a computer is to store it in operating system files. To allow users to manipulate the information, the system has a number of application programs that manipulates the file, including programs to


· Debit or credit an account
· Add a new account
· Find the balance of an accountGenerate monthly statements

Saturday, September 13, 2008

how does the optical fiber communication

Ever since ancient times, people had a principal need to communicate with one another. This need created interests in devising communication systems for sending messages from one distant place to another. Optical communication methods were of special interest among the many systems that people tried to use. One of the earliest known optical transmission links was a fire-signal method used by the Greeks in the eighth century BC for sending alarms, calls for help, or announcements of certain events. Improvements of these optical transmission systems were not pursued very actively because of technology limitations at the time. For example, the speed of sending information over the communication link was limited since the transmission rate depended on how fast the senders could move their hands, the optical signal receiver was the error-phone human eye, line-of-sight transmission paths were required, and atmospheric effects such as fog and rain made the transmission path unreliable. Thus it turned out to be faster, more efficient, and more dependable to send messages by a courier over the road network.

Subsequently, no significant advances for optical communications appeared until the invention of the laser in the early 1960s and a series of technology developments related to optical fibers around 1970. These events finally allowed practical light wave communication systems to start being fielded worldwide in 1978. These systems operate in the near-infrared region of the electromagnetic spectrum and use optical fibers as the transmission medium. The goal of this book is to describe the various technologies, implementation methodologies, and performance measurement techniques that make that make optical fiber communication systems possible. The reader can find additional information on the theory of light propagation in fibers, the design of links and networks, and the evolution of optical fibers, photonic devices, and optical fiber communication systems and conference proceedings.