1.what Is System Decomposition?
1.what Is System Decomposition?
Decomposition is breaking a complex problem or system into parts that are easier to
conceive, understand, program, and maintain.
➢ In structured programming, algorithmic decomposition breaks a process down
into well-defined steps.
➢ Object-oriented decomposition, on the other hand, breaks a large system down
into progressively smaller classes or objects that are responsible for some part
of the problem domain.
Decomposition techniques works on “Divide and Conquer” approach in software
project estimation. By decomposition a project is divided into different components
and related software engineering activities. Cost and effort estimation can be
performed step by step on each component.
Software cost estimation is a form to solve the problems. Most of the times problem
to be solved is too complex to be solve in a single step. Than the problem is
decomposed in to number of components in order to achieve an accurate cost
estimate.
• Systems analysis
• Systems design
What is a System?
A system is “an orderly grouping of interdependent components linked together according to a plan
to achieve a specific goal.”
Properties of a System
A system has the following properties −
Organization
Organization implies structure and order. It is the arrangement of components that helps to achieve
predetermined objectives.
Interaction
It is defined by the manner in which the components operate with each other.
For example, in an organization, purchasing department must interact with production department
and payroll with personnel department.
Interdependence
Interdependence means how the components of a system depend on one another. For proper
functioning, the components are coordinated and linked together according to a specified plan. The
output of one subsystem is the required by other subsystem as input.
Integration
Integration is concerned with how a system components are connected together. It means that the
parts of the system work together within the system even if each part performs a unique function.
Central Objective
The objective of system must be central. It may be real or stated. It is not uncommon for an
organization to state an objective and operate to achieve another.
The users must know the main objective of a computer application early in the analysis for a
successful design and conversion.
Elements of a System
The following diagram shows the elements of a system −
Processor(s)
• The processor is the element of a system that involves the actual transformation of input into
output.
• It is the operational component of a system. Processors may modify the input either totally or
partially, depending on the output specification.
• As the output specifications change, so does the processing. In some cases, input is also
modified to enable the processor for handling the transformation.
Control
• The control element guides the system.
• It is the decision–making subsystem that controls the pattern of activities governing input,
processing, and output.
• The behavior of a computer System is controlled by the Operating System and software. In
order to keep system in balance, what and how much input is needed is determined by Output
Specifications.
Types of Systems
The systems can be divided into the following types −
Example:
The below example, best describes the Functional Decomposition:
The process decomposition diagram (often called a decomp) explains the breakdown of processes
within a project or business area or functional area. The purpose is to show all the processes and
identify relationships and dependencies among them. Note that a decomp doesn’t drill into the how; it
merely outlines the what.
The process decomposition diagram actually functions very similarly to an org chart in that the
processes in this diagram relate to one another like the people on an organization chart relate to each
other: Just as all the workers reporting to one manager make up all the work under that manager, all
the processes under a higher process make up all the work of that process.
Processes that have processes underneath are called parent processes. Processes that report into
another process are called child processes. Designating parent and child processes follows a couple
of guidelines:
• If you break down a parent process, you must break it into at least two children; otherwise it’s not a
true parent.
• All the child processes together must completely describe all the activities in the parent process.
The diagram doesn’t follow any defined sequence. For instance, you don’t have to check the weather
before you plan the flight. Similarly, you can check the weather in any of the locations in any order;
you don’t have to check it from origin to en route to destination because bad weather at any point
along the route prevents you from flying that route.
• When you’re working on a large project and need to understand the size of the work effort: Knowing
all the processes you have to document can help.
• When you’re validating with your stakeholders that you have captured all the processes you’ll
document: Stakeholders can very easily see whether you’ve missed a process.
• When you’re eliciting processes in scope from your stakeholders: The stakeholders are able to interact
with a diagram structure they’re very familiar with (in the company’s org chart).
• Pro: The decomp diagram is useful on larger projects (those with more than five processes to study
and document) because it gives you a snapshot of the big picture. On a large effort, it is easy to forget
which parent each child process belongs to and how each child relates to each other. This opens the
door to repeating processes for one or more parents.
• Pro: It’s a great tool early on in the scoping phase because it gives you an idea of how many processes
you have to define, which is important for time and resource estimates.
• Pro: It’s a great technique to get your stakeholders involved in if you have sticky notes handy. Give
your stakeholders the scope of what you’re decomposing and a pad of sticky notes, and have them
write down the processes (one per sheet) and then post them on the wall.
• Con: Stakeholders may get caught up in how a process is performed rather than what’s being
performed.
• Con: The diagram doesn’t show solutions or sequence of processes. Let your stakeholders know you’ll
get there. First you have to make sure you have defined them all.
2.a)Explain in detail about Interfaces in Software Design and
Implementation.
Software design and implementation is the stage in the software engineering at which an executable
software system is developed.
Software design and implementation is the stage in the software engineering process at which an
executable software system is developed.
Software design and implementation activities are invariably inter-leaved.
➢ Software design is a creative activity in which you identify software components and their
relationships, based on a customer’s requirements.
Thus, output of each stage of the design process is the input of the next stage. Stages continue until
a finished design is met which includes all the specification and work involved in the development of
the software.
Physical Design
Physical design relates to the actual input and output processes of the system. It focuses on how
data is entered into a system, verified, processed, and displayed as output.
It produces the working system by defining the design specification that specifies exactly what the
candidate system does. It is concerned with user interface design, process design, and data design.
It consists of the following steps −
• Specifying the input/output media, designing the database, and specifying backup procedures.
• Planning system implementation.
• Devising a test and implementation plan, and specifying any new hardware and software.
• Updating costs, benefits, conversion dates, and system constraints.
Architectural Design
It is also known as high level design that focuses on the design of system architecture. It describes
the structure and behavior of the system. It defines the structure and relationship between various
modules of system development process.
Detailed Design
It follows Architectural design and focuses on development of each module.
Symbol Meaning
Entity
Weak Entity
Relationship
Identity Relationship
Attributes
Key Attributes
Multivalued
Composite Attribute
Derived Attributes
Total Participation of
E2 in R
File Organization
It describes how records are stored within a file.
There are four file organization methods −
• Serial − Records are stored in chronological order (in order as they are input or
occur). Examples − Recording of telephone charges, ATM transactions, Telephone queues.
• Sequential − Records are stored in order based on a key field which contains a value that
uniquely identifies a record. Examples − Phone directories.
• Direct (relative) − Each record is stored based on a physical address or location on the device.
Address is calculated from the value stored in the record’s key field. Randomizing routine or
hashing algorithm does the conversion.
• Indexed − Records can be processed both sequentially and non-sequentially using indexes.
File Access
One can access a file using either Sequential Access or Random Access. File Access methods allow
computer programs read or write records in a file.
Sequential Access
Every record on the file is processed starting with the first record until End of File (EOF) is reached.
It is efficient when a large number of the records on the file need to be accessed at any given time.
Data stored on a tape (sequential access) can be accessed only sequentially.
Documentation Control
Documentation is a process of recording the information for any reference or operational purpose. It
helps users, managers, and IT staff, who require it. It is important that prepared document must be
updated on regular basis to trace the progress of the system easily.
After the implementation of system if the system is working improperly, then documentation helps the
administrator to understand the flow of data in the system to correct the flaws and get the system
working.
Programmers or systems analysts usually create program and system documentation. Systems
analysts usually are responsible for preparing documentation to help users learn the system. In large
companies, a technical support team that includes technical writers might assist in the preparation of
user documentation and training materials.
Advantages
• It can reduce system downtime, cut costs, and speed up maintenance tasks.
• It provides the clear description of formal flow of present system and helps to understand the
type of input data and how the output can be produced.
• It provides effective and efficient way of communication between technical and nontechnical
users about system.
• It facilitates the training of new user so that he can easily understand the flow of system.
• It helps the user to solve the problems such as troubleshooting and helps the manager to take
better final decisions of the organization system.
• It provides better control to the internal or external working of the system.
Types of Documentations
When it comes to System Design, there are following four main documentations −
• Program documentation
• System documentation
• Operations documentation
• User documentation
Program Documentation
• It describes inputs, outputs, and processing logic for all the program modules.
• The program documentation process starts in the system analysis phase and continues during
implementation.
• This documentation guides programmers, who construct modules that are well supported by
internal and external comments and descriptions that can be understood and maintained
easily.
Operations Documentation
Operations documentation contains all the information needed for processing and distributing online
and printed output. Operations documentation should be clear, concise, and available online if
possible.
It includes the following information −
• Program, systems analyst, programmer, and system identification.
• Scheduling information for printed output, such as report, execution frequency, and deadlines.
• Input files, their source, output files, and their destinations.
• E-mail and report distribution lists.
• Special forms required, including online forms.
• Error and informational messages to operators and restart procedures.
• Special instructions, such as security requirements.
User Documentation
It includes instructions and information to the users who will interact with the system. For example,
user manuals, help guides, and tutorials. User documentation is valuable in training users and for
reference purpose. It must be clear, understandable, and readily accessible to users at all levels.
The users, system owners, analysts, and programmers, all put combined efforts to develop a user’s
guide.
A user documentation should include −
• A system overview that clearly describes all major system features, capabilities, and limitations.
• Description of source document content, preparation, processing, and, samples.
• Overview of menu and data entry screen options, contents, and processing instructions.
• Examples of reports that are produced regularly or available at the user’s request, including
samples.
• Security and audit trail information.
• Explanation of responsibility for specific input, output, or processing requirements.
• Procedures for requesting changes and reporting problems.
• Examples of exceptions and error situations.
• Frequently asked questions (FAQs).
• Explanation of how to get help and procedures for updating the user manual.
System Documentation
System documentation serves as the technical specifications for the IS and how the objectives of the
IS are accomplished. Users, managers and IS owners need never reference system documentation.
System documentation provides the basis for understanding the technical aspects of the IS when
modifications are made.
• It describes each program within the IS and the entire IS itself.
• It describes the system’s functions, the way they are implemented, each program's purpose
within the entire IS with respect to the order of execution, information passed to and from
programs, and overall system flow.
• It includes data dictionary entries, data flow diagrams, object models, screen layouts, source
documents, and the systems request that initiated the project.
• Most of the system documentation is prepared during the system analysis and system design
phases.
• During systems implementation, an analyst must review system documentation to verify that it
is complete, accurate, and up-to-date, and including any changes made during the
implementation process.
Today, such features—concurrency mechanisms, the most important of which are discussed in this
article—are commonplace and form a vital part of all modern computer systems. The operating system
of any computer (e.g., Windows, UNIX, Linux) makes use of concurrency to enable the user to do
several different things simultaneously or to allow many different users to access the computer at the
same time. Many operating systems allow a large number of tasks to be run concurrently and the
simultaneous use of peripheral devices. The earliest applications of concurrency were in real-time
systems such as operating systems, in which the software must perform actions at times determined
by external events.
3.b)Explain about Mapping Models to Code.
During object design we would like to implement a system that realizes the use cases specified
during requirements elicitation and system design.Object design is situated between system design
and implementation. Object design is not very well understood and if not well done, leads to a bad
system implementation. Here, we describe a selection of transformations to illustrate a disciplined
approach to implementation to avoid system degradation.
1. Operations on the object model:
Optimizations to address performance requirements
2. Implementation of class model components:
Realization of associations
Realization of operation contracts
3. Realizing entity objects based on selected storage strategy
Mapping the class model to a storage schema.
Characteristics of Object Design Activities
Developers perform transformations to the object model to improve its modularity and performance.
Developers transform the associations of the object model into collections of object references,
because programming languages do not support the concept of association.
If the programming language does not support contracts, the developer needs to write code for
detecting and handling contract violations. Developers often revise the interface specification to
accommodate new requirements from the client.
▪ Better control of complex projects: This provides the development team with a clear
understanding of what, when, and why the software is to be delivered. The resources are
allocated according to user-driven priorities and relative implementation effort.
▪ Improved software quality: This ensures that the software performs according to the
requirements to enhance software quality. This can be achieved when the developers and testers
have a precise understanding of what to develop and test.
▪ Reduced project costs and delays: This minimizes errors early in the development cycle as it
is expensive to ‘fix’ errors at the later stages of the development cycle. As a result, the project
costs also reduce.
▪ Improved team communication: This facilitates early involvement of users to ensure that their
needs are achieved.
▪ Easing compliance with standards and regulations: This ensures that standards involved
with software compliance and process improvement have a thorough understanding of
requirements management. For example, CMM addresses requirements management as one of
the first steps to improve software quality.
▪ All the user requirements are specified in the software requirements specification. The project
manager as part of requirements management tracks the requirements for the current project
and those which are planned for the next release.
Requirements management starts with planning, which establishes the level of requirements
management needed. After planning, each requirement is assigned a unique ‘identifier’ so that it can
be crosschecked by other requirements. Once requirements are identified, requirements tracing is
performed.
Requirements tracing is a medium to trace requirements from the start of development process till
the software is delivered to the user. The objective of requirements tracing is to ensure that all the
requirements are well understood and included in test plans and test cases. Various advantages of
requirements tracing are listed below.
Trace ability techniques facilitate the impact of analysis on changes of the project, which is under
development. Traceability information is stored in a traceability matrix, which relates requirements to
stakeholders or design module. The traceability matrix refers to a table that correlates high-level
requirements with the detailed requirements of the product. Mainly, five types of traceability tables
are maintained. These are listed in Table.
In a traceability matrix, each requirement is entered in a row and column of the matrix. The
dependencies between different requirements are represented in the cell at a row and column
intersection. ‘U’ in the row and column intersection indicates the dependencies of the requirements
in the row on the column and ‘R’ in the row and column intersection indicates the existence of some
other weaker relationship between the requirements.
Table Types of Traceability Tables
1 Creational Patterns
These design patterns provide a way to create objects
while hiding the creation logic, rather than instantiating
objects directly using new operator. This gives program
more flexibility in deciding which objects need to be
created for a given use case.
2 Structural Patterns
These design patterns concern class and object
composition. Concept of inheritance is used to compose
interfaces and define ways to compose objects to obtain
new functionalities.
3 Behavioral Patterns
These design patterns are specifically concerned with
communication between objects.
4 J2EE Patterns
These design patterns are specifically concerned with
the presentation tier. These patterns are identified by
Sun Java Center.
2.b).Explain about the types of Testing in Software Engineering.
Testing is the process of evaluating a system or its component(s) with
the intent to find whether it satisfies the specified requirements or not.
Testing is executing a system in order to identify any gaps, errors, or
missing requirements in contrary to the actual requirements.
This tutorial will give you a basic understanding on software testing,
its types, methods, levels, and other related terminologies.
Why to Learn Software Testing?
In the IT industry, large companies have a team with responsibilities
to evaluate the developed software in context of the given
requirements. Moreover, developers also conduct testing which is
called Unit Testing. In most cases, the following professionals are
involved in testing a system within their respective capacities −
• Software Tester
• Software Developer
• Project Lead/Manager
• End User
Different companies have different designations for people who test
the software on the basis of their experience and knowledge such as
Software Tester, Software Quality Assurance Engineer, QA Analyst,
etc.
Applications of Software Testing
• Cost Effective Development - Early testing saves both time and
cost in many aspects, however reducing the cost without testing
may result in improper design of a software application rendering
the product useless.
• Product Improvement - During the SDLC phases, testing is
never a time-consuming process. However diagnosing and fixing
the errors identified during proper testing is a time-consuming but
productive activity.
• Test Automation - Test Automation reduces the testing time, but
it is not possible to start test automation at any time during
software development. Test automaton should be started when
the software has been manually tested and is stable to some
extent. Moreover, test automation can never be used if
requirements keep changing.
• Quality Check - Software testing helps in determining following
set of properties of any software such as
o Functionality
o Reliability
o Usability
o Efficiency
o Maintainability
o Portability
Audience
This tutorial is designed for software testing professionals who would
like to understand the Testing Framework in detail along with its types,
methods, and levels. This tutorial provides enough ingredients to start
with the software testing process from where you can take yourself to
higher levels of expertise.