eXtropia Studios Software Development
Software Engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software. The term software engineering was popularized during the 1968 NATO Software Engineering Conference (held in Garmisch, Germany) by its chairman F.L. Bauer, and has been in widespread use since. The discipline of software engineering encompasses knowledge, tools, and methods for defining software requirements, and performing software design, software construction, software testing, and software maintenance tasks. Software engineering also draws on knowledge from fields such as computer engineering, computer science, management, mathematics, project management, quality management, software ergonomics, and systems engineering.
Extreme Programming
Extreme Programming is a software engineering methodology, the most prominent of several agile software development methodologies, prescribing a set of daily stakeholder practices that embody and encourage particular XP values. Proponents believe that exercising these software engineering practices to so-called "extreme" levels leads to a development process that is more responsive to customer needs ("agile") than traditional programming methods, while creating software of better quality. Proponents of XP and agile methodologies in general regard ongoing changes to requirements as a natural, inescapable and desirable aspect of software development projects; they believe that adaptability to changing requirements at any point during the project life is a more realistic and better approach than attempting to define all requirements at the beginning of a project and then expending effort to control changes to the requirements.
Advantages of Design Patterns
Design patterns can speed up the development process by providing tested, proven development paradigms. Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns.
Object Oriented Design
Object-Oriented Design (OOD) is an activity where the designers are looking for logical solutions to solve a problem, using objects. Object-oriented design takes the conceptual model that is the result of object-oriented analysis, and adds implementation constraints imposed by the environment, the programming language and the chosen tools, as well as architectural assumptions chosen as basis of design. The concepts in the conceptual model are mapped to concrete classes, to abstract interfaces in APIs and to roles that the objects take in various situations. The interfaces and their implementations for stable concepts can be made available as reusable services. Concepts identified as unstable in object-oriented analysis will form basis for policy classes that make decisions, implement environment-specific or situation specific logic or algorithms. The result of the object-oriented design is a detailed description of how the system can be built, using objects.
PHP5 Singleton
class SingletonClass {
public static function getInstance() {
if (self::$instance==null) {
self::$instance = new SingletonClass();
}
return self::$instance;
}
private function __construct() {
// private constructor prevents external instansiation
}
private static $instance = null;
}