Unit - Ii: Software Design
Unit - Ii: Software Design
Software Design
PREPARED BY
M Prabu
AP(SR.G)
.
Topics
• Software Design Fundamentals
• Design Standards - Design Type
• Design Model – Architectural design, Software
Architecture
• Software Design Methods
• Top Down, Bottom Up
• Module Division (Refactoring)
• Module Coupling
• Component Level Design
• User Interface Design
• Pattern Oriented Design
• Web Application Design
• Design Reuse
• Concurrent Engineering in Software Design
• Design Life-Cycle Management
• Software Design is the process to transform
the user requirements into some suitable
form, which helps the programmer in
software coding and implementation.
Objectives of Software
Design:
• Correctness:
• Efficiency:
• Understandability:
• Completeness:
• Maintainability:
The software design process can be divided into
the following three levels of phases of design:
• Interface Design
• Architectural Design
• Detailed Design
Software Design
Introduction
•Software design is the process where the software architecture is built and
refined using the end user requirements.
•In the waterfall model, the software product will have a large number of parts
which can be designed separately from each other and later can be joined.
•If you need to break the software product design into many parts then either
top down approach or bottom up approach can be used.
•In top down approach, the software design for the entire product is built first
and later its parts are designed.
•In bottom up approach, the software product parts are designed first and later
they are joined to create design of the entire product.
•With each change request there will be a different version of the software
design.
•Maintaining these design versions through the development process is very
important.
•It is necessary to make sure that the right design is used for software
construction.
•Software design should be robust and should also be able to take change
requests without any problems.
Software Design
Introduction
•When a software product is incrementally built then the later versions of the
software design should be fully compatible with the original software design.
•There are many software design techniques available to make appropriate
software designs for the product being built.
•They include prototyping, structural models, object oriented design, entity
relationship models etc.
•Refactoring is a design technique which is used in iterative models.
•When the design become bulky after many iterations of development, it starts
getting crumbling against new features being added to the product.
•In such cases, the design is changed so that new factors of the features being
added are incorporated.
•Software design development can be likened to designing a physical product.
•Suppose a new car model is to be developed.
•The car design is broken down into separate components and in the end
assembling them will become a complete design for the car model.
•Various factors are considered during the design of the components.
Software Design
Introduction
• Suppose one factor to be considered is that during a car accident, the car body
should take most of the impact and the passengers should get the least impact, so
that injury to car passengers can be minimized during accidents.
• For this to happen, the car body should be made of material that can collapse on
impact and thus take most of the impact.
• So during design, when selecting the material of the car with safety in mind, the
body is one of the prime considerations.
•Similarly, an aerodynamic body helps in keeping the car from rolling over during
accidents and thus it is a prime safety factor that the car body should be
aerodynamic.
• During design, one consideration is also made that though each component is
developed separately, after assembly the components should work with each
other without any problems.
• That means assembling does not create any problems in the product itself.
• Similar considerations are also done when software products are designed.
Software Design
Introduction
• In fact, in designing software systems, consideration is given to things like how
well the system will be maintained during operation and how easily the system
will be actually developed and be tested.
•Software design is done using modeling languages like UML and using notation
methods like use cases and activity diagrams.
•We will learn all about software design considerations, workflows involved in
design, etc.
Software Design
Software Design Fundamentals
•When a building is constructed, a good foundation is laid out for the building, so
that the building will have a long lifespan and will not collapse.
•Similarly, it is given a strong and resilient structure, so that even in case of an
earthquake, it will not fall down.
•Similarly, software design provides the foundation and structure upon which the
software system is constructed.
•The design should provide a sound, resilient and scalable structure to support the
software system (Figure below-Characteristics of a good software design).
•In these days, most software systems are built incrementally.
•In the beginning, a software system may consist of only a few features.
•The feature set is expanded in future releases as and when it becomes necessary
to include them in the system.
•If proper structure is not provided from the very beginning, the addition of these
new features will make the system unstable.
•To deal with this problem, a technique called refactoring is used on these agile
projects where incremental software development is done.
Software Design
Software Design Fundamentals
• Some of the design techniques that help make good software design
include open architecture, modularity and scalability.
• The current trend of service-oriented architecture (SOA) has also helped
tremendously in changing the design concepts.
• SOA is built on Web services and loose coupling of software components.
• The asynchronous messaging method of SOA is a vital aspect for developing
Web-based applications.
Software Design
Design Standards
• If design standards are implemented on a project, then it will help in
streamlining activities that are involved during the software design phase.
• Some industry standards for software design include operator interface
standards, test scenarios, safety standards, design constraints and design
tolerances.
Design Types
• Software design on any project may consist of many work products,
which together can be termed the software design for the software product that
will be built during the software project.
• Some examples include prototypes, structural models, object-oriented
design, systems analysis and entity relationship models.
Software Design Concepts:
Software Design
Design Types
• A good software design not only ensures a smooth transition to the
development phase but also ensures that the software product has a good shelf
life during operation.
• So what are the keys to a good design? A good design should start from
the most possible abstract architecture of the software product often termed as
"high level design".
• Subsequent transition of the abstract design should lead to platform-
specific design often termed as "low level design".
• The platform-specific design or low level design will be in terms of a good
database model and a good application model (Figure above - Software design
techniques).
• Over the years, many software design techniques have evolved with the
evolution of different programming paradigms.
• Starting with the early procedural programming paradigms, programming
has evolved into present day "service-oriented architecture".
• Software design has kept the pace with these evolving paradigms, and
thus it has also been evolving. So, we have early structural design paradigms to
modern day SOA designs. Let us discuss some of these design techniques.
Software Design
Design Types – Prototypes
• Prototyping is cheap and fast.
• It also gets a buy in from customer at an early stage of the project.
• If not, a full prototype of the application, a partial prototype can
contribute to win over the customer.
• There are many automatic code generation tools that allows to drag and
drop some components on screens, and the tool generates the code and makes a
working prototype of the application that can be demonstrated to the customer.
• A miscommunication or misunderstanding between the customer and the
project team gets cleared once the difference of opinion are sorted out early on
during the prototype demonstration sessions.
• This greatly helps in reducing the risks of not meeting customer
expectations.
• In any case, customers do not care about internal workings of the
application.
• They are always concerned about what the application screens look like
and how the application behaves with different kind of inputs and events.
Software Design
Design Types – Prototypes
• The downside about prototypes is that many customers assume the
prototype is the fully functional application and later on wonder why the
application is taking so much time in development when they saw the working
demonstration so early in the project.
• Customer expectations become difficult to manage in such instances.
• Prototypes can only show the user interface screens.
• When complex logic is involved in developing applications, that logic
cannot be depicted in prototypes, as program logic is mostly not visible and cannot
be developed in prototypes.
• Starting with the early procedural programming paradigms, programming
has evolved into present day "service-oriented architecture".
Software Design
Design Types – Design Reuse
• For large software products, the design can be broken into many design
parts representing each module of the product.
• Each of these design modules contain a lot of design information that can
be represented as design components.
• Many details inside these design components can be repeated inside
different components.
• If a standard method of representing the same information can be used
for these components, then it is possible to use these pieces of information in
many components by reusing them.
• It will reduce effort in designing the product.
• This method of design reuse is known as internal design reuse.
• A more potent design reuse is becoming available after the advent of the
open source paradigm and SOA.
• In the case of open source, the design reuse is in fact a case of copying
existing design and then using it exactly as it is or modifying it to suit the needs.
• But in the case of SOA, there is no copying or modifying a software design.
• The existing design is utilized as it is.
Software Design
Design Types – Design Reuse
• In addition, there is no process of buying the application/component
whose design is required.
• There is simply buying a service from the owner of the
application/component and using that service in building the application.
• The owner of that application/component publishes full details as to
how to integrate with the application for the according application/component.
• The full interface details are provided by the owner.
• Using this information, the design is done for the application.
• There is an assumption that as if the application/component provided as
a service is available and the application uses this application/component.
• SOA is indeed leading to a reuse model that is going to transform the
world of computing and the lives in years to come.
Software Design
Design Types – Structural Models
• Most software applications are built using components.
• At the bottom are the smallest units of functions and procedures in a
software application.
• These functions are contained within classes or packages depending on
the programming language used.
• Many classes together build a component.
• Components in turn make modules. Modules in turn make the complete
application.
• For ease of working, maintenance, and breaking development tasks to
allocate to group of developers, it is essential that an application is broken down
into manageable parts.
• Breaking into parts for an application can best be done using a structural
analysis.
• From requirement specifications, a feature set is made to decide what
features will be in the application.
• This feature set is analyzed and broken down into smaller sets of features,
which will go into different modules.
• This is represented in a structural model of the application.
Software Design
Design Types – Object-oriented Design
• It has always been difficult to represent business entities and business
information flow in a software model.
• With object-oriented design, this problem was solved.
• Business entities are represented as objects in the object- oriented
software design.
• Properties of these objects are made in such a way that they are similar
to the properties of the business entities.
• These objects are instantiated from classes in the form of child classes.
• These child classes inherit all the properties of their parent class, and
they can have some more properties of their own in addition.
• So if we have a group of similar objects with somewhat different
properties, then we can implement classes in such a way that a base parent class
has child classes with different properties.
• This concept aligns very much to the real-world scenarios.
• Object-oriented design takes input from use cases, activity diagrams,
user interfaces etc.
Software Design
Design Types – Systems Analysis
• System analysis is the process of finding solutions in the form of a system
designed from the inputs coming from business needs.
• The fundamental question addressed in system analysis is whether a
business scenario can be converted into a software application, so that the user
can use the software application to do his routine business tasks.
• For instance, a person may want to access his bank account using an
Internet connection to the online web site of the bank.
• This scenario calls for many things that are involved in the whole chain of
objects and events.
• The system analysis will be concerned with user activities, what objects
on the web site act with user activities, how these objects interact with the
underlying software system of the bank, and how connections are made between
the user and the website and between the website and the bank system.
• System analysis will analyze all these things.
• Based on the analysis, a system model can be made that will be used in
developing the application.
Software Design
Design Types – Entity Relationship Models
• Entity relationship models are one of the ways to represent business
entities and their relationships to each other through diagrams.
• These diagrams are used for creating databases and database tables.
• How many tables are needed to fulfill the needs of the software
product, how these tables are related to each other, and in what form data are
to be kept inside these tables, etc. are decided through these diagrams.
• With object-oriented modeling, it is possible to correlate each object
with a corresponding database object.
• This kind of representation helps to make a clean database design.
Design Model
Analysis Model -> Design
Model
Design Model
Design Model Elements
• Data Elements
• Data model ¾ Data structures
• Data model ¾ Database
architecture
• Architectural
• Application Elements
domain
• Analysis classes, their collaborations and behaviors
transformed into design realizations
relationships, are
• Patterns and “styles”.
• Interface Elements
• User Interface (UI)
• External interfaces to other systems, devices, networks or other
producers or consumers of information.
• Internal interfaces between various design components
• Component Elements
• Deployment Elements
Design Model
Analysis Model -> Design
Model
Architectural Design
Architectural Design
• The overall structure of the software and the ways in which that structure
provides conceptual integrity for a system.
Structural properties
• This aspect of the architectural design representation defines the
components of a system (e.g., modules, objects, filters) and the manner in which
those components are packaged and interact with one another.
• For example, objects are packaged to encapsulate both data and the
processing that manipulates the data and interact via the invocation of methods.
Extra-functional properties
• The architectural design description should address how the design
architecture achieves requirements for performance, capacity, reliability, security,
adaptability, and other system characteristics.
Families of related systems
• The architectural design should draw upon repeatable patterns that are
commonly encountered in the design of families of similar systems.
• In essence, the design should have the ability to reuse architectural
building blocks.
Software Architecture
Why Architecture?
• The architecture is not the operational software.
• Rather, it is a representation that enables a software engineer to:
(1) Analyze the effectiveness of the design in meeting its stated requirements,
(2) Consider architectural alternatives at a stage when making design changes is
still relatively easy, and
(3) Reduce the risks associated with the construction of the software.
Architecture - Significance
• Representations of software architecture are an enabler for
communication between all parties (stakeholders) interested in the development
of a computer-based system.
• The architecture highlights early design decisions that will have a profound
impact on all software engineering work that follows and, as important, on the
ultimate success of the system as an operational entity.
• Architecture “constitutes a relatively small, intellectually graspable mode
of how the system is structured and how its components work together”.
Software Architecture
Architectural Descriptions
• The IEEE Computer Society has proposed IEEE-Std-1471-2000,
Recommended Practice for Architectural Description of Software-Intensive
System,
– To establish a conceptual framework and vocabulary for use during the
design of software architecture,
– To provide detailed guidelines for representing an architectural
description, and
– To encourage sound architectural design practices.
• The IEEE Standard defines an architectural description (AD) as a “a
collection of products to document an architecture.”
– The description itself is represented using multiple views, where each
view is “a representation of a whole system from the perspective of a related set
of [stakeholder] concerns.”
Architectural Design
Architectural Genres
• Genre implies a specific category within the overall software domain.
• Within each category, there are a number of subcategories.
– For example, within the genre of buildings, there are following general styles:
houses, condos, apartment buildings, office buildings, industrial building,
warehouses, and so on.
– Within each general style, more specific styles might apply.
– Each style would have a structure that can be described using a set of
predictable patterns.
Architectural Styles
• Each style describes a system category that encompasses:
(1) a set of components (e.g., a database,
computational modules) that perform a function required by a
system,
(2) a set of connectors that enable
“communication, coordination and cooperation” among components,
(3) constraints that define how components can be integrated to form the system,
and
(4) semantic models that enable a designer to
Architectural Design
Architectural Styles – Data Centered Architecture
• A data store (e.g., a file or database) resides at the center of this architecture and
is accessed frequently by other components that update, add, delete, or otherwise
modify data within the store.
• Figure below illustrates a typical data-centered style.
Architectural Design
Architectural Styles – Data Centered Architecture
• Client software accesses a central repository.
• In some cases, the data repository is passive.
• That is, client software accesses the data independent of any changes to the data
or the actions of other client software.
• A variation on this approach transforms the repository into a "blackboard" that
sends notifications to client software when data of interest to the client changes.
Architectural Design
Architectural Styles – Data Flow Architecture
• This architecture is applied when input data are to be transformed
through a series of computational or manipulative components into output data.
• A pipe-and-filter pattern has a set of components called filters, connected
by pipes that transmit data from one component to the next.
Architectural Design
Architectural Styles – Data Flow Architecture
• Each filter works independently of those components upstream and downstream,
is designed to expect data input of a certain form, and produces data output (to
the next filter) of a specified form.
• However, the filter does not require knowledge
of the workings of its neighboring filters.
• If the data flow degenerates into a single line of transforms, it is termed
batch sequential.
• This structure accepts a batch of data and then applies a series of
sequential components (filters) to transform it.
Architectural Design
Architectural Styles – Call and Return Architecture
• This architectural style enables you to achieve a program structure that is
relatively easy to modify and scale.
• A number of sub-styles exist within this category:
• Main program/subprogram architectures: This classic program structure
decomposes function into a control hierarchy where a "main program invokes a
number of program components that in turn may invoke still other components.
The figure below illustrates an
Architectural Design
Architectural Styles – Call and Return Architecture
• The figure above illustrates an architecture of this type.
• Remote procedure call architectures: The components of a main
program/subprogram architecture are distributed across multiple computers on a
network.
ADL
• Architectural description language (ADL) provides a semantics and syntax
for describing a software architecture
• Provide the designer with the ability to:
– Decompose architectural components
– Compose individual components into larger architectural blocks and
– Represent interfaces (connection mechanisms) between components.
Architectural Design
An Architectural Design
Method
• Customer customer requirements
requirements "four bedrooms, three bloattshos,f glass
• Deriving ..."
program
architecture
architectural design
Architectural Design
Partitioning the Architecture
• The “horizontal” and “vertical” partitioning are
required
Cohesion
• Conventional view:
– The “single-mindedness” of a module
• OO view:
– Cohesion implies that a component or class encapsulates only attributes
and operations that are closely related to one another and to the class or
component itself.
Component Level Design
Cohesion
• Levels of cohesion
– Functional
– Layer
– Communicational
– Sequential
– Procedural
– Temporal
– Utility
Coupling
• Conventional view:
– The degree to which a component is connected to other components and
to the external world.
• OO view:
– A qualitative measure of the degree to which classes are connected to
one another.
Component Level Design
Coupling
• Levels of
cohesion
– Content
– Common
– Control
– Stamp
– Data
– Routine call
– Type use
– Inclusion or
import
– External
Component Level Design
Conducting Component-Level Design
• Step 1. Identify all design classes that correspond to the problem domain.
• Step 2. Identify all design classes that correspond to the infrastructure
domain.
• Step 3. Elaborate all design classes that are not acquired as reusable
components.
• Step 3a. Specify message details when classes or component collaborate.
• Step 3b. Identify appropriate interfaces for each component.
• Step 3c. Elaborate attributes and define data types and data structures
required to implement them.
• Step 3d. Describe processing flow within each operation in detail.
• Step 4. Describe persistent data sources (databases and files) and identify
the classes required to manage them.
• Step 5. Develop and elaborate behavioral representations for a class or
component.
• Step 6. Elaborate deployment diagrams to provide additional
implementation detail.
• Step 7. Factor every component-level design representation and always
consider alternatives.
Component Level Design
Conducting Component-Level Design
• Collaboration Diagram with
Messaging
Component Level Design
Conducting Component-Level Design
• Refactoring Interfaces and Class Definitions for
PrintJob
Component Level Design
Conducting Component-Level Design
• Activity Diagram for Compute-
PaperCost
Component Level Design
Conducting Component-Level Design
• State Chart Fragment for
PrintJob Class
Component Level Design
Component Design for WebApps
• WebApp component is
– (1) A well-defined cohesive function that manipulates content or provides
computational or data processing for an end-user, or
– (2) A cohesive package of content and functionality that provides end-user
with some required capability.
• Therefore, component-level design for WebApps often incorporates
elements of content design and functional design.
Content Design for WebApps
• Focuses on content objects and the manner in which they may be
packaged for presentation to a WebApp end-user.
• Consider a Web-based video surveillance capability within
SafeHomeAssured.com - Potential content components can be defined for the
video surveillance capability:
(1) The content objects that represent the space layout (the floor plan) with
additional icons representing the location of sensors and video cameras;
(2) The collection of thumbnail video captures (each an separate data object)
(3) The streaming video window for a specific camera.
• Each of these components can be separately named and manipulated as a
package.
Component Level Design
Functional Design for WebApps
• Modern Web applications deliver increasingly sophisticated processing
functions that:
(1) Perform localized processing to generate content and navigation capability in a
dynamic fashion;
(2) Provide computation or data processing capability that is appropriate for the
WebApps business domain;
(3) Provide sophisticated database query and access, or
(4) Establish data interfaces with external corporate systems.
• To achieve these (and many other) capabilities, it is suggested to design
and construct WebApp functional components that are identical in form to
software components for conventional software.
Component Level Design
Designing Conventional Components
• The design of processing logic is governed by the basic principles of
algorithm design and structured programming.
• The design of data structures is defined by the data model developed
for the system.
• The design of interfaces is governed by the collaborations that a
component must effect.
Algorithm Design
• The closest design activity to coding
• The approach:
1. Review the design description for the component
2. Use stepwise refinement to develop algorithm
3. Use structured programming to implement procedural logic
4. Use ‘formal methods’ to prove logic
Component Level Design
Algorithm Design – Stepwise
Refinement
open
walk to door;
reach for knob;
Structured Programming
• Uses a limited set of logical constructs:
– Sequence
– Conditional – If-then-else, Select-case
– Loops – Do-while, Repeat until
• Leads to more readable, testable code
• Can be used in conjunction with “proof of
correctness”
• Important for achieving high quality, but not
enough
Component Level Design
Structured Procedural Design and
Decision Table
Component Level Design
Program Design Language (PDL)
Component Level Design
Why Design Language?
• Machine readable and able to process
• Can be embedded with source code, therefore easier to maintain
• Can be represented in great detail, if designer and coder are different
• Easy to review
Component-based Development
• When faced with the possibility of reuse, the software team asks:
– Are commercial off-the-shelf (COTS) components available to implement
the requirement?
– Are internally-developed reusable components available to implement the
requirement?
– Are the interfaces for available components compatible within the
architecture of the system to be built?
• At the same time, they are faced with the following impediments to
reuse ...
Component Level Design
Impediments to Reuse
• Few companies and organizations have anything that even slightly
resembles a comprehensive software reusability plan.
• Although an increasing number of software vendors currently sell tools or
components that provide direct assistance for software reuse, the majority of
software developers do not use them.
• Relatively little training is available to help software engineers and
managers understand and apply reuse.
• Many software practitioners continue to believe that reuse is “more
trouble than it’s worth.”
• Many companies continue to encourage of software development
methodologies which do not facilitate reuse.
• Few companies provide incentives to produce reusable program
components.
Component Level Design
Component Based Software
Engineering (CBSE) Process
Component Level Design
Domain Engineering
1. Define the domain to be investigated.
2. Categorize the items extracted from the domain.
3. Collect a representative sample of applications in the domain.
4. Analyze each application in the sample.
5. Develop an analysis model for the objects.
Component-Based SE
• A library of components must be available
• Components should have a consistent structure
• A standard should exist, e.g.,
– OMG/CORBA
– Microsoft COM
– Sun JavaBeans
CBSE Activities
• Component qualification
• Component adaptation
• Component composition
Component Level Design
CBSE Activities – Qualification
Before a component can be used, it is necessary to consider:
• Application programming interface (API)
• Development and integration tools required by the component
• Run-time requirements including resource usage (e.g., memory or
storage), timing or speed, and network protocol.
• Service requirements including operating system interfaces and
support from other components.
• Security features including access controls and authentication protocol.
• Embedded design assumptions including the use of specific numerical
or non-numerical algorithms.
• Exception handling
Component Level Design
CBSE Activities – Adaptation
The implication of “easy integration” is:
(1) that consistent methods of resource management have been implemented for
all components in the library;
(2) that common activities such as data management exist for all components,
and
(3) that interfaces within the architecture and with the external environment
have been implemented in a consistent manner.
SUN JavaBeans
• The JavaBeans component system is a portable, platform independent CBSE
infrastructure developed using the Java programming language.
• The JavaBeans component system encompasses a set of tools, called the
Bean Development Kit (BDK), that allows developers to
– Analyze how existing Beans (components) work
– Customize their behavior and appearance
– Establish mechanisms for coordination and communication
– Develop custom Beans for use in a specific application
– Test and evaluate Bean behavior.
Component Level Design
Classification
• Enumerated classification—Components are described by defining a
hierarchical structure in which classes and varying levels of subclasses of
software components are defined.
• Faceted classification—A domain area is analyzed and a set of basic descriptive
features are identified.
• Attribute-value classification—A set of attributes are defined for all components
in a domain area.
Component Level Design
Reuse Environment
• A component database capable of storing software components and the
classification information necessary to retrieve them.
• A library management system that provides access to the database.
• A software component retrieval system (e.g., an object request broker) that
enables a client application to retrieve components and services from the
library server.
• CBSE tools that support the integration of reused components into a new
design or implementation.
User Interface Design
Interface Design
• Easy to learn?
• Easy to use?
• Easy to
understand?
User Analysis
• Are users trained professionals, technician, clerical, or manufacturing
workers?
• What level of formal education does the average user have?
• Are the users capable of learning from written materials or have they
expressed a desire for classroom training?
• Are users expert typists or keyboard phobic?
• What is the age range of the user community?
• Will the users be represented predominately by one gender?
• How are users compensated for the work they perform?
• Do users work normal office hours or do they work until the job is done?
User Interface Design
User Interface Design Process – Interface Analysis
User Analysis
• Is the software to be an integral part of the work users do or will it be
used only occasionally?
• What is the primary spoken language among users?
• What are the consequences if a user makes a mistake using the system?
• Are users experts in the subject matter that is addressed by the system?
• Do users want to know about the technology the sits behind the
interface?
• Will graphical output be scaled to fit within the bounds of the display
device that is used?
Design Issues
• Response time
• Help facilities
• Error handling
• Menu and command labeling
• Application accessibility
• Internationalization
User Interface Design
WebApp Interface Design
• Where am I?
The interface should
– Provide an indication of the WebApp that has been accessed
– Inform the user of her location in the content hierarchy.
• Emphasize content.
• Interaction Analysis - The manner in which the user interacts with the
WebApp is described in detail. Use-cases can be developed to provide
detailed descriptions of this interaction.
• Sequence diagrams
• State diagrams
• User interface
prototype
Web Application Design
Interaction Model - Sequence
diagram
Web Application Design
Interaction Model - State diagram
Web Application Design
Functional Model
• The functional model addresses two processing elements of the WebApp
– User observable functionality that is delivered by the WebApp to end-
users
– The operations contained within analysis classes that implement
behaviors associated with the class.
• An activity diagram can be used to represent processing flow
Web Application Design
Functional Model - Activity diagram
Web Application Design
Configuration Model
• Server-side
– Server hardware and operating system environment must be specified
– Interoperability considerations on the server-side must be considered
– Appropriate interfaces, communication protocols and related
collaborative information must be specified
• Client-side
– Browser configuration issues must be identified
– Testing requirements should be defined
Web Application Design
Navigation Modeling
• Should certain elements be easier to reach (require fewer navigation
steps) than others? What is the priority for presentation?