Softwer Eng
Softwer Eng
A system is an orderly grouping of interdependent components linked together according to a plan to achieve
a specific goal/objective. A system is defined as, "a collection of related components that interact to perform a
task in order to accomplish a goal".
The functioning units of a system mean the basic elements of the system which are interrelated. These are the
basic components of the system. Every system is made up of a set of interrelated elements or basic
components. These components are the various parts of a system.
All the characteristics of the system are determined by the system elements, their properties and relationships.
The basic system elements are Input, Processor and Output . Universal model of a system is made up of system
elements like input, processor and output using basic concept like control and feedback to keep the system
balance.
4. Types of system
The system is classified in different types on the basis of its analysis. Some types of systems are explained
below: 1. Conceptual (abstract) and Physical Systems The conceptual system is also known as abstract or
analytical system. It is non- physical system. Abstract Systems are represented conceptually (i.e. not existing)
non-physical systems are called abstract system. These systems are prepared for studying the physical system.
For example, the computer itself is a physical system and its block diagram is called as abstract system.
5. System component
A system is a group of interrelated components working together toward a common goal or objective by
accepting inputs and producing outputs in an organized transformation process. A system component is a
process, program, utility, or another part of a computer's operating system that helps to manage different
areas of the computer. A system has following system components: 1. Components 2. Inter-related
components3. Boundary 4. A purpose 5. An environment 6. Interfaces
1. defination of software
Software is more than just a program code. A program is an executable code, which serves some
computational purpose. Software is considered to be collection of executable programming code, associated
libraries and documentations. Software when made for a specific requirement is called software product. A
software product has to perform certain specific function/task required by users (customers).
2. Characteristics of software
There are some similarities between software development and hardware manufacturing that is high quality is
achieved through good design, but the manufacturing phase for hardware can introduce quality problems that
are non- existence (or easily corrected) for software.Software costs are condensing in engineering. This means
that software projects cannot be managed as if they were manufacturing projects.
Computer software is a product that design and built by software engineers. They develop product by using
software engineering approach. Software has becomes the key element in the evolution of computer based
system and product.Software engineering is concerned with development and maintenance of technological
products, problem solving techniques which are followed in all engineering disciplines like project planning,
project management, system analysis, design and outgoing maintenance activities within cost estimates.
The need of software engineering arises because of higher rate of change in user requirements and
environment on which the software is working. A major challenge for software engineering today is to improve
the software programming process as modern software life cycle has been changing very dramatically, wherein
the code re-usability, reliability and maintainability are the key features.
Quality factor refers to the characteristics of a product or service which define its ability to satisfy user
requirements. In software engineering, software quality depends on various characteristics such as correctness,
reliability and efficiency. These characteristics are used as a checklist to implement quality in software and
ensure that the software meets all the quality standards and specifications. • IEEE defines software quality as,
"the degree to which a system, component, or process meets specified requirements."
Software is developed/engineered effectively and efficiently with the help of processes (activities). In general a
process is defined as, "a series of steps involving activities and resources which produces the desired/expected
output." Software process is defined as, "the related set of activities and processes that are involved in
developing and evolving a software system."
The final software that is delivered to the customer with documentation is called the software product. It is the
outcome of the entire software development process. It describes how to install and use the system. It may
include source code, data, user guides, reference manuals, installation manuals, specification documentation,
other documentation, etc.The software product does not have any information regarding the software process,
like how it was scheduled, how many people worked on it, how the work was divided, etc. It only consists of
the final application that fulfills the user's requirements. In certain cases, software products may be part of
system products where hardware, as well as software, is delivered to a customer.Types of software products:
Software products fall into two broad categories:
1. Generic products: Generic products are the stand-alone systems that are developed by a production unit
and sold on the open market to any customer who is able to buy them.
2. Customized Products: Customized products are the systems that are commissioned by a particular
customer. Some contractor develops the software for that customer.
A software life cycle model is a particular abstraction that represents a software life cycle. A software life cycle
model is often called a Software Development Life Cycle (SDLC). Software Development Life Cycle (SDLC) was
developed by the National Computing Centre in 1960 for
developing large scale functional business systems. A SDLC can be defined as, "a process or series of
steps or phases that provide a model for the development of high quality software".
2. Activity of SDLS
The process used to create a software product from scratch to its public release is called Software
Development Process (Life cycle) model. The characterized software development process models consist of
three generic phases i.e., Definition, Development and Maintenance1.
A software process is a set of activities and associated results, which produce a software product. A software
process model is an abstract representation of a software process. A process model is defined as, "a model of a
process system that describes process organization, categorization, hierarchy, interrelationship, and
tailorability".
The waterfall model was first process model. It is also referred to as a linear- sequential life cycle model or
'Classic life cycle model'. This model is very simple to understand and use. It is traditional software lifecycle
model and best understood by upper management. In waterfall model, a work flow is in a linear (sequential)
fashion. The waterfall model often used with well-defined adaptations or enhancements to current software.
5. V and v model
A contemporary of traditional software development model is 'V-Model'. V-Model also referred to as the
Verification and Validation Model. This is an extension of the Waterfall model.
In this, each phase of SDLC must complete before the next phase starts. It follows a sequential design process
same as the waterfall model. Testing of the device is planned in parallel with a corresponding stage of
development.
The incremental model is defined as, "a model of software development where the product is designed,
implemented and tested incrementally (a little more is added each time) until the product is finished." In
incremental model, Multiple development cycles take place that making the software life cycle a
multi-waterfall. In this model, cycles are divided up into smaller, more easily managed modules.
7. Prototypical model
Prototyping follows an evolutionary and iterative approach. It provides a working model to the user early in
the process, enabling early assessment and increasing user's confidence. Prototyping is used when
requirements are not well understood. The software prototyping refers to building software application
prototypes which display the functionality of the product under development but may not actually hold the
exact logic of the original software • Prototype (an early approximation of a final system or product and
developed based on the currently known requirements) is a working model of software with some limited
functionality. A prototype gives the user an actual view and feel of the system
8. Spiral model
IEEE defines, the spiral model as, "a model of the software development process in which the constituent
activities, typical requirements analysis, preliminary and detailed design, coding, integration and testing are
performed iteratively until the software is complete" Spiral model was invented by Dr. Barry Boehm in 1988. It
follows an evolutionary approach. • Spiral Model is a combination of a waterfall model and iterative model.
Each phase in spiral model begins with a design goal and ends with the client reviewing the progress.
4. Requirment engineering
Designing and building computer software is challenging job. The software requirements are description of
features and functionalities of the target system. Requirement is a condition possessed by the software or
system component in order to solve real-world problems. The problems can be to automate a part of system,
to correct the shortcomings of an existing system, to control a device and so on. IEEE defines
requirement as, "a condition or capability needed by a user to solve problem or achieve an objective/goal."
2. Requirment elicitation
Elicitation means asking the customer, the user, and other people about the objectives for system or product.
In other words, This is also known as the gathering of requirements. Here, requirements are identified with
the help of customers and existing systems processes, if available. Eliciting requirements is difficult because
of: Problem of scope: The customer gives the unnecessary technical detail rather than clarity of the overall
system objective. Problem of understanding: Poor understanding between the customer and the developer
regarding various aspect of the project like capability, limitation of the computing environment. Problem of
Volatility: In this problem, the requirements change from time to time and it is difficult while developing the
project.
3. Requirment elaboratation
Elaboration means refinement of requirement analysis and design. During elaboration, the software
engineer takes the information obtained from customer during inception and elicitation is expanded and
refined during elaboration. Elaboration focuses on developing a refined technical model of software
functions, features, and constraints. . It is an analysis modeling task. In this task:
2. Domain classes are identified along with their attributes and relationships.
4. Requirment gathering
Involves customer interaction with the development team. Collects all relevant information regarding the
software which is to be developed from the user requirement. Combines all the aspects of problem solving,
elaboration, negotiation, and specification All the stakeholders work together to identify the problem, propose
elements of the solution, negotiate and compromise on different approaches and then specify a preliminary
set of solution requirements.
5. Feasibility study
Feasibility is the practical extent to which a project can be performed successfully. To evaluate feasibility, a
feasibility study is performed, which determines whether the solution considered to accomplish the
requirements is practical and workable in the software. Information such as resource availability, cost
estimation for software development, benefits of the software to the organization after it is developed and
cost to be incurred on its maintenance are considered during the feasibility study. The objective/goal of the
feasibility study is to establish the reasons for developing the software that is acceptable to users, adaptable to
change and conformable to established standards. Various other objectives/goals of feasibility study are listed
below.
To develop any system the user (systems analyst) needs to do collect facts and all relevant information. The
facts when expressed in quantitative form are termed as data. The success of any project is depended upon
the accuracy of available data. Accurate information can be collected with help of certain techniques. These
specific techniques Fact finding is the formal process of using research, interviews, questionnaires, and other
techniques to collect information about systems, requirements, and preferences.
7. SRS format
A software requirements specification (SRS) is a document that captures complete description about how the
system is expected to perform. The SRS needs to be correct, complete, consistent, updatable, verifiable etc. It
is usually signed off at the end of requirements engineering phase.
A decision tree is a decision support analysis and design tool that uses a tree-like graph or model of decisions
and their possible consequences. Decision tree is a diagram that represents conditions and actions
sequentially. It shows which condition to consider first, which second and so on. It also shows the relationship
of each condition and its permissible action In other words, in a decision tree each branch node represents a
choice between a number of alternatives, and each leaf node represents a classification or decision.
A decision table is a graphical method for explaining the logic of making decisions in tabular format. A
decision table is a matrix representation of logic of decisions that specify the possible conditions for decision
and resulting actions. A Decision Table (DT) is defined as, "a tabular representation used to describe and
analyze decision situations, where the state of a number of conditions determines the execution of a set of
actions".
IEEE defines Data Flow Diagram (DFD) as, "a diagram that depicts data sources, data storage, and processes
performed on data as nodes, and logical flow of data as links between the nodes." The Data Flow Diagram is a
graphical representation of the flow of data through an information system. A data-flow diagram also known
as Bubble Chart or Work Flow Diagram. A DFD maps out the flow of information for any process or system. It
uses defined symbols like rectangles, circles and arrows, to show data inputs, outputs, storage points and the
routes between each destination.
4. Data dictionary
A Data Dictionary (DD) stores an organized collection of information about data and their relationships,
data-flows, data types, data stores, processes and so on. In addition, it helps users to understand the data
types and processes defined along `with their uses. It also facilitates the validation of data by avoiding
duplication of entries and provides the users with an online access to definitions. Definition: A data
dictionary refers to, "a collection of descriptions of the data objects or items in a system".
5. Element of DD
The data dictionary has following types of components or elements: data Element: Data element is the
fundamental level or the elementary item. Data elements are building blocks for all other data in the system. It
is a smallest unit of data which cannot be meaningfully decomposed. For example, Invoice number, invoice
date and amount due are the data elements. data Structure: Data structure is a group of data elements
handled as a unit. Data elements are grouped together to makeup a data structure. A data structure is a set of
data items that are related to one another and collectively describe a component in a
Advantages:
1. A DD manage the details in large systems and DD improves consistency. 2. It is used to locate omissions
and errors in the system. 3. A DD is used to communicate common meaning for all system elements.
4. It is a valuable reference in any organisation. 5. It improves analyst/user communication by establishing
consistent definitions of various elements, terms and procedures.
Disadvantages:
1. For large organization, a DD is grows rapidly in size and complexity. 2. A DD is difficult to maintain
manually. 3. Some users and analysts who may use other methods find it difficult to relearn their trade
and start to use DDs.
Software design is a process to conceptualize the software requirements into software implementation.
Software design takes the user requirements as challenges and tries to find optimum solutions. While the
software is being conceptualized, a plan is written to find the best possible design for implementing the
proposed solution.
The structured design is a disciplined approach to computer system design. Structured design was developed
by Ed Yourdon and Larry Constantine. This technique deals with the size and complexity of a program by
breaking up the program into a hierarchy of modules which result in a computer program. These modules are
easier to implement and maintain Structured system design is a step-by-step methodology which produces a
software structure.
9. Structure chart
A structure chart is a hierarchy diagram. These charts are used to graphically depict a modular design of a
program.Specially, they show how the program has been partitioned into smaller more manageable modules,
the hierarchy and organization of those modules and the communication interface between modules. However,
structure chart do not show the internal procedures performed by the module or the internal data used by the
module.
A module is a logically separable part of a program which is discrete and identifiable with respect to compile
and load. In the systems using functional abstraction, a module is usually a procedure of function or a
collection of these. In modular design, some criteria must be used to select module so that it will support
11. Compuling
In the system which uses functional abstraction, coupling and cohesion are the two criteria's for
modularization. The two modules are independent if they can function completely without the presence of
other modules. If they are independent, they are solvable and modifiable separately. In the system it is not
possible to have all the modules independent. At least some interaction must be there. Coupling refers to
the interdependencies between modules. In other words, Coupling between modules is the strength of
interconnections between modules.
12. cohesion
Cohesion of the module determines how tightly it will be coupled to other modules in a system. Cohesion tells
up about the bound of internal elements of the module. Cohesion gives an idea about whether the different
elements of the module belong together in the same module to the designer. Cohesion and Coupling are
related with each other. More or greater cohesion gives minimum coupling.
Company ABC sells merchandise to wholesale and retail outlets. Wholesale customers receive a two percent
discount on all orders. The company also encourages both wholesale and retail customers to pay cash on
delivery by offering a two percent discount for this method of payment. Another two percent discount is given
on orders of 50 or more units. Each column represents a certain type of order. Draw decision table.
6. Softwer testing
According to ANSI/IEEE 1059 standard, testing can be defined as, "a process of analyzing a software item to
detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate
the features of the software item"
Manual testing includes testing a software manually, ie, without using any automated tool or any script.
Manual Testing: in this type, the tester takes over the role of an end-user and tests the software to identify
any unexpected behavior or bug.
Automation Testing: Automation testing, which is also known as 'test automation', is when the tester
writes scripts and uses another software to test the product. This process involves automation of a manual
process
3. Unit testing
Unit testing involves the testing of each unit or an individual component of the software application. It is the
first level of functional testing. • The goal of unit testing is to isolate each part of the program and show that
individual parts are correct in terms of requirements and functionality. A unit is a single testable part of a
software system and tested during the development phase of the application software.
4. Varification and validation testing
Unit testing involves the testing of each unit or an individual component of the software application. It is the
first level of functional testing. • The goal of unit testing is to isolate each part of the program and show that
individual parts are correct in terms of requirements and functionality. A unit is a single testable part of a
software system and tested during the development phase of the application software.
5. Integration testing
As the components are constructed and tested then they are linked together to check if they work with each
other. It is a fact that two components that have passed all their tests, when connected to each other produce
one new component full of faults. These tests can be done by specialists, or by the developers. Integration
testing is focused on how they communicate with each other, as specified in the "system design (defines
relationships between components)".
6. System testing
IEEE defines system testing as, "a testing conducted on a complete, integrated system to evaluate the system's
compliance with its specified requirement". System testing during development involves integrating
components to create a version of the system and then testing that integrated system. System testing checks
that components are compatible, interact correctly and transfer the right data at the right time across their
interfaces. Components developed by different team members or groups may be integrated at this stag
Software maintenance stands for all the modifications and updates done after the delivery of software
products. Failures continue to be discovered in software for years. Software maintenance is the set of activities,
both technical and managerial, that ensures that software continues to meet organizational and business
objectives in a cost effective way.Software maintenance is defined as, "the totality of activities required to
provide cost-effective support to software activities are performed during the pre-delivery stage as well as
during the post-delivery stage as explained below: . Pre-delivery activities include planning for post-delivery
operations, maintainability, and logistics determination for transition activities. Post-delivery activities
include software modification, training, and operating or interfacing to a help desk.
2. Softwer re-engineering
Reengineering is defined as, "the systematic transformation of an existing system into a new form to realize
quality improvements in operation, system capability, functionality, performance, or evolvability at a lower
cost, schedule or risk to the customer".
3. Revers engineering
It is a process to achieve system specification by thoroughly analyzing, understanding the existing system. This
process can be seen as reverse SDLC model, i.e. we try to get higher abstraction level by analyzing lower
abstraction levels. An existing system is previously implemented design, about which we know nothing.
Designers then do reverse engineering by looking at the code and try to get the design. With design in hand,
they try to conclude the specifications going in reverse from code to system specification.