Search This Blog

Class XI | CHAPTER 2

Software Concepts

Hardware and Software

A computer consists of both hardware and software and both are equally important for the working of the computer system. The electronic components of a computer system that we can see and touch are called hardware.  Software is a general term used for computer programs that control the operations of the computer.  A program is a sequence of instructions that perform a particular task.  A set of programs form software. It is the software which gives hardware its capability. Hardware is of no use without software and software cannot be used without hardware.

Types of Software

Software can be broadly are categorized as:
*      System Software
*      Application Software
*      Utility Software

System Software

System Software is the software that is directly related to coordinating computer operations and performs tasks associated with controlling and utilizing computer hardware. These programs assist in running application programs and are designed to control the operation of a computer system. System software directs the computer what to do, when to do and how to do. System software can be further categorized into
*      Operating System
*      Language Translators

Operating System

An Operating system is the most important system software. It is a set of programs that control  and  supervise the hardware of a computer and also provide  services  to application  software,  programmers  and  users. It  manages  all  hardware and  software, input,  output  and  processing  activities  within  the  computer  system,  the  flow of information to and from the processor, sets priorities for handling different tasks, and so on. Without operating system a computer cannot do anything useful. When a computer is switched on, the operating system is the first program that is loaded onto its memory. A user cannot communicate directly with the computer hardware, so the operating system acts as an interface between the user and the computer hardware. Some of the popular operating systems used in personal computers are DOS, Windows, UNIX, Linux, Solaris, etc. An  operating  system  can  be  a  Single  User  or  a  Multiuser operating  system.  A  single user  operating  system  allows  only  one  user  to  work  at  any  time  but  a  multiuser operating  system  allows  two  or  more  users to use a powerful computer  at  the  same time.  For  example  Windows  7  is  a  single  user  operating  system  while  Linux  is  a multiuser operating system.
Need for an Operating System
Operating system provides a platform, on top of which, other programs, called application programs can run. As discussed before, it acts as an interface between the computer and the user. It is designed in such a manner that it operates controls and executes various applications on the computer. It also allows the computer to manage its own resources such as memory, monitor, keyboard, printer etc.
Our choice of operating system, therefore, depends to a great extent on the CPU and the other attached devices and the applications we want to run.  The operating system controls the various system hardware and software resources and allocates them to the users or programs as per their requirement.
Functions of an Operating System
An operating system has variety of functions to perform. Some of the prominent functions of an operating system can be broadly outlined as:
*      Processor Management: This deals with management of the Central Processing Unit (CPU). The operating system takes care of the allotment of CPU time to different processes. This is called scheduling. Two types of scheduling techniques are employed by an operating system:
·         Priority Scheduling: Each task is given CPU time according to the priority assigned to that task. The program with higher priority will be given CPU time before a program with lower priority. The CPU executes the task till it is completed or there is some interrupt request i.e. till the time operating system  has  to  stop  (interrupt)  the  current  task  due  to  an  unavoidable  job request. The major drawback of Priority scheduling is that even a small job has to wait for a long time when a long duration job with higher priority is being executed.
·         Round Robin Scheduling: This type of scheduling technique is also known as Time Sharing Scheduling. In this, each program or task is given a fixed amount of time to execute. The CPU continues with the execution till either the allotted time is over or there  is  some  interrupt  request  or  the  task  is completed before the allotted time. If the task is not completed at the end of the  allotted  time,  it  is  put  at  the  end  of  the  queue. So each task gets its allotted share of CPU time.  This scheduling technique improves the response time and provides an interactive environment. Hence time sharing operating system is very useful in network environment as each user is allowed to share the network resources.
*      Device Management: The Operating System communicates with hardware and the attached devices and maintains a balance between them and the CPU. This is all the more important because the CPU processing speed is much higher than that of I/O devices. In order to optimize the CPU time, the operating system employs two techniques - Buffering and Spooling.
·         Buffering: In this technique the temporary storage of input and output data is done in Input Buffer and Output Buffer. Once the signal for input or output is sent to or from the CPU respectively, the operating system through the device controller moves the data from the input device to the input buffer and for the output device to the output buffer. When the signal is sent to/from the operating system to the respective device controllers, the program doesn’t wait rather it returns to its processing. In case of input, if the buffer is full, the operating system sends a signal to the program which processes the data stored in the buffer. When the buffer becomes empty, the program  informs  the  operating  system  which  reloads  the  buffer  and  the input  operation  continues.  Similarly for output when the program being executed has to display some output, it fills the buffer and then informs the operating system.  Thereafter  the  operating  system  empties  the  buffer  by sending  data  to  the  output  device  and  in  the  meantime the  program  fills another  buffer.  This technique is called overlapped processing. This  is because  while  the  operating  system  reloads  one  buffer,  the  executing program  doesn’t  stop  as  it  is  able  to  retrieve/fill  data  from/in  another buffer.
·         Spooling  (Simultaneous  Peripheral  Operation  on  Line): This  is  a  device management  technique  used  for  processing  of  different  tasks on  the  same input/output device. Say for example there are various users on a network sharing the same printer.  At  one  point  of  time  more  than  one  user  might give print command. The speed of the printer is very slow as compared to the CPU processing. So the operating system temporarily stores the data of every user on the hard disk of the computer to which the printer is attached. The individual users need not wait for the printing process to be complete. Instead the operating system sends the data from to hard disk to the printer one by one.
*      Memory management: In a computer, both the CPU and the I/O devices interact with the memory. When a program needs to be executed it is loaded onto the main memory till the execution is complete. Thereafter that memory space is freed and is available for other programs.  The common memory management techniques used by the operating system are Partitioning and Virtual Memory.
·         Partitioning: The total memory is divided into various partitions of same size or different sizes. This helps to accommodate number of programs in the memory.  The partition can be fixed i.e.  remains same for  all  the programs  in  the  memory  or  variable  i.e.  memory  is allocated  when  a program  is  loaded  on  to  the  memory.  The later approach causes less wastage of memory but in due course of time, it may become fragmented.
·         Virtual Memory: This is a technique used by the operating system by virtue of which the  user can load the  programs  which  are  larger  than  the  main memory of the computer. In this technique the program is executed even if the complete program is not loaded on to the main memory. The operating system divides the main memory into equal sizes called pages. A part of the program resides in the main memory and is called the active set. The rest is in the secondary storage device in the form of tracks/sectors or blocks. With the  help  of  Page  Map  Tables  (PMT),  the  operating  system  keeps  track which page of main memory is storing which block of secondary memory. A virtual address (which is not the real physical address) is mapped either to the main memory or the secondary memory.  Hence virtual memory allows more programs and even larger programs to be executed in the main memory leading to efficient memory utilization.
*      File Management: The operating System manages the files, folders and directory systems on a computer.  Any data on a computer is stored in the form of files and the operating system  keeps  information  about  all  of  them  using  File  Allocation Table  (FAT). The  FAT  stores  general  information  about  files  like  filename,  type (text  or  binary),  size,  starting  address  and  access  mode  (sequential/indexed sequential/direct/relative).  The  file  manager  of  the  operating  system  helps  to create,  edit,  copy,  allocate  memory  to  the  files  and  also updates  the  FAT.  The operating system also takes care that files are opened with proper access rights to read or edit them.

Types of Operating System
OS are classified into the following types depending on their capability of processing
*      Single User and Single Task OS: It is used on a standalone single computer for performing a single task.  Operating systems for Personal Computers (PC) are single-user OS. Single user OS are simple operating system designed to manage one task at a time. MS-DOS is an example of single user OS.
*      Multiuser OS is used in mini computers or mainframes that allow same data and applications to be accessed by multiple users at the same time. The users can also communicate with each other. Linux and UNIX are examples of multiuser OS.
*      Multiprocessing  OS have  two  or  more  processors  for  a  single  running  process. Processing  takes  place  in  parallel  and  is  also  called  parallel  processing.  Each processor works on different parts of the same task, or, on two or more different tasks.  Since  execution  takes  place  in  parallel,  they  are  used  for  high  speed execution, and to increase the power of computer. Linux, UNIX and Windows 7 are examples of multiprocessing OS.
*      Time  sharing  Operating  System:  It  allows  execution  of  more  than  one  tasks  or processes  concurrently.  For  this,  the  processor  time  is  divided  amongst  different tasks.  This  division  of  time  is  also  called  time  sharing.  The  processor  switches rapidly between various processes. After the stipulated time is over, the CPU shifts to  next  task  in  waiting,  So  this  type  of  operating  system  employs  round  robin scheduling technique. The system switches rapidly from one user to another but still  each  user  feels  that  it  is  getting  a  dedicated  CPU  time.  Virtual  Memory techniques  are  used  in  this  type  of  operating  system.  For  example,  the  user  can listen to music on the computer while writing an article using a word processing software.  The  user  can  switch  between  the  applications  and  also  transfer  data between  them.  Time  sharing  operating  system  can  be  both  single  user  and multiuser.  Windows  95  and  all  later  versions  of  Windows  are  examples  of multitasking OS.
*      Real Time Operating System:  It is a multitasking operating system designed for real time applications like robotics. In this type of operating system, the tasks have to be done within a fixed deadline. System performance is good if task is finished within this deadline.  If  it  is  not  done,  the  situation  is  called  Deadline  Overrun. Lesser  the  deadline  over  run,  better  is  the  system  efficiency.  Hence  Real  Time operating  systems  depend  not  only  on  the  logical  result  of  the  computation  but also on the time in which the results are produced.
*      Distributed  Operating  System:  On  a  network  data  is  stored  and  processed  on multiple  locations.  The  Distributed  Operating  System  is  used  on  networks  as  it allows  shared  data/files  to  be  accessed  from  any  machine  on  the  network  in  a transparent manner. We can insert and remove the data and can even access all the input  and  output  devices.  The  users  feel  as  if  all  data  is  available  on  their workstation itself.
*      Interactive  Operating  System: This  is  the  operating  system  that  provides  a Graphic  User  Interface  (GUI)  through  which  the  user  can  easily  navigate  and interact. The computer responds almost immediately after an instruction has been entered,  and  the  user  can  enter  new  instructions  after  seeing  the  results  of  the previous instructions.
Commonly Used Operating Systems
Some of the commonly used operating systems are discussed below:
1.       Windows: Microsoft launched Windows 1.0 operating system in 1985 and since then Windows has ruled the world’s software market.  It is a GUI (Graphic User Interface) and various versions of Windows have been launched like Windows 95,  Windows  98,  Win  NT,  Windows  XP,  Windows  7  and  the  latest  being Windows 8.
2.        Linux: Linux is a free and open software which means it is freely available for use and since its source code is also  available so anybody can use it, modify it and  redistribute  it.  It  can  be downloaded  from  www.linux.org.  It  is  a  very popular operating system used and supported by many companies. The defining component of this operating system is the Linux kernel.
3.       BOSS  (Bharat  Operating  System  Solutions):  This  is  an  Indian  distribution  of GNU/Linux.  It consists  of  Linux  operating  system  kernel,  office  application suite,  Bharateeya  OO,  Internet  browser  (Firefox),  multimedia  applications  and file sharing.
4.       UNIX:  It  is  a  multitasking,  multiuser  operating  system  originally  developed  in 1969 at Bell Labs. It was one of the first operating systems developed in a high level language, namely C. Due to its portability, flexibility and power, UNIX is widely being  used  in  a  networked  environment.  Today,  ”UNIX”  and  "Single UNIX Specification" interface are owned and trademarked by The Open Group. There  are  many  different  varieties  of  UNIX,  although  they  share  common similarities, the most popular being GNU/Linux and Mac OS X.
5.       Solaris: It is a free Unix based operating system introduced by Sun Microsystems in 1992. It is now also known as Oracle Solaris. Solaris is registered as compliant with Single UNIX  Specification.  It  is  quite  scalable  and  is  used  on  virtual machines.
Mobile Operating Systems (Mobile OS)
It is the operating system that operates on digital mobile devices like smart phones and tablets. It extends the features of a normal operating system for personal computers so as  to  include  touch  screen,  Bluetooth,  WiFi,  GPS  mobile  navigation,  camera,  music player  and  many  more.  The  most  commonly  used  mobile  operating  systems  are  – Android and Symbian.
Android: It is a Linux derived Mobile OS released on 5th November 2007 and by 2011 it had more than 50% of the global Smartphone market share.  It is Google’s open and free software that includes an operating system, middleware and some key applications for use on mobile devices. Android applications are quiet user friendly and even one can easily  customize  the  Smartphone  with  Android  OS.  Various  versions  of  Android  OS have been released like 1.0, 1.5, 1.6, 2. x, 3.0 etc. Most Android phones use the 2.x release while  Android  3.0  is available  only  for tablets.  The  latest  Android  version  released  is 4.2.2. The Android releases have dessert inspired codenames like Cupcake, Honeycomb, Ice Cream sandwich and Jelly Bean.
Symbian: This Mobile OS by Nokia (currently being maintained by Accenture) designed for smartphones.  It offers high level of functional integration between communication and personal information management. It has an integrated mail box and it completely facilitates  the  usage  of  all  Google  applications  in  your  smartphone  easily.  Symbian applications are easy to shut down as compared to Android applications.  Various versions like S60 series, S80 series, S90 series, Symbian Anna etc have been released. The latest Symbian releases (Symbian Belle) can support 48 languages.

Language Processors

We know that computer understands instructions in machine code, i.e. in the form of 0s and 1s. It is difficult for us to write computer program directly in machine  code. The programs  are  written  mostly  in  high-level  languages,  i.e.  BASIC,  C++,  Python  etc.  A program  written  in  any  high-level  programming  language  (or  written  in  assembly language) is called the Source Program or Source Code.
The source code cannot be executed directly by the computer. The source code must be converted into machine language to be executed. The program translated into machine code is known as Object Program or Object code.
The special translator system software that is used to translate the program written in high-level  language  (or  Assembly  language)  into  machine  code  is  called  language processor or translator program.
The language processors can be any of the following three types- Assembler, Compiler and Interpreter.

Assembler

The  Assembler  is  used  to  translate  the  program  written  in  Assembly  language  into machine  code.  The  input  of  Assembler  is  a  source  program  that  contains  assembly language instructions. The output generated by assembler is the object code or machine code understandable by the computer.

Compiler

The language processor that translates the complete source program as a whole in one go  into  machine  code  is  called  compiler.  Some  of  the  examples  are  C  and  C++ compilers.
The program translated into machine code is called the object program. The source code is translated to object code successfully if it is free of errors. If there are any errors in the source  code,  the  compiler  specifies  the  errors  at  the  end  of  compilation  with  line numbers. The errors must be removed before the compiler can successfully  recompile the source code again.

Interpreter

The  language  processor  that  translates  a  single  statement  of  source  program  into machine code and executes it immediately before moving on to the next line is called an Interpreter. If there is an error in the statement the interpreter terminates its translating process at that statement and displays an error message.
Only after removal of the error, the interpreter moves on to the next line for execution.

Utilities

A utility software is one which provides certain tasks that help in proper maintenance of  the  computer.  The  job  of  utility  programs  is  to  keep  the  computer  system running smoothly.  Nowadays  many  utility  softwares  are  part  of  the  operating  system  itself. Even if there is no utility software on your computer, the computer works but with the right kind of utility software loaded, the computer becomes more reliable and even its processing speed increases. Some of the commonly  use utility softwares are antivirus, Disk defragmenter, backup, compression etc.

*    Antivirus

 An antivirus is utility software which detects and removes computer viruses. If the software  is  not  able  to  remove  the  virus,  it  is  neutralized.  The  antivirus  keeps  a watch on the functioning of the computer system. If a virus is found it may alert the user, flag the infected program or kill the virus. Some of the common types of viruses are:
·         Boot Sector Virus: A boot sector virus displaces the boot record and copies itself to the boot sector i.e. where the program to boot the machine is stored. So first the virus is loaded on to the main memory and then the operating system. Whenever a new disk is inserted the virus copies itself to the new disk. The antivirus overwrites the correct boot record on the infected boot sector and also cleans the bad sectors.
·         File Virus: A file virus generally attacks executable files. They can attach to various locations of the original file, replace code, fill in open spaces in the code, or create companion files to work with an executable file. Most of the file viruses are memory resident and wait in the memory until the user runs another program. While another program is running, the virus replicates.
·         Macro  Virus:  This  virus  infects  an  important  file  called  normal.dot  of MS Word.  As  soon  as  the  application  is  opened  the  virus  gets  activated.  It damages  the  formatting  of  documents  and  even  may  not  allow  editing  or saving of documents.
·         Trojan Horse: It is a code generally hidden in games or spreadsheets. Since they  are  hidden,  the  program  seems  to  function  as  the  user  wants  but actually it is destroying the program. A Trojan horse does not require a host program to embed itself. It is a complete program. Its main objective is to cause harm to the data. They can create bad sectors on the disk, destroy file allocation tables and cause the system to hang.
·         Worm: Worm  is  a  program  capable  of  replicating  itself  on  a  computer network.  A  worm  also  does  not  require  a  host  as  it  is  a  self  contained program.  They  generally  travel  from  one  computer  to  another  across communication links on a network. They generally disrupt routine services.
*      Disk Defragmenter
 The memory is used in small chunks randomly. Sometimes when a memory chunk of appropriate size is not available, the operating system breaks or fragments the files resulting in slower access to files. A disk defragmenter scans the hard disk for fragmented files and brings all the fragments together.
*      Backup Utility
 This  utility  is  used  to create  the  copy of  the  complete  or  partial  data  stored  in a disk or CD on any other disk. In case the hard disk crashes or some other system failure occurs, the files can be restored using backup software.
*      Compression Utility
This utility is used to compress large files. Compression is useful because it helps reduce resources usage and the file transmission on the network becomes easier.
*      Disk Cleaner
This utility scans for file that have not been  accessed/used since long. Such files might be occupying huge amount of memory space. In that case the Disk Cleaner utility prompts the user to delete such files so as to create more space on the disk. If the files are important, the user might take a backup before deleting them.
*      File Management Tools
This  utility  helps  the  user  in  storing,  indexing,  searching  and  sorting  files  and folders on the system. The most commonly used tool is the Windows Explorer and Google Desktop.

Application Software

Application software is bought by the user to perform specific applications or tasks, say for example making a document or making a presentation or handling inventory or managing the employee database.  Application software can be of two types – General Purpose Application Software and Customized Application software.

General Purpose Application Software

Some  of  the  application  software  is made  for  the  common  users  for  day  to  day applications and uses. These are also referred as Office Tools. The users may use them in  the  manner  they  want.  Some  of  the  popular  types  of  general  purpose  application software are discussed below:
*      Word Processor: Word processor is a general purpose application software used to create documents. It allows us to create , edit and format documents. We can use different types of fonts of various sizes; underline or make bold a certain part of the  text.  We  can  add  clipart  and  other  graphics  into  the  document.  Popular examples  of  Word  processing  software  are  Writer  (Open  Office)  and  Microsoft Word.
We use word processing software for various uses like writing a simple document to designing special art effects. Since we  can attach images and different shapes, can  use  different  colors,  even  a  poster  can  be  designed  using  word  processing software.  Features  like  Mail  Merge,  Macro  has  further  enhanced  the  word processing software and made it very useful.
*      Presentation  Tools:  Presentation  tools  is  a  general  purpose  application  software that lets us create presentations on any topic. We can not only create a presentation and  add  slides  into  that  but  also  can  use  different  types  of  background,  fonts, animations,  audio,  video,  etc.  We can add clipart and other graphics into our document. Even audio video files can be added on to the presentations.  Popular examples  of  Presentation  tools  software  are  Impress  (open  office)  and  Microsoft Power Point.
*      Spreadsheet Packages: Spreadsheet is general purpose application software that lets us create and store data in tabular form. Both text and numerical values can be entered in that tables known as a spreadsheet. We can not only create a document and  add  data  into  that  but  also  can  create  different  types  of  charts  and  graphs based upon the numerical data stored in that page. All common mathematical and statistical formulae can be used on the numeric data.  Popular examples of Spreadsheet software are Calc (Open Office) and Microsoft Excel.
*      Database Management System: Database Management System is general purpose application  software  that  lets  us  create  computer  programs  that  control  the creation,  maintenance,  and  the  use  of  database  for  an  organization  and  its  end users. We can not only store data but can also manage data in a database. We can also import and export the data to many formats including Excel, Outlook, ASCII, dBase,  FoxPro,  Oracle,  SQL  Server,  ODBC,  etc.  Popular examples  of  Database Management System are Base (Open Office) and Microsoft Access.

Customized Software

Customized Software is one which is tailor made as per the user’s requirement. Such type of software is customer specific. It is made keeping in mind the individual needs of the  user  and  so  are  also  referred  as  Domain  Specific  Tools.  Such  software  cannot  be installed and used by any other user/customer since the requirements may differ. Some examples of customized software are discussed below:
*      Inventory  Management  System  &  Purchasing  System:  Inventory  Management System is generally used in departmental stores or other organizations to keep the record of the stock of all the physical resources. For Example, in a Computer store, it  keeps  record  of  the  number  of  computers,  printers,  printing  sheet,  printer cartridge  available.  It  also  helps  to  place  purchase  orders,  bills,  invoices  etc. Various  reports  as  to  position  of  stock,  sales  made  in  a  particular  period,  profit earned etc. can be generated.
*      School  Management  System:  School  Management  System  (sometimes  called  a School Information System or SIS) is a system that manages all of a school's data in a  single,  integrated  application.  Having  all  of  the  information  in  a  single  system allows schools to more easily connect data together. For example, when viewing a student’srecord, the user can follow a link to the  student’sclass, and from there a link  to the  student’s teacher,  and  from  there  a  link  to the  teacher's  other  classes, and so on.
*      Payroll  System:  Payroll  Management  System  software  is  used  by  all  modern organizations to keep track of employees of the organization who receives wages or  salary.  All  different  payment  amounts  are  calculated  by  the  payroll  software and  the  record  is  maintained.  The  software  keeps  track  of  personal  records  of employees  viz.  name,  address,  date  of  birth,  qualification,  date  of  joining  etc.  It also  keeps  track  of  professional  record  viz.  allowances,  perks,  income  tax, insurance  etc.  Different  reports,  pay  slips  etc  can  be  generated  through  this software.
*      Financial Accounting:  Financial accounting System is used to prepare accounting information, maintain different accounts ledger, and account books. It also helps an organization to make budget.
*      Hotel  Management:  Hotel  management  software  refers  to  management techniques  used  in  the  hotel  sector.  These  can  include  hotel  administration, accounts,  billing,  marketing,  housekeeping,  front  office  or  front  desk,  food  and beverage management, catering and maintenance. Even advance bookings can be made through this software. Customers can have a look at the hotel and the rooms before making bookings. At any point of time the room availability, tariff for each type of room and even booking status can be checked.
*       Reservation  System:  Reservation  System  is  software  used  to  book  (reserve)  air flights,  railway  seats,  movie  tickets,  tables  in  a  restaurant,  etc.  In  the  case  of  a booking system, the inputs are booking requests. The processing involves checking if bookings are possible, and if so making the bookings. The outputs are booking confirmations/rejections.
*      Weather  Forecasting  system: This  software  makes  it  possible  to  forecast  the weather for days and even months in advance. The detailed weather reports can also be generated.

Open Source Concepts

Software are mainly categorised into the following categories based on their licenses:
1.  Proprietary
2.  Shareware
3.  Freeware
4.  Open source
5.  Free Software
*      Proprietary
We pay a supplier for a copy of the software which these days may be supplied on physical media (disks) or downloaded from the Internet. We get the permission to use the software on one or sometimes more than one machines. Examples of this type of software include Microsoft Office and Microsoft Windows.
*      Shareware
Shareware is basically a software for trial purpose that the user is allowed to try for free, for a specified period of time. It is usually downloaded from the Internet. When the trial period ends, the software must be purchased or uninstalled.
*      Freeware
Freeware software is free of cost and is usually bundled up with some operating system  or  any  other  software.  Examples  of  freeware  include  Microsoft  Internet Explorer  which  comes  bundled  up  with  any  Microsoft  operating  system.  The author of the freeware software is the owner of the software, though people may use it for free. The source code is not available, so no modifications can be done. Freeware should not be mistaken with Open Source Software or Free Software.
*      Open source
Open  Source  Software  (OSS)  is  the  software  which  gives  the  users  freedom  to run/use  the  software  for  any  purpose  and  in  any  manner.  They  can  be  used, modified and even redistributed. In simple terms it can be freely used but it may not be free of charge. The source code is freely available to the customer. Python, TuxPaint etc are examples of Open Source Software.
*      Free Software

This type of software is freely accessible and can be freely used, modified, copied or distributed by anyone. And no licence fee or any other form of payment need to be  made  for  a  free  software.  The  source  code  is  also  accessible  in  case  of  free softwares.

No comments:

Post a Comment

How do I crack the GSOC in the field of machine learning?

How do I crack the GSOC in the field of machine learning? Working as a student at Google Summer of Code demands for your dedication an...