Get Started. It's Free
or sign up with your email address

1. Object-oriented design using the UML

1.1. 1) System context and interactions

1.1.1. develop an understanding of the relationships between software that is being designed and its external environment

1.1.2. Essential for deciding how to provide functionality

1.1.3. how to structure the system to communicate with its environment

1.2. 2) Architectural design

1.2.1. interactions between the software system and the system's environment have been defined

1.2.2. Need to combine this with your general knowledge of the principles of architectural design and with more detailed domain knowledge

1.3. 3) Object class identification

1.3.1. Identify Object Classes in Object Oriented Systems Use a grammatical analysis of a natural language description of the system to be constructed. Use tangible entities(things) in the application domain. Use a scenario-based analysis where various scenarios of system use are identified and analyzed in turn.

1.4. 4) Design models

1.4.1. show the objects or object classes in a system

1.4.2. show the associations and relationships between these entities.

1.4.3. Structural models, which describe the static structure of the system using object classes and their relationships.

1.4.4. Dynamic models, which describe the dynamic structure of the system and show the interactions between the system objects.

1.4.5. Subsystem models, which that show logical groupings of objects into coherent subsystems.

1.4.6. Sequence models, which show the sequence of object interactions.

1.4.7. State machine model, which show how individual objects change their state in response to events

1.5. 5) Interface specification

1.5.1. An important part of any design process is the specification of the interfaces between the components in the design.

1.5.2. Need to specify interfaces so that objects and subsystems can be designed in parallel.

1.5.3. Once an interface has been specified, the developers of other objects may assume that interface will be implemented.

2. Design patterns

2.1. 1) Patterns have made a huge impact on object-oriented software design

2.2. 2) Patterns are a way of reusing the knowledge and experience of other designers

2.3. 3) The four essential elements of design patterns were defined by the ‘Gang of Four’ in their patterns book:

2.3.1. i. reference to the pattern.

2.3.2. ii. problem area that explains when the pattern may be applied.

2.3.3. iii. often expressed graphically and shows the relationships between the objects and object classes

2.3.4. iv. This can help designers to understand.

2.4. 4) recognize design problem facing have associated pattern that can be applied

2.5. 5) Examples of such problems, documented in the ‘Gang of Four’s original patterns book, include:

2.5.1. i. Tell several objects that the state of some other object has changed (Observer pattern).

2.5.2. ii. Tidy up the interfaces to a number of related objects (Façade pattern).

2.5.3. iii. Provide a standard way of accessing the elements in a collection, irrespective (Iterator pattern).

2.5.4. iv. Allow for the possibility of extending the functionality of an existing class at

2.5.5. run-time (Decorator pattern).

3. Implementation issues

3.1. 1) Reuse

3.1.1. The abstraction level

3.1.2. The object level

3.1.3. The component level

3.1.4. The system level

3.2. 2) Configuration management

3.2.1. Version management - provided to keep track of the different versions of software components

3.2.2. System integration - provided to help developers define what versions of components are used to create each version of a system.

3.2.3. Problem tracking - provided to allow users to report bugs and other problems

3.3. 3) Host-target development

3.3.1. Most software development is based on a host-target model

3.3.2. Simulators are often used when developing embedded systems

3.3.3. If the target system has installed middleware or other software that you need to use, then you need to be able to test the system using that software.

3.3.4. provide a range of tools to support software engineering processes An integrated compiler A language debugging system Graphical editing tools Testing tools, such as JUnit Project support tools that help you organize the code

3.3.5. Issue have to consider in making this decision The hardware and software requirements of a component The availability requirements of the system Component communications

4. Open source development

4.1. Open source development is an approach to software development

4.2. using the Internet to recruit a much larger population of volunteer developers

4.3. any contributor to an open source project may report and fix bugs and propose new features and functionality

4.4. still rely on a core group of developers who control changes to the software.


4.5.1. The GNU General Public License (GPL) you use open source software that is licensed under the GPL license, then you must make that software open source

4.5.2. The GNU Lesser General Public License (LGPL) write components that link to open source code without having to publish the source of these components

4.5.3. The Berkley Standard Distribution (BSD) License non-reciprocal license, are not obliged to republish any changes or modifications made to open source code