<< Chapter < Page Chapter >> Page >
This module provides an introduction to the principles and concepts relevant to the software design. It examines the role and context of the design activity as a form of problem-solving process, describes how this is supported by current design methods, and considers the strategies, strengths, limitations, and main domains of application of these methods.

Introduction

Software design is a process of defining the architecture, components, interfaces, and other characteristics of a system or component and planning for a software solution. After the purpose and specifications of software is determined, software developers will design or employ designers to develop a plan for a solution.

A software design may be platform-independent or platform-specific, depending on the availability of the technology called for by the design.

Viewed as a process, software design is the software engineering life cycle activity in which software requirements are analyzed in order to produce a description of the software’s internal structure that will serve as the basis for its construction. More precisely, a software design (the result) must describe the software architecture and the interfaces between those components. It must also describe the components at a level of detail that enable their construction.

Software design plays an important role in developing software: it allows software engineers to produce various models that form a kind of blueprint of the solution to be implemented. We can analyze and evaluate these models to determine whether or not they will allow us to fulfill the various requirements. We can also examine and evaluate various alternative solutions and trade-offs. Finally, we can use the resulting models to plan the subsequent development activities, in addition to using them as input and the starting point of construction and testing.

In a standard listing of software life cycle processes such as IEEE/EIA 12207 Software Life Cycle Processes, software design consists of two activities that fit between software requirements analysis and software construction:

  • Software architectural design (sometimes called top-level design): describing software’s top-level structure and organization and identifying the various components.
  • Software detailed design: describing each component sufficiently to allow for its construction.

Concepts of software design

The concepts, notions, and terminology introduced here form an underlying basis for understanding the role and scope of software design.

General design concepts

Software is not the only field where design is involved. In the general sense, we can view design as a form of problem-solving. For example, the concept of a wicked problem–a problem with no definitive solution–is interesting in terms of understanding the limits of design. A number of other notions and concepts are also of interest in understanding design in its general sense: goals, constraints, alternatives, representations, and solutions.

Context of software design

To understand the role of software design, it is important to understand the context in which it fits, the software engineering life cycle. Thus, it is important to understand the major characteristics of software requirements analysis vs. software design vs. software construction vs. software testing.

Questions & Answers

find the equation of the tangent to the curve y=2x³-x²+3x+1 at the points x=1 and x=3
Esther Reply
derivative of logarithms function
Iqra Reply
how to solve this question
sidra
ex 2.1 question no 11
khansa
anyone can help me
khansa
question please
Rasul
ex 2.1 question no. 11
khansa
i cant type here
khansa
Find the derivative of g(x)=−3.
Abdullah Reply
any genius online ? I need help!!
Guzorochi Reply
how can i help you?
Pina
need to learn polynomial
Zakariya
i will teach...
nandu
I'm waiting
Zakariya
plz help me in question
Abish
How can I help you?
Tlou
evaluate the following computation (x³-8/x-2)
Murtala Reply
teach me how to solve the first law of calculus.
Uncle Reply
teach me also how to solve the first law of calculus
Bilson
what is differentiation
Ibrahim Reply
only god knows😂
abdulkadir
f(x) = x-2 g(x) = 3x + 5 fog(x)? f(x)/g(x)
Naufal Reply
fog(x)= f(g(x)) = x-2 = 3x+5-2 = 3x+3 f(x)/g(x)= x-2/3x+5
diron
pweding paturo nsa calculus?
jimmy
how to use fundamental theorem to solve exponential
JULIA Reply
find the bounded area of the parabola y^2=4x and y=16x
Omar Reply
what is absolute value means?
Geo Reply
Chicken nuggets
Hugh
🐔
MM
🐔🦃 nuggets
MM
(mathematics) For a complex number a+bi, the principal square root of the sum of the squares of its real and imaginary parts, √a2+b2 . Denoted by | |. The absolute value |x| of a real number x is √x2 , which is equal to x if x is non-negative, and −x if x is negative.
Ismael
find integration of loge x
Game Reply
find the volume of a solid about the y-axis, x=0, x=1, y=0, y=7+x^3
Godwin Reply
how does this work
Brad Reply
Can calculus give the answers as same as other methods give in basic classes while solving the numericals?
Cosmos Reply
log tan (x/4+x/2)
Rohan
please answer
Rohan
y=(x^2 + 3x).(eipix)
Claudia
is this a answer
Ismael
Got questions? Join the online conversation and get instant answers!
Jobilize.com Reply

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Software engineering. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10790/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Software engineering' conversation and receive update notifications?

Ask