Uploaded by barshen mutangabende

Software Engineering Notes A level

Software Engineering
Software engineering (SE) is concerned with developing and maintaining software systems
that; behave reliably and efficiently, are affordable to develop and maintain, and satisfy all
the requirements that customers have defined for them.
It is important because of the impact of large, expensive software systems and the role of
software in safety-critical applications.
It integrates significant mathematics, computer science and practices whose origins are in
Software engineer
A software engineer is a licensed professional engineer who is schooled and skilled in the
application of engineering discipline to the creation of software.
A software engineer is often confused with a programmer, but the two are vastly different
disciplines. While a programmer creates the codes that make a program run, a software
engineer creates the designs the programmer implements.
Software development is the process of computer programming, documenting, testing,
and bug fixing involved in creating and maintaining applications and frameworks resulting
in a software product.
Software development is a process of writing and maintaining the source code, but in a
broader sense, it includes all that is involved between the conception of the desired software
through to the final manifestation of the software, sometimes in a planned
and structured process.
Important Qualities for Software Developers
Analytical skills. Developers must analyze users’ needs and then design software to meet those needs.
Communication skills. Developers must be able to give clear instructions to others working on a project.
They must also explain to their customers how the software works and answer any questions that arise.
Computer skills. Developers must understand computer capabilities and programming languages in order
to design effective software.
Creativity. Developers are the creative minds behind new computer software.
Detail oriented. Developers often work on many parts of an application or system at the same time and
must therefore be able to concentrate and pay attention to detail.
Interpersonal skills. Software developers must be able to work well with others who contribute to
designing, developing, and programming successful software.
Page 1 of 58
Problem-solving skills. Because developers are in charge of software from beginning to end, they must be
able to solve problems that arise throughout the design process.
Software process models
The software process consists of the activities and associated information that are required to
develop a software system. Every organization has its own specific software process but these
individual approaches usually follow some more abstract generic process model.
the following are some of the process models
a) SDLC generic model
b) RAD- rapid application development
c) Prototyping
d) Object oriented
e) waterfall
System Study
Preliminary system study is the first stage of system development life cycle. This is a brief
investigation of the system under consideration and gives a clear picture of what actually the
physical system is? In practice, the initial system study involves the preparation of a System
proposal which lists the Problem Definition, Objectives of the Study, Terms of reference for
Study, Constraints, Expected benefits of the new system, etc. in the light of the user
requirements. The system proposal is prepared by the System Analyst (who studies the
system) and places it before the user management. The management may accept the proposal
and the cycle proceeds to the next stage. The management may also reject the proposal or
request some modifications in the proposal. In summary, we would say that system study
phase passes through the following steps:
problem identification and project initiation
background analysis
 inference or findings
Feasibility Study
 In case the system proposal is acceptable to the management, the next phase is to
examine the feasibility of the system.
Page 2 of 58
 The feasibility study is basically the test of the proposed system in the light of its
workability, meeting user’s requirements, effective use of resources and of course, the
cost effectiveness.
 These are categorized as technical, operational, economic, schedule and social
 The main goal of feasibility study is not to solve the problem but to achieve the scope.
 In the process of feasibility study, the cost and benefits are estimated with greater
accuracy to find the Return on Investment (ROI).
 This also defines the resources needed to complete the detailed investigation. The
result is a feasibility report submitted to the management.
 This may be accepted or accepted with modifications or rejected. In short, following
decision are taken in different feasibility study:
Economic feasibility - The likely benefits outweigh the cost of solving the problem which is
generally demonstrated by a cost/ benefit analysis.
Operational feasibility - Whether the problem can be solved in the user’s environment with
existing and proposed system workings?
Organizational feasibility – Whether the proposed system is consistent with the
organization’s strategic objectives?
Technical feasibility - Whether the problem be solved using existing technology and
resources available?
Social feasibility – Whether the problem be solved without causing any social issues?
Whether the system will be acceptable to the society?
Detailed System Study
 The detailed investigation of the system is carried out in accordance with the
objectives of the proposed system.
 This involves detailed study of various operations performed by a system and their
relationships within and outside the system.
 During this process, data are collected on the available files, decision points and
transactions handled by the present system.
 Interviews, on-site observation and questionnaire are the tools used for detailed
system study. Using the following steps it becomes easy to draw the exact boundary
of the new system under consideration:
Keeping in view the problems and new requirements
Page 3 of 58
Workout the pros and cons including new areas of the system
All the data and the findings must be documented in the form of detailed data flow
diagrams (DFDs), data dictionary, logical data structures and miniature specifications.
It includes planning for the new system, analysis of requirement, system constraints,
functions and proposed system architecture, prototype of the proposed system and its
System Analysis
 Systems analysis is a process of collecting factual data, understand the processes
involved, identifying problems and recommending feasible suggestions for improving
the system functioning.
 This involves studying the business processes, gathering operational data, understand
the information flow, finding out bottlenecks and evolving solutions for overcoming
the weaknesses of the system so as to achieve the organizational goals. System
Analysis also includes subdividing of complex process involving the entire system,
identification of data store and manual processes.
 The major objectives of systems analysis are to find answers for each business
What is being done?
How is it being done?
Who is doing it?
When is he doing it? Why is it being done?
How can it be improved?
 It is more of a thinking process and involves the creative skills of the System Analyst.
It attempts to give birth to a new efficient system that satisfies the current needs of the
user and has scope for future growth within the organizational constraints.
 The result of this process is a logical system design.
 System analysis is an iterative process that continues until a preferred and acceptable
solution emerges.
System Design
 Based on the user requirements and the detailed analysis of a new system, the new
system must be designed.
Page 4 of 58
 This is the phase of system designing. It is the most crucial phase in the development
of a system.
 The logical system design arrived at as a result of system analysis and is converted
into physical system design.
 In the design phase the SDLC process continues to move from the what questions of
the analysis phase to the how.
 The logical design produced during the analysis is turned into a physical design - a
detailed description of what is needed to solve original problem.
 Input, output, databases, forms, codification schemes and processing specifications
are drawn up in detail.
 In the design stage, the programming language and the hardware and software
platform in which the new system will run are also decided.
 Data structure, control process, equipment source, workload and limitation of the
system, Interface, documentation, training, procedures of using the system, taking
backups and staffing requirement are decided at this stage.
 There are several tools and techniques used for describing the system design of the
 These tools and techniques are: Flowchart, Data flow diagram (DFD), Data
dictionary, Structured English, Decision table and Decision tree which will be
discussed in detailed in the next lesson.
 The system design needs to be implemented to make it a workable system.
 This demands the coding of design into computer language, i.e., programming
 This is also called the programming phase in which the programmer converts the
program specifications into computer instructions, which we refer to as programs.
 It is an important stage where the defined procedures are transformed into control
specifications by the help of a computer language.
 The programs coordinate the data movements and control the entire process in a
 A well written code reduces the testing and maintenance effort.
 It is generally felt that the programs must be modular in nature.
Page 5 of 58
 This helps in fast development, maintenance and future changes, if required.
Programming tools like compilers, interpreters and language like c, c++, and java etc.,
are used for coding .with respect to the type of application.
 The right programming language should be chosen.
 Before actually implementing the new system into operations, a test run of the system
is done removing all the bugs, if any.
 It is an important phase of a successful system.
 After codifying the whole programs of the system, a test plan should be developed
and run on a given set of test data.
 The output of the test run should match the expected results. Sometimes, system
testing is considered as a part of implementation process.
 Using the test data following test run are carried out:
Program test
System test
Program test : When the programs have been coded and compiled and brought to working
conditions, they must be individually tested with the prepared test data. All verification and
validation be checked and any undesirable happening must be noted and debugged (error
System Test : After carrying out the program test for each of the programs of the system and
errors removed, then system test is done. At this stage the test is done on actual data. The
complete system is executed on the actual data. At each stage of the execution, the results or
output of the system is analyzed. During the result analysis, it may be found that the outputs
are not matching the expected output of the system. In such case, the errors in the particular
programs are identified and are fixed and further tested for the expected output. All
independent modules be brought together and all the interfaces to be tested between multiple
modules, the whole set of software is tested to establish that all modules work together
correctly as an application or system or package.
When it is ensured that the system is running error-free, the users are called with their own
actual data so that the system could be shown running as per their requirements.
After having the user acceptance of the new system developed, the implementation
phase begins.
Page 6 of 58
Implementation is the stage of a project during which theory is turned into practice.
The major steps involved in this phase are:
Acquisition and Installation of Hardware and Software
User Training
 The hardware and the relevant software required for running the system must be made
fully operational before implementation.
 The conversion is also one of the most critical and expensive activities in the system
development life cycle.
 The data from the old system needs to be converted to operate in the new format of
the new system. The database needs to be setup with security and recovery procedures
fully defined.
 During this phase, all the programs of the system are loaded onto the user’s computer.
After loading the system, training of the user starts. Main topics of such type of
training are:
How to execute the package?
How to enter the data?
How to process the data (processing details)?
How to take out the reports?
 After the users are trained about the computerized system, working has to shift from
manual to computerized working.
 The process is called Changeover. The following strategies are followed for
changeover of the system.
1. Direct Changeover: This is the complete replacement of the old system by the new
system. It is a risky approach and requires comprehensive system testing and training.
2. Parallel run : In parallel run both the systems, i.e., computerized and manual, are
executed simultaneously for certain defined period. The same data is processed by
both the systems. This strategy is less risky but more expensive because of the
following facts:
Manual results can be compared with the results of the computerized system.
The operational work is doubled.
Page 7 of 58
Failure of the computerised system at the early stage does not affect the working of the
organization, because the manual system continues to work, as it used to do.
(iii) Pilot run: In this type of run, the new system is run with the data from one or more of
the previous periods for the whole or part of the system. The results are compared with the
system results. It is less expensive and risky than parallel run approach. This strategy builds
the confidence and the errors are traced easily without affecting the operations.
The documentation of the system is also one of the most important activity in the system
development life cycle. This ensures the continuity of the system. Generally following two
types of documentations are prepared for any system.
User or Operator Documentation
System Documentation
User Documentation: The user documentation is a complete description of the system from
the user’s point of view detailing how to use or operate the system. It also includes the major
error messages likely to be encountered by the user.
System Documentation: The system documentation contains the details of system design,
programs, their coding, system flow, data dictionary, process description, etc. This helps to
understand the system and permit changes to be made in the existing system to satisfy new
user needs.
 Maintenance is necessary to eliminate errors in the system during its working life and
to tune the system to any variations in its working environments.
 It must meet the scope of any future enhancement, future functionality and any other
added functional features to cope up with the latest future needs.
 It has been seen that there are always some errors found in the systems that must be
noted and corrected.
 It also means the review of the system from time to time. The review of the system is
done for:
knowing the full capabilities of the system
knowing the required changes or the additional requirements
studying the performance.
Page 8 of 58
 If a major change to a system is needed, a new project may have to be set up to carry
out the change. The new project will then proceed through all the above life cycle
 Systems Development Life Cycle (SDLC) puts emphasis on decision making
processes that affect system cost and usefulness.
 These decisions must be based on full consideration of business processes, functional
requirements, and economic and technical feasibility.
 The primary objectives of any SDLC is to deliver quality system which meets or
exceed customer expectations and within cost estimates, work effectively and
efficiently within the current and planned infrastructure, and is an inexpensive to
 SDLC establishes a logical order of events for conducting system development that is
controlled, measured, documented, and ultimately improved. Any software is not all
complete and there are enough rooms to add new features to existing software.
 RAD model is Rapid Application Development model.
 It is a type of incremental model.
 In RAD model the components or functions are developed in parallel as if they were mini
projects. The developments are time boxed, delivered and then assembled into a working
 This can quickly give the customer something to see and use and to provide feedback
regarding the delivery and their requirements.
Page 9 of 58
 The phases in the rapid application development (RAD) model are:
 Business modeling: The information flow is identified between various business
 Data modeling: Information gathered from business modeling is used to define data
objects that are needed for the business.
 Process modeling: Data objects defined in data modeling are converted to achieve
the business information flow to achieve some specific business objective.
Description are identified and created for CRUD (create, read, update and delete) of
data objects.
 Application generation: Automated tools are used to convert process models into
code and the actual system.
 Testing and turnover: Test new components and all the interfaces.
Advantages of the RAD model:
Reduced development time.
Increases reusability of components
Quick initial reviews occur
Encourages customer feedback
Integration from very beginning solves a lot of integration issues.
Disadvantages of RAD model:
Page 10 of 58
Depends on strong team and individual performances for identifying business
Only system that can be modularized can be built using RAD
Requires highly skilled developers/designers.
High dependency on modeling skills
Inapplicable to cheaper projects as cost of modeling and automated code generation is
very high.
When to use RAD model:
RAD should be used when there is a need to create a system that can be modularized
in 2-3 months of time.
It should be used if there’s high availability of designers for modeling and the budget
is high enough to afford their cost along with the cost of automated code generating
RAD SDLC model should be chosen only if resources with high business knowledge
are available and there is a need to produce the system in a short span of time (2-3
 The Software Prototyping refers to building software application prototypes which
display the functionality of the product under development but may not actually hold
the exact logic of the original software.
 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
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
It also helps understand the requirements which are user specific and may not have been
considered by the developer during product design.
Page 11 of 58
Following is the stepwise approach 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 and 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 actual implementation. The changes accepted are
again incorporated in the new Prototype developed and the cycle repeats until customer
expectations are met.
 Prototypes can have horizontal or vertical dimensions.
 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:
Page 12 of 58
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. Using evolutionary prototyping only 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.
Software Prototyping Application
 Software Prototyping is most useful in development of systems having high level of
user interactions such as online systems. S
 Systems which need users to fill out forms or go through various screens before data
is processed can use prototyping very effectively to give the exact look and feel even
before the actual software is developed.
 Software that involves too much of data processing and most of the functionality is
internal with very little user interface does not usually benefit from prototyping.
 Prototype development could be an extra overhead in such projects and may need lot
of extra efforts.
Software Prototyping Pros and Cons
 Software prototyping is used in typical cases and the decision should be taken very
carefully so that the efforts spent in building the prototype add considerable value to
the final software developed.
 The model has its own pros and cons discussed as below.
 Following table lists out the pros and cons of Prototyping Model:
Page 13 of 58
Increased user involvement in the
Risk of insufficient requirement analysis
product even before implementation
owing to too much dependency on
Since a working model of the system is
displayed, the users get a better
Users may get confused in the prototypes
understanding of the system being
and actual systems.
Practically, this methodology may increase
Reduces time and cost as the defects
the complexity of the system as scope of
can be detected much earlier.
the system may expand beyond original
Quicker user feedback is available
leading to better solutions.
Developers may try to reuse the existing
prototypes to build the actual system, even
Missing functionality can be identified
when its not technically feasible
The effort invested in building prototypes
Confusing or difficult functions can be
may be too much if not monitored properly
Objected Oriented Model
 Object-oriented modelling (OOM) is the construction of objects using a collection of
objects that contain stored values of the instance variables found within an object.
Unlike models that are record-oriented, object-oriented values are solely objects.
 The object-oriented modelling approach creates the union of the application and
database development and transforms it into a unified data model and language
 Object-oriented modeling allows for object identification and communication while
supporting data abstraction, inheritance and encapsulation.
Object Oriented Process
The Object Oriented Methodology of Building Systems takes the objects as the basis.
For this, first the system to be developed is observed and analyzed and the
requirements are defined as in any other method of system development. Once this is
done, the objects in the required system are identified.
Page 14 of 58
For example in case of a Banking System, a customer is an object, a chequebook is an
object, and even an account is an object.
 In simple terms, Object Modelling is based on identifying the objects in a system and
their interrelationships. Once this is done, the coding of the system is done. Object
Modelling is somewhat similar to the traditional approach of system designing, in that
it also follows a sequential process of system designing but with a different approach.
 The basic steps of system designing using Object Modelling may be listed as:
 1WEQ
1. System Analysis
 As in any other system development model, system analysis is the first phase of
development in case of Object Modeling too.
 In this phase, the developer interacts with the user of the system to find out the user
requirements and analyses the system to understand the functioning.
 Based on this system study, the analyst prepares a model of the desired system. This
model is purely based on what the system is required to do.
 At this stage the implementation details are not taken care of. Only the model of the
system is prepared based on the idea that the system is made up of a set of interacting
 The important elements of the system are emphasized.
2. System Design
 System Design is the next development stage where the overall architecture of the
desired system is decided.
 The system is organized as a set of sub systems interacting with each other.
 While designing the system as a set of interacting subsystems, the analyst takes care
of specifications as observed in system analysis as well as what is required out of the
new system by the end user.
 As the basic philosophy of Object-Oriented method of system analysis is to perceive
the system as a set of interacting objects, a bigger system may also be seen as a set of
interacting smaller subsystems that in turn are composed of a set of interacting
 While designing the system, the stress lies on the objects comprising the system and
not on the processes being carried out in the system as in the case of traditional
Waterfall Model where the processes form the important part of the system.
3. Object Design
 In this phase, the details of the system analysis and system design are implemented.
The Objects identified in the system design phase are designed.
 Here the implementation of these objects is decided as the data structures get defined
and also the interrelationships between the objects are defined.
 Let us here deviate slightly from the design process and understand first a few
important terms used in the Object-Oriented Modeling.
 As already discussed, Object Oriented Philosophy is very much similar to real world
and hence is gaining popularity as the systems here are seen as a set of interacting
objects as in the real world.
Page 15 of 58
 To implement this concept, the process-based structural programming is not used;
instead objects are created using data structures.
 Just as every programming language provides various data types and various variables
of that type can be created, similarly, in case of objects certain data types are
 For example, we can define a data type called pen and then create and use several
objects of this data type.
 This concept is known as creating a class.
 Class: A class is a collection of similar objects.
 It is a template where certain basic characteristics of a set of objects are defined.
 The class defines the basic attributes and the operations of the objects of that type.
 Defining a class does not define any object, but it only creates a template. For objects
to be actually created instances of the class are created as per the requirement of the
 Abstraction: Classes are built on the basis of abstraction, where a set of similar
objects are observed and their common characteristics are listed.
 Of all these, the characteristics of concern to the system under observation are picked
up and the class definition is made.
 The attributes of no concern to the system are left out. This is known as abstraction.
 The abstraction of an object varies according to its application.
 For instance, while defining a pen class for a stationery shop, the attributes of concern
might be the pen color, ink color, pen type etc., whereas a pen class for a
manufacturing firm would be containing the other dimensions of the pen like its
diameter, its shape and size etc.
 Inheritance: Inheritance is another important concept in this regard.
 This concept is used to apply the idea of reusability of the objects.
 A new type of class can be defined using a similar existing class with a few new
 For instance, a class vehicle can be defined with the basic functionality of any vehicle
and a new class called car can be derived out of it with a few modifications.
 This would save the developers time and effort as the classes already existing are
reused without much change.
 Coming back to our development process, in the Object Designing phase of the
Development process, the designer decides onto the classes in the system based on
these concepts.
 The designer also decides on whether the classes need to be created from scratch or
any existing classes can be used as it is or new classes can be inherited from them.
4. Implementation
 During this phase, the class objects and the interrelationships of these classes are
translated and actually coded using the programming language decided upon.
 The databases are made and the complete system is given a functional shape.
Page 16 of 58
 The complete OO methodology revolves around the objects identified in the system.
When observed closely, every object exhibits some characteristics and behavior. The
objects recognize and respond to certain events.
 For example, considering a Window on the screen as an object, the size of the
window gets changed when resize button of the window is clicked.
 Here the clicking of the button is an event to which the window responds by changing
its state from the old size to the new size.
 While developing systems based on this approach, the analyst makes use of certain
models to analyze and depict these objects
Advantages of Object Oriented Methodology
 Object Oriented Methodology closely represents the problem domain. Because of this,
it is easier to produce and understand designs.
 The objects in the system are immune to requirement changes. Therefore, allows
changes more easily.
 Object Oriented Methodology designs encourage more re-use. New applications can
use the existing modules, thereby reduces the development cost and cycle time.
 Object Oriented Methodology approach is more natural. It provides nice structures for
thinking and abstracting and leads to modular design.
Project Management
What is a Project?
 Planned set of interrelated tasks to be executed over a fixed period and within certain
cost and other limitations.
It's a temporary endeavour undertaken to create a unique product, service or result.
Project documentation
 Project documentation is used to define the way we manage projects
and the governance surrounding them.
 is an important part of project management. It is substantiated by the essential two
functions of documentation: to make sure that project requirements are fulfilled and
to establish traceability with regard to what has been done, who has done it, and when
it has been done.
Importance of project documentation
Documentation is the best, and sometimes the only way you can keep a record of the
work done, the strategies used, the changes that occurred and all the little specifics an
average human mind is capable of forgetting. Knowing the history of the project is
essential for the current plan of action as well as how you proceed in the future.
 Your clients want answers all the time. So does your team and your own boss! Last
but not the least and very importantly so, you yourself need answers too.
Documentation helps you deal with all these queries.
Page 17 of 58
While carrying out a project, you may need to document every other thing to protect
your own self from being accused falsely. People tend to blame project managers for
whatever goes wrong. Documentation in the form of letters, emails, photographs or
schedules is proof that protects you from lawsuits or other complications later on.
Documentation is evidence of a good project management. It helps you track
activities related to the project, find out if time constraints are being met, monitor
productivity and plan for the future. A good project manager will never leave any
loose ends to his project.
By carrying out this important task, the project manager and the stakeholders are all
expecting the same outcomes. There are no unpleasant surprises and no unknown
Conflicts, disagreements and problems amongst all parties seldom arise. When all
aspects of the project are right in front of everyone, it leaves little room for argument.
Documentation also helps every individual member involved to have complete
knowledge of their responsibilities, have a clear idea of what is expected from them
and how they need to manage their work.
If the correct record keeping protocol is followed, it gives the project manager
complete control over the project by being the best source of knowledge for the entire
Helping to create very detailed Work Breakdown Structures which result in drafting
realistic, achievable schedules.
Reduction in unnecessary surprises and risks.
Helping to predict the project’s progress during execution and take pro-active
measures to tackle challenges.
Providing a clear understanding of the project requirements to all the stakeholders.
Details of Project Management phases
Feasibility Report
 The purpose of a feasibility report is to investigate and showcase the task
requirements and to determine whether the project is worthwhile/feasible.
Feasibility is checked on the 5 primary factors – technology and system,
economic, legal, operational, and schedule.
 Other feasibility factors include market, resource, culture, and financial factors.
Project Charter
 Project Charter is sometimes also known as the Project Overview Statement.
 A project charter includes high-level planning components of a project.
 This lays the foundation of the project.
 It acts as an anchor, holding you to the project's objectives and guides you as a
navigator, through the milestones.
 It is a formal approval of the project.
Requirement Specification
Page 18 of 58
 A requirement specification document is a complete description of the system
to be developed.
 It contains all interactions the users will have with the system along with the
non-functional requirements.
Design Document
 The design document showcases the high or low-level design components of
the system.
 The design document used for high-level design gradually evolves to include
low-level design details.
 This document describes the architectural strategies of the system.
Work Plan/Estimate
 A work plan sets out the phases, activities and tasks needed to deliver a project.
 The timeframes required to deliver a project, along with the resources and
milestones are also shown in a work plan.
 The work plan is referred to constantly throughout the project. Actual progress
is reviewed on a daily basis against the stated plan.
 It is therefore the most critical document to deliver projects successfully.
Traceability Matrix
 A traceability matrix is a table that traces a requirement to the tests that are
needed to verify that the requirement is fulfilled.
 A good traceability matrix will provide backward and forward traceability: a
requirement can be traced to a test and a test to a requirement.
Issue Tracker
 An issue tracker manages and maintains list of issues. It helps add issues,
assign them to people, and track the status as well as current responsibilities.
 It also helps develop a knowledge base to contain information on resolutions to
common problems.
Change Management Document
 A change management document is used to capture progress and to record all
changes made to a system.
 This helps in linking unanticipated adverse effects of a change.
Test Document
A test document includes test plan and test cases.
Page 19 of 58
 A test case is a detailed procedure that fully tests a feature or an aspect of a
 While a test plan describes what to test, a test case describes how to perform a
particular test.
Technical Document
 Technical document includes product definition and specification, design,
manufacturing/development, quality assurance, product/system liability,
product presentation, description of features, functions and interfaces, safe and
correct use, service and repair of a technical product as well as its safe
Functional Document
 Functional specifications define the inner workings of the proposed system.
 It does not include the specification how the system function will be
implemented. Instead, it focuses on what various other agents
(people/computer) might observe when interacting with the system.
User Manual
 User Manual is the standard operating procedure for the system.
Transition/Rollout Plan
 The rollout plan includes detailed instructions on how to implement the system
in an organization.
 It includes the schematic planning of the rollout steps and phases.
 It also describes the training plan for the system.
Handover Document
 Handover document is a synopsis of the system with a listing of all the
deliverables of the system.
Contract Closure
Contract closure refers to the process of completing all tasks and terms that are
mentioned as deliverable and outstanding on the initial drafting of the contract. This is
only applicable in case of outsourced projects.
Lessons Learned
Lessons learned are used at midpoints of the project and at project completion to
catalog significant new understandings that have evolved as a result of the project.
They are used to build the knowledge base of the organization and to establish a
history of best and worse practices in project implementation and customer relation.
Page 20 of 58
Project management is the application of knowledge, skills, tools, and techniques
to project activities to meet the project requirements.
Project management processes fall into five groups:
1. Initiating
2. Planning
3. Executing
4. Monitoring and Controlling
5. Closing
Project management skills
1. Leadership
 Project leadership was a hot topic this year.
 Being able to lead your team as well as manage them is a trend that shows no sign of
abating (and that’s a good thing).
 It’s really important to be able to inspire others, set the vision and lead effectively, so
if that’s not your strong point resolve to work on it now.
2. Negotiation
 It would be lovely if everyone did what was best for the greater good at all times, but
projects don’t work like that in real life, do they?
 Project managers with good negotiation skills will be an asset to their teams as they
seek to resolve conflicts by finding the win-win scenarios for everyone.
3. Scheduling
 It should go without saying that project scheduling is a core project management skill.
 However, speaking to people who manage project managers during end-of-year
review time I have heard that some of them aren’t up to scratch in this area.
 Get to grips with project scheduling because a) it’s your job and b) it will help you
deliver things more successfully for others (which is also your job).
4. Cost Control
 Budget management is bizarrely one of my favourite topics.
 I am not a natural maths whizz but I do like a well put together spreadsheet. If I
understand the numbers and create my own tracking mechanism I can tell you to the
penny how much my project is spending.
 Cost management is a critical topic for project managers.
 Those without this skill will be at a disadvantage because budgets are tight. You need
to show that you can deliver your project within the cost constraints and by managing
the project finances intelligently.
5. Risk Management
 The more mature project management gets as a profession, the more we find
ourselves doing projects that are unique.
 The more ‘routine’ the project, the more it is likely to get outsourced or given to a
functional manager who shows an aptitude for getting things done. Project managers
will work on the more complex, transformative, unique endeavours that require
decent risk management.
Page 21 of 58
 Being able to control risk (as far as you can) is a sign that you are on top of your
 Project sponsors hate surprises and good risk management is one way that you can
manage that.
6. Contract Management
 Part of managing your project involves managing suppliers.
 The vast majority of projects will have an element of supply, whether that is
something as simple as the outside caterers who bring in cakes for your launch event
or a full-on off-shoring system development firm.
 Contract management is about being able to actively manage those procurements.
 Previously many project managers have been able to rely on their Finance
departments to get this sort of work done (and Legal teams for managing the terms of
the deal).
 Today, with everyone under pressure to do more with less, it’s falling to project
managers to pick up the slack when it comes to procurement.
7. Critical Thinking
 Critical thinking is core to being able to make good decisions.
 You have to weigh up the pros and cons of solutions to problems before choosing the
right way forward.
 This is what distinguishes a project manager who is good at managing issues to
someone who blows issues out of the water every time.
 You can build your critical thinking skills through practice and by equipping yourself
with tools and approaches to help you structure arguments logically and see things
from all angles before making the final decision.
8. Communication
 If I had to pick one skill on this list to focus on during 2015 it would
be communication. We don’t do enough of it. Our stakeholders demand more of it.
We fail time and time again to meet expectations largely because we failed to
communicate effectively and often.
 Think creatively about the communication channels you have got available to you
 Intranet
 Newsletters
Page 22 of 58
Collaboration and social media tools
Team meetings/face-to-face
Web and online conferencing.
Then think about how you can apply each of these to actively serve your project next
9. Project Recovery
 I hope you don’t have to do project recovery next year but if you are looking for a
boost to your career then showing you know how to turn around a poorly performing
team and project will certainly set you aside from your peers.
10. Coaching
 Most of the people on your project team won’t work for you (if, indeed, any of them
 That makes it really important that you are good at managing in a matrixed
environment but also that you are good at coaching.
 Why? Because they may not have much project experience and you’ll have to coach
them to top performance.
 If you are worried about not being a good coach you might be surprised to learn that
coaching skills are something that might be closer in reach than you expect.
 If you sit with a child during homework and help them come to the right answers then
you are doing a form of coaching.
 Some training in this area will help you apply those skills in the workplace to help
your team perform their best.
11. Task Management
 This is another bread and butter task for project managers. You should be able to
create a task list, delegate work to others and keep on top of progress.
 I found this was the easiest part of project management when I started because I was
naturally a list-maker.
 If it doesn’t come easy to you you’ll have to develop strategies to ensure you are
always on top of your To Do list.
 When you have cracked managing your own work you can help others manage theirs.
 This is the best way in my experience to make sure that projects come in on time and
others take responsibility for their deliverables.
12. Quality Management
 Quality management ensures that you deliver a product that is fit for purpose. What
project sponsor doesn’t want that?
 Unfortunately project managers often don’t spend enough time on the quality angle of
their projects – it’s one of those processes and set of tasks that are overlooked as an
administrative overhead.
 If you are a quality expert, then good for you.
 But if you aren’t, seriously consider upping this on the priority list for 2015. The
better the quality of your deliverables, the better value you are offering stakeholders
and the more satisfied they will be.
13. Meetings Management
 How many of your meetings this year have overrun or finished without any clear
action being agreed?
 How much time have you sat in meetings wondering why you were there and what
time you can leave without it looking too bad?
 Or worse, how much time have you spent on conference calls only half listening
while doing your emails or playing Candy Crush?
Page 23 of 58
 Being able to sense when a meeting is going off the rails and people aren’t paying
attention is a key skill for project managers.
 It’s helped by sticking to the agenda but it’s also about being able to read the body
language of people in the room to check that you are getting through the material
quickly and comprehensively.
 Don’t let 2015 become another year of wasted time in meeting rooms.
14. Business Case Writing
 With the ongoing focus on delivering business value, being able to write a business
case (or at least contribute one) will be a good skill to have.
 Get hold of some templates so that when you are asked to finalise a business case or
review one you know what should be included.
 Find some business cases from past projects and evaluate what you would do
 And make sure that your next project actually has a business case – that’s a good
15. A Sense of Humour
 The end of 2014 has been a frantic rush to get everything done before the IT change
freeze, people’s holidays, the end of the financial year and what seems like a hundred
other deadlines.
 Getting through it has largely relied on a good sense of humour and the goodwill of
colleagues prepared to pick up the slack or wait another 24 hours.
 I can’t see that changing in 2015. An ability to see the funny side of project
management will keep you on an even keel during the next 12 months.
 Now you have read the list which of these skills will you work on as a priority during
2015? Let us know in the comments and good luck in your project management career
this year.
Characteristics of software projects
We spend a lot of time examining software project failures but it’s equally important to
understand why some projects succeed. Here’s a short list.
1. Commitment. The business stakeholders and the technologists are committed to the project —
not just at the outset but throughout. This takes intense collaboration. There is also an
executive sponsor or champion — someone with the authority to make things happen. (If there
is a client-consultant relationship, this is doubly important.)
2. People. The right team is assembled. There is an appropriate mix of senior, mid-level and
junior people. The skill sets are also mixed and complimentary. Everyone understand their role
and how it fits into the project. Most importantly, there is a core group of exceptional people
who are capable of leading the project both administratively and technically.
3. Goals. The project has clear goals that everyone understands and accepts. This includes the
critical dates that the team has to hit. The scope of the project is narrow enough for everyone to
comprehend and embrace yet wide enough to deliver value to the business. The constraints
placed on the project are reasonable and realistic.
4. Communication. Frequent and open communication is encouraged. Everyone is willing to
share information and thus everyone knows what’s going on. Whenever the team reaches a
milestone or achieves a major successful outcome, everyone celebrates.
5. Focus. The team is focused on getting the project done. They are not distracted by cultural,
hierarchical and bureaucratic barriers. They use informal contacts and relationships to make
things happen.
Page 24 of 58
6. Learning. Everyone has the opportunity to learn and grow during the course of the project.
They are encouraged to test and experiment. When mistakes are made, they are leveraged as
learning opportunities.
7. Change. The team deals with change effectively. That means they don’t try to block change
but they don’t throw the doors wide open and allow anything to change any time. They find a
middle ground and accept change as an opportunity to learn and improve the final result.
8. Environment. The team has the right environment for getting the job done. This covers
everything from office space to desks and chairs to software development tools.
Software Crisis/Failure
A software crisis is a mismatch between what software can deliver and the capacities of computer systems,
as well as expectations of their users.
Software crisis is a term used in the early days of computing science for the difficulty of writing useful
and efficient computer programs in the required time.
Reasons of Software Crisis
Projects running over-budget
Projects running over-time
Software was very inefficient
Software was of low quality
Software often did not meet requirements
Projects were unmanageable and code difficult to maintain
Software was never delivered
Lack of communication between software developers and users.
Increase in size of software.
Increase in cost of developing a software.
Increased complexity of the problem area.
Project management problem.
Lack of understanding of the problem and its environment.
Duplication of efforts due to absence of automation in most of the software development activities.
High optimistic estimates regarding software development time and cost.
Project Planning
Project planning is part of project management, which relates to the use of schedules such as Gantt
charts to plan and subsequently report progress within the project environment.
Project Plan
 A project plan, according to the Project Management Body of Knowledge (PMBOK), is: "...a
formal, approved document used to guide both project execution and project control.
 The primary uses of the project plan are to document planning assumptions and decisions,
facilitate communication among project stakeholders, and document approved scope, cost,
and schedule baselines
Page 25 of 58
Characteristics of Project Plans
 A project plan can be considered to have five key characteristics that have to be
Scope: defines what will be covered in a project.
Resource: what can be used to meet the scope.
Time: what tasks are to be undertaken and when.
Quality: the spread or deviation allowed from a desired standard.
Risk: defines in advance what may happen to drive the plan off course, and what will be
done to recover the situation.
Contents Of Project Plan
The project plan typically covers topics used in the project execution system and includes the following
main aspects:
Scope management
Requirements management
Schedule management
Financial management
Quality management
Resource management
Stakeholder management – New from PMBOK 5[citation needed]
Communications management
Project change management
Risk management
Step 1: Project Goals
Page 26 of 58
 A project is successful when it has met the needs of the stakeholders. A
stakeholder is anybody directly, or indirectly impacted by the project.
 As a first step, it is important to identify the stakeholders in your
project. It is not always easy to determine the stakeholders of a project,
particularly those impacted indirectly. Examples of stakeholders are:
The project sponsor
The customer who receives the deliverables
The users of the project output
The project manager and project team
 Once you understand who the stakeholders are, the next step is to find
out their needs.
 The best way to do this is by conducting stakeholder interviews. Take
time during the interviews to draw out the requirements that create real
 Sometimes stakeholders will talk about needs that aren't relevant and
don't deliver benefits. These can be recorded and set as a low priority.
 The next step, once you have conducted all the interviews and have a
comprehensive list of needs is to prioritise them.
 From the prioritised list, create a set of easily measurable goals. A
good technique for doing this is to review them against the SMART
 This way, the achievement of the goal will be easy to identify.
 Once you have established a clear set of goals, they should be recorded
in the project plan.
 It can be useful also to include the needs and expectations of your
 Now you have completed the most difficult part of the planning
process; it's time to move on and look at the project deliverables.
Step 2: Project Deliverables
Page 27 of 58
 Using the goals you have defined in step 1, create a list of things the
project needs to deliver to meet those goals. Specify when and how to
deliver each item.
 Add the deliverables to the project plan with an estimated delivery
date. You will establish more accurate delivery dates during the
scheduling phase, which is next.
Step 3: Project Schedule
Create a list of tasks that need to be carried out for each deliverable
identified in step 2. For each task determine the following:
The amount of effort (hours or days) required for completing the task
The resource who will carry out the task
Once you have established the amount of effort for each task, you can
work out the effort required for each deliverable, and an accurate
delivery date. Update your deliverables section with the more precise
delivery dates.
At this point in the planning, you could choose to use a software
package such as Microsoft Project to create your project schedule.
Alternatively, use one of the many free templates available. Input all of
the deliverables, tasks, durations and the resources who will complete
each task.
A common problem discovered at this point is when you have an
imposed delivery deadline from the sponsor that is not realistic based
on your estimates. If you discover this is the case, you must contact the
sponsor immediately. The options you have in this situation are:
Renegotiate the deadline (project delay)
Employ additional resources (increased cost)
Reduce the scope of the project (less delivered)
Use the project schedule to justify pursuing one of these options.
Step 4: Supporting Plans
Page 28 of 58
This section deals with the plans you should create as part of the
planning process. These can be included directly in the plan.
Human Resource Plan
Identify, by name, the individuals and organisations with a leading role
in the project. For each, describe their roles and responsibilities on the
Next, specify the number and type of people needed to carry out the
project. For each resource detail start dates, the estimated duration and
the method you will use for obtaining them.
Create a single sheet containing this information.
Communications Plan
Create a document showing who is to be kept informed about the
project and how they will receive the information.
The most common mechanism is a weekly or monthly status report,
describing how the project is performing, milestones achieved and the
work you've planned for the next period.
Risk Management Plan
 Risk management is an important part of project management.
Although often overlooked, it is important to identify as many risks to
your project as possible and be prepared if something bad happens.
 Here are some examples of common project risks:
Time and cost estimate too optimistic
Customer review and feedback cycle too slow
Unexpected budget cuts
Unclear roles and responsibilities
No stakeholder input obtained
Not clearly understanding stakeholder needs
Page 29 of 58
Stakeholders changing requirements after the project has started
Stakeholders adding new requirements after the project has started
Poor communication resulting in misunderstandings, quality problems
and rework
Lack of resource commitment
Risks can be tracked using a simple risk log. Add each risk you have
identified to your risk log; write down what you will do in the event it
occurs, and what you will do to prevent it from happening.
Review your risk log on a regular basis, adding new risks as they occur
during the life of the project.
Remember, if you ignore risks, they don't go away.
Software development Plan
The Software Development Plan (SDP) describes a developer’s plans for conducting a
software development effort.
 The SDP provides the acquirer insight and a tool for monitoring the processes to be
followed for software development.
 It also details methods to be used and approach to be followed for each activity,
organization, and resources
What is a Quality Assurance Plan?
 A quality assurance plan is a document, constructed by the project team, meant to
ensure the final products are of the utmost quality.
 A quality assurance plan contains a set of documented activities meant to ensure that
customers are satisfied with the goods or services a company provides.
 There are four steps of the quality assurance process: Plan, Do, Check, and Act.
Validation Plans (VP)
 Validation Plans define the scope and goals of a validation project.
 The Validation Plan is written at the start of the validation project (sometimes
concurrently with the user requirement specification) and is usually specific to a
single validation project.
 A Validation Plan should include:
Deliverables (documents) to be generated during the validation process
Resources, departments, and personnel to participate in the validation project
Page 30 of 58
Time-lines for completing the validation project
Acceptance criteria to confirm that the system meets defined requirements
Compliance requirements for the system, including how the system will meet these
Configuration Management (CM) Plan
 The Configuration Management (CM) Plan describes all Configuration and
Change Control Management (CCM) activities you will perform during the
course of the product or project lifecycle.
 It details the schedule of activities, the assigned responsibilities, and the
required resources, including staff, tools, and computer facilities.
Maintenance Plans
 Software Maintenance Plans are different than other technical documents in that the
focus is on how to modify software AFTER it has been released and is now in
operations. Most other documents focus on planning, development or testing.
 Software maintenance in software engineering is the modification of a software product after
delivery to correct faults, to improve performance or other attributes.
 Developmental Plan. Staff development must be intentional, active, and potent. A
plan for individual growth should reflect current personal and professional status
regarding attributes needed to perform assigned duties, short- and long-term goals,
and alternative methods for achieving those goals.
Project Scheduling
 In project management, a schedule is a listing of a project's milestones, activities,
and deliverables, usually with intended start and finish dates.
 Those items are often estimated by other information included in the project schedule
of resource allocation, budget, task duration, and linkages of dependencies and
scheduled events.
 The project schedule is the tool that communicates what work needs to be performed,
which resources of the organization will perform the work and the timeframes in
which that work needs to be performed.
 The project schedule should reflect all of the work associated with delivering the
project on time.
 Without a full and complete schedule, the project manager will be unable to
communicate the complete effort, in terms of cost and resources, necessary to deliver
the project.
Tools for Schedule development
1. Critical Path method (CPM)
2. Gantt Chart
Page 31 of 58
Critical Path method (CPM)
 The critical path method (CPM) is a step-by-step project
management technique for process planning that defines critical and noncritical tasks with the goal of preventing time-frame problems and
process bottlenecks.
 The CPM is ideally suited to projects consisting of numerous activities that
interact in a complex manner.
 In applying the CPM, there are several steps that can be summarized as
Define the required tasks and put them down in an ordered (sequenced) list.
Create a flowchart or other diagram showing each task in relation to the others.
Identify the critical and non-critical relationships (paths) among tasks.
Determine the expected completion or execution time for each task.
Locate or devise alternatives (backups) for the most critical paths.
Network diagram above
What is a Gantt chart?
 A Gantt chart, commonly used in project management, is one of the most popular and useful ways
of showing activities (tasks or events) displayed against time.
Page 32 of 58
 On the left of the chart is a list of the activities and along the top is a suitable time scale. Each
activity is represented by a bar; the position and length of the bar reflects the start date, duration
and end date of the activity.
 This allows you to see at a glance:
What the various activities are
When each activity begins and ends
How long each activity is scheduled to last
Where activities overlap with other activities, and by how much
The start and end date of the whole project
 To summarize, a Gantt chart shows you what has to be done (the activities) and when (the
A simple Gantt chart
 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
 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 strategies. Let us study them briefly:
Structured Design
Page 33 of 58
 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
 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.
Page 34 of 58
 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 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.
Page 35 of 58
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.
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.
Design Process
Software design process can be perceived as series of well-defined steps. Though it varies
according to design approach (function oriented or object oriented, yet It may have the
following steps involved:
A solution design is created from requirement or previous used system and/or system sequence
Objects are identified and grouped into classes on behalf of similarity in attribute characteristics.
Class hierarchy and relation among them is defined.
Application framework is defined.
Software Design Approaches
 Here are two generic approaches for software designing:
 Top Down Design
 We know that a system is composed of more than one sub-systems and it contains a
number of components.
 Further, these sub-systems and components may have their on set of sub-system and
components and creates hierarchical structure in the system.
 Top-down design takes the whole software system as one entity and then
decomposes it to achieve more than one sub-system or component based on some
Page 36 of 58
 Each sub-system or component is then treated as a system and decomposed further.
 This process keeps on running until the lowest level of system in the top-down
hierarchy is achieved.
 Top-down design starts with a generalized model of system and keeps on defining
the more specific part of it.
 When all components are composed the whole system comes into existence.
 Top-down design is more suitable when the software solution needs to be designed
from scratch and specific details are unknown.
 Bottom-up Design
 The bottom up design model starts with most specific and basic components.
 It proceeds with composing higher level of components by using basic or lower level
 It keeps creating higher level components until the desired system is not evolved as
one single component.
 With each higher level, the amount of abstraction is increased.
 Bottom-up strategy is more suitable when a system needs to be created from some
existing system, where the basic primitives can be used in the newer system.
 Both, top-down and bottom-up approaches are not practical individually. Instead, a
good combination of both is used.
 User interface design (UI) or user interface engineering is the design of user
interfaces for machines and software, such as computers, home appliances, mobile devices, and
other electronic devices, with the focus on maximizing usability and the user experience.
 The goal of user interface design is to make the user's interaction as simple and efficient as
possible, in terms of accomplishing user goals (user-centered design).
User Interface Design Basics
 User Interface (UI) Design focuses on anticipating what users might need to do and
ensuring that the interface has elements that are easy to access, understand, and use to
facilitate those actions.
 UI brings together concepts from interaction design, visual design, and information
Page 37 of 58
Choosing Interface Elements
 Users have become familiar with interface elements acting in a certain way, so try to
be consistent and predictable in your choices and their layout.
 Doing so will help with task completion, efficiency, and satisfaction.
 Interface elements include but are not limited to:
Input Controls: buttons, text fields, checkboxes, radio buttons, dropdown lists, list boxes,
toggles, date field
Navigational Components: breadcrumb, slider, search field, pagination, slider, tags, icons
Informational Components: tooltips, icons, progress bar, notifications, message boxes, modal
Containers: accordion
 There are times when multiple elements might be appropriate for displaying content.
 When this happens, it’s important to consider the trade-offs.
 For example, sometimes elements that can help save you space, put more of a burden
on the user mentally by forcing them to guess what is within the dropdown or what
the element might be.
Best Practices for Designing an Interface
 Everything stems from knowing your users, including understanding their goals,
skills, preferences, and tendencies.
 Once you know about your user, make sure to consider the following when designing
your interface:
Keep the interface simple. The best interfaces are almost invisible to the user. They avoid
unnecessary elements and are clear in the language they use on labels and in messaging.
Create consistency and use common UI elements. By using common elements in your UI, users
feel more comfortable and are able to get things done more quickly. It is also important to create
patterns in language, layout and design throughout the site to help facilitate efficiency. Once a
user learns how to do something, they should be able to transfer that skill to other parts of the
Be purposeful in page layout. Consider the spatial relationships between items on the page and
structure the page based on importance. Careful placement of items can help draw attention to the
most important pieces of information and can aid scanning and readability.
Strategically use color and texture. You can direct attention toward or redirect attention away
from items using color, light, contrast, and texture to your advantage.
Page 38 of 58
Use typography to create hierarchy and clarity. Carefully consider how you use typeface.
Different sizes, fonts, and arrangement of the text to help increase scanability, legibility and
Make sure that the system communicates what’s happening. Always inform your users of
location, actions, changes in state, or errors. The use of various UI elements to communicate
status and, if necessary, next steps can reduce frustration for your user.
Think about the defaults. By carefully thinking about and anticipating the goals people bring to
your site, you can create defaults that reduce the burden on the user. This becomes particularly
important when it comes to form design where you might have an opportunity to have some fields
pre-chosen or filled out.
 A data structure is a specialized format for organizing and storing data.
General data structure types include the array, the file, the record, the table,
the tree, and so on. Any data structure is designed to organize data to suit a
specific purpose so that it can be accessed and worked with in appropriate
 An algorithm is a procedure or formula for solving a problem, based
on conductiong a sequence of specified actions. A computer program can be
viewed as an elaborate algorithm. In mathematics and computer science, an
algorithm usually means a small procedure that solves a recurrent problem.
 Variables are used to store information to be referenced and manipulated in a computer
program. They also provide a way of labeling data with a descriptive name, so our
programs can be understood more clearly by the reader and ourselves. It is helpful to
think of variables as containers that hold information. Their sole purpose is to label and
store data in memory. This data can then be used throughout your program.
Pseudo code structures (see pdf tutorial on pseudocode basics)
Sorting algorithms
Bubble sort
Page 39 of 58
VB code for bubble sort
Public Sub BubbleSort(ByRef ArrayIn() As Long)
Dim i, j As Integer
Dim t
As Long
For i = UBound(ArrayIn) To 0 Step -1
For j = 0 To i - 1
If ArrayIn(j) > ArrayIn(j + 1) Then
Call swap(ArrayIn(j), ArrayIn(j + 1))
End If
Next j
Next i
End Sub
Private Sub swap(ByRef data1 As Long, ByRef data2 As Long)
Dim temp As Long
temp = data1
data1 = data2
data2 = temp
End Sub
Quick sort
Page 40 of 58
QuickSort is a Divide and Conquer algorithm. It picks an element as pivot and partitions the given aarray around
the picked pivot. There are many different versions of quickSort that pick pivot in different ways.
1. Always pick first element as pivot.
2. Always pick last element as pivot (implemented below)
3. Pick a random element as pivot.
4. Pick median as pivot.
The key process in quickSort is partition(). Target of partitions is, given an array and an element x of array as
pivot, put x at its correct position in sorted array and put all smaller elements (smaller than x) before x, and put
all greater elements (greater
ater than x) after x. All this should be done in linear time.
1. Option Explicit
3. Private Sub Form_Load()
Dim MyStrArray() As String,
String K As Long, Q As Long
ReDim MyStrArray(1 To 10)
Debug.Print "Unsorted
sorted strings:"
For K = LBound(MyStrArray
MyStrArray) To UBound(MyStrArray)
' create a random string
MyStrArray(K) = String
String(10, " ")
For Q = 1 To 10
K), Q, 1) = Chr(Asc("A") + Fix(26 * Rnd))
Next Q
' print the string to the immediate window
Debug.Print MyStrArray
Next K
' sort the array
QuickSort MyStrArray, LBound
LBound(MyStrArray), UBound(MyStrArray)
' print the sorted string to the immediate window
Debug.Print vbNewLine & "Sorted strings:"
For K = LBound(MyStrArray
MyStrArray) To UBound(MyStrArray)
Page 41 of 58
Debug.Print MyStrArray(K)
Next K
End Sub
Private Sub QuickSort(C() As String, ByVal First As Long, ByVal Last As Long)
' Made by Michael Ciurescu (CVMichael from vbforums.com)
' Original thread: [url]http://www.vbforums.com/showthread.php?t=231925[/url]
Dim Low As Long, High As Long
Dim MidValue As String
Low = First
High = Last
MidValue = C((First + Last) \ 2)
While C(Low) < MidValue
Low = Low + 1
While C(High) > MidValue
High = High - 1
If Low <= High Then
Swap C(Low), C(High)
Low = Low + 1
High = High - 1
End If
Loop While Low <= High
If First < High Then QuickSort C, First, High
If Low < Last Then QuickSort C, Low, Last
End Sub
Private Sub Swap(ByRef A As String, ByRef B As String)
Dim T As String
End Sub
Linear search
Linear Search
Problem: Given an array arr[] of n elements, write a function to search a given element x in arr[].
A simple approach is to do linear search, i.e
 Start from the leftmost element of arr[] and one by one compare x with each element of arr[]
 If x matches with an element, return the index.
 If x doesn’t match with any of elements, return -1.
Page 42 of 58
Binary search
Binary Search
Given a sorted array
y arr[] of n elements, write a function to search a given element x in arr[].
A simple approach is to do linear search.The time complexity of above algorithm is O(n). Another approach
to perform thee same task is using Binary Search.
Binary Search: Search a sorted array by repeatedly dividing the search interval in half. Begin with an
interval covering the whole array. If the value of the search key is less than the item in the middle of the
interval,, narrow the interval to the lower half. Otherwise narrow it to the upper half. Repeatedly check until the
value is found or the interval is empty.
Page 43 of 58
Task: Use Visual basic programming to implement linear and binary search.
1st Normal Form Definition
A database is in first normal form if it satisfies the following conditions:
Contains only atomic values
There are no repeating groups
An atomic value is a value that cannot be divided. For example, in the table shown below, the
values in the [Color] column in the first row can be divided into "red" and "green", hence
[TABLE_PRODUCT] is not in 1NF.
A repeating group means that a table contains two or more columns that are closely related.
For example, a table that records data on a book and its author(s) with the following columns:
[Book ID], [Author 1], [Author 2], [Author 3] is not in 1NF because [Author 1], [Author 2],
and [Author 3] are all repeating the same attribute.
1st Normal Form Example
How do we bring an unnormalized table into first normal form? Consider the following
Page 44 of 58
This table is not in first normal form because the [Color] column can contain multiple values.
For example, the first row includes values "red" and "green."
To bring this table to first normal form, we split the table into two tables and now we have
the resulting tables:
2nd Normal Form Definition
A database is in second normal form if it satisfies the following conditions:
It is in first normal form
All non-key attributes are fully functional dependent on the primary key
In a table, if attribute B is functionally dependent on A, but is not functionally dependent on a
proper subset of A, then B is considered fully functional dependent on A. Hence, in a 2NF
table, all non-key attributes cannot be dependent on a subset of the primary key. Note that if
the primary key is not a composite key, all non-key attributes are always fully functional
dependent on the primary key. A table that is in 1st normal form and contains only a single
key as the primary key is automatically in 2nd normal form.
2nd Normal Form Example
Consider the following example:
Page 45 of 58
This table has a composite primary key [Customer ID, Store ID]. The non-key attribute is
[Purchase Location]. In this case, [Purchase Location] only depends on [Store ID], which is
only part of the primary key. Therefore, this table does not satisfy second normal form.
To bring this table to second normal form, we break the table into two tables, and now we
have the following:
What we have done is to remove the partial functional dependency that we initially had.
Now, in the table [TABLE_STORE], the column [Purchase Location] is fully dependent on
the primary key of that table, which is [Store ID].
Top 10 Secure Coding Practices/Programming Practices
1. Validate input. Validate input from all untrusted data sources. Proper input validation can eliminate the
vast majority of software vulnerabilities. Be suspicious of most external data sources, including command
line arguments, network interfaces, environmental variables, and user controlled files [Seacord 05].
2. Heed compiler warnings. Compile code using the highest warning level available for your compiler and
eliminate warnings by modifying the code [C MSC00-A, C++ MSC00-A]. Use static and dynamic analysis
tools to detect and eliminate additional security flaws.
3. Architect and design for security policies. Create a software architecture and design your software to
implement and enforce security policies. For example, if your system requires different privileges at
different times, consider dividing the system into distinct intercommunicating subsystems, each with an
appropriate privilege set.
4. Keep it simple. Keep the design as simple and small as possible [Saltzer 74, Saltzer 75]. Complex designs
increase the likelihood that errors will be made in their implementation, configuration, and use.
Additionally, the effort required to achieve an appropriate level of assurance increases dramatically as
security mechanisms become more complex.
Page 46 of 58
5. Default deny. Base access decisions on permission rather than exclusion. This means that, by default,
access is denied and the protection scheme identifies conditions under which access is permitted [Saltzer
74, Saltzer 75].
6. Adhere to the principle of least privilege. Every process should execute with the the least set of
privileges necessary to complete the job. Any elevated permission should be held for a minimum time.
This approach reduces the opportunities an attacker has to execute arbitrary code with elevated privileges
[Saltzer 74, Saltzer 75].
7. Sanitize data sent to other systems. Sanitize all data passed to complex subsystems [C STR02-A] such as
command shells, relational databases, and commercial off-the-shelf (COTS) components. Attackers may
be able to invoke unused functionality in these components through the use of SQL, command, or other
injection attacks. This is not necessarily an input validation problem because the complex subsystem being
invoked does not understand the context in which the call is made. Because the calling process understands
the context, it is responsible for sanitizing the data before invoking the subsystem.
8. Practice defense in depth. Manage risk with multiple defensive strategies, so that if one layer of defense
turns out to be inadequate, another layer of defense can prevent a security flaw from becoming an
exploitable vulnerability and/or limit the consequences of a successful exploit. For example, combining
secure programming techniques with secure runtime environments should reduce the likelihood that
vulnerabilities remaining in the code at deployment time can be exploited in the operational environment
[Seacord 05].
9. Use effective quality assurance techniques. Good quality assurance techniques can be effective in
identifying and eliminating vulnerabilities. Fuzz testing, penetration testing, and source code audits should
all be incorporated as part of an effective quality assurance program. Independent security reviews can lead
to more secure systems. External reviewers bring an independent perspective; for example, in identifying
and correcting invalid assumptions [Seacord 05].
10. Adopt a secure coding standard. Develop and/or apply a secure coding standard for your target
development language and platform.
1. Malware
is any program or file that is harmful to a computer user. Malwareincludes computer
viruses, worms, Trojan horses and spyware.
2. Botnets
A botnet is a collection of internet-connected devices, which may include PCs, servers,
mobile devices and internet of things devices that are infected and controlled by a common
type of malware. Users are often unaware of a botnet infecting their system.
Infected devices are controlled remotely by threat actors, often cybercriminals, and are used
for specific functions, so the malicious operations stay hidden to the user. Botnets are
commonly used to send email spam, engage in click fraud campaigns and generate malicious
traffic for distributed denial-of-service attacks.
Page 47 of 58
How botnets work
The term botnet is derived from the words robot and network. A bot in this case is a device
infected by malware, which then becomes part of a network, or net, of infected devices
controlled by a single attacker or attack group.
The botnet malware typically looks for vulnerable devices across the internet, rather than
targeting specific individuals, companies or industries. The objective for creating a botnet is
to infect as many connected devices as possible, and to use the computing power and
resources of those devices for automated tasks that generally remain hidden to the users of
the devices.
For example, an ad fraud botnet that infects a user's PC will take over the system's web
browsers to divert fraudulent traffic to certain online advertisements. However, to stay
concealed, the botnet won't take complete control of the web browsers, which would alert the
user. Instead, the botnet may use a small portion of the browser's processes, often running in
the background, to send a barely noticeable amount of traffic from the infected device to the
targeted ads.
Phishing is a form of fraud in which an attacker masquerades as a reputable entity or person
in email or other communication channels. The attacker uses phishing emails to distribute
malicious links or attachments that can perform a variety of functions, including the
extraction of login credentials or account information from victims.
How phishing works
Phishing attacks typically rely on social networking techniques applied to email or other
electronic communication methods, including direct messages sent over social networks,
SMS text messages and other instant messaging modes.
Phishers may use social engineering and other public sources of information, including social
networks like LinkedIn, Facebook and Twitter, to gather background information about the
victim's personal and work history, his interests, and his activities.
Control measures
Page 48 of 58
A firewall is a network security system, either hardware- or software-based, that uses rules to
control incoming and outgoing network traffic.
A firewall acts as a barrier between a trusted network and and an untrusted network. A
firewall controls access to the resources of a network through a positive control model. This
means that the only traffic allowed onto the network is defined in the firewall policy; all other
traffic is denied.
Tools used to eliminate vulnerabilities at programming level
Vulnerability Analysis Tools
During the process of producing software products, vendors unintentionally create
vulnerabilities that are later discovered and mitigated. By paying greater attention to the early
phases of the development lifecycle, we can change the nature of the engineering process to
detect and eliminate-and later avoid-vulnerabilities before products ship.
We help you understand how vulnerabilities are created and discovered. Our open source
tools help you find vulnerabilities so that you can eliminate them from your software before
you release it. Contact us if you want to discuss these tools or if you need more information
about our tools or work.
Basic Fuzzing Framework (BFF)
Basic Fuzzing Framework (BFF) is a mutational file fuzz testing tool that consists of a
Debian Linux virtual machine, the zzuf fuzzer, and a few associated scripts. A version of the
BFF that runs natively on Mac OS X is also available. Learn more about this tool, and
download a copy to begin fuzzing on your own.
Failure Observation Engine (FOE)
Failure Observation Engine (FOE) is a mutational file-based fuzz testing tool for finding
defects in applications that run on the Windows platform.
CERT Triage Tools
CERT Triage Tools consist of a triage script and a GNU Debugger (GDB) extension named
'exploitable' that classify Linux application defects by severity. We originally developed the
CERT Triage Tools in order to assist software vendors and analysts in identifying the impact
of defects discovered through techniques such as fuzz testing. As of May 2014, the CERT
Triage Tools project has been transitioned to the GDB 'exploitable' plugin project on GitHub.
CERT Tapioca
Page 49 of 58
CERT Tapioca is a virtual machine appliance (OVA) for performing man-in-the-middle
network traffic analysis of software and devices.
Dranzer discovers certain classes of vulnerabilities in Microsoft Windows ActiveX controls.
Several prominent information technology vendors are already using Dranzer to help
discover vulnerabilities in the ActiveX controls they produce before the products are shipped.
We are applying and expanding what we learned from developing that tool to develop tools
and techniques that address other technologies.
Risk Management (See pdf files Risk management)
Code of ethics (See pdf code of ethics)
Data Protection and legislation
The Data Protection Act controls how your personal information is used by organisations,
businesses or the government.
Everyone responsible for using data has to follow strict rules called ‘data protection
principles’. They must make sure the information is:
used fairly and lawfully
used for limited, specifically stated purposes
used in a way that is adequate, relevant and not excessive
kept for no longer than is absolutely necessary
handled according to people’s data protection rights
kept safe and secure
not transferred outside the European Economic Area without adequate protection
There is stronger legal protection for more sensitive information, such as:
ethnic background
political opinions
religious beliefs
sexual health
criminal records
Zimbabwe/ 5.1 General legislation
5.1.8 Data protection laws
Page 50 of 58
Access to Information and Protection of Privacy Act Chapter 10:27
This Act was enacted to provide members of the public with a right of access to records and
information held by public bodies; to make public bodies accountable by giving the public a
right to request correction of misrepresented personal information; to prevent the
unauthorised collection, use or disclosure of personal information by public bodies; to protect
personal privacy; to provide for the regulation of the mass media; to establish a Media and
Information Commission and to provide for matters connected therewith or incidental to the
Interception of Communications Act Chapter 11:20
An Act enacted to provide for the lawful interception and monitoring of certain
communications in the course of their transmission through a telecommunication, postal or
any other related service or system in Zimbabwe; to provide for the establishment of a
monitoring centre; and to provide for any other matters connected with or incidental to the
Censorship and Entertainments Control Act Chapter 10:04
An Act enacted to regulate and control the public exhibition of films, the importation,
production, dissemination and possession of undesirable or prohibited video and film
material, publications, pictures,
Statues and records and the giving of public entertainments; to regulate theatres and like
places of public entertainment in the interests of safety; and to provide for matters incidental
to the foregoing.
Data Security Policies
Essential Elements of a Data Security Policy
1. Safeguard Data Privacy: Employees must understand that your privacy policy is a
pledge to your customers that you will protect their information. Data should only be
used in ways that will keep customer identity and the confidentiality of information
secure. Of course, your employees and organizations must conform to all applicable
laws and regulations.
2. Establish Password Management: A password policy should be established for all
employees or temporary workers who will access corporate resources. In
general, password complexity should be established according to the job functions
and data security requirements. Passwords should never be shared.
3. Govern Internet Usage: Most people use the internet without a thought to the harm
that can ensue. Employee misuse of the internet can place your company in an
awkward, or even illegal, position. Establishing limits on employee internet usage in
the workplace may help avoid these situations. Every organization should decide how
employees can and should access the web. You want employees to be productive, and
this may be the main concern for limiting internet usage, but security concerns should
also dictate how internet guidelines are formulated.
Page 51 of 58
4. Manage Email Usage: Many data breaches are a result of employee misuse of email
that can result in the loss or theft of data and the accidental downloading of viruses or
other malware. Clear standards should be established regarding use of emails,
message content, encryption and file retention.
5. Govern and Manage Company-Owned Mobile Devices: When organizations
provide mobile devices for their employees to use, a formal process should be
implemented to help ensure that mobile devices are secure and used appropriately.
Requiring employees to be responsible for protecting their devices from theft and
requiring password protection in accordance with your password policy should be
minimum requirements.
6. Establish an Approval Process for Employee-Owned Mobile Devices: With the
increased capabilities of consumer devices, such as smart phones and tablets, it has
become easy to interconnect these devices to company applications and infrastructure.
Use of these devices to interconnect to company email, calendaring and other services
can blur the lines between company controls and consumer controls. Employees who
request and are approved to have access to company information via their personal
devices should understand and accept the limitations and controls imposed by the
7. Govern Social Media: All users of social media need to be aware of the risks
associated with social media networking. A strong social media policy is crucial for
any business that seeks to use social networking to promote its activities and
communicate with its customers. Active governance can help ensure employees speak
within the parameters set by their company and follow data privacy best practices.
8. Oversee Software Copyright and Licensing: There are many good reasons for
employees to comply with software copyright and licensing agreements.
Organizations are obliged to adhere to the terms of software usage agreements and
employees should be made aware of any usage restrictions. Also, employees should
not download and use software that has not been reviewed and approved by the
9. Report Security Incidents: A procedure should be in place for employees or
contractors to report malicious malware in the event it is inadvertently imported. All
employees should know how to report incidents of malware and what steps to take to
help mitigate damage.
Cybercrime, also called computer crime, is any illegal activity that involves a computer or
network-connected device, such as a mobile phone. The Department of Justice divides
cybercrime into three categories: crimes in which the computing device is the target, for
example, to gain network access; crimes in which the computer is used as a weapon, for
example, to launch a denial of service (DoS) attack; and crimes in which the computer is used
as an accessory to a crime, for example, using a computer to store illegally-obtained data.
Page 52 of 58
Testing approaches and levels (see A level notes pdf)
Software quality attributes
Software Quality Attributes are: Correctness, Reliability, Adequacy, Learnability,
Robustness, Maintainability, Readability, Extensibility, Testability, Efficiency, Portability.
Correctness: The correctness of a software system refers to:
- Agreement of program code with specifications
- Independence of the actual application of the software system.
The correctness of a program becomes especially critical when it is embedded in a complex
software system.
Reliability: Reliability of a software system derives from
- Correctness
- Availability
The behavior over time for the fulfillment of a given specification depends on the reliability
of the software system.
Reliability of a software system is defined as the probability that this system fulfills a
function (determined by the specifications) for a specified number of input trials under
specified input conditions in a specified time interval (assuming that hardware and input are
free of errors).
A software system can be seen as reliable if this test produces a low error rate (i.e., the
probability that an error will occur in a specified time interval.)
The error rate depends on the frequency of inputs and on the probability that an individual
input will lead to an error.
Adequacy: Factors for the requirement of Adequacy:
- The input required of the user should be limited to only what is necessary. The software
system should expect information only if it is necessary for the functions that the user wishes
to carry out. The software system should enable flexible data input on the part of the user and
should carry out plausibility checks on the input. In dialog-driven software systems, we vest
particular importance in the uniformity, clarity and simplicity of the dialogs.
- The performance offered by the software system should be adapted to the wishes of the user
with the consideration given to extensibility; i.e., the functions should be limited to these in
the specification.
- The results produced by the software system: The results that a software system delivers
should be output in a clear and wellstructured form and be easy to interpret. The software
system should afford the user flexibility with respect to the scope, the degree of detail, and
the form of presentation of the results. Error messages must be provided in a form that is
comprehensible for the user.
Learnability: Learnability of a software system depends on:
Page 53 of 58
- The design of user interfaces
- The clarity and the simplicity of the user instructions (tutorial or user manual).
The user interface should present information as close to reality as possible and permit
efficient utilization of the software’s failures.
The user manual should be structured clearly and simply and be free of all dead weight. It
should explain to the user what the software system should do, how the individual functions
are activated, what relationships exist between functions, and which exceptions might arise
and how they can be corrected. In addition, the user manual should serve as a reference that
supports the user in quickly and comfortably finding the correct answers to questions.
Robustness: Robustness reduces the impact of operational mistakes, erroneous input data,
and hardware errors.
A software system is robust if the consequences of an error in its operation, in the input, or in
the hardware, in relation to a given application, are inversely proportional to the probability
of the occurrence of this error in the given application.
- Frequent errors (e.g. erroneous commands, typing errors) must be handled with particular
- Less frequent errors (e.g. power failure) can be handled more laxly, but still must not lead to
irreversible consequences.
Maintainability: Maintainability = suitability for debugging (localization and correction of
errors) and for modification and extension of functionality.
The maintainability of a software system depends on its:
- Readability
- Extensibility
- Testability
Readability: Readability of a software system depends on its:
- Form of representation
- Programming style
- Consistency
- Readability of the implementation programming languages
- Structuredness of the system
- Quality of the documentation
- Tools available for inspection
Extensibility: Extensibility allows required modifications at the appropriate locations to be
made without undesirable side effects. Extensibility of a software system depends on its:
- Structuredness (modularity) of the software system
- Possibilities that the implementation language provides for this purpose
- Readability (to find the appropriate location) of the code
- Availability of comprehensible program documentation
Testability: suitability for allowing the programmer to follow program execution (runtime
behavior under given conditions) and for debugging. The testability of a software system
depends on its:
Page 54 of 58
- Modularity
- Structuredness
Modular, well-structured programs prove more suitable for systematic, stepwise testing than
monolithic, unstructured programs.
Testing tools and the possibility of formulating consistency conditions (assertions) in the
source code reduce the testing effort and provide important prerequisites for the extensive,
systematic testing of all system components.
Efficiency: ability of a software system to fulfill its purpose with the best possible utilization
of all necessary resources (time, storage, transmission channels, and peripherals).
Portability: the ease with which a software system can be adapted to run on computers other
than the one for which it was designed.
The portability of a software system depends on:
- Degree of hardware independence
- Implementation language
- Extent of exploitation of specialized system functions
- Hardware properties
- Structuredness: System-dependent elements are collected in easily interchangeable program
A software system can be said to be portable if the effort required for porting it proves
significantly less than the effort necessary for a new implementation.
Features of OOP
Features of OOP
OOP stands for Object Oriented Programming and the language that support this Object
Oriented programming features is called Object oriented Programming Language. An
example of a language that support this Object oriented features is C++.
Features of Object oriented Programming
The Objects Oriented programming language supports all the features of normal
programming languages. In addition it supports some important concepts and terminology
which has made it popular among programming methodology.
The important features of Object Oriented programming are:
Data Hiding
Page 55 of 58
Let us see a brief overview of these important features of Object Oriented programming
But before that it is important to know some new terminologies used in Object Oriented
programming namely
In other words object is an instance of a class.
These contain data and functions bundled together under a unit. In other words class is a
collection of similar objects. When we define a class it just creates template or Skelton. So no
memory is created when class is created. Memory is occupied only by object.
Class classname
main ( )
classname objectname1,objectname2,..;
In other words classes acts as data types for objects.
Member functions:
The functions defined inside the class as above are called member functions.
Here the concept of Data Hiding figures
Data Hiding:
This concept is the main heart of an Object oriented programming. The data is hidden inside
the class by declaring it as private inside the class. When data or functions are defined as
private it can be accessed only by the class in which it is defined. When data or functions are
defined as public then it can be accessed anywhere outside the class. Object Oriented
programming gives importance to protecting data which in any system. This is done by
declaring data as private and making it accessible only to the class in which it is defined. This
concept is called data hiding. But one can keep member functions as public.
So above class structure becomes
Class classname
datatype data;
Page 56 of 58
Member functions
main ( )
classname objectname1,objectname2,..;
The technical term for combining data and functions together as a bundle is encapsulation.
Inheritance as the name suggests is the concept of inheriting or deriving properties of an
exiting class to get new class or classes. In other words we may have common features or
characteristics that may be needed by number of classes. So those features can be placed in a
common tree class called base class and the other classes which have these charaterisics can
take the tree class and define only the new things that they have on their own in their classes.
These classes are called derived class. The main advantage of using this concept of
inheritance in Object oriented programming is it helps in reducing the code size since the
common characteristic is placed separately called as base class and it is just referred in the
derived class. This provide the users the important usage of terminology called as reusability
This usage is achieved by the above explained terminology called as inheritance. Reusability
is nothing but re- usage of structure without changing the existing one but adding new
features or characteristics to it. It is very much needed for any programmers in different
situations. Reusability gives the following advantages to users
It helps in reducing the code size since classes can be just derived from existing one and one
need to add only the new features and it helps users to save their time.
For instance if there is a class defined to draw different graphical figures say there is a user
who want to draw graphical figure and also add the features of adding color to the graphical
figure. In this scenario instead of defining a class to draw a graphical figure and coloring it
what the user can do is make use of the existing class for drawing graphical figure by
deriving the class and add new feature to the derived class namely add the feature of adding
colors to the graphical figure.
Polymorphism and Overloading:
Poly refers many. So Polymorphism as the name suggests is a certain item appearing in
different forms or ways. That is making a function or operator to act in different forms
depending on the place they are present is called Polymorphism. Overloading is a kind of
polymorphism. In other words say for instance we know that +, – operate on integer data type
and is used to perform arithmetic additions and subtractions. But operator overloading is one
in which we define new operations to these operators and make them operate on different
data types in other words overloading the existing functionality with new one. This is a very
important feature of object oriented programming methodology which extended the handling
of data type and operations.
Page 57 of 58
Thus the above given important features of object oriented programming among the
numerous features it have gives the following advantages to the programming world. The
advantages are namely
• Data Protection or security of data is achieved by concept of data hiding
• Reduces program size and saves time by the concept of reusability which is achieved by the
terminology of Inheritance
• Operators can be given new functions as per user which extends the usage.
Page 58 of 58
Random flashcards
State Flags

50 Cards Education

Countries of Europe

44 Cards Education

Art History

20 Cards StudyJedi

Sign language alphabet

26 Cards StudyJedi

Create flashcards