0% found this document useful (0 votes)
120 views131 pages

Isdi, Bca Ii

The document discusses key concepts related to software development including system analysis and design, requirements analysis, the system development life cycle (SDLC), software requirement specification (SRS), and attributes. It describes the phases of SDLC such as preliminary survey, feasibility study, system analysis, system design, software development, system testing, implementation, and maintenance. It also discusses the structure and characteristics of an SRS document.

Uploaded by

Subhashree
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
120 views131 pages

Isdi, Bca Ii

The document discusses key concepts related to software development including system analysis and design, requirements analysis, the system development life cycle (SDLC), software requirement specification (SRS), and attributes. It describes the phases of SDLC such as preliminary survey, feasibility study, system analysis, system design, software development, system testing, implementation, and maintenance. It also discusses the structure and characteristics of an SRS document.

Uploaded by

Subhashree
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 131

Unit 1

Software Specifications
&
Requirement Analysis
System, Analysis & Design
 System - It is an organized relationship among functioning
units or components. It is an orderly arrangement of it
components. It is a collection of components that work
together to achieve some objective.

 Analysis – It is the process of breaking a complex topic in


smaller parts to gain better understanding of it. It can also be
defined as the process of checking errors.

 Design – It is the process of originating and developing a


plan fro a product, structure or a system. It implies a effort to
create something that is both functional and pleasing.
requirement analysis
 Requirement analysis involves checking or examination of
SRS and other related documents.

 Software requirement analysis is a two step process.

 The first step is conducted at the system level where system


level requirements are analyzed and allocated among major
system elements.

 The second step in software requirement analysis begins


when an SRS is in its final form.

 A clear understanding of what the software must do is the


foundation for successful development of software product.
Sdlc
(system development life cycle)
 Software Development Life Cycle in systems engineering,
information systems and software engineering, is the process
of creating or altering systems, and the models and
methodologies that people use to develop these systems.

 Systems Development Life Cycle (SDLC) is a process used by


a systems analyst to develop an information system,
including requirements, validation, training, and user
ownership.

 The SDLC is a framework for understanding and developing


information system and software successfully.
(To be continued)
 Any SDLC should result in a high quality system that meets
or exceeds customer expectations, reaches completion
within time and cost estimates, works effectively and
efficiently in the current and planned Information
Technology infrastructure, and is inexpensive to maintain
and cost-effective to enhance.

 Computer systems are complex and often link multiple


traditional systems potentially supplied by different software
vendors. To manage this level of complexity, a number of
SDLC models or methodologies have been created.

 SDLC concept underpins many kinds of software


development methodologies. SDLC models can be described
along a spectrum of agile to iterative to sequential.
PHASES OF SDLC
 Preliminary Survey
 Feasibility Study
 System Analysis
 System Design
 Software Development
 System Testing
 Implementation
 Maintenance
Phases of SDLC
 Preliminary Survey – The main purpose of preliminary survey
or investigation is to execute project requests. It is basically
collection of information that helps committee members to
define the merits of the project and make a judgment about the
feasibility of the project. Without clear understanding of the
problem in the system any further work done will lead to
wastage of effort at a later stage.

 Feasibility Study - This involves evaluating the costs and


benefits of the system. Cost benefit analysis helps top
management to take a decision either in favor or against the
proposed system. Costs include cost of design, development,
implementation and maintenance of the system. Technical,
economic and operational feasibility are the types of feasibility.
(To be continued)
 System Analysis - Systems analysis is the study of sets of
interacting entities, including computer systems analysis.
This field is closely related to requirements analysis or
operations research. It is also "an explicit formal inquiry
carried out to help someone (referred to as the decision
maker) identify a better course of action and make a better
decision than he might otherwise have made.

 System Design - Systems design is the process of defining the


architecture, components, modules, interfaces, and data for a
system to satisfy specified requirements. The main activities
of the phase are
- Identify data requirements
- Identify reports and other outputs that system will produce
- Standards for testing, system control are formulated
(To be continued)
 Software Development – It is the development of a software
product. software development may include research, new
development, prototyping, modification, reuse, re-
engineering, maintenance, or any other activities that result
in software products. The need for better quality control of
the software development process has given rise to the
discipline of software engineering, which aims to apply the
systematic approach exemplified in the engineering
paradigm to the process of software development.

 System Testing - System testing of software or hardware is


testing conducted on a complete, integrated system to
evaluate the system's compliance with its specified
requirements. System testing is performed on the entire
system in the context of a Functional Requirement
Specification. System testing tests not only the design, but
also the behaviour and even the believed expectations of the
customer.
 Implementation and Evaluation – implementation consists of
installing hardware, software and training of all the users.
Each phase is carried out after successful implementation of
the previous phase.
Evaluation of the system is performed to identify its
strength and weakness. Evaluation is the comparison of
actual (project) impacts against the agreed strategic plans.

 Maintenance – After implementation, the system need to be


maintained in order to adopt the changing needs. It is of
three types –
- Correction
- Adaptation
- Enhancement
SRS
(Software Requirement Specification)
 SRS is a complete description of the behavior of the system to
be developed. It is a document that defines what a program or
software system is required to do and the constraints under
which this required functionality must be provided.

 SRS is a document that completely describes what the


proposed software should do without describing how the
software will do it.

 It includes a set of use cases that describe all the interactions


the users will have with the software. In addition to use cases,
the SRS also contains functional and non-functional
requirements.
Characteristics of SRS
An SRS consists of the following characteristics
or features -
 Correct
 Unambiguous
 Complete
 Consistent
 Verifiable
 Modifiable
 Traceable
STRUCTURE OF SRS
 Introduction
- Purpose
- Scope
- Definition, glossary, abbreviation
- Reference
- Overview

 General Description
- Product Perspective
- Product Functions
- User Characteristics
- General Constraints
- Product Design (To be continued)
 Specific Requirements
- Functional Requirement
- External Interface Requirement
- Performance Requirement
- Design Constraints
- Logical database requirement
- Functions
Analysis
 Analysis includes those tasks that go into determining the
needs or conditions to meet for a new product.

 Analysis is the process of breaking a complex topic or


substance into smaller parts to gain a better understanding
of it.

 It is the process of understanding the customer needs and


expectations from a proposed system.

 It covers the task of documenting the requirement of all the


users and analyzing the requirement for the basis of system
design.
(To be continued)
Analysis includes -
 What is being done in the organization.
 How is it being done.
 What is the volume of transactions or decisions.
 How well is the task being performed.
 Does a problem exists.
 Who are the persons performing the task.
 If the problem exists, how serious it is.
 Reasons for the problem.
 Preventive measures to solve problem.
Software Specification Document
 SDS (Software Design Description) – Describes the basic
structure of your software.

 Test and Integration Specification – It includes updations


or changes when required.

 Software Performance Specification – A clear specification


is given for all the performance requirement for the
software system.

 Maintenance Requirement Specification – Includes all the


detailed arguments regarding the maintenance of
software.
ATTRIBUTES
 An attribute is a specification that defines a property of an
object, element, or file. It may also refer to or set the specific
value for a given instance.

 The term attribute can and is often treated as equivalent to a


property depending on the technology being discussed.

 It requires the following for the software product –


- Security
- Availability
- Reliability
- Maintainability
(To be continued)
Types of attributes
 Simple Attribute

 Composite Attribute

 Single Valued Attribute

 Multi-Valued Attribute

 Derived Attribute
Data dictionary
 Data Dictionary is a repository of description of data in data
base. Data Dictionary is the place for storage of data about
data.

 The Data Dictionary is an integral part of DBMS and stores


meta data for information such as database, attribute names
and definitions for each table in the database.

 It aids the DBA in the management of the database. It is


useful for locating errors contradictions in the DFS’s.

 It is used to actually control database operations, data


integrity and accuracy.
(To be continued)
 Data Dictionary describes the entities in the DFDs that are
labeled as data items.

 Data Dictionary holds the following information about each


data element in the database –
- Name
- Type
- Range of values
- Source
- Access authorization
- Files and record sizes

 Data Dictionary is of two types –


- Active (Maintained by the system itself)
- Passive (Managed by the users of the system)
Features of Data Dictionary
 Gives description of the database users, their responsibilities
and there access rights.
 A tool for recording and processing information about the
data that’s an organization uses.
 Defines information about the schema of the database.
 A central catalogue for metadata.
 Records details of the data i.e used in the system.
 Useful fro locating errors, complications in the data flow
diagrams.
 Used during system design, programming and executing
programs.
 Can be integrated with DBMS or be separate.
Decision support tools
 A software engineer is frequently confronted with important
decision involving selection of one alternative from several
possible alternatives.

 The software engineer would like to make a decision based


on all the information available at the time decision is
required.

 Decision Support Tools are programs or codes which are the


foundation to create Decision Support System.

 It improves gains by reducing risks arising from incomplete


task and information overload.
(To be continued)
Decision support tools may include the following –

 MRP (Material Requirement Planning)


 Linear Programming
 Queuing Theory
 Descriptive Statistics
 Variance Analysis
 Network Analysis
 Transportation Problems
 Maximum flow or distance
 Dynamic Programming
 Regression Analysis
Uses of decision support tools
 Check that everything is working properly.
 Convey information in a more précised manner.
 Compare information about customer, products and financial
accounts.
 To identify the out of ordinary.
 To help advocate a position.
 Grab a little piece of information out of a large volume of
information.
 To provide a report of record (Official Recording)
 Storing, sorting and processing information.
 Framing the decision.
 Compare same type of information in different time period.
Data flow diagrams
 It illustrates how data is processed by system in terms of
inputs and outputs. It can be used to provide the clear
representation of any business, functions or process.

 Often they are a preliminary step used to create an overview


of the system which can later be elaborated. DFDs can also
be used for the visualization of data processing.

 A DFD shows what kinds of data will be input to and output


from the system, where the data will come from and go to,
and where the data will be stored. is a graphical
representation of the "flow" of data through an information
system, modelling its process aspects.
DFD PROCESS
Data Flow Diagram Examples
Advantages of DFD
 It is a tool to interact with the users. Users can
understand the DFD easily and can suggest
modifications in the proposed system.
 Freedom from committing to the technical
implementation of system early.
 Further understanding of the systems and sub systems.
 Analysis of a proposed system to determine if the
necessary data and processes have been defined.
 Elimination of redundancy and easier creation of the
model or system.
 Technique for modelling a system’s high-level detail by
showing how input data is transformed to output
results
Dfd Symbols
FINITE STATE MACHINE
 It is a mathematical abstraction sometimes used to design
digital logic or computer programs. It is a behaviour model
composed of a finite number of states, transitions between
those states, and actions, similar to a flow graph in which
one can inspect the way logic runs when certain conditions
are met.

 It is only device that stores the status of something at a given


time and can operate on input to change the status or cause
an action on output to take place for any given change.

 It has finite internal memory, an input feature that reads


symbols in a sequence, one at a time without going
backward
(To be continued)
 Finite-state machines can solve a large number of problems,
among which are electronic design automation,
communication protocol design, parsing and other
engineering applications.

 The operation of an FSM begins from one of the states (called


a start state), goes through transitions depending on input to
different states and can end in any of those available,
however only a certain set of states mark a successful flow of
operation (called accept states).

 In biology and artificial intelligence research, state machines


or hierarchies of state machines are sometimes used to
describe neurological systems
Fsm process
Petri nets
 Petri Net is a mathematical tool for modelling distributed
systems and communication. It is a directed bipartite graph,
in which the nodes represent transitions (i.e. events that may
occur, signified by bars) and places (i.e. conditions, signified
by circles).

 A Petri net consists of places, transitions, and directed arcs.


Arcs run from a place to a transition or vice versa, never
between places or between transitions.

 The places from which an arc runs to a transition are called


the input places of the transition; the places to which arcs
run from a transition are called the output places of the
transition.
(To be continued)
 It can be used as a common aid similar to flow charts and
block diagrams. It can be used to model a software product.

 Following are the mathematical properties of Petri Nets


- Reachability
- Liveness
- Boundedness
Petri Net Example
Mathematical Logic
 It is a subfield of mathematics with close connections to
foundations of mathematics, theoretical computer science and
philosophical logic.

 The field includes both the mathematical study of logic and the
applications of formal logic to other areas of mathematics. The
unifying themes in mathematical logic include the study of the
expressive power of formal systems and the deductive power
of formal proof systems.

 Mathematical logic is often divided into the fields of set theory,


model theory, recursion theory, and proof theory. These areas
share basic results on logic, particularly first-order logic, and
definability.
(To be continued)
 Since its inception, mathematical logic has contributed to,
and has been motivated by, the study of foundations of
mathematics. This study began in the late 19th century with
the development of axiomatic frameworks for geometry,
arithmetic, and analysis.

 The objective of producing consistent, complete and correct


specification is achieved through mathematical provable
statements.

 First-order logic is a particular formal system of logic. Its


syntax involves only finite expressions as well-formed
formulas, while its semantics are characterized by the
limitation of all quantifiers to a fixed domain of discourse.
Fields of mathematical logic
 Set Theory – It is the study of sets which are
considered as collection of objects.

 Proof Theory – It is the study of proof in various


mathematical objects.

 Model Theory – It determines the properties of model


in a particular class.

 Recursion Theory – It studies the properties of


functions which are to be computed.
Operational timeliness
 It is an ordered sequence of steps required to execute a system
function. The most effective time to implement this timeliness
is during the development of software and system
requirements.

 To develop operational timeliness, effort is required in the


form of –
- Definition of all the displayed panels required to effectively
and efficiently control management of the system.
- Fully develop set of operational timeliness that forms the
basis for developing documents such as training materials,
description of the position and scripts.
Following are the steps involved in
preparation of Operational Timeliness

 Understanding operational environment.


 Knowledge of the entire system.
 Imagination
 Assistance of system operators
 Understanding hardware & software
requirements
 Communication with the staff
Operational timelines development
 Initialization and warm up
 File maintenance
 Failure modes
 System turned off
 Normal or emergency shut down
 Recovery
 System maintenance
 System functions.
Operating system
 Operating system is software that is required in order to run
application programs and utilities.

 It works as a bridge to perform better interaction between


application programs and hardware of the computer.

 OS works as an interface between a user and computer


hardware.

 Operating system is system software that runs the computer


and acts as a scheduler.
 The operating system provides a set of services to
programs.

 Users interact with the system through the system


programs or through the application programs.

 Various OS available are:


Operating system services
 User Interface:
- Command Line Interface or Graphical User Interface.

 File management:
- OS provides service to write new files or take input from some
files
- Involves secondary storage management.

 Program Execution:
- Provides an environment which involves the allocating and
deallocating memory, CPU scheduling in case of
multiprocessing.

 Device Management:
- The operating system manages I/O.
(To be continued)
 Communication:
- OS provides service of message passing between processes.

 Security:
- Internal: Protects the computer’s resources from the
programs concurrently running on the system.
- External: Protection from the network computers and users.

 Resource Allocation and Accounting:


- Allocates and keeps track of all the computer resources.

 Error Detection:
- OS constantly monitors the system for detecting the errors.
Operating system needs
 To provide an interface between the hardware and the
user.

 To manage the hardware and software resources of the


system.

 To provide a stable, consistent way for applications to deal


with the hardware without having to know all the details
of the hardware.

 To ensure that applications continue to run when


hardware upgrades and updates occur.

 To provide internal and external security.


compilers
 A compiler is a translator program which translates the
high level language program into a machine language
program.

 A compiler is a computer program (or set of programs)


that transforms source code written in a programming
language (the source language) into another computer
language (the target language, often having a binary form
known as object code).

 If the compiled program can run on a computer whose


CPU or operating system is different from the one on
which the compiler runs, the compiler is known as a
cross-compiler.
(To be continued)
 Compilers bridge source programs in high-level languages
with the underlying hardware. A compiler requires
1) Determining the correctness of the syntax of programs,
2) Generating correct and efficient object code
3) Run-time organization, and
4) Formatting output according to assembler and/or linker
conventions.

 A compiler consists of three parts –


1) Frontend
2) Middle-end
3) Backend

 Compilers enabled the development of programs that are


machine-independent.
editors
 Editor is a software used to review and modify text materials
and other program instructions.

 The presence of an editor with useful features is best


appreciated by programming team. Data entry operators
and assistants.

 Editors are often provided with operating systems or


software development packages, and can be used to change
configuration files and programming language source code.

 Editors geared for professional computer users place no


limit on the size of the file being opened.
(To be continued)
Linkers
 A linker takes object program files and fits them together
to assemble them into programs final executable form.

 Linker is a program that takes one or more objects


generated by a compiler and combines them into a single
executable program.

 Linker is divided into functional modules and separate


source programs are written for each modules of the
software.
Code generators
 Code generation is the process by which a compiler's code
generator converts some intermediate representation of
source code into a form (e.g., machine code) that can be
readily executed by a machine (often a computer).

 In addition to the basic conversion from an intermediate


representation into a linear sequence of machine
instructions, a typical code generator tries to optimize the
generated code in some way.

 The input to the code generator typically consists of a parse


tree or an abstract syntax tree. The tree is converted into a
linear sequence of instructions, usually in an intermediate
language such as three address code.
(To be continued)
 Following are major tasks of code generator –
- Instruction Selection
- Instruction Scheduling
- Register Allocation

 When code generation occurs at runtime, as in just-in-


time compilation (JIT), it is important that the entire
process be efficient with respect to space and time.
Debuggers
 It is used to monitor the dynamic nature of the program
execution.

 It gives the programmer the capability to inspect the


execution state of the program in a symbolic way.

 The importance of a good debugger cannot be overstated.


Indeed, the existence and quality of such a tool for a given
language and platform can often be the deciding factor in
its use, even if another language is better-suited to the task.

 Some debuggers operate on a single specific language


while others can handle multiple languages transparently.
(To be continued)
 Debuggers are the magnifying glass, the microscope, the
logic analysis and the browser with which a program
can be examined.

 It is an important tool in the development process.

 Spelling and Grammar facility in MS-Word is a sort of


debugging facility which helps the user to correct the
spelling.
Program Design Language
 PDL was originally developed by the company Caine,
Farber & Gordon and has been modified substantially
since they published their initial paper on it in 1975.

 It is a technique for designing and documenting methods


and procedures in software development.

 It is related to pseudocode, but unlike pseudocode, it is


written in plain language without any terms that could
suggest the use of any programming language or library.

 There are PDL’s that have automatic interpreter and code


generators.
Workbenches
 Workbenches are semi integrated case tools designed for the
extensive support to the associated programmer.

 There are several components within workbenches. The


most important is the creation and editing of data flow
diagrams, structure charts and many other graphical
representation tools used in specification and design phases.

 Workbenches accesses a central information storage for use


in other segments of the design and analysis.

 It provides great help in developing data dictionary and also


support query processing facility to access the data
dictionary.
(To be continued)
 It provides online error checking and alert the user to do
any form of modification that is required in software
development.

 The editor and error checking capability of the


workbenches may be combined to check diagrams as they
are being built.

 The formal for documentation pages may be produced by


workbenches.

 Workbenches also play important role in preparation of


Software Requirement Specification
IDEAL SOFTWARE DEVELOPMENT
PLAN
 Planning is a important step in any successful venture
particularly for system and software development.

 Patience, discipline and hard work are required to plan out a


system for software development process.

 Ideal Software Development Plan supports three features –


- Support throughout the entire process.
- Support every phase of SDLC
- Support modernization

 The software development plan should be such that it serves


as a guide to the software development staff throughout the
entire project development process.
(To be continued)
 Software Development Plan should contain the following –
- How to treat reviews and inspections
- How to treat formal and informal software
documentation
- How to manage problem
- How to manage the software development plan as it is
being executed.
- How to manage and control interfaces with other
organizations.

 The planning process is a description of how an


organization develops software and at the same time
describes what a software engineer does.

 The final product of the software development planning


team is a document which is called Software Development
Tables of Content
(Ideal Software Development Plan)

 Introduction
- Summary of SDP document
- Scope and purpose of SDP document
- System level project description
- Software sub system description
 Resource and Schedule estimate
 Organization and Staff
 Technical management and control
 Standards and Procedures
 Documentation
 Verification and Validation
 Maintenance
CASE TOOLS
 CASE stands for Computer Aided Software Engineering.

 Helps to ensure that quality is designed in before the


product is built.

 Are software programs that are designed to assist human


programmer with the complexity of the process of software
engineering.

 Computer-aided software engineering (CASE) is the


scientific application of a set of tools and methods to a
software system which is meant to result in high-quality,
defect-free, and maintainable software products.
(To be continued)
Case tools includes the following processes -
 Translation of user needs into software requirements.

 Implementation of design into code

 Translation of software requirements into design


specification

 Testing of code for operational use.

 Documentation
Categories of case tools

 Front-End case tools or Upper Case tools

 Back-End case tools or Lower Case tools

 Maintenance Case tools

 Support Software

 Framework Case tools


Benefits of CASE TOOLS
 Improved productivity
 Better documentation
 Improved accuracy
 Reduced lifetime maintenance
 Opportunity to non programmers
 Quality
 Intangible benefits

Limitations of case tools


 Costly
 Learning curve
 Complexity
Software Design
 Software Design is the most important activity in software
engineering process. It has been claimed that design is also
the integrative activity at core of software engineering.

 Software design is a process of problem solving and planning


for a software solution. After the purpose and specifications
of software are determined, software developers will design
or employ designers to develop a plan for a solution.

 Software design can be considered as putting solution to the


problem(s) in hand using the available capabilities. All the
skills can be seen as feeding into design.
 Software Design is the activity of specifying the nature and
composition of a software system satisfying client needs and
desires.

 Software Design is the process of inventing and selecting


programs that meet the objectives for a software system.

 It is a process of problem solving and planning for a software


solution. It includes low-level component and algorithm
implementation issues as well as the architectural view.

 Design becomes more and more important as the project


becomes larger and more complex and impacts more and
more people.
Goals of design phase
 Decompose system into components i.e identify the software
structure.

 Determine relationship between components i.e identify


component dependencies.

 Specify component interfaces i.e interfaces should be well


defined.

 Describe component functionality i.e converting informal design


into a formal one.

 Identify opportunities for systematic reuse.


Design considerations
 Compatibility
 Fault Tolerance
 Maintainability
 Modularity
 Reliability
 Reusability
 Security
 Robustness
 Usability
 Packaging
 Extensibility
Design level & their objectives
 Descriptive Design – The customers requirements are
identified and are documented in software requirement. The
design level begins with the set of requirements as input and
produces some form of realization as output.
 Structural Design – The software requirements are
transformed into definitions of software components and
their interfaces. This is done to establish the framework of
the software.
 Detailed Design – It is the process of defining the lower level
components, modules and interfaces. It must be carried out
according to the plans defined in the structural design phase
and proper monitoring is required by the project
management team at regular intervals.
Approaches to design
 Function oriented design

 Object oriented design

 Data structure base design

 Reuse based design

 Modification based design


Design tools
 Data Flow Diagrams

 Data Dictionary

 Decision Tables

 Structure Charts

 Structured English

 Decision Trees

 Pseudocode
Software design objectives
 To produce various models that can be analyzed
and evaluated to determine if they will allow the
various requirements to be fulfilled.

 To examine and evaluate various alternative


solutions.

 To plan the most frequently happening


development activities.
Software design specifications
1) Introduction
- Purpose
- Scope
- Definitions
2) System Overview
3) Design Considerations
- Assumptions
- Dependencies
- General Constraints
- Goals
- Guidelines
- Development Methods (To be continued)
4) Structural Strategies
- Strategy 1 name or description
- Strategy 2 name or description
5) Detailed design description
- Structure
- Function
- Interfaces
- Program Interrupts
- Storage Allocation
- Timing
- Sequencing
6) Policies and Tactics
- Policy or tactic 1 name or description
- Policy or tactic 2 name or description
(To be continued)
7) Detailed System Design
- Module 1 name or description
- Module 2 name or description
8) Quality Assurance
- Test plans and procedures
- Test cases
9) Preparation for delivery
10) Appendices
11) Glossary
12) Bibliography
Components of Design of an
Information System
 Coupling – It is a degree to which each program module relies
on each line of the other module. It was originated in the mid
1970s as a way of characterizing good sub program design.
- It is a property of collection of modules.
- When there is high degree of interaction, the modules are
described as tightly coupled.
- Coupling is usually contrasted with cohesion. Low coupling
often correlates with high cohesion, and vice versa.
- Low coupling is often a sign of a well-structured computer
system and a good design, and when combined with high
cohesion, supports the general goals of high readability and
maintainability.
Types of coupling
Coupling can be low or high. Some types of
coupling are as under –

 Message Coupling
 Data Coupling
 Stamp Coupling
 Control Coupling
 External Coupling
 Common Coupling
 Content Coupling
 No direct Coupling
Cohesion
 It is the measure of strength of the association of elements
within a module.

 Cohesion is a measure of how strongly-related the functionality


expressed by the source code of a software module is.

 Cohesion is an ordinal type of measurement and is usually


expressed as “high cohesion” or “low cohesion” when being
discussed.

 Cohesion is a measure of how strongly-related or focused the


responsibilities of a single module are.
TYPES OF COHESION
 Procedural Cohesion

 Communicational Cohesion

 Sequential Cohesion

 Functional Cohesion

 Logical Cohesion

 Temporary Cohesion
Coding
 Coding means translating the detailed design of a
software product, developed during the design phase,
into a sequence of statements that can be executed by
the computer.

 The program statements are sometimes called code and


the programmers are often called coders.

 The main goal of coding is to translate the design


specification of a software element into programming
language statements.
(To be continued)
 An attempt has been made to provide guidelines to the
programmer for producing an executable programme
from a given design so that less time is spent in testing
and maintaining the end product.

 It is considered as the most important activity during


software implementation and maintenance. The
software is prepared on the basis of coding done by the
programmer.

 Coding should be such that it is error free and


modifiable because the software we are developing is
completely based on the coding done.
Programming languages
 It is a set of syntactic and semantic rules used to define
computer programs. It is a standardized communication
technique for expressing instructions to a computer.

 It enables a programmer to precisely specify what kinds of


data a computer will act upon.

 It usually enables programmers to express their intent for


a computation more easily than machine code does.

 During the last few decades, a large number of computer


languages have been introduced, have replaced each other
and have been modified or combined.
Classification
of
programming languages
 Procedural Languages
 Non-Procedural Languages
 Imperative Languages
 Declarative Languages
 Functional Languages
 Logic Languages
 Object-Oriented Languages
 Visual Languages
Selecting a programming language
 If the language meets or almost meets all the
requirements of the software product, the
implementation should use the specified language.

 On the other hand if the language specified is not


optimum choice, then the development team must
prepare a strong case to convince the client that
recommended language is not a good choice.

 Programming languages make computer programs less


dependent on particular machines or environments.

(To be continued)
 The decision criteria include the following –
- Compiler status
- Programming Team Experience
- Availability of Training
- Language Library

 If the translation mechanism used is one which


translates the program text as a whole and then runs
the internal format, this mechanism is spoken of as
compilation
Features of programming language
 Preprocessor
 Naming Constraints
 Name Constants
 User-Defined Data Types
 Subprograms
 Recursive Programs
 Scoping
 Available Operations
 Variety of Control Structures
 Data Structure Support
 Memory Allocation
(To be continued)
 Data Abstraction
 File Handling Utilities
 Compilers
 Information Hiding
 Debuggers
 Programming Language Library
 Exception Handling
 Currency Considerations
 Parallelism Considerations
 Real Time Considerations
Programming style
 It deals with the appearance of source code, with the
goal of improving the readability of the program.

 With the advent of software that formats source code


automatically the focus on appearance will likely yield
to a greater focus on naming, logic and higher
techniques.

 Good style being a subjective matter is difficult to


concretely categorize, however there are several
elements common to a large number of programming
styles.
(To be continued)
 The issues usually considered as part of programming
style include the layout of the source code, including
indentation, the use of white space around operators
and keywords, the style and spelling of user defined
identifiers such as function, procedure and variable
names and the use or avoidance of programming
constructs themselves.
- Identifiers
- Constant and Enumerated Types
- Block Statements
- Records, Structures, Types
- Goto Statements
- Indenting
- Boolean values in decision structures
(To be continued)
- Looping and Control Structures
- Performance and Readability
- Where to put braces
- Casing
- Line Length
- Check all arguments
- Locking and Threading
- Break up long lines
- Using White Spaces
- Naming classes and interfaces
Program Quality
 Readability, Understandability & Comprehensibility
- Logical Structure
- Physical Layout
- Robustness

 CPU Efficiency
- Memory Efficiency
- Complexity
- Human factors
- System Interfaces
- Reusable Code
 System Testing
- It is designed to uncover weaknesses that were found in
earlier tests.
- It includes forced system failure and validation of total
system as it will be implemented by its user in the
operational environment.

 System Documentation
- All design and test documentation should be well prepared
and kept in the library for future reference.
- The library is the central location for maintenance.

 User Acceptance Testing


- Performance of an acceptance test is actually for the users.
- Maintaining the validity and reliability of the system.
SOFTWARE MAINTENANCE
 It is modification of a software product after delivery to
correct faults, to improve performance, to adopt the product
to a modified environment.

 Any activity that modifies software product after it’s release


is software maintenance. It is the process of enhancing and
optimizing software.

 It is one of the phase in software development process and


follows deployment of the software into the field.
Deployment means use a process effectively.

(To be continued)
 The software maintenance phase involves changes to the
software in order to correct defects and deficiencies found
during usage as well as the addition of new functionalities.

 Software Maintenance phase is regarded as the waterfall


model of the software development process which was
developing during the development of computer
programming.

 To improve the software’s usability, software maintenance


deals with solving problems, fixing bugs, changing program
behavior and adding new features.
SOFTWARE MAINTENANCE ISSUES
Management
› Return on investment hard to define

Process
› Extensive coordination required to handle stream of
Maintenance Requests

Technical
› Covering full impact of changes
› Testing very expensive compared with the utility of each
change
- Focused tests ideal but expensive
- Regression testing still required
TYPES OF MAINTENANCE
 Corrective
- Defect identification and removal
 Adaptive
- Changes resulting from operating system,
hardware or DBMS changes
 Perfective
- Changes resulting from user requests
 Preventative
- Changes made to the software to make it more
maintainable
(To be continued)
NEED OF SOFTWARE
MAINTENANCE
Maintenance of software is required basically for
the following reasons that are as under –

 Bugs in the system

 Enhancement to system

 Software and Network changes


Software Maintenance Roadmap:
Identify
corporate Keep application useful after
practices delivery
- Fix defects
- Enhance the application
Plan
project

Maintain
Analyze
requirements
Integrate
Design & test system

Implement Test units


factors which effect maintenance
Technical Factors
 Module Independence
 Programming Language
 Programming Style
 Program Validation and Testing
 The quality of program documentation
 The configuration management technique used
Non-Technical Factors
 Application Domain
 Staff Stability
 Hardware Stability
 Dependence of the program
Ways for maintenance
1. Be prepared to keep required metrics. Include..
› … Lines of code added
› … Lines of code changed
› … Time taken: 1. Preparation 2. Design 3. Code 4.
Test
2. Ensure that the request has been approved
3. Understand the problem thoroughly
› Reproduce the problem
 Otherwise get clarification
4. Classify the MR as repair or enhancement
5. Decide whether the implementation requires a redesign at a
higher level
› If so, consider batching with other MR’s
6. Design the required modification
(i.e., incorporate the change)
7. Plan transition from current design
8. Assess change’s impact throughout the application
› Small changes can have major impact!
9. Implement the changes
10. Perform unit testing on the changed parts
11. Perform regression testing
› Ensure changes haven’t compromised existing
capabilities
12. Perform system testing with new capabilities
13. Update the configuration, requirement, design and test
documentation
Software Maintainability
 It can be defined as the ease with which the software system
or component can be modified to correct faults, improve
performance or other attributes or to adopt to a changed
environment.

 High reliability is essential in each and every system.

 There are two aspects of maintainability –


- Serviceability: The probability of returning the item to
normal service.
- Reparability: The probability of repairing the actual fault.
Maintainability MATRICES
 Number of requests for corrective maintenance.

 Average time required fro time analysis.

 Average time taken to implement to change request.

 Number of outstanding change request.


Software testing
 Software Testing is a constructive process. It enables the
software developers to ensure that software contains errors.

 The main objective of software testing is to locate the


undiscovered errors.

 It is also used to identify the correctness, completeness,


security and quality of developed computer software.

 Testing is a technical investigation process which is intended


to reveal quality related information about the product.
Need for testing
Testing is required due to following reasons –

 Fast changes in requirements

 To understand and execute all paths of software

 To ensure quality

 To ensure customer satisfaction


Objectives of testing
 Executing a program with the intent of finding an error.

 To check if the system meets the requirements and be


executed successfully in the Intended environment.

 To check if the system is “ Fit for purpose”.

 To check if the system does what it is expected to do.

 A good test is not redundant.

 A good test should be “best of breed”


Testing principles
 All tests should be traceable to customer needs

 Testing should be planned in advance

 An independent third party must conduct testing

 Exchaustive testing

 Testing should focus on all the products of entire


system.
TESTING
 Static Testing – It is used to verify the correctness of
requirements, designs and code before execution of
test cases. It will also audit newly developed or reused
code for adherence to established standards. It is used
to investigate the structural properties of source code.

 Dynamic Testing – It describes the development of


test cases and test procedures, the execution of test
cases and the structure and use of test logs. There are
two ways to perform dynamic testing namely black
box testing and white box testing. It is used to
investigate the behavior of the source code by
executing the program on the test data.
Validation & verification
Verification - Typically involves reviews and meeting to
evaluate documents, plans, code, requirements, and
specifications. This can be done with checklists, issues
lists, walkthroughs, and inspection meeting.

Validation - Typically involves actual testing and takes


place after verifications are completed.

Note - Validation and Verification process continues in a


cycle till the software becomes defects free.
Components of test plan
 The Testing Process

 Requirement Traceability

 Tested Items

 Testing Schedule

 Test Recording Procedures


TESTING STRATEGIES
 Top Down Testing

 Bottom up Testing

 Thread Testing

 Stress Testing

 Back to Back Testing


Test requirements matrices
 To establish a database to facilitate test planning and to
control and track test activities.

 It links each requirement to a specific test.

 It eliminates test redundancy

 It establishes test methodology

 It identifies testing responsibilities

 It provides references linking related specifications.


Module test plan
Sr. No. Module Test Plan Outline
1 Module Test Plan Identification
2 Introduction
3 Module Test Approach Description
4 References
5 Criteria for Pass/Fail
6 Approach
7 Criteria for Halting Testing
8 Tasks to be performed
9 Schedule
10 Test products
System testing
It consists of the following steps –

 Program Testing
- A program represents the logical elements of a system.
- It must compile and test data correctly.
- It must tie properly with other programs.
- The actual output is compared with the expected output.

 String Testing
- Each program is tested to see whether it conforms to related
programs in the system.
- Programs are related to one another and interact in total
system.
- Each part of the system is tested against the entire module.
 System Testing
- It is designed to uncover weaknesses that were found in
earlier tests.
- It includes forced system failure and validation of total
system as it will be implemented by its user in the
operational environment.

 System Documentation
- All design and test documentation should be well prepared
and kept in the library for future reference.
- The library is the central location for maintenance.

 User Acceptance Testing


- Performance of an acceptance test is actually for the users.
- Maintaining the validity and reliability of the system.
Testing artifacts
 Test plan

 Test case

 Traceability matrix

 Test script

 Test suite

 Test data

 Test harness
PROJECT FORMULATION
Project Formulation is the foremost decision
taken by an entrepreneur while setting up an
enterprise. It provides a mechanism for
controlling expenditure on project development.

“Project Formulation step by step investigation


of resources and development of project idea
for achieving the objective of taking an
investment decision.”
NEED OF PROJECT FORMULATION
An entrepreneur has to take numerous decisions
right from conception of business idea upto
production.

 Road map for the new venture


 Capital Investment
 Government Regulations
 Skilled Workforce
 Technology
SCOPE OF PROJECT FORMULATION
The various areas or aspects duly considered in
the project formulation are as under:

 General Information
 Product
 Market potential
 Process and Know how
 Plant and Machinery
 Location
 Building
(Continued)
• Raw material
• Utilities
• Effluents
• Personnel Requirement
• Capital Cost
• Working Capital
• Mode of Finance
• Manufacturing Cost
• Financial Analysis
• Implementation Schedule
APPROACHES OF PROJECT FORMULATION
Following are the approaches of Project formulation:
•Feasibility Analysis
- Pre Feasibility Study
- Feasibility Study
- Project Report
• Techno Economic Analysis
- Techno Analysis
- Economic Analysis
• Project Design and Network Analysis

(Continued)
• Input Analysis

• Financial Analysis

• Social Cost Benefit Analysis

• Managerial Appraisal

• Operating Market Appraisal


- Analysis of the Market
- Planning the process of marketing

• Environmental Analysis

You might also like