Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Unit 1 and 2 Se

Download as pdf or txt
Download as pdf or txt
You are on page 1of 39

BCA-4TH SEM www.sbs.ac.

in

CLASS: BCA 4TH SEMESTER


BATCH:2021-2024

SUBJECT:SE

Notes as per IKGPTU Syllabus

NAME OF FACULTY: --ER MADHUR THAKRAL----------------------------

FACULTYOF IT DEPARTMENT, SBS COLLEGE. LUDHIANA

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

UNIT-I, UNIT-II

What is a Software?
Software, in its most general sense, is a set of instructions or programs instructing a computer to
do specific tasks. Software is a generic term used to describe computer programs. Scripts,
applications, programs and a set of instructions are all terms often used to describe software.
Institute of Electrical and Electronic Engineers (IEEE) defines software as a 'collection
of computer programs, procedures, rules and associated documentation and data.' It possesses no
mass, no volume, and no colour, which makes it a non-degradable entity over a long period.
Software does not wear out or get tired.
Software is often divided into three categories:

 System software serves as a base for application software. System software includes
device drivers, operating systems (OSs), compilers, disk formatters, text editors and
utilities helping the computer to operate more efficiently. It is also responsible for
managing hardware components and providing basic non-task-specific functions. The
system software is usually written in C programming language.
 Programming software is a set of tools to aid developers in writing programs. The
various tools available are compilers, linkers, debuggers, interpreters and text editors.
 Application software is intended to perform certain tasks. Examples of application
software include office suites, gaming applications, database systems and educational
software. Application software can be a single program or a collection of small programs.
This type of software is what consumers most typically think of as "software."

Software Characteristics
Different individuals judge software on different basis. This is because they are involved with
the software in different ways. For example, users want the software to perform according to
their requirements. Similarly, developers involved in designing, coding, and maintenance of the
software evaluate the software by looking at its internal characteristics, before delivering it to the
user. Software characteristics are classified into six major components.
• Functionality: Refers to the degree of performance of the software against its intended
purpose.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

• Reliability: Refers to the ability of the software to provide desired functionality under the
given conditions.
• Usability: Refers to the extent to which the software can be used with ease.
• Efficiency: Refers to the ability of the software to use system resources in the most effective
and efficient manner.
• Maintainability: Refers to the ease with which the modifications can be made in a software
system to extend its functionality, improve its performance, or correct errors.
• Portability: Refers to the ease with which software developers can transfer software from one
platform to another, without (or with minimum) changes. In simple terms, it refers to the ability
of software to function properly on different hardware and software platforms without making
any changes in it.

Classification of Software
Software can be applied in countless fields such as business, education, social sector, and other
fields. It is designed to suit some specific goals such as data processing, information sharing,
communication, and so on. It is classified according to the range of potential of applications.
These classifications are listed below.
• System software: This class of software manages and controls the internal operations of a
computer system. It is a group of programs, which is responsible for using computer resources
efficiently and effectively. For example, an operating system is a system software, which
controls the hardware, manages memory and multitasking functions, and acts as an interface
between application programs and the computer.
• Real-time software: This class of software observes, analyzes, and controls real world events
as they occur. Generally, a real-time system guarantees a response to an external event within a
specified period of time. An example of real-time software is the software used for weather
forecasting that collects and processes parameters like temperature and humidity from the
external environment to forecast the weather. Most of the defence organizations all over the
world use real-time software to control their military hardware.
• Business software: This class of software is widely used in areas where management and
control of financial activities is of utmost importance. The fundamental component of a business
system comprises payroll, inventory, and accounting software that permit the user to access
relevant data from the database. These activities are usually performed with the help of
specialized business software that facilitates efficient framework in business operations and in
management decisions.
• Engineering and scientific software: This class of software has emerged as a powerful tool in
the research and development of next generation technology. Applications such as the study of

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

celestial bodies, under-surface activities, and programming of an orbital path for space shuttles
are heavily dependent on engineering and scientific software. This software is designed to
perform precise calculations on complex numerical data that are obtained during real time
environment.
• Artificial intelligence (AI) software: This class of software is used where the problem-solving
technique is non-algorithmic in nature. The solutions of such problems are generally non-
agreeable to computation or straightforward analysis. Instead, these problems require specific
problem-solving strategies that include expert system, pattern recognition, and game-playing
techniques. In addition, they involve different kinds of search techniques which include the use
of heuristics. The role of artificial intelligence software is to add certain degrees of intelligence
to the mechanical hardware in order to get the desired work done in an agile manner.
• Web-based software: This class of software acts as an interface between the user and the
Internet. Data on the Internet is in the form of text, audio, or video format, linked with
hyperlinks. Web browser is a software that retrieves web pages from the Internet. The software
incorporates executable instructions written in special scripting languages such as CGI or ASP.
Apart from providing navigation on the Web, this software also supports additional features that
are useful while surfing the Internet.

• Personal computer (PC) software: This class of software is used for both official and
personal use. The personal computer software market has grown over in the last two decades
from normal text editor to word processor and from simple paintbrush to advanced image-editing
software. This software is used predominantly in almost every field, whether it is database
management system, financial accounting package, or multimedia-based software. It has
emerged as a versatile tool for routine applications.

Software Process
A software process (also known as software methodology) is a set of related activities that leads
to the production of the software. These activities may involve the development of the software
from the scratch, or, modifying an existing system.

Any software process must include the following four activities:

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

1. Software specification (or requirements engineering): Define the main functionalities of the
software and the constrains around them.

2. Software design and implementation: The software is to be designed and programmed.

3. Software verification and validation: The software must conforms to it’s specification and
meets the customer needs.

4. Software evolution (software maintenance): The software is being modified to meet


customer and market requirements changes.

Software Process Models


A software process model is a simplified representation of a software process. Each model
represents a process from a specific perspective.
The waterfall model is a sequential approach, where each fundamental activity of a process
represented as a separate phase, arranged in linear order.

In the waterfall model, you must plan and schedule all of the activities before starting working on
them (plan-driven process).
Plan-driven process is a process where all the activities are planned first, and the progress is
measured against the plan. While the agile process, planning is incremental and it’s easier to
change the process to reflect requirement changes.

The phases of the waterfall model are: Requirements, Design, Implementation, Testing, and
Maintenance.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

The phases of "The Waterfall Model" are:

Requirement Analysis & Definition: All requirements of the system which has to be developed
are collected in this step. Like in other process models requirements are split up in functional
requirements and constraints which the system has to fulfil. Requirements have to be collected
by analysing the needs of the end user(s) and checking them for validity and the possibility to
implement them. The aim is to generate a Requirements Specification Document which is used
as an input for the next phase of the model.

System Design: The system has to be properly designed before any implementation is started.
This involves an architectural design which defines and describes the main blocks and
components of the system, their interfaces and interactions. By this the needed hardware is
defined and the software is split up in its components. E.g. this involves the definition or
selection of a computer platform, an operating system, other peripheral hardware, etc. The
software components have to be defined to meet the end user requirements and to meet the need
of possible scalability of the system. The aim of this phase is to generate a System Architecture
Document this serves as an input for the software design phase of the development, but also as
an input for hardware design or selection activities. Usually in this phase various documents are
generated, one for each discipline, so that the software usually will receive a software
architecture document.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Software Design: Based on the system architecture which defines the main software blocks the
software design will break them further down into code modules. The interfaces and interactions
of the modules are described, as well as their functional contents. All necessary system states
like start-up, shutdown, error conditions and diagnostic modes have to be considered and the
activity and behaviour of the software has to be defined. The output of this phase is a Software
Design Document which is the base of the following implementation work.

Coding: Based on the software design document the work is aiming to set up the defined
modules or units and actual coding is started. The system is first developed in smaller portions
called units. They are able to stand alone from an functional aspect and are integrated later on to
form the complete software package.

Software Integration & Verification: Each unit is developed independently and can be tested
for its functionality. This is the so called Unit Testing. It simply verifies if the modules or units
to check if they meet their specifications. This involves functional tests at the interfaces of the
modules, but also more detailed tests which consider the inner structure of the software modules.
During integration the units which are developed and tested for their functionalities are brought
together. The modules are integrated into a complete system and tested to check if all modules
cooperate as expected.

System Validation: After successfully integration including the related tests the complete
system has to be tested against its initial requirements. This will include the original hardware
and environment, whereas the previous integration and testing phase may still be performed in a
different environment or on a test bench.

Operation & Maintenance: The system is handed over to the customer and will be used the
first time by him. Naturally the customer will check if his requirements were implemented as
expected but he will also validate if the correct requirements have been set up in the beginning.
In case there are changes necessary it has to be fixed to make the system usable or to make it
comply to the customer wishes. In most of the "Waterfall Model" descriptions this phase is
extended to a never ending phase of "Operations & Maintenance". All the problems which did
not arise during the previous phases will be solved in this last phase.

SPIRAL MODEL
The spiral model combines the idea of iterative development with the systematic, controlled
aspects of the waterfall model. This Spiral model is a combination of iterative development
process model and sequential linear development model i.e. the waterfall model with a very
high emphasis on risk analysis. It allows incremental releases of the product or incremental
refinement through each iteration around the spiral.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Spiral Model - Design


The spiral model has four phases. A software project repeatedly passes through these phases in
iterations called Spirals.

Identification
This phase starts with gathering the business requirements in the baseline spiral. In the
subsequent spirals as the product matures, identification of system requirements, subsystem
requirements and unit requirements are all done in this phase.

This phase also includes understanding the system requirements by continuous communication
between the customer and the system analyst. At the end of the spiral, the product is deployed in
the identified market.

Design
The Design phase starts with the conceptual design in the baseline spiral and involves
architectural design, logical design of modules, physical product design and the final design in
the subsequent spirals.

Construct or Build
The Construct phase refers to production of the actual software product at every spiral. In the
baseline spiral, when the product is just thought of and the design is being developed a POC
(Proof of Concept) is developed in this phase to get customer feedback.

Then in the subsequent spirals with higher clarity on requirements and design details a working
model of the software called build is produced with a version number. These builds are sent to
the customer for feedback.

Evaluation and Risk Analysis


Risk Analysis includes identifying, estimating and monitoring the technical feasibility and
management risks, such as schedule slippage and cost overrun. After testing the build, at the
end of first iteration, the customer evaluates the software and provides feedback.

The following illustration is a representation of the Spiral Model, listing the activities in each
phase.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Advantages of Spiral Model: Below are some of the advantages of the Spiral Model.
 Risk Handling: The projects with many unknown risks that occur as the development
proceeds, in that case, Spiral Model is the best development model to follow due to the
risk analysis and risk handling at every phase.
 Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
 Flexibility in Requirements: Change requests in the Requirements at later phase can
be incorporated accurately by using this model.
 Customer Satisfaction: Customer can see the development of the product at the early
phase of the software development and thus, they habituated with the system by using it
before completion of the total product.

Disadvantages of Spiral Model: Below are some of the main disadvantages of the spiral
model.
 Complex: The Spiral Model is much more complex than other SDLC models.
 Expensive: Spiral Model is not suitable for small projects as it is expensive.
 Too much dependable on Risk Analysis: The successful completion of the project is
very much dependent on Risk Analysis. Without very highly experienced expertise, it is
going to be a failure to develop a project using this model.
 Difficulty in time management: As the number of phases is unknown at the start of
the project, so time estimation is very difficult.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Ref : www.geeksforgeeks.org,
www.tutorialspoint.com

PROTOTYPING MODEL

The Software Prototyping refers to building software application prototypes which displays the
functionality of the product under development, but may not actually hold the exact logic of the
original software.

Software prototyping is becoming very popular as a software development model, as it enables


to understand customer requirements at an early stage of development. It helps get valuable
feedback from the customer and helps software designers and developers understand about what
exactly is expected from the product under development.

What is Software Prototyping?


Prototype is a working model of software with some limited functionality. The prototype does
not always hold the exact logic used in the actual software application and is an extra effort to
be considered under effort estimation.

Prototyping is used to allow the users evaluate developer proposals and try them out before
implementation. It also helps understand the requirements which are user specific and may not
have been considered by the developer during product design.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Following is a stepwise approach explained to design a software prototype.

Basic Requirement Identification


This step involves understanding the very basics product requirements especially in terms of
user interface. The more intricate details of the internal design and external aspects like
performance and security can be ignored at this stage.

Developing the initial Prototype


The initial Prototype is developed in this stage, where the very basic requirements are
showcased and user interfaces are provided. These features may not exactly work in the same
manner internally in the actual software developed. While, the workarounds are used to give the
same look and feel to the customer in the prototype developed.

Review of the Prototype


The prototype developed is then presented to the customer and the other important stakeholders
in the project. The feedback is collected in an organized manner and used for further
enhancements in the product under development.

Revise and Enhance the Prototype


The feedback and the review comments are discussed during this stage and some negotiations
happen with the customer based on factors like – time and budget constraints and technical
feasibility of the actual implementation. The changes accepted are again incorporated in the new
Prototype developed and the cycle repeats until the customer expectations are met.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Prototypes can have horizontal or vertical dimensions. A Horizontal prototype displays the user
interface for the product and gives a broader view of the entire system, without concentrating on
internal functions. A Vertical prototype on the other side is a detailed elaboration of a specific
function or a sub system in the product.

The purpose of both horizontal and vertical prototype is different. Horizontal prototypes are
used to get more information on the user interface level and the business requirements. It can
even be presented in the sales demos to get business in the market. Vertical prototypes are
technical in nature and are used to get details of the exact functioning of the sub systems. For
example, database requirements, interaction and data processing loads in a given sub system.

Software Prototyping – Types


There are different types of software prototypes used in the industry. Following are the major
software prototyping types used widely –

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Throwaway/Rapid Prototyping
Throwaway prototyping is also called as rapid or close ended prototyping. This type of
prototyping uses very little efforts with minimum requirement analysis to build a prototype.
Once the actual requirements are understood, the prototype is discarded and the actual system is
developed with a much clear understanding of user requirements.

Evolutionary Prototyping
Evolutionary prototyping also called as breadboard prototyping is based on building actual
functional prototypes with minimal functionality in the beginning. The prototype developed
forms the heart of the future prototypes on top of which the entire system is built. By using
evolutionary prototyping, the well-understood requirements are included in the prototype and
the requirements are added as and when they are understood.

Incremental Prototyping
Incremental prototyping refers to building multiple functional prototypes of the various sub-
systems and then integrating all the available prototypes to form a complete system.

Extreme Prototyping
Extreme prototyping is used in the web development domain. It consists of three sequential
phases. First, a basic prototype with all the existing pages is presented in the HTML format.
Then the data processing is simulated using a prototype services layer. Finally, the services are
implemented and integrated to the final prototype. This process is called Extreme Prototyping
used to draw attention to the second phase of the process, where a fully functional UI is
developed with very little regard to the actual services.

The advantages of the Prototyping Model are as follows −


 Increased user involvement in the product even before its implementation.

 Since a working model of the system is displayed, the users get a better understanding of
the system being developed.

 Reduces time and cost as the defects can be detected much earlier.

 Quicker user feedback is available leading to better solutions.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

 Missing functionality can be identified easily.

 Confusing or difficult functions can be identified.

The Disadvantages of the Prototyping Model are as follows −


 Risk of insufficient requirement analysis owing to too much dependency on the
prototype.

 Users may get confused in the prototypes and actual systems.

 Practically, this methodology may increase the complexity of the system as scope of the
system may expand beyond original plans.

 Developers may try to reuse the existing prototypes to build the actual system, even
when it is not technically feasible.

 The effort invested in building prototypes may be too much if it is not monitored
properly.

Define the concept of project management?


Software project management refers to manage the complete software project. It is the means by
which an orderly control process can be imposed on the software development process in order
to ensure software quality. In order to conduct a successful project, we must understand the
scope of the work to be done, the risks to be incurred, the resources to be required, the task to be
accomplished, the milestones to be tracked, the effort (cost) to be expanded and the schedule to
be followed. Effective software project management focuses on the four P‘s: people, product,
process, and project.

(1) People- The ―people factor‖ is so important that the Software Engineering Institute has
developed a people management capability maturity model (PMCMM), ―to enhance the
readiness of software organizations to undertake increasingly complex applications by helping
to attract, grow, motivate, deploy, and retain the talent needed to improve their software
development capability

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

2. Product- we must examine the product and the problem it is intended to solve at the very
beginning of the project. At a minimum, the scope of the product must be established and
bounded.

(i) Software Scope The first software project management activity is the determination of
software scope. Scope is defined by answering the following questions:

Context. How does the software to be built fit into a larger system, product, or business context
and what constraints are imposed as a result of the context?

Information objectives. What customer-visible data objects are produced as output from the
software? What data objects are required for input?

Function and performance. What function does the software perform to transform input data
into output? Are any special performance characteristics to be addressed? Software project
scope must be unambiguous and understandable at the management and technical levels.

3. Process-The generic phases that characterize the software process— definition, development,
and support—are applicable to all software. The problem is to select the process model that is
appropriate for the software to be engineered by a project team.

What is Fourth Generation Techniques?


The term fourth generation technique (4GT) encompasses a broad array of software tools that
have one thing in common: each enables the software engineer to specify some characteristic of
software at a high level. The tool then automatically generates source code based on the
developer's specification. There is little debate that the higher the level at which software can be
specified to a machine, the faster a program can be built. The 4GT paradigm for software
engineering focuses on the ability to specify software using specialized language forms or a
graphic notation that describes the problem to be solved in terms that the customer can
understand.

Currently, a software development environment that supports the 4GT paradigm includes some
or all of the following tools: nonprocedural languages for database query, report generation,
data manipulation, screen interaction and definition, code generation; high-level graphics
capability; spreadsheet capability, and automated generation of HTML and similar languages
used for Web-site creation using advanced software tools. Initially, many of the tools noted
previously were available only for very specific application domains, but today 4GT

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

environments have been extended to address most software application categories. For small
applications, it may be possible to move directly from the requirements gathering step to
implementation using a nonprocedural fourth generation language (4GL) or a model composed
of a network of graphical icons.

Implementation using a 4GL enables the software developer to represent desired results in a
manner that leads to automatic generation of code to create those results. Obviously, a data
structure with relevant information must exist and be readily accessible by the 4GL.

Software Metrics
Software metrics is a standard of measure that contains many activities which involve some
degree of measurement. It can be classified into three categories: product metrics, process
metrics, and project metrics.

 Product metrics describe the characteristics of the product such as size, complexity, design features,
performance, and quality level.

 Process metrics can be used to improve software development and maintenance. Examples include
the effectiveness of defect removal during development, the pattern of testing defect arrival, and the
response time of the fix process.

 Project metrics describe the project characteristics and execution. Examples include the number of
software developers, the staffing pattern over the life cycle of the software, cost, schedule, and
productivity.

SECTION B
Software Project Planning
Software project planning is task, which is performed before the production of software actually
starts. It is there for the software production but involves no concrete activity that has any
direction connection with software production; rather it is a set of multiple processes, which
facilitates software production

Project planning may include the following:

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Scope Management
It defines the scope of project; this includes all the activities, process need to be done in order to
make a deliverable software product. Scope management is essential because it creates
boundaries of the project by clearly defining what would be done in the project and what would
not be done.

During Project Scope management, it is necessary to -

 Define the scope

 Decide its verification and control

 Divide the project into various smaller parts for ease of management.

 Verify the scope

 Control the scope by incorporating changes to the scope

Project Estimation
For an effective management accurate estimation of various measures is a must. With correct
estimation managers can manage and control the project more efficiently and effectively.

Project estimation may involve the following:

 Software size estimation


Software size may be estimated either in terms of KLOC (Kilo Line of Code) or by
calculating number of function points in the software. Lines of code depend upon coding
practices and Function points vary according to the user or software requirement .

 Effort estimation
The managers estimate efforts in terms of personnel requirement and man-hour required
to produce the software. For effort estimation software size should be known. This can
either be derived by managers’ experience, organization’s historical data or software
size can be converted into efforts by using some standard formulae.

 Time estimation

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Once size and efforts are estimated, the time required to produce the software can be
estimated. Efforts required is segregated into sub categories as per the requirement
specifications and interdependency of various components of software. Software tasks
are divided into smaller tasks, activities or events by Work Breakthrough Structure
(WBS). The tasks are scheduled on day-to-day basis or in calendar months.

The sum of time required to complete all tasks in hours or days is the total time invested
to complete the project.

 Cost estimation
This might be considered as the most difficult of all because it depends on more
elements than any of the previous ones. For estimating project cost, it is required to
consider -

o Size of software
o Software quality
o Hardware
o Additional software or tools, licenses etc.
o Skilled personnel with task-specific skills
o Travel involved
o Communication
o Training and support

Project Planning Process


The project planning process involves a set of interrelated activities followed in an orderly
manner to implement user requirements in software and includes the description of a series of
project planning activities and individual(s) responsible for performing these activities. In
addition, the project planning process comprises the following.
1. Objectives and scope of the project
2. Techniques used to perform project planning
3. Effort (in time) of individuals involved in project
4. Project schedule and milestones
5. Resources required for the project

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

6. Risks associated with the project.


Project planning process comprises several activities, which are essential for carrying out a
project systematically. These activities refer to the series of tasks performed over a period of
time for developing the software. These activities include estimation of time, effort, and
resources required and risks associated with the project.

Project planning process consists of the following activities.

 Identification of project requirements: Before starting a project, it is essential to identify the


project requirements as identification of project requirements helps in performing the activities
in a systematic manner. These requirements comprise information such as project scope, data
and functionality required in the software, and roles of the project management team members.

 Identification of cost estimates: Along with the estimation of effort and time, it is necessary
to estimate the cost that is to be incurred on a project. The cost estimation includes the cost of
hardware, network connections, and the cost required for the maintenance of hardware
components. In addition, cost is estimated for the individuals involved in the project.
 Identification of risks: Risks are unexpected events that have an adverse effect on the project.
Software project involves several risks (like technical risks and business risks) that affect the
project schedule and increase the cost of the project. Identifying risks before a project begins
helps in understanding their probable extent of impact on the project.
 Identification of critical success factors: For making a project successful, critical success
factors are followed. These factors refer to the conditions that ensure greater chances of success
of a project. Generally, these factors include support from management, appropriate budget,
appropriate schedule, and skilled software engineers.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

 Preparation of project charter: A project charter provides a brief description of the project
scope, quality, time, cost, and resource constraints as described during project planning. It is
prepared by the management for approval from the sponsor of the project.
 Preparation of project plan: A project plan provides information about the resources that are
available for the project, individuals involved in the project, and the schedule according to
which the project is to be carried out.
 Commencement of the project: Once the project planning is complete and resources are
assigned to team members, the software project commences.

Decomposition Technique
This technique assumes the software as a product of various compositions.

There are two main models -

 Line of Code Estimation is done on behalf of number of line of codes in the software
product.
 Function Points Estimation is done on behalf of number of function points in the
software product.

Decomposition Technique

It takes a divide and conquers approaches to software project estimation. By decomposing a


project into major functions and related software engineering activities, cost and effort
estimation can be performed. The decomposition approach was discussed from two different
points of view: decomposition of the problem and decomposition of the process. Estimation uses
one or both forms of partitioning. But before an estimate can be made, the project planner must
understand the scope of the software to be built and generate an estimate of its ―size.

Software Sizing

Software Sizing the accuracy of a software project estimate is predicated on a number of things:

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

(1) The degree to which the planner has properly estimated the size of the product to be built; (2)
The ability to translate the size estimate into human effort, calendar time, and dollars (a
function of the availability of reliable software metrics from past projects);

(3) The degree to which the project plan reflects the abilities of the software team; and

(4) The stability of product requirements and the environment that supports the software
engineering effort

Putnam and Myers suggest different approaches to the sizing problem:

1. “Fuzzy logic” sizing.

This approach uses the approximate reasoning techniques that are the cornerstone of fuzzy logic.
To apply this approach, the planner must identify the type of application, establish its magnitude
on a qualitative scale, and then refine the magnitude within the original range. Although
personal experience can be used, the planner should also have access to a historical database of
projects8 so that estimates can be compared to actual experience.

2. Function point sizing. This is a measurement based on the functionality of the program and
was first introduced by Albrecht. The total number of function points depends on the counts of
distinct (in terms of format or processing logic) types in the following five classes :-

(i) User-Input Types: Data or Control User Input Types.

(ii) User-Output Types: Output Data Types to the user that leaves the system.

(iii) Inquiry Types: Interactive inputs requiring a response.

(iv) Internal File Types: Files (Logical Group of Information) that are used and shared inside the
System.

(v) External File Types: Files that are passed or shared between the System and other Systems.

3. Standard component sizing. Software is composed of a number of different ―standard


components that are generic to a particular application area. For example, the standard
components for an information system are subsystems, modules, screens, reports, interactive
programs, batch programs, files, LOC, and object-level instructions. The project planner

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

estimates the number of occurrences of each standard component and then uses historical project
data to determine the delivered size per standard component.

Line of Code : This is the number of lines of the delivered source code of the software,
excluding comments and blank lines and is commonly known as LOC. Although LOC is
programming language dependent, it is the most widely used software size metric. Most models
relate this measurement to the software cost. However, exact LOC can only be obtained after the
project has completed. Estimating the code size of a program before it is actually built is almost
as hard as estimating the cost of the program. A typical method for estimating the code size is to
use expert‘s judgment together with a technique called PERT.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Structured Analysis
Structured Analysis is a development method that allows the analyst to understand the system
and its activities in a logical way.

It is a systematic approach, which uses graphical tools that analyze and refine the objectives of
an existing system and develop a new system specification which can be easily understandable
by user.

It has following attributes −

 It is graphic which specifies the presentation of application.

 It divides the processes so that it gives a clear picture of system flow.

 It is logical rather than physical i.e., the elements of system do not depend on vendor or
hardware.

 It is an approach that works from high-level overviews to lower-level details.

Structured Analysis Tools

During Structured Analysis, various tools and techniques are used for system development.
They are −

 Data Flow Diagrams

 Data Dictionary

 Decision Trees

 Decision Tables

 Structured English

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

An Entity–relationship model (ER model) describes the structure of a database with the
help of a diagram, which is known as Entity Relationship Diagram (ER Diagram). An
ER model is a design or blueprint of a database that can later be implemented as a
database. The main components of E-R model are: entity set and relationship set.

What is an Entity Relationship Diagram (ER


Diagram)?

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

An ER diagram shows the relationship among entity sets. An entity set is a group of
similar entities and these entities can have attributes. In terms of DBMS, an entity is a
table or attribute of a table in database, so by showing relationship among tables and their
attributes, ER diagram shows the complete logical structure of a database. Lets have a
look at a simple ER diagram to understand this concept.

A simple ER Diagram:
In the following diagram we have two entities Student and College and their relationship.
The relationship between Student and College is many to one as a college can have many
students however a student cannot study in multiple colleges at the same time. Student
entity has attributes such as Stu_Id, Stu_Name & Stu_Addr and College entity has
attributes such as Col_ID & Col_Name.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Components of a ER Diagram

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

As shown in the above diagram, an ER diagram has three main components:


1. Entity
2. Attribute
3. Relationship

1. Entity
An entity is an object or component of data. An entity is represented as rectangle in an
ER diagram.
For example: In the following ER diagram we have two entities Student and College and
these two entities have many to one relationship as many students study in a single
college. We will read more about relationships later, for now focus on entities.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Weak Entity:
An entity that cannot be uniquely identified by its own attributes and relies on the
relationship with other entity is called weak entity. The weak entity is represented by a
double rectangle. For example – a bank account cannot be uniquely identified without
knowing the bank to which the account belongs, so bank account is a weak entity.

2. Attribute
An attribute describes the property of an entity. An attribute is represented as Oval in an
ER diagram. There are four types of attributes:

1. Key attribute
2. Composite attribute
3. Multivalued attribute
4. Derived attribute

1. Key attribute:
A key attribute can uniquely identify an entity from an entity set. For example, student
roll number can uniquely identify a student from a set of students. Key attribute is
represented by oval same as other attributes however the text of key attribute is

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

underlined.

2. Composite attribute:
An attribute that is a combination of other attributes is known as composite attribute. For
example, In student entity, the student address is a composite attribute as an address is
composed of other attributes such as pin code, state, country.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

3. Multivalued attribute:
An attribute that can hold multiple values is known as multivalued attribute. It is
represented with double ovals in an ER Diagram. For example – A person can have more
than one phone numbers so the phone number attribute is multivalued.

4. Derived attribute:
A derived attribute is one whose value is dynamic and derived from another attribute. It is
represented by dashed oval in an ER Diagram. For example – Person age is a derived
attribute as it changes over time and can be derived from another attribute (Date of birth).

E-R diagram with multivalued and derived attributes:

3. Relationship
A relationship is represented by diamond shape in ER diagram, it shows the relationship
among entities. There are four types of relationships:
1. One to One
2. One to Many
3. Many to One
4. Many to Many

1. One to One Relationship


When a single instance of an entity is associated with a single instance of another entity
then it is called one to one relationship. For example, a person has only one passport and

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

a passport is given to one person.

2. One to Many Relationship


When a single instance of an entity is associated with more than one instances of another
entity then it is called one to many relationship. For example – a customer can place
many orders but a order cannot be placed by many customers.

3. Many to One Relationship


When more than one instances of an entity is associated with a single instance of another
entity then it is called many to one relationship. For example – many students can study
in a single college but a student cannot study in many colleges at the same time.

4. Many to Many Relationship


When more than one instances of an entity is associated with more than one instances of
another entity then it is called many to many relationship. For example, a can be assigned

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

to many projects and a project can be assigned to many students.

Reference: www.beginnersbook.com

Data Flow Diagrams (DFD) or Bubble Chart


It is a technique developed by Larry Constantine to express the requirements of system in a
graphical form.

 It shows the flow of data between various functions of system and specifies how the
current system is implemented.

 It is an initial stage of design phase that functionally divides the requirement


specifications down to the lowest level of detail.

 Its graphical nature makes it a good communication tool between user and analyst or
analyst and system designer.

 It gives an overview of what data a system processes, what transformations are


performed, what data are stored, what results are produced and where they flow.

Basic Elements of DFD


DFD is easy to understand and quite effective when the required design is not clear and the user
wants a notational language for communication. However, it requires a large number of
iterations for obtaining the most accurate and complete solution.

The following table shows the symbols used in designing a DFD and their significance −

Symbol Name Symbol Meaning

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Square Source or Destination of Data

Arrow Data flow

Circle Process transforming data flow

Open Rectangle Data Store

Types of DFD
DFDs are of two types: Physical DFD and Logical DFD. The following table lists the points
that differentiate a physical DFD from a logical DFD.

Physical DFD Logical DFD

It is implementation dependent. It shows which It is implementation independent. It focuses only on


functions are performed. the flow of data between processes.

It provides low level details of hardware, It explains events of systems and data required by
software, files, and people. each event.

It depicts how the current system operates and It shows how business operates; not how the system
how a system will be implemented. can be implemented.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Data Dictionary
A data dictionary is a structured repository of data elements in the system. It stores the
descriptions of all DFD data elements that is, details and definitions of data flows, data stores,
data stored in data stores, and the processes.

A data dictionary improves the communication between the analyst and the user. It plays an
important role in building a database. Most DBMSs have a data dictionary as a standard feature.
For example, refer the following table −

Sr.No. Data Name Description No. of Characters

1 ISBN ISBN Number 10

2 TITLE title 60

3 SUB Book Subjects 80

4 ANAME Author Name 15

Decision Trees
Decision trees are a method for defining complex relationships by describing decisions and
avoiding the problems in communication. A decision tree is a diagram that shows alternative
actions and conditions within horizontal tree framework. Thus, it depicts which conditions to
consider first, second, and so on.

Decision trees depict the relationship of each condition and their permissible actions. A square
node indicates an action and a circle indicates a condition. It forces analysts to consider the
sequence of decisions and identifies the actual decision that must be made.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Structured English
Structure English is derived from structured programming language which gives more
understandable and precise description of process. It is based on procedural logic that uses
construction and imperative sentences designed to perform operation for action.

 It is best used when sequences and loops in a program must be considered and the
problem needs sequences of actions with decisions.

 It does not have strict syntax rule. It expresses all logic in terms of sequential decision
structures and iterations.

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 solution. While the software is being conceptualized, a plan is chalked out to find the
best possible design for implementing the intended solution.

There are multiple variants of software design. Let us study them briefly:

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

Structured Design
Structured design is a conceptualization of problem into several well-organized elements of
solution. It is basically concerned with the solution design. Benefit of structured design is, it
gives better understanding of how the problem is being solved. Structured design also makes it
simpler for designer to concentrate on the problem more accurately.

Structured design is mostly based on ‘divide and conquer’ strategy where a problem is broken
into several small problems and each small problem is individually solved until the whole
problem is solved.

The small pieces of problem are solved by means of solution modules. Structured design
emphasis that these modules be well organized in order to achieve precise solution.

These modules are arranged in hierarchy. They communicate with each other. A good
structured design always follows some rules for communication among multiple modules,
namely -

Cohesion - grouping of all functionally related elements.

Coupling - communication between different modules.

A good structured design has high cohesion and low coupling arrangements.

Function Oriented Design


In function-oriented design, the system is comprised of many smaller sub-systems known as
functions. These functions are capable of performing significant task in the system. The system
is considered as top view of all functions.

Function oriented design inherits some properties of structured design where divide and
conquer methodology is used.

This design mechanism divides the whole system into smaller functions, which provides means
of abstraction by concealing the information and their operation.. These functional modules can
share information among themselves by means of information passing and using information
available globally.

Another characteristic of functions is that when a program calls a function, the function changes
the state of the program, which sometimes is not acceptable by other modules. Function

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

oriented design works well where the system state does not matter and program/functions work
on input rather than on a state.

Design Process

 The whole system is seen as how data flows in the system by means of data flow diagram.

 DFD depicts how functions changes data and state of entire system.

 The entire system is logically broken down into smaller units known as functions on the basis of their
operation in the system.

 Each function is then described at large.

Object Oriented Design


Object oriented design works around the entities and their characteristics instead of functions
involved in the software system. This design strategies focuses on entities and its
characteristics. The whole concept of software solution revolves around the engaged entities.

Let us see the important concepts of Object Oriented Design:

 Objects - All entities involved in the solution design are known as objects. For example, person,
banks, company and customers are treated as objects. Every entity has some attributes associated to it
and has some methods to perform on the attributes.

 Classes - A class is a generalized description of an object. An object is an instance of a class. Class


defines all the attributes, which an object can have and methods, which defines the functionality of
the object.

In the solution design, attributes are stored as variables and functionalities are defined by means of
methods or procedures.

 Encapsulation - In OOD, the attributes (data variables) and methods (operation on the data) are
bundled together is called encapsulation. Encapsulation not only bundles important information of an
object together, but also restricts access of the data and methods from the outside world. This is called
information hiding.

SBS @PROPERITARY
BCA-4TH SEM www.sbs.ac.in

 Inheritance - OOD allows similar classes to stack up in hierarchical manner where the lower or sub-
classes can import, implement and re-use allowed variables and methods from their immediate super
classes. This property of OOD is known as inheritance. This makes it easier to define specific class
and to create generalized classes from specific ones.

 Polymorphism - OOD languages provide a mechanism where methods performing similar tasks but
vary in arguments, can be assigned same name. This is called polymorphism, which allows a single
interface performing tasks for different types. Depending upon how the function is invoked, respective
portion of the code gets executed.

SBS @PROPERITARY

You might also like