HOME

TheInfoList




Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining
applications Application may refer to: Mathematics and computing * Application software, computer software designed to help the user to perform specific tasks ** Application layer, an abstraction layer that specifies protocols and interface methods used in a co ...
, frameworks, or other software components.
Software Software is a collection of Instruction (computer science), instructions that tell a computer how to work. This is in contrast to Computer hardware, hardware, from which the system is built and actually performs the work. At the low level lang ...

Software
development involves writing and
maintaining ''Maintaining'' is a 2007-2009 comic strip by cartoonist Nate CreekmoreNate Creekmore (born October 14, 1982, in Omaha, Nebraska) is an American cartoonist. Nate is a two-time winner of the Scripps College Cartoonist of the Year and an Associated Pr ...
the
source code In computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes and development of both computer hardware , hardware and ...

source code
, but in a broader sense, it includes all processes from the conception of the desired software through to the final manifestation of the software, typically in a planned and
structured
structured
process. Software development also includes research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products. Software can be developed for a variety of purposes. The three most common purposes are: to meet specific needs of a specific client or organization (known as
custom software Customised software (also known as bespoke software or tailor-made software) is software Software is a collection of Instruction (computer science), instructions and data (computing), data that tell a computer how to work. This is in contrast ...
), to meet a perceived need of some set of potential
users User may refer to: Ancient Egyptian roles * User (ancient Egyptian official)User was an ancient Egypt Ancient Egypt was a civilization of Ancient history, ancient North Africa, concentrated along the lower reaches of the Nile, Nile River ...
(known as
commercial software Commercial software, or seldom payware, is a computer software Software is a collection of Instruction (computer science), instructions that tell a computer how to work. This is in contrast to Computer hardware, hardware, from which the system ...
), or for personal use (e.g. a scientist may write software to automate a mundane task). Embedded software development, that is, the development of
embedded softwareEmbedded software is computer software Software is a collection of Instruction (computer science), instructions and data (computing), data that tell a computer how to work. This is in contrast to Computer hardware, physical hardware, from which ...
, such as used for controlling consumer products, requires the development process to be
integrated Integration may refer to: Biology *Modular integration, where different parts in a module have a tendency to vary together *Multisensory integration *Path integration * Pre-integration complex, viral genetic material used to insert a viral genome ...
with the development of the controlled physical product.
System software System software is software designed to provide a platform for other software. Examples of system software include operating systems (OS) like macOS, Linux, Android (operating system), Android and Microsoft Windows, computational science software, ...
underlies applications and the programming process itself, and is often developed separately. There are many approaches to
software project management Software project management is an art and science of planning and leading software projects. It is a sub-discipline of in which projects are planned, implemented, monitored and controlled. History In the 1970s and 1980s, grew very quickly, a ...
, known as software development life cycle models, methodologies, processes, or models. The
waterfall model The waterfall model is a breakdown of project activities into linear sequential In mathematics Mathematics (from Ancient Greek, Greek: ) includes the study of such topics as quantity (number theory), mathematical structure, structure (alg ...

waterfall model
is a traditional version, contrasted with the more recent innovation of
agile software development In software development Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications Application may refer to: Mathematics a ...
. Though it is often used as an interchangeable synonym for "software development", the term "
software engineering Software engineering is the systematic application of engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The d ...
" is also used to refer to a particular approach to software development, which uses engineering methods and in some cases involves professional engineering qualifications.


Methodologies

A
software development process In software engineering Software engineering is the systematic application of engineering approaches to the software development, development of software. A software engineer is a person who applies the principles of software engineering to d ...

software development process
(also known as a software development methodology, model, or life cycle) is a framework that is used to
structure A structure is an arrangement and organization of interrelated elements in a material object or system A system is a group of Interaction, interacting or interrelated elements that act according to a set of rules to form a unified whole. ...

structure
,
plan A plan is typically any diagram or list of steps with details of timing and resources, used to achieve an Goal, objective to do something. It is commonly understood as a modal logic, temporal set (mathematics), set of intended actions through whi ...

plan
, and control the process of developing
information system An information system (IS) is a formal, sociotechnical, organizational system designed to collect, process, information storage, store, and information distribution, distribute information. From a sociotechnical perspective, information systems ar ...
s. A wide variety of such frameworks has evolved over the years, each with its own recognized strengths and weaknesses. There are several different approaches to software development: some take a structured, engineering-based approach to developing software, whereas others may take an incremental approach, where software evolves as it is developed piece-by-piece. One system development methodology is not necessarily suitable for use by all projects. Each of the available methodologies are best suited to specific kinds of projects, based on various technical, organizational, project, and team considerations. Most methodologies share some combination of the following stages of software development: * Analyzing the problem * Market research * Gathering requirements for the proposed software * Devising a plan or design for the software * Implementation (coding) of the software * Testing and debugging the software * Deployment *
Maintenance Maintenance may refer to: Biological science * Maintenance of an organism * Maintenance respiration Non-technical maintenance * Alimony, also called ''maintenance'' in British English * Champerty and maintenance, two related legal doctrines ...
and bug fixing The stages are often referred to collectively as the software development life-cycle, or SDLC. Different approaches to software development may carry out these stages in different orders, or devote more or less time to different stages. The level of detail of the documentation produced at each stage of software development may also vary. These stages may also be carried out in turn (a “structured” approach), or they may be repeated over various cycles or iterations (an "extreme" approach). The extreme approach usually involves less time spent on planning and documentation, and more time spent on coding and development of automated tests. Extreme approaches also promote continuous testing throughout the development life-cycle, as well as having a working product at all times. Structured approaches attempt to assess the majority of risks and develop a detailed plan for the software before
implementation Implementation is the realization of an application, or execution of a plan A plan is typically any diagram or list of steps with details of timing and resources, used to achieve an Goal, objective to do something. It is commonly understood as ...

implementation
begins, and avoid significant design changes and re-coding in later stages of the software development life-cycle planning.


Software development activities


Identification of need

The sources of ideas for software products are plentiful. These ideas can come from
market research Market research is an organized effort to gather information about target markets A target market is a group of customers within a business Business is the activity of making one's living or making money by producing or buying and selling Pr ...

market research
including the
demographics Demography (from prefix ''demo-'' from Ancient Greek δῆμος (''dēmos'') meaning 'the people', and ''-graphy'' from γράφω (''graphō'') meaning 'writing, description or measurement') is the statistics, statistical study of populat ...

demographics
of potential new customers, existing customers, sales prospects who rejected the product, other internal software development staff, or a creative third party. Ideas for software products are usually first evaluated by
marketing Marketing is the process of intentionally stimulating demand for and purchases of goods and services; potentially including selection of a target audience; selection of certain attributes or themes to emphasize in advertising; operation of adv ...

marketing
personnel for economic feasibility, for fit with existing channels distribution, for possible effects on existing product lines, required
features Feature may refer to: Computing * Feature (CAD), could be a hole, pocket, or notch * Feature (computer vision), could be an edge, corner or blob * Feature (software design) is an intentional distinguishing characteristic of a software item ( ...
, and for fit with the company's marketing objectives. In a marketing evaluation phase, the cost and time assumptions become evaluated. A decision is reached early in the first phase as to whether, based on the more detailed information generated by the marketing and development staff, the project should be pursued further.Joseph M. Morris (2001). ''Software Industry Accounting''. p.1.10 In the book ''"Great Software Debates"'', Alan M. Davis states in the chapter ''"Requirements"'', sub-chapter ''"The Missing Piece of Software Development"''
Students of engineering learn engineering and are rarely exposed to finance or marketing. Students of marketing learn marketing and are rarely exposed to finance or engineering. Most of us become specialists in just one area. To complicate matters, few of us meet interdisciplinary people in the workforce, so there are few roles to mimic. Yet, software product planning is critical to the development success and absolutely requires knowledge of multiple disciplines.
Because software development may involve compromising or going beyond what is required by the client, a software development project may stray into less technical concerns such as
human resources Human resources is the set of people who make up the workforce of an organization An organization, or organisation (English in the Commonwealth of Nations, Commonwealth English; American and British English spelling differences#-ise, - ...

human resources
,
risk management Risk management is the identification, evaluation, and prioritization of risk In simple terms, risk is the possibility of something bad happening. Risk involves uncertainty Uncertainty refers to Epistemology, epistemic situations involving ...

risk management
,
intellectual property Intellectual property (IP) is a category of property Property is a system of rights that gives people legal control of valuable things, and also refers to the valuable things themselves. Depending on the nature of the property, an owner o ...
,
budgeting A budget is a financial plan for a defined accounting period, period, often one year. It may also include planned sales volumes and revenues, resource quantities, costs and expenses, assets, Liability (financial accounting), liabilities and cash ...
,
crisis management Crisis management is the process by which an organization deals with a disruptive and unexpected event that threatens to harm the organization or its stakeholders. The study of crisis management originated with large-scale industrial and environ ...
, etc. These processes may also cause the role of
business developmentBusiness development entails tasks and processes to develop and implement growth opportunities within and between organizations. It is a subset of the fields of business Business is the activity of making one's living or making money by producin ...
to overlap with software development.


Planning process

Planning is an objective of each and every activity, where we want to discover things that belong to the project. An important task in creating a software program is extracting the
requirement In product development In business Business is the activity of making one's living or making money by producing or buying and selling products (such as goods and services). Simply put, it is "any activity or enterprise entered into for p ...
s or
requirements analysis In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the v ...
. Customers typically have an abstract idea of what they want as an end result but do not know what ''software'' should do. Skilled and experienced software engineers recognize incomplete, ambiguous, or even contradictory requirements at this point. Frequently demonstrating live code may help reduce the risk that the requirements are incorrect. "Although much effort is put in the requirements phase to ensure that requirements are complete and consistent, rarely that is the case; leaving the software design phase as the most influential one when it comes to minimizing the effects of new or changing requirements. Requirements volatility is challenging because they impact future or already going development efforts." Once the general requirements are gathered from the client, an analysis of the scope of the development should be determined and clearly stated. This is often called a scope document.


Designing

Once the requirements are established, the design of the software can be established in a
software design document A software design description (a.k.a. software design document or SDD; just design document; also Software Design Specification) is a representation of a software design that is to be used for recording design information, addressing various des ...
. This involves a preliminary or high-level design of the main modules with an overall picture (such as a
block diagram An example block diagram, showing the Microsoft Windows 2000 operating system architecture. A block diagram is a diagram of a system in which the principal parts or functions are represented by blocks connected by lines that show the relationships ...

block diagram
) of how the parts fit together. The language, operating system, and hardware components should all be known at this time. Then a detailed or low-level design is created, perhaps with
prototyping A prototype is an early sample, model, or release of a product built to test a concept or process. It is a term used in a variety of contexts, including semantics Semantics (from grc, σημαντικός ''sēmantikós'', "significant") ...
as proof-of-concept or to firm up requirements.


Implementation, testing and documenting

Implementation Implementation is the realization of an application, or execution of a plan A plan is typically any diagram or list of steps with details of timing and resources, used to achieve an Goal, objective to do something. It is commonly understood as ...

Implementation
is the part of the process where software engineers actually program the code for the project.
Software testing #REDIRECT Software testing#REDIRECT Software testing Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test. Software testing can also provide an ob ...
is an integral and important phase of the software development process. This part of the process ensures that
defects A defect is a physical, functional, or aesthetic attribute of a product or service that exhibits that the product or service failed to meet one of the desired specifications. Defect, defects or defected may also refer to: Examples * Angular defect ...
are recognized as soon as possible. In some processes, generally known as
test-driven development Test-driven development (TDD) is a software development process relying on software requirements being converted to test cases before software is fully developed, and tracking all software development by repeatedly testing the software against a ...

test-driven development
, tests may be developed just before implementation and serve as a guide for the implementation's correctness. Documenting the internal design of software for the purpose of future maintenance and enhancement is done throughout development. This may also include the writing of an
API In computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes and development of both computer hardware , hardware and so ...

API
, be it external or internal. The software engineering process chosen by the developing team will determine how much internal documentation (if any) is necessary. Plan-driven models (e.g.,
Waterfall A waterfall is a point in a or where water flows over a vertical drop or a series of steep drops. Waterfalls also occur where drops over the edge of a tabular or . Waterfalls can be formed in several ways, but the most common method of fo ...

Waterfall
) generally produce more documentation than Agile models.


Deployment and maintenance

Deployment starts directly after the code is appropriately tested, approved for
release Release may refer to: * Film release, the public distribution of a film * Legal release, a legal instrument * News release, a communication directed at the news media * Release (ISUP), a code to identify and debug events in ISUP signaling * Release ...
, and sold or otherwise distributed into a production environment. This may involve installation, customization (such as by setting parameters to the customer's values), testing, and possibly an extended period of evaluation. Software training and
support Support may refer to: Business and finance * Support (technical analysis) * Child support * Customer support * Income Support Construction * Support (structure), or lateral support, a type of structural support to help prevent sideways movement * ...
is important, as software is only effective if it is used correctly.
Maintaining ''Maintaining'' is a 2007-2009 comic strip by cartoonist Nate CreekmoreNate Creekmore (born October 14, 1982, in Omaha, Nebraska) is an American cartoonist. Nate is a two-time winner of the Scripps College Cartoonist of the Year and an Associated Pr ...
and enhancing software to cope with newly discovered faults or requirements can take substantial time and effort, as missed requirements may force redesign of the software. . In most cases maintenance is required on regular basis to fix reported issues and keep the software running.


Software development vs. Web development

In computer programming both software development and web development refers to the same engineer or programmer and the process of coding. Web Development vs. Software Development
/ref> Note: software programs, esp. mobile apps can operate on the web. Software development is focused on the programs (or software) used in computer systems. Software developers are responsible for the concept, creation, programming, some documenting, testing, improving and maintaining the software and its software components. Software developers (and mobile software engineers) create programs and mobile applications for stand-alone desktop computers and mobile devices and their platforms. Software developers need to have understanding of not only development best practices, but also the theory behind the programming. Web developers use coding and writing markup to create interactive webpages. Web development can be divided into two separates, the client side and server side. Client-side programming is responsible for every element that users can directly access on the web page, and the client-side systems allow the users to tell the webpage what they want it to do, while the server-side systems are responsible for fulfilling those requests.


Subtopics


View model

A
view model A view model or viewpoints framework in systems engineering, software engineering, and enterprise engineering is a framework which defines a coherent set of ''views'' to be used in the construction of a system architecture, software architecture, o ...
is a framework that provides the
viewpoints Viewpoints is a technique of Choreography (dance), dance composition that acts as a medium for thinking about and acting upon Motion (physics), movement, gesture and creative space. Originally developed in the 1970s by master theater artist and edu ...
on the
system A system is a group of Interaction, interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by its boundaries, structure and purp ...

system
and its
environment Environment most often refers to: __NOTOC__ * Natural environment, all living and non-living things occurring naturally * Biophysical environment, the physical and biological factors along with their chemical interactions that affect an organism or ...
, to be used in the
software development process In software engineering Software engineering is the systematic application of engineering approaches to the software development, development of software. A software engineer is a person who applies the principles of software engineering to d ...

software development process
. It is a graphical representation of the underlying semantics of a view. The purpose of viewpoints and views is to enable human engineers to comprehend very
complex system A complex system is a system A system is a group of Interaction, interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by it ...
s and to organize the elements of the problem around domains of
expertise An expert is somebody who has a broad and deep competence in terms of knowledge Knowledge is a familiarity, awareness, or understanding of someone or something, such as facts ( descriptive knowledge), skills (procedural knowledge), or obj ...

expertise
. In the
engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The discipline of engineering encompasses a broad range of more speciali ...

engineering
of physically intensive systems, viewpoints often correspond to capabilities and responsibilities within the engineering organization.Edward J. Barkmeyer ea (2003)
''Concepts for Automating Systems Integration''
NIST 2003.
Most complex system specifications are so extensive that no one individual can fully comprehend all aspects of the specifications. Furthermore, we all have different interests in a given system and different reasons for examining the
system A system is a group of Interaction, interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by its boundaries, structure and purp ...

system
's
specification A specification often refers to a set of documented requirements to be satisfied by a material, design, product, or service. A specification is often a type of technical standard A technical standard is an established norm (social), norm or require ...
s. A
business Business is the activity of making one's living or making money by producing or buying and selling products (such as goods and services). Simply put, it is "any activity or enterprise entered into for profit." Having a business name A trad ...

business
executive will ask different questions of a system make-up than would a system implementer. The concept of viewpoints framework, therefore, is to provide separate viewpoints into the specification of a given complex system. These viewpoints each satisfy an audience with interest in some set of aspects of the system. Associated with each viewpoint is a viewpoint language that optimizes the vocabulary and presentation for the audience of that viewpoint.


Business process and data modelling

Graphical representation Graphic communication as the name suggests is communication using graphic elements. These elements include symbols such as glyphs and icon (computing), icons, images such as drawings and photographs, and can include the passive contributions of sub ...
of the current state of information provides a very effective means for presenting information to both users and system . * A illustrates the functions associated with the business process being modeled and the organizations that perform these functions. By depicting activities and information flows, a foundation is created to visualize, define, understand, and validate the nature of a process. * A
data model A data model (or datamodel) is an abstract model that organizes elements of data and standardizes how they relate to one another and to the properties of real-world entities. For instance, a data model may specify that the data element representing ...

data model
provides the details of information to be stored and is of primary use when the final product is the generation of computer software code for an application or the preparation of a functional specification to aid a computer software make-or-buy decision. See the figure on the right for an example of the interaction between business process and data models.Paul R. Smith & Richard Sarfaty (1993)
Creating a strategic plan for configuration management using Computer Aided Software Engineering (CASE) tools.
Paper For 1993 National DOE/Contractors and Facilities CAD/CAE User's Group.
Usually, a model is created after conducting an interview, referred to as
business analysis Business analysis is a research discipline Discipline is Action (philosophy), action or inaction that is regulation, regulated to be in accordance (or to achieve accord) with a particular system of governance. Discipline is commonly applied t ...
. The interview consists of a facilitator asking a series of questions designed to extract required information that describes a process. The interviewer is called a facilitator to emphasize that it is the participants who provide the information. The facilitator should have some knowledge of the process of interest, but this is not as important as having a structured methodology by which the questions are asked of the process expert. The methodology is important because usually a team of facilitators is collecting information across the facility and the results of the information from all the interviewers must fit together once completed. The models are developed as defining either the current state of the process, in which case the final product is called the "as-is" snapshot model, or a collection of ideas of what the process should contain, resulting in a "what-can-be" model. Generation of process and data models can be used to determine if the existing processes and information systems are sound and only need minor modifications or enhancements, or if re-engineering is required as a corrective action. The creation of business models is more than a way to view or automate your information process. Analysis can be used to fundamentally reshape the way your business or organization conducts its operations.


Computer-aided software engineering

Computer-aided software engineering Computer-aided software engineering (CASE) is the domain of software tools used to design and implement applications. CASE tools are similar to and were partly inspired by computer-aided design Computer-aided design (CAD) is the use of computer ...
(CASE), in the field
software engineering Software engineering is the systematic application of engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The d ...
, is the scientific application of a set of software tools and methods to the development of
software Software is a collection of instructions Instruction or instructions may refer to: Computing * Instruction, one operation of a processor within a computer architecture instruction set * Computer program, a collection of instructions Music * I ...

software
which results in high-quality, defect-free, and maintainable software products. It also refers to methods for the development of
information system An information system (IS) is a formal, sociotechnical, organizational system designed to collect, process, information storage, store, and information distribution, distribute information. From a sociotechnical perspective, information systems ar ...
s together with automated tools that can be used in the software development process. The term "computer-aided software engineering" (CASE) can refer to the
software Software is a collection of instructions Instruction or instructions may refer to: Computing * Instruction, one operation of a processor within a computer architecture instruction set * Computer program, a collection of instructions Music * I ...

software
used for the automated development of
systems software System software is software Software is a collection of Instruction (computer science), instructions that tell a computer how to work. This is in contrast to Computer hardware, hardware, from which the system is built and actually performs the ...
, i.e., computer code. The CASE functions include analysis, design, and programming. CASE tools automate methods for designing, documenting, and producing structured computer code in the desired
programming language A programming language is a formal language In logic, mathematics, computer science, and linguistics, a formal language consists of string (computer science), words whose symbol (formal), letters are taken from an alphabet (computer science) ...

programming language
. Two key ideas of Computer-aided Software System Engineering (CASE) are: * Foster computer assistance in software development and
software maintenance Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes. A common perception of maintenance is that it merely involves fixing defects. H ...
processes, and * An engineering approach to software development and maintenance. Typical CASE tools exist for
configuration management Configuration management (CM) is a systems engineering Systems engineering is an field of and that focuses on how to design, integrate, and manage s over their s. At its core, systems engineering utilizes principles to organize this bod ...
,
data modeling Data modeling in software engineering is the process of creating a data model for an information system by applying certain formal techniques. Overview Data modeling is a process used to define and analyze data requirements needed to sup ...
,
model transformationA model transformation, in model-driven engineering, is an automated way of modifying and creating models. An example use of model transformation is ensuring that a family of Computer model, models is consistent, in a precise sense which the software ...
,
refactoring In computer programming Computer programming is the process of designing and building an executable computer program to accomplish a specific computing result or to perform a particular task. Programming involves tasks such as analysis, gen ...
,
source code generation In computer science Computer science deals with the theoretical foundations of information, algorithms and the architectures of its computation as well as practical techniques for their application. Computer science is the study of Algori ...
.


Integrated development environment

An
integrated development environment An integrated development environment (IDE) is a software application Application software (app for short) is computing software designed to carry out a specific task other than one relating to the operation of the computer itself, typically ...
(IDE) also known as ''integrated design environment'' or ''integrated debugging environment'' is a
software application Application software (app for short) is computing software designed to carry out a specific task other than one relating to the operation of the computer itself, typically to be used by end-users. Examples of an application Application may refer ...
that provides comprehensive facilities to
computer programmer A computer programmer, sometimes called a software developer, a programmer or more recently a coder (especially in more informal contexts), is a person who creates computer software Software is a collection of instructions Instruction or ...
s for software development. An IDE normally consists of a: *
Source code editor A source-code editor is a text editor A text editor is a type of computer program In imperative programming, a computer program is a sequence of instructions in a programming language that a computer can execute or interpret. In declarati ...
, *
Compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily ...

Compiler
or interpreter, *
Build automation Build automation is the process of automating the creation of a software build and the associated processes including: compiling computer source code In computing Computing is any goal-oriented activity requiring, benefiting from, or cre ...
tools, and *
Debugger A debugger or debugging tool is a computer program In imperative programming, a computer program is a sequence of instructions in a programming language that a computer can execute or interpret. In declarative programming, a ''computer progra ...

Debugger
(usually). IDEs are designed to maximize programmer productivity by providing tight-knit components with similar
user interface In the industrial design Industrial design is a process of design A design is a plan or specification for the construction of an object or system or for the implementation of an activity or process, or the result of that plan or specificati ...
s. Typically an IDE is dedicated to a specific
programming language A programming language is a formal language In logic, mathematics, computer science, and linguistics, a formal language consists of string (computer science), words whose symbol (formal), letters are taken from an alphabet (computer science) ...

programming language
, so as to provide a feature set which most closely matches the
programming paradigm Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms. Some paradigms are concerned mainly with implications for the execution model of the language, suc ...
s of the language.


Modeling language

A
modeling language A modeling language is any artificial language that can be used to express information Information is processed, organised and structured data. It provides context for data and enables decision making process. For example, a single customer ...
is any artificial language that can be used to express
information Information is processed, organised and structured data Data (; ) are individual facts A fact is something that is truth, true. The usual test for a statement of fact is verifiability—that is whether it can be demonstrated to c ...

information
or
knowledge Knowledge is a familiarity or awareness, of someone or something, such as facts A fact is something that is truth, true. The usual test for a statement of fact is verifiability—that is whether it can be demonstrated to correspond to e ...
or
system A system is a group of Interaction, interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its environment, is described by its boundaries, structure and purp ...

system
s in a
structure A structure is an arrangement and organization of interrelated elements in a material object or system A system is a group of Interaction, interacting or interrelated elements that act according to a set of rules to form a unified whole. ...

structure
that is defined by a consistent set of rules. The rules are used for interpretation of the meaning of components in the structure. A modeling language can be graphical or textual. Graphical modeling languages use a diagram techniques with named symbols that represent concepts and lines that connect the symbols and that represent relationships and various other graphical annotation to represent constraints. Textual modeling languages typically use standardized keywords accompanied by parameters to make computer-interpretable expressions. Examples of graphical modelling languages in the field of software engineering are: *
Business Process Modeling Notation Business Process Model and Notation (BPMN) is a graphical representation Graphic communication as the name suggests is communication using graphic elements. These elements include symbols such as glyphs and icon (computing), icons, images such a ...
(BPMN, and the
XML Extensible Markup Language (XML) is a markup language #REDIRECT Markup language In computer text processing, a markup language is a system for annotation, annotating a document in a way that is Syntax (logic), syntactically distinguishable fro ...

XML
form BPML) is an example of a
process modeling The term process model is used in various contexts. For example, in business process modeling Business process modeling (BPM) in business process management and systems engineering Systems engineering is an interdisciplinary field of engineering ...
language. *
EXPRESS Express or EXPRESS may refer to: Arts, entertainment, and media Films * ''Express: Aisle to Glory'', a 1998 comedy short film featuring Kal Penn * ''The Express: The Ernie Davis Story'', a 2008 film starring Dennis Quaid Music * Express (album), ...
and EXPRESS-G (ISO 10303-11) is an international standard general-purpose
data modeling Data modeling in software engineering is the process of creating a data model for an information system by applying certain formal techniques. Overview Data modeling is a process used to define and analyze data requirements needed to sup ...
language. *
Extended Enterprise Modeling LanguageImage:Goalandprocess.JPG, 280px, Example of EEML Goal modeling and process modeling. Extended Enterprise Modeling Language (EEML) in software engineering is a modelling language used for Enterprise modelling across a number of layers. Overview Exten ...
(EEML) is commonly used for business process modeling across layers. *
Flowchart A flowchart is a type of diagram that represents a workflow or process. A flowchart can also be defined as a diagrammatic representation of an algorithm, a step-by-step approach to solving a task. The flowchart shows the steps as boxes of var ...

Flowchart
is a schematic representation of an algorithm or a stepwise process, * Fundamental Modeling Concepts (FMC) modeling language for software-intensive systems. *IDEF is a family of modeling languages, the most notable of which include IDEF0 for functional modeling, IDEF1X for information Information model, modeling, and IDEF5 for modeling ontologies. *LePUS3 is an object-oriented visual Design Description Language and a formal specification language that is suitable primarily for modelling large object-oriented (Java (programming language), Java, C++, C Sharp (programming language), C#) programs and design patterns. *Specification and Description Language (SDL) is a specification language targeted at the unambiguous specification and description of the behavior of reactive and distributed systems. *Unified Modeling Language (UML) is a general-purpose modeling language that is an industry standard for specifying software-intensive systems. UML 2.0, the current version, supports thirteen different diagram techniques and has widespread tool support. Not all modeling languages are executable, and for those that are, using them doesn't necessarily mean that programmers are no longer needed. On the contrary, executable modeling languages are intended to amplify the productivity of skilled programmers, so that they can address more difficult problems, such as parallel computing and distributed systems.


Programming paradigm

A
programming paradigm Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms. Some paradigms are concerned mainly with implications for the execution model of the language, suc ...
is a fundamental style of computer programming, which is not generally dictated by the project management methodology (such as waterfall or agile). Paradigms differ in the concepts and abstractions used to represent the elements of a program (such as objects, functions, variables, constraints) and the steps that comprise a computation (such as assignations, evaluation, continuations, data flows). Sometimes the concepts asserted by the paradigm are utilized cooperatively in high-level system architecture design; in other cases, the programming paradigm's scope is limited to the internal structure of a particular program or module. A
programming language A programming language is a formal language In logic, mathematics, computer science, and linguistics, a formal language consists of string (computer science), words whose symbol (formal), letters are taken from an alphabet (computer science) ...

programming language
can support multi-paradigm programming language, multiple paradigms. For example, programs written in C++ or Object Pascal can be purely procedural programming, procedural, or purely object-oriented programming, object-oriented, or contain elements of both paradigms. Software designers and programmers decide how to use those paradigm elements. In object-oriented programming, programmers can think of a program as a collection of interacting objects, while in functional programming a program can be thought of as a sequence of stateless function evaluations. When programming computers or systems with many processors, process-oriented programming allows programmers to think about applications as sets of concurrent processes acting upon logically shared data structures. Just as different groups in
software engineering Software engineering is the systematic application of engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The d ...
advocate different ''methodologies'', different
programming language A programming language is a formal language In logic, mathematics, computer science, and linguistics, a formal language consists of string (computer science), words whose symbol (formal), letters are taken from an alphabet (computer science) ...

programming language
s advocate different ''programming paradigms''. Some languages are designed to support one paradigm (Smalltalk supports object-oriented programming, Haskell (programming language), Haskell supports functional programming), while other programming languages support multiple paradigms (such as Object Pascal, C++, C Sharp (programming language), C#, Visual Basic, Common Lisp, Scheme (programming language), Scheme, Python (programming language), Python, Ruby (programming language), Ruby, and Oz (programming language), Oz). Many programming paradigms are as well known for what methods they ''forbid'' as for what they enable. For instance, pure functional programming forbids using side-effect (computer science), side-effects; structured programming forbids using goto statements. Partly for this reason, new paradigms are often regarded as doctrinaire or overly rigid by those accustomed to earlier styles. Avoiding certain methods can make it easier to prove theorems about a program's correctness, or simply to understand its behavior. Examples of high-level paradigms include: *Aspect-oriented software development *Domain-specific modeling *Model-driven engineering *Object-oriented programming methodologies **Grady Booch's object-oriented design (OOD), also known as object-oriented analysis and design (OOAD). The Booch model includes six diagrams: class, object, state transition, interaction, module, and process. *Search-based software engineering *Service-oriented modeling *Structured programming *Top-down and bottom-up design **Top-down programming: evolved in the 1970s by IBM researcher Harlan Mills (and Niklaus Wirth) in developed structured programming.


Software reuse

A definition of Code reuse, software reuse is the process of creating software from predefined software components. A software reuse approach seeks to increase or maximise the use of existing software artefacts in the Software development process, software development lifecycle.
The following are some common software reuse methods:
* A software framework is a reusable design or implementation for a software system or subsystem. * Component-based software engineering involves integrating together existing Software component, components to create an application. * Service-oriented architectures or service-oriented programming builds upon the concept of Software component, components to provide networked services, such as Web service, web services. * Software product line, Software product lines seek to develop software based upon a common set of 'core' assets and process, in order to produce a range of products (or 'applications') for a particular market. * API (Application programming interface, establish a set of "Application programming interface, subroutine definitions, protocols, and tools for building application software" which can be utilised in future builds. * Open Source documentations, via libraries such as GitHub, provide free code for software developers to re-use and implement into new applications or designs.


See also

*Continuous integration *Custom software *DevOps *Functional specification *Programming productivity *Software blueprint *Software design *Software development effort estimation *Software development process *Software industry *Software project management *Specification and Description Language *User experience *Web development


Roles and industry

*Bachelor of Science in Information Technology *Computer programmer *Consulting software engineer *Offshore software development *Software developer *Software engineer *Software publisher


Specific applications

*Video game development *Web application development *Web engineering *Mobile Application Development


References


Further reading

* * * * * * * John W. Horch (2005). "Two Orientations On How To Work With Objects." In: ''IEEE Software''. vol. 12, no. 2, pp. 117–118, Mar., 1995. * * *


External links

{{Authority control Software development, Software project management, Development Computer occupations Product development sq:Zhvillimi i softuerit