Ieee Ised2010
Ieee Ised2010
net/publication/232623363
CITATIONS READS
0 9,321
1 author:
Debajyoti Mukhopadhyay
Bennett University
275 PUBLICATIONS 2,057 CITATIONS
SEE PROFILE
All content following this page was uploaded by Debajyoti Mukhopadhyay on 31 July 2014.
Plenary Talk - 5
A Practitioner’s Approach to Software System Design
Debajyoti Mukhopadhyay
Web Intelligence & Distributed Computing Research Lab
Calcutta Business School, D.H. Road, Bishnupur 743503, India
[email protected]
Abstract: How to design an efficient and cost effective software software engineers is to produce high-quality software with a
system is a million dollar question to every software engineer. The finite amount of resources and to a predicted schedule.
challenges lie in the fact that there is no such fixed rules and
regulations, following which will produce an efficient software The attributes of a software product are the characteristics
system. Practitioners have proposed many solutions to address this
displayed by the product once it is installed and put into use.
issue. In this discussion, we will try to touch base on some of the
vital points which a practitioner is encouraged to adapt in order to
These are not the services provided by the product. Rather,
lead a team of software engineers to produce cost effective efficient they are concerned with the product’s dynamic behavior and
system. the use made of the product. Examples of these attributes are
therefore maintainability, dependability, efficiency, usability,
Keywords: Software Development Life Cycle, SRS and so on.
document, Cohesion, Coupling, , Re-usability.
Maintainability: It should be possible to evolve software to
1. Introduction meet the changing needs of customers.
The job of a software engineer is to find best way of Dependability: Software dependability includes a range of
producing software product. We will try to find out what are characteristics including reliability, security and safety.
the best practices in order to achieve that goal. It is important Dependable software should not cause physical or economic
to understand what is meant by software product. Software damage in the event of system failure.
products fall into two broad classes: A) Generic Products:
These are stand-alone systems which are produced by a Efficiency: Software should not make wasteful use of system
development organization and sold on the open market to any resources such as memory and processor cycles.
customer who is able to buy them. B) Bespoke (customized)
Products: These are systems which are commissioned by a Usability: Software should have an appropriate user interface
particular customer. The software is developed specially for and adequate documentation.[1][2][3][4]
that customer by some contractor.
3. The Software Process
The procedures of software development and the software
engineering methods which may be used are the same for The software process is the set of activities and associated
software products and bespoke systems. The most significant results which produce a software product. These activities are
difference is that generic product specifications are produced mostly carried out by software engineers. Computer Aided
internally by the marketing department of the product Software Engineering tools (CASE tools for short) may be
company. They reflect what they think will sell. They are used to help with some process activities.[5]
usually flexible and non-prescriptive. By contrast,
specifications for bespoke systems are often the basis for the There are four fundamental process activities which are
contract between customer and contractor. They are usually common to all software processes. The activities are:
defined in detail and changes have to be negotiated and
carefully estimated in terms of cost. 1. Software Specification: The functionality of the software
and constraints on its operation must be defined.
2. Software Product Attributes 2. Software Development: The software to meet the
specification must be produced.
Like all engineering, software engineering is not just about 3. Software Validation: The software must be validated to
producing products but involves producing products in a cost- ensure that it does what the customer wants.
effective way. Given unlimited resources, the majority of 4. Software Evolution: The software must evolve to meet
software problems can probably be solved. The challenge for changing customer needs.
The first two of these approaches, namely the waterfall 3.2 Phases in Waterfall Model
approach and evolutionary development, are now widely used
for practical systems development. Some systems have been 3.2.1 Phase 1 – Problem Definition
built using correctness-preserving transformations but this is
still an experimental process. Many people consider problem definition to be the most
important phase. It defines the user requirements, or what the
3.1 The Waterfall Model user expects the system to do, and thus sets the direction for
the whole project. This phase also sets the project bounds,
The waterfall model or the linear cycle has been widely used which define what parts of the system can be changed by the
in the design of systems that can be easily understood and project what parts are to remain the same. The resources to be
which have well-defined workflows. It is a process that made available to the project are also specified in this phase.
specifies a sequence of steps to be followed by designers. The These three important factors: the project goal, project
linear cycle groups system development activities into a bounds and resource limits – are sometimes called the
sequence of consecutive phases. A phase in the sequence can project’s terms of reference. Because of their importance,
only commence once the previous phase has been completed. they are set by the organization’s management.
A report is produced at the end of each phase, describing what
has been achieved and outlining the plan for the next phase. The output of this phase defines the user requirements. It
The report also includes any system descriptions, new or consists of the project goal, its bounds and the terms of
expanded user requirements, design decisions and problems reference for the project. Furthermore, it may include any
21
restrictions on the project, such as the parts of the existing the new system. Analysts use many of the commonly used
system which cannot be changed, as well as those which can. systems analysis techniques, such as data flow diagrams and
data analysis. They also follow specified procedures in their
Resource limitations are also often specified at this time to search for information about the system. This calls for
indicate the funds and personnel available for the project. interviews with system users, questionnaires and other data-
This will include a rough idea of the resource requirements of gathering methods. Analysts must spend considerable time
each of the subsequent project phases. It will contain tentative examining components, such as the various forms used in the
start and completion dates for each phase and the number of system, as well as the operation of existing computer systems.
persons expected to be involved in each phase.
This phase results in a detailed model of the system. The
3.2.2 Phase 2 – Feasibility Study model describes the system functions, system data and system
information flows. The phase report contains any revisions to
The feasibility study proposes one or more conceptual project goals and cost-benefit estimates. It also contains a
solutions to the problem set for the project. The conceptual more detailed exposition of system problems than that given
solutions give an idea of what the new system will look like. in Phase 1. This exposition usually includes a detailed
They define what will be done on the computer and what will specification of user requirements. Such requirements are
remain manual. They also indicate what input will be needed used to set the objectives for the new system. Part of the
by the systems and what outputs will be produced. These management review of this phase is to reach an agreement on
solutions must be proven feasible and a preferred solution such objectives. Once agreement is reached, design can
must be accepted. commence. The output is validated against requirements and
the existing system. Validation in this case often incorporates
Three things must be done to establish feasibility. First, it is the ideas of structured walkthroughs.
necessary to check that the project is technically feasible.
Does the organization have the technology and skills 3.2.4 Phase 4 – System Design
necessary to carry out the project and, if not, how should the
required technology and skills be obtained? Second, This phase produces a design for the new system. There are
operational feasibility must be established. To do this it is many things to be done here. Designers must select the
necessary to consult the system users to see if the proposed equipment needed to implement the system. They must
solution satisfies user objectives and can be fitted into current specify new programs or changes to existing programs, as
system operation. Third, project economic feasibility needs to well as a new database or changes to existing database.
be checked. The study must determine whether the project’s Designers must also produce detailed procedures that describe
goal can be achieved within the resource limits allocated to it. how users will use the system.
It must also determine whether it is worthwhile to proceed
with the project at all, or whether the benefits obtained from System design usually proceeds in two steps: broad design
the new system are not worth the costs (in which case, the (Phase 4A) and detailed design (Phase 4B).
project will be terminated).
3.2.4.1 Phase 4A – Broad Design
Many beginners in systems analysis find the idea of a
conceptual solution hard to understand. All that is needed at During this phase, the conceptual solutions proposed by the
this stage is a very broad idea of the solution, enough to give feasibility study are looked at in more detail. Major new
potential users an estimate of whether it can work and how functions are proposed and changes to existing functions
much it is likely to cost. It is usually a good idea to consider a defined. Important inputs and outputs are also defined at this
number of possible solutions at this stage. point and performance requirements are specified. In
addition, broad design outlines which part of the system is to
One output of a feasibility study is a preferred conceptual be automated and which will remain manual. Thus, in our
solution together with the expected system costs and benefits. case, we may still consider such decisions as whether to place
It also includes a more detailed specification of what is needed the actual ordering on the computer or to have manual
of the new system. The plan in Phase 1 is now expanded to ordering and only use the computer for dissemination of data.
show the resource requirements for each phase. The phase Alternative automation boundaries may therefore be
output is validated against the user requirements. considered and their costs evaluated in this phase.
3.2.3 Phase 3 – Systems Analysis At the conclusion of broad design we may know what we
need in order to build the system. This may include the size
This phase is a detailed appraisal of the existing system and of the computer and the software needed to put the system
included finding out how the system works what it does. It together. It will also state which software can be purchased
also includes finding out in more detail what the system off-the-shelf and which requires new programs to be
problems are and what users require of any new or changed developed. The design may also suggest whether the
system. Following this phase, analysts should be familiar with computer should be rented or purchased and whether
the detailed operation of the system and what is required of
22
programs are to be developed using internal programmers or in nature and can be re-used as much as possible instead of in
external contractors. re-inventing the wheel thus saving time and cost.
Like the design phase, this phase is also often broken up into
two smaller phases: development and implementation. The
individual system components are built during the
development period. Programs are written and tested and user
interfaces developed and tried by users. The database is
initialized with data. During implementation, the components
built during development are put into operational use. Usually
this means that the new and old systems are run in parallel for
some time. To complete the changeover, users must be
trained in system operation and any existing procedures
converted to the new system. One important part of
construction is testing. It is necessary to test all modules to
ensure they work without any errors once they are put into
operation. Testing itself can be a process on its own. We first
test individual modules, then we test their interfaces and see
how they work together. At the end of this phase, users are
provided with a working system.
4. Conclusions
23