Software: Presented By: Group 3
Software: Presented By: Group 3
Software: Presented By: Group 3
SOFTWARE
(REPORT)
Presented by:
GROUP 3
Alday, Rizaldo
Batingan, Ellaine Mariane
Caande, Jaeshel Anne
Pabillare, Angelica
Peconada, Rizza
Serrato, Lemuel
Presented to:
Mr. Marc Anthony Bautista
Classification
There are many different ways to divide up different types of application software, and several are
explained here.
Since the development and near-universal adoption of the web, an important distinction that has emerged
has been between web applications written with HTML, JavaScript and other web-native technologies
and typically requiring one to be online and running a web browser, and the more traditional native
applications written in whatever languages are available for one's particular type of computer. There has
been contentious debate in the computing community regarding web applications replacing native
applications for many purposes, especially on mobile devices such as smart phones and tablets. Web apps
have indeed greatly increased in popularity for some uses, but the advantages of applications make them
unlikely to disappear soon, if ever. Furthermore, the two can be complementary, and even integrated.
Application software can also be seen as being either horizontal or vertical. Horizontal applications are
more popular and widespread, because they are general purpose, for example word processors or
databases. Vertical applications are niche products, designed for a particular type of industry or business,
or department within an organization. Integrated suites of software will try to handle every specific aspect
possible of, for example, manufacturing or banking systems, or accounting, or customer service.
There are many types of application software:
An application suite consists of multiple applications bundled together. They usually have related
functions, features and user interfaces, and may be able to interact with each other, e.g. open each
other's files. Business applications often come in suites, e.g. Microsoft
Office, LibreOffice and iWork, which bundle together a word processor, a spreadsheet, etc.; but suites
exist for other purposes, e.g. graphics or music.
Enterprise software addresses the needs of an entire organization's processes and data flows,
across several departments, often in a large distributed environment. Examples include enterprise
resource planning systems, customer relationship management (CRM) systems and supply chain
management software. Departmental Software is a sub-type of enterprise software with a focus on
smaller organizations and/or groups within a large organization. (Examples include travel expense
management and IT Helpdesk.)
Information worker software lets users create and manage information, often for individual
projects within a department, in contrast to enterprise management. Examples include time
management, resource management, analytical, collaborative and documentation tools. Word
processors, spreadsheets, email and blog clients, personal information system, and individual media
editors may aid in multiple information worker tasks.
Content access software is used primarily to access content without editing, but may include
software that allows for content editing. Such software addresses the needs of individuals and groups
to consume digital entertainment and published digital content. (Examples include media
players, web browsers, and help browsers.)
Educational software is related to content access software, but has the content and/or features
adapted for use in by educators or students. For example, it may deliver evaluations (tests), track
progress through material, or include collaborative capabilities.
Simulation software simulates physical or abstract systems for either research, training or
entertainment purposes.
Media development software generates print and electronic media for others to consume, most
often in a commercial or educational setting. This includes graphic-art software, desktop publishing
software, multimedia development software, HTML editors, digital-animation editors, digital audio
and video composition, and many others.[12]
Product engineering software is used in developing hardware and software products. This
includes computer-aided design (CAD), computer-aided engineering (CAE), computer language
editing and compiling tools, integrated development environments, and application programmer
interfaces.
Entertainment Software can refer to video games, screen savers, programs to display motion
pictures or play recorded music, and other forms of entertainment which can be experienced through
use of a computing device.
Applications can also be classified by computing platform such as a particular operating system, delivery
network such as in cloud computing and Web 2.0 applications, or delivery devices such as mobile
apps for mobile devices.
The operating system itself can be considered application software when performing simple calculating,
measuring, rendering, and word processing tasks not used to control hardware via command-line
interface or graphical user interface. This does not include application software bundled within operating
systems such as a software calculator or text editor.
Golden Age". From the early 1800s, "programs" were used to direct the behavior of machines such
as Jacquard looms and player pianos. Thousands of different programming languages have been created,
mainly in the computer field, and many more still are being created every year. Many programming
languages require computation to be specified in an imperative form (i.e., as a sequence of operations to
perform), while other languages use other forms of program specification such as the declarative form
(i.e. the desired result is specified, not how to achieve it).
The description of a programming language is usually split into the two components of syntax (form)
and semantics (meaning). Some languages are defined by a specification document (for example,
the C programming language is specified by an ISO Standard), while other languages (such as Perl) have
a dominant implementation that is treated as a reference. Some languages have both, with the basic
language defined by a standard and extensions taken from the dominant implementation being common.
Definitions
A programming language is a notation for writing programs, which are specifications of a computation
or algorithm. Some, but not all, authors restrict the term "programming language" to those languages that
can express all possible algorithms. Traits often considered important for what constitutes a programming
language include:
Abstractions
Programming languages usually contain abstractions for defining and manipulating data structures or
controlling the flow of execution. The practical necessity that a programming language support adequate
Expressive power
The theory of computation classifies languages by the computations they are capable of expressing.
All Turing complete languages can implement the same set of algorithms. ANSI/ISO SQL92 and Charity are examples of languages that are not Turing complete, yet often called programming
languages.
Markup languages like XML, HTML or troff, which define structured data, are not usually considered
programming languages. Programming languages may, however, share the syntax with markup languages
if a computational semantics is defined. XSLT, for example, is a Turing complete XML dialect.
Moreover, LaTeX, which is mostly used for structuring documents, also contains a Turing complete
subset.
The term computer language is sometimes used interchangeably with programming language. However,
the usage of both terms varies among authors, including the exact scope of each. One usage describes
programming languages as a subset of computer languages. In this vein, languages used in computing that
have a different goal than expressing computer programs are generically designated computer languages.
For instance, markup languages are sometimes referred to as computer languages to emphasize that they
are not meant to be used for programming.
Another usage regards programming languages as theoretical constructs for programming abstract
machines, and computer languages as the subset thereof that runs on physical computers, which have
finite hardware resources.[24] John C. Reynolds emphasizes that formal specification languages are just as
much programming languages as are the languages intended for execution. He also argues that textual and
even graphical input formats that affect the behavior of a computer are programming languages, despite
the fact they are commonly not Turing-complete, and remarks that ignorance of programming language
concepts is the reason for many flaws in input formats.
Elements
All programming languages have some primitive building blocks for the description of data and the
processes or transformations applied to them (like the addition of two numbers or the selection of an item
from a collection). These primitives are defined by syntactic and semantic rules which describe their
structure and meaning respectively.
Syntax
Syntax highlighting is often used to aid programmers in recognizing elements of source code. The
language above is Python.
A programming language's surface form is known as its syntax. Most programming languages are purely
textual; they use sequences of text including words, numbers, and punctuation, much like written natural
languages. On the other hand, there are some programming languages which are more graphical in nature,
using visual relationships between symbols to specify a program.
The syntax of a language describes the possible combinations of symbols that form a syntactically correct
program. The meaning given to a combination of symbols is handled by semantics (either formal or hardcoded in a reference implementation). Since most languages are textual, this article discusses textual
syntax.
a number is an unbroken sequence of one or more decimal digits, optionally preceded by a plus or
minus sign;
a symbol is a letter followed by zero or more of any characters (excluding whitespace); and
a list is a matched pair of parentheses, with zero or more expressions inside it.
The following are examples of well-formed token sequences in this grammar: 12345 , () and (a b c232
(1)) .
Not all syntactically correct programs are semantically correct. Many syntactically correct programs are
nonetheless ill-formed, per the language's rules; and may (depending on the language specification and
the soundness of the implementation) result in an error on translation or execution. In some cases, such
programs may exhibit undefined behaviour. Even when a program is well-defined within a language, it
may still have a meaning that is not intended by the person who wrote it.
Using natural language as an example, it may not be possible to assign a meaning to a grammatically
correct sentence or the sentence may be false:
"Colorless green ideas sleep furiously." is grammatically well-formed but has no generally
accepted meaning.
"John is a married bachelor." is grammatically well-formed but expresses a meaning that cannot
be true.
The following C language fragment is syntactically correct, but performs operations that are not
semantically defined (the operation *p >> 4 has no meaning for a value having a complex type and p>im is not defined because the value of p is the null pointer):
complex *p = NULL;
complex abs_p = sqrt(*p >> 4 + p->im);
If the type declaration on the first line were omitted, the program would trigger an error on compilation,
as the variable "p" would not be defined. But the program would still be syntactically correct, since type
declarations provide only semantic information.
The grammar needed to specify a programming language can be classified by its position in the Chomsky
hierarchy. The syntax of most programming languages can be specified using a Type-2 grammar, i.e., they
are context-free grammars. Some languages, including Perl and Lisp, contain constructs that allow
execution during the parsing phase. Languages that have constructs that allow the programmer to alter the
behaviour of the parser make syntax analysis an undecidable problem, and generally blur the distinction
between parsing and execution. In contrast to Lisp's macro system and Perl's BEGIN blocks, which may
contain general computations, C macros are merely string replacements, and do not require code
execution.
Semantics
The term Semantics refers to the meaning of languages, as opposed to their form (syntax).
The static semantics defines restrictions on the structure of valid texts that are hard or impossible to
express in standard syntactic formalisms.[3] For compiled languages, static semantics essentially include
those semantic rules that can be checked at compile time. Examples include checking that
every identifier is declared before it is used (in languages that require such declarations) or that the labels
on the arms of a case statement are distinct.[46] Many important restrictions of this type, like checking that
identifiers are used in the appropriate context (e.g. not adding an integer to a function name), or
that subroutine calls have the appropriate number and type of arguments, can be enforced by defining
them as rules in a logic called a type system. Other forms of static analyses like data flow analysis may
also be part of static semantics. Newer programming languages like Java and C# have definite assignment
analysis, a form of data flow analysis, as part of their static semantics.
Dynamic semantics
Once data has been specified, the machine must be instructed to perform operations on the data. For
example, the semantics may define the strategy by which expressions are evaluated to values, or the
manner in which control structures conditionally execute statements. The dynamic semantics (also known
as execution semantics) of a language defines how and when the various constructs of a language should
produce a program behaviour. There are many ways of defining execution semantics. Natural language is
often used to specify the execution semantics of languages commonly used in practice. A significant
amount of academic research went into formal semantics of programming languages, which allow
execution semantics to be specified in a formal manner. Results from this field of research have seen
limited application to programming language design and implementation outside academia.
Type system
A type system defines how a programming language classifies values and expressions into types, how it
can manipulate those types and how they interact. The goal of a type system is to verify and usually
enforce a certain level of correctness in programs written in that language by detecting certain incorrect
operations. Any decidable type system involves a trade-off: while it rejects many incorrect programs, it
can also prohibit some correct, albeit unusual programs. In order to bypass this downside, a number of
languages have type loopholes, usually unchecked casts that may be used by the programmer to explicitly
allow a normally disallowed operation between different types. In most typed languages, the type system
is used only to type check programs, but a number of languages, usually functional ones, infer types,
relieving the programmer from the need to write type annotations. The formal design and study of type
systems is known as type theory.
resulting in a run-time exception. Many languages allow a function called an exception handler to be
written to handle this exception and, for example, always return "-1" as the result.
A special case of typed languages are the single-type languages. These are often scripting or mark-up
languages, such as REXX or SGML, and have only one data typemost commonly character strings
which are used for both symbolic and numeric data.
In contrast, an untyped language, such as most assembly languages, allows any operation to be performed
on any data, which are generally considered to be sequences of bits of various lengths. [47] High-level
languages which are untyped include BCPL, Tcl, and some varieties of Forth.
In practice, while few languages are considered typed from the point of view of type theory (verifying or
rejecting all operations), most modern languages offer a degree of typing. Many production languages
provide means to bypass or subvert the type system, trading type-safety for finer control over the
program's execution.
piece of code is actually executed, potentially making debugging more difficult. Lisp,
Smalltalk, Perl, Python, JavaScript, and Ruby are dynamically typed.
Over the years, as technology has evolved, so has flowcharting. Some flowchart symbols that were used
in the past to represent computer punchcards, or punched tape, have been relegated to the dustbin of
history.
More
Flowchart
Symbols
Here is
a more
comprehensive
library
of flowchart
symbols.
Start/End
Symbol
The
terminator
symbol
marks the
starting
or ending point
of the
system. It
usually
contains the
word
"Start" or
"End."
Document Symbol
A printed document or report.
Decision Symbol
A decision or branching point. Lines representing different decisions emerge from different points of the
diamond.
Preparation Symbol
Represents a set-up to another step in the process.
Connector Symbol
Indicates that the flow continues where a matching symbol (containing the same letter) has been placed.
Or Symbol
Indicates that the process flow continues in more than two branches.
Merge Symbol
Indicates a step where two or more sub-lists or sub-processes become one.
Collate Symbol
Indicates a step that orders information into a standard format.
Sort Symbol
Indicates a step that organizes a list of items into a sequence or sets based on some pre-determined
criteria.
Subroutine Symbol
Indicates a sequence of actions that perform a specific task embedded within a larger process. This
sequence of actions could be described in more detail on a separate flowchart.
Delay Symbol
Indicates a delay in the process.
Database Symbol
Indicates a list of information with a standard structure that allows for searching and sorting.
Display Symbol
Indicates a step that displays information.
Off Page
Indicates that the process continues off page.
Deployment Flowchart
Opportunity
Flowchart -
Software Flowchart
Physical Flowchart