Professional Documents
Culture Documents
Software Model and Design
Software Model and Design
Software Model and Design
EXERCISE
4
SOFTWARE MODEL AND DESIGN
AW31
Section:
Mr. Renjun Orain
Professor:
I. PROGRAM OUTCOME/S (PO) ADDRESSED BY THE LABORATORY EXERCISE
Apply knowledge through the use of current techniques and tools necessary for the IT profession . [PO: I]
Software design is the process of defining software methods, functions, objects, and the overall
structure and interaction of your code so that the resulting functionality will satisfy your users
requirements. See our Requirements page to learn how to write requirements. There are many different
ways of designing software, almost all of which involve coming up with an initial design and refining it as
necessary. Different developers prefer different amounts of design up front or during implementation phase.
Generally, the overall design should be well thought out and reviewed before coding starts. Refer to our section on
Design reviews to learn how to review your design. It is easier to try out different designs up front and discover
problems early in the development cycle than to make a major design change after much of the code has been
written.
Software design is the process by which an agent creates a specification of a software artifact, intended to
accomplish goals, using a set of primitive components and subject to constraints.
Software design may refer to either "all the activity involved in conceptualizing, framing,
implementing, commissioning, and ultimately modifying complex systems" or "the activity following
requirements specification and before programming, as ... [in] a stylized software engineering process."
Software design usually involves problem solving and planning a software solution. This includes both a low-level
component and algorithm design and a high-level, architecture design.
Background: A good object oriented design not only meets the specified requirements but also addresses
implicit requirements. There are five design principles which address most of the implicit requirements:
1. Abstraction: Focus on solving a problem by considering the relevant details and ignoring the
irrelevant.
2. Encapsulation: Wrapping the internal details, thereby making these details inaccessible. Encapsulation
separates interface and implementation, specifying only the public interface to the clients, hiding the
details of implementation.
3. Decomposition and Modularization: Dividing the problem into smaller, independent, interactive subtasks
for placing different functionalities in different components
4. Coupling & Cohesion: Coupling is the degree to which modules are dependent on each other. Cohesion is
the degree to which a module has a single, well defined task or responsibility. A good design is one with
loose coupling and strong cohesion.
5. Sufficiency, Completeness and Primitiveness: Design should ensure the completeness and sufficiency
with respect to the given specifications in a very simple way as possible.
1. Abstraction
Scenario 2: Too many global variables in the program after implementing the design (Coupling) Scenario 5:
Cyclic dependency among classes (Coupling)
Scenario 7: Several un-related functionalities/tasks are carried out by a single module (Cohesion)
4. Encapsulation
Scenario 1: Important information of a module is directly accessible by other modules Scenario 8: All
data of all classes in public
6. Al
None
VIII. REFERENCES