Research Project Description: Universe Type System

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 38

Chair of Programming Methodology

http://sct.ethz.ch/research/universes/

Research Project
Description: Universe
Type System

Overview

Object-oriented programs with arbitrary object structures are


difficult to understand, to maintain, and to reason about since,
in theory, all objects can interact with each other and methods
might access any object in the heap memory via reference
chains.

To support modular verification, especially of invariants, we


developed a new programming model and type system for a
subset of Java. This type system allows one to structure the
heap memory into so-called universes and provides rigor,
statically checkable control of references across universe
boundaries. To make the universe type system available to a
wider community and as a basis for case studies, we currently
implement it as a part of the Java Modeling Language JML.

We are working on the static and dynamic inference of


ownership properties in order to ease the transition from
current Java programs to programs that use the Universe type
system. To support modular inference of annotations we
evaluate different possible extensions to the Universe type
system. The introduction of type variables could allow partial
inference of annotations.

Results so far
We integrated the Universe type system into the MultiJava
compiler and the JML Tools.

We have a separate description of our tools.


113
http://dspace.fsktm.um.edu.my/bitstream/1812/158/6/Chapter5.pdf
5.0 Chapter 5: System Methodology, Tools and Technologies
5.1. Introduction
This chapter provides an overview of the system methodology, tools
and technologies
to be used in the system development. Several types of System
Analysis and Design
Methodologies have been selected to be followed throughout the entire
system
development. Besides, different tools and technologies from user
interface design tool,
programming tool to database tool are further explained in this chapter
too. Then it
follows by the hardware and software requirements for the proposed
KMS known as
‘KnowledgeLink’ and before it ends with the summary.
5.2. System Analysis and Design Methodology
5.2.1. Unified Software Development Process (USDP)
Figure 5.2.1
Outline Development Process
According to Booch et. al. (1999) the development cycle for USDP is
illustrated in
Figure 5.2.1, which consists of four (4) phases: Inception, Elaboration,
Construction
114
and Transition. These phases are carried out and the details are
covered in Chapter
6.
USDP is the suitable methodology to be applied in system development
because it
supports Object-Oriented approach, as different Unified Modeling
Language
(UML) diagrams can be used for system design throughout the phases
in USDP.
Besides, USDP is different from the traditional waterfall method in such
a way that
the phases in waterfall method must be carried out in step-by-step
manner without
iteration, whereas the phases in USDP for example inception and
construction
phases can be iterated to minimize the system errors as well as to
refine the system.
On top of that, spiral model is not used in the system development
because it is
time-consuming in getting the requirements during every phase.
Therefore, USDP is
used to capture the requirements during the beginning stage
(Inception) and before
proceeds to the remaining phases.
5.3. System Tools
5.3.1. Programming Tool
5.3.1.1.Visual Studio .NET
Visual Studio .NET is Microsoft’s visual programming environment that
provides a visual interface to identify programs as web services. It is
chosen as
the programming tool because it provides forms to build user interface,
features
to integrate existing application data as well as for program
debugging. Most
importantly, it enables to support .Net framework as a benchmark that
ease in
application development for the web services.
115
5.3.2. User Interface Design Tool
5.3.2.1.Macromedia Dreamweaver
Macromedia Dreamweaver is a web page creation tool known as
professional
Hypertext Markup Language (HTML) editor that provides feature to
design.
Macromedia Dreamweaver is selected as the User Interface Design tool
because
it manages the web site with user-friendly interface and it also
provides features
that are similar to word and graphic editor with extensive menu driven
options
to be applied into the user interface of the proposed KMS. Besides, it
also
supports the integration of technologies such as JavaScript, Dynamic
HTML
(DHTML) and other built-in or higher-end capabilities to improve the
proposed
KMS.
5.3.3. Graphical Design Tool
5.3.3.1.Adobe Photoshop
Adobe Photoshop is a graphical design tool, which provides variety of
options
mainly for photo, graphic or image editor. The main purpose of the
choosing
this tool is due to its user-friendly interface, because it allows creating
graphics
with different colors and animation before the graphics were saved as
image
files.
5.3.4. Database Tool
5.3.4.1.MySQL Database Server
MySQL Database Server is an Open Source Database and it is chosen
because
of its proven and cost-effective database solution that helps in
reducing the cost
of database software infrastructure compare to other databases, which
requires
116
high Total Cost of Ownership (TCO). Most importantly, it is platform
independent which runs on various platforms such as Windows, Linux,
Solaris
and Mac OS that gives flexibility in providing database solutions.
In terms of stability, it provides more stable and reliable platform for
data
storage compare to Microsoft Access. Besides, consistency of the data
can be
maintained as MySQL Database Server provides functionality to govern
the
integrity of the data being stored. In additional to that, MySQL
Database Server
handles large number of data transaction and supports all the key
relational
database features in which Structured Query Language (SQL)
statement can
also be used as a standard query language to manipulate the data.
5.3.5. Application Server Tool
5.3.5.1.Internet Information Services (IIS)
Internet Information Services 5.0 (IIS 5.0) is used as the Web Server to
host the
proposed KMS because it is built with features and capabilities needed
to
deliver web site required in an Internet-centric environment. Besides,
the
reliable restart feature of IIS 5.0 may allows to restart the web services
without
rebooting the computer, in which this is one of the added values to the
IIS 5.0.
Besides, IIS 5.0 is selected due to its easy installation and
maintenance, which
includes simplified installation process, security wizards as well as the
flexible
remote administration. On top of that, IIS 5.0 is also able to improve
error
handling due to its ability to record all errors as audit trail.
117
5.3.6. Object-Oriented Design Tool
5.3.6.1.Rational Rose
Rational Rose is chosen as the design tool to create system diagrams
for the
proposed KMS due to several reasons. Firstly, it provides user-friendly
interface, which does not require specific skills to use this design tool.
Secondly, it is a CASE tool that fully supports Object-Oriented approach
with
UML diagrams. The relevant options are available for the fast creation
of UML
diagrams, which makes the structure of the proposed KMS visible and
maintainable.
Besides, its ability to create the UML diagrams in a more structured
and
presentable manner is another issue that was considered when
selecting the
suitable design tool. Lastly, it also allows the framework of the source
code to
be auto-generated upon completion of the UML diagrams.
5.4. System Technologies
5.4.1. Programming Technologies
Programming technologies is one of the important aspects in
implementing the
proposed KM solution. In considering the nature of this system as well
as other
important factors in implementing the mentioned system, ASP.NET and
Web
Scripting are combined for system development.
5.4.1.1.ASP.NET
ASP.NET is a new and extended programming technology developed
by
Microsoft as the next generation of web development which fully
supports
Microsoft’s .NET Framework. In ASP.NET, each user interface of a web
page
118
constitutes a WebForm. While the elements of the user interface called
WebControls would enable the WebForm to have form items similar to
those
standard HTML elements, such as Textbox, Combobox, Listbox, and
others.
Within the WebControls, it exposes an Object-oriented Programming
model that
brings the richness of Object-oriented approach in the WebForm for
data
processing and manipulation.
One of the primary benefits of ASP.NET is the shift of paradigm from its
predecessor to Object-oriented approach. This Object-oriented
approach enables
the proposed KMS developed with ASP.NET to have a reusable, robust,
simpler, and flexible system. These would translate into the proposed
KMS
being faster in development, better quality, ease of maintenance, as
well as ease
of changes and upgrades to the system. Besides, there is built-in
functionality
found in the common Class Libraries provided by the .NET Framework
that
assists in managing the Class Libraries of the proposed KMS.
Apart from this, future enhancement of the system can be made even
more
easier with the use of other .NET languages, since the ASP.NET
supports
multiple .NET languages such as Visual C# .NET, Visual Basic .NET, and
Visual J# .NET.
5.4.1.2.Web Scripting – JavaScript
Web Scripting is a type of programming language on the requester’s
browser for
web application. JavaScript is chosen to be integrated as part of the
source code
in the proposed KMS in order to process certain form of processing,
such as
data validation and manipulation without relying and requesting
connection or
119
response from the web server. This is done prior to the initiation of any
web
server processing that includes addition, updates, deletion of data from
the
proposed KMS. On top of that, it is also easier to utilize built-in feature
in the
requester’s browser using JavaScript, due to its widespread usage
throughout
the Internet.
5.4.2. Database Technologies
As part of the proposed KM solution implementation, Relational
Database
Management System (RDBMS) is chosen as the type of database
technologies for
data storage. This is the most common type of technologies and it fits
perfectly with
the proposed KMS.
5.4.2.1.Relational Database Management System (RDBMS)
RDBMS is a variation of a database management system. It controls
the
categorization, storage and retrieval operations (fields, records and
files) in a
designated repository. It provides security mechanism that prevents
unauthorized users from viewing or updating the database. Besides,
integrity
constraint of the database are also taken care with by RDBMS due to
the
relational designs of its table and the mechanism built in it that does
not allow
more than one user to update the same record at the same time.
On top of that, RDBMS also provides support for SQL and commonly
used by
different industry ranging from retail businesses to educational sector
all over
the world.
120
5.4.2.2.Normalization
Normalization is a process that divides database into different tables
with
relationships between the tables. This process is applied for the
database design
so that the data can be organized in a proper order to minimize and
eliminate
redundancy of the data storage. Besides, with the fully normalized
database
design, the data can be added, deleted, updated and retrieved with
SQL
statements easily in order to increase the data integrity.
In addition, normalization also able to remove duplicated data fields
from the
database, which decreases the disk space but increases the amount of
row spaces
available for other data fields. By removing the duplicated data fields,
primary
key and foreign key for each table are identified to form relationships
among the
tables.
5.4.2.3.Entity Relationship Diagram (ERD)
Entity Relationship Diagram (ERD) is also known as Entity Relationship
Model. It is used as the modeling tool for the database design because
it is able
to show the structure of the database and justify its relationship for
each entity
or relational table, so that, it helps to identify how data is linked from
one
relational table to another.
5.4.3. Security Technology
5.4.3.1.Password Authentication
Password Authentication is one the authentication methods used in
most of the
standard application systems. It is also the first line of defense against
potential
intruders to the application.
121
In view of this, the password authentication method applied to prevent
unauthorized users access to the proposed KMS. Apart from this, the
password
is also verified against common password guidelines researched in
order to have
a secure password authentication. The implementation of this method
is done
via the web-based forms and integrated with the ASP.NET and IIS to
provide
all-round security fencing for the proposed KM solution.
5.4.4. System Design Technology
5.4.4.1.Unified Modeling Language (UML)
‘UML is a modeling language defined for specifying, visualizing,
constructing
and documenting the elements of a system-intensive process’ (Bennett
et. al.,
2002).
UML is chosen because it complements well with the Object-Oriented
approach
taken for this KM solution, as it is not a proprietary and closed
language but an
open and fully extensible industry-recognized language. Besides, the
foundation
of UML is built based upon the Object-Oriented design methodology.
Therefore, the processes within the system can be well documented as
Object-
Oriented classes and reducing the time-to-market while managing risks
and
being proactive in regard to ever-increasing change and complexity to
the
systems. For instance, an overview of the proposed KMS can be
explained via
Use Case Diagram; the relationships of different objects can be shown
in Class
Diagram; the interaction of the objects through messages can be
shown in
Sequence Diagram.
122
5.5. Hardware and Software Requirements
5.5.1. Hardware Specifications
There are two sets of hardware specification for the implementation of
the proposed
KMS, the Server-side and Client-side configuration. The Server-side is
used to host
the proposed KM solution, while the Client-side serves as the requester
for the
proposed KMS.
The minimum hardware requirements are:
a. Server side (one (1) Application Server; one (1) Database Server):
i. Intel Pentium-IV compatible PC
ii. 512 MB of RAM
iii. 20 GB hard disk
iv. CD-ROM
v. Super VGA Monitor (800 x 600) or higher resolution monitor
vi. Microsoft Mouse
b. Client side:
i. Internet Explorer (I.E) 6.0 PC-based
5.5.2. Software List
The following software is used for the implementation of the proposed
KMS:
a. Windows 2000 Professional
b. MS Visual Studio .NET
c. MySQL Database Server
d. Macromedia Dreamweaver
123
5.6. Summary of Chapter 5
This chapter covers the aspects, which are required for the
implementation of front-end
and back-end of the proposed KMS. The system methodology is chosen
as a guide for
the entire system development. Besides, this chapter also states the
reasons of selecting
the specific tools and technologies to be used in before design and
develop the proposed
KMS. As soon as the respective hardware and software are identified,
this chapter links
to the next chapter (Chapter 6), which further discussed on the
development of the
proposed KMS called ‘KnowledgeLink’.
http://en.wikipedia.org/wiki/Software_development_methodology

Software development methodology


From Wikipedia, the free encyclopedia
Jump to: navigation, search

A software development methodology or system development methodology in


software engineering is a framework that is used to structure, plan, and control the
process of developing an information system.[1]

Contents
[hide]

• 1 History
o 1.1 Software Development Methodology (noun)
o 1.2 Software Development Methodology (verb)
• 2 Software development methodology (verb) approaches
o 2.1 Waterfall Approach
o 2.2 Prototyping Approach
o 2.3 Incremental Approach
o 2.4 Spiral Approach
o 2.5 Rapid Application Development (RAD) Approach
o 2.6 Other software development practices and techniques
• 3 Software development methodology topics
o 3.1 View model
o 3.2 Business process and data modelling
o 3.3 Computer-aided Software Engineering
o 3.4 Integrated development environment
o 3.5 Modeling language
o 3.6 Programming paradigm
o 3.7 Software framework
o 3.8 Software development process
• 4 See also
• 5 References

• 6 External links

[edit] History
The software development methodology framework didn't emerge until the 1960s.
According to Elliott (2004) the systems development life cycle (SDLC) can be
considered to be the oldest formalized methodology framework for building information
systems. The main idea of the SDLC has been "to pursue the development of information
systems in a very deliberate, structured and methodical way, requiring each stage of the
life cycle from inception of the idea to delivery of the final system, to be carried out in
rigidly and sequentially".[2] within the context of the framework being applied. The main
target of this methodology framework in the 1960s was "to develop large scale functional
business systems in an age of large scale business conglomerates. Information systems
activities revolved around heavy data processing and number crunching routines".[2].

[edit] Software Development Methodology (noun)

As a noun, a software development methodology is a framework that is used to structure,


plan, and control the process of developing an information system - this includes the pre-
definition of specific deliverables and artifacts that are created and completed by a
project team to develop or maintain an application.[1]

The three basic approaches applied to software development methodology frameworks.

A wide variety of such frameworks have evolved over the years, each with its own
recognized strengths and weaknesses. One software development methodology
framework is not necessarily suitable for use by all projects. Each of the available
methodology frameworks are best suited to specific kinds of projects, based on various
technical, organizational, project and team considerations.[1]
These software development frameworks are often bound to some kind of organization,
which further develops, supports the use, and promotes the methodology framework. The
methodology framework is often defined in some kind of formal documentation. Specific
software development methodology frameworks (noun) include

• Rational Unified Process (IBM - RUP) since 1998.


• Agile Unified Process (AUP) since 2005 by Scott Ambler

[edit] Software Development Methodology (verb)

As a verb, the software development methodology is an approach used by organizations


and project teams to apply the software development methodology framework (noun).
Specific software development methodology approaches (verb)include

1970s

• Structured programming since 1969


• Cap Gemini SDM, originally from PANDATA, the first English translation was
published in 1974. SDM stands for System Development Methodology

1980s

• Structured Systems Analysis and Design Methodology (SSADM) from 1980


onwards

1990s

• Object-oriented programming (OOP) has been developed since the early 1960s,
and developed as the dominant object oriented programming approach during the
mid-1990s.
• Rapid application development (RAD) since 1991.
• Scrum (development), since the late 1990s
• Team software process developed by Watts Humphrey at the SEI
• Extreme Programming since 1999

[edit] Software development methodology (verb)


approaches
Every software development methodology framework acts as a basis for applying
specific approaches to develop and maintain software. There are a number of software
development approaches that have been used since the origin of information technology.
These software development approaches are:[1]

• Waterfall Approach : linear framework type.


• Prototyping Approach : iterative framework type
• Incremental Approach: combination of linear and iterative framework type
• Spiral Approach : combination of linear and iterative framework type
• Rapid Application Development (RAD) Approach: Iterative Framework Type
• Extreme Programming Approach.
• Project Management Institute

[edit] Waterfall Approach

The Waterfall model is a sequential development approach, in which development is seen


as flowing steadily downwards (like a waterfall) through the phases of requirements
analysis, design, implementation, testing (validation), integration, and maintenance. The
first formal description of the waterfall approach is often cited to be an article published
by Winston W. Royce[3] in 1970 although Royce did not use the term "waterfall" in this
article.

Basic principles of the waterfall approach are:[1]

• Project is divided into sequential phases, with some overlap and splashback
acceptable between phases.
• Emphasis is on planning, time schedules, target dates, budgets and
implementation of an entire system at one time.
• Tight control is maintained over the life of the project through the use of
extensive written documentation, as well as through formal reviews and
approval/signoff by the user and information technology management occurring
at the end of most phases before beginning the next phase.

[edit] Prototyping Approach

Software prototyping, is the development approach of activities during software


development the creation of prototypes, i.e., incomplete versions of the software program
being developed.

Basic principles of the Prototyping Approach are:[1]

• Not a standalone, complete development methodology approach, but rather an


approach to handling selected portions of a larger, more traditional development
methodology (i.e. Incremental, Spiral, or Rapid Application Development (RAD))
approaches.
• Attempts to reduce inherent project risk by breaking a project into smaller
segments and providing more ease-of-change during the development process.
• User is involved throughout the development process, which increases the
likelihood of user acceptance of the final implementation.
• Small-scale mock-ups of the system are developed following an iterative
modification process until the prototype evolves to meet the users’ requirements.
• While most prototypes are developed with the expectation that they will be
discarded, it is possible in some cases to evolve from prototype to working
system.
• A basic understanding of the fundamental business problem is necessary to avoid
solving the wrong problem.

[edit] Incremental Approach

Various methods are acceptable for combining linear and iterative systems development
methodology approaches, with the primary objective of each being to reduce inherent
project risk by breaking a project into smaller segments and providing more ease-of-
change during the development process.

Basic principles of the incremental development approach are:[1]

• A series of mini-Waterfalls are performed, where all phases of the Waterfall


development approach are completed for a small part of the systems, before
proceeding to the next incremental, or
• Overall requirements are defined before proceeding to evolutionary, mini-
Waterfall development approaches of individual increments of the system, or
• The initial software concept, requirements analysis, and design of architecture and
system core are defined using the Waterfall approach, followed by iterative
Prototyping approach, which culminates in installation of the final prototype (i.e.,
working system).

[edit] Spiral Approach

The spiral model.

The spiral model approach is a software development process combining elements of


both design and prototyping-in-stages, in an effort to combine advantages of top-down
and bottom-up concepts. Basic principles:[1]

• Focus is on risk assessment and on minimizing project risk by breaking a project


into smaller segments and providing more ease-of-change during the development
process, as well as providing the opportunity to evaluate risks and weigh
consideration of project continuation throughout the life cycle.
• "Each cycle involves a progression through the same sequence of steps, for each
portion of the product and for each of its levels of elaboration, from an overall
concept-of-operation document down to the coding of each individual program."[4]
• Each trip around the spiral approach traverses four basic quadrants: (1) determine
objectives, alternatives, and constraints of the iteration; (2) Evaluate alternatives;
Identify and resolve risks; (3) develop and verify deliverables from the iteration;
and (4) plan the next iteration.[5]

(The figure does not reflect this and is hence wrong.)

• Begin each cycle with an identification of stakeholders and their win conditions,
and end each cycle with review and commitment.[6]

[edit] Rapid Application Development (RAD) Approach

Rapid Application Development (RAD) is a software development methodology


approach, which involves iterative development and the construction of prototypes. Rapid
application development is a term originally used to describe a software development
process introduced by James Martin in 1991.

Basic principles:[1]

• Key objective is for fast development and delivery of a high quality system at a
relatively low investment cost.
• Attempts to reduce inherent project risk by breaking a project into smaller
segments and providing more ease-of-change during the development process.
• Aims to produce high quality systems quickly, primarily through the use of
iterative Prototyping (at any stage of development), active user involvement, and
computerized development tools. These tools may include Graphical User
Interface (GUI) builders, Computer Aided Software Engineering (CASE) tools,
Database Management Systems (DBMS), fourth-generation programming
languages, code generators, and object-oriented techniques.
• Key emphasis is on fulfilling the business need, while technological or
engineering excellence is of lesser importance.
• Project control involves prioritizing development and defining delivery deadlines
or “timeboxes”. If the project starts to slip, emphasis is on reducing requirements
to fit the timebox, not in increasing the deadline.
• Generally includes Joint Application Development (JAD), where users are
intensely involved in system design, either through consensus building in
structured workshops, or through electronically facilitated interaction.
• Active user involvement is imperative.
• Iteratively produces production software, as opposed to a throwaway prototype.
• Produces documentation necessary to facilitate future development and
maintenance.
• Standard systems analysis and design techniques can be fitted into this
framework.

[edit] Other software development practices and techniques

Other methodology practices and techniques include:

• Object oriented development methodology approaches, such as 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.[7]
• Top-down programming: evolved in the 1970s by IBM researcher Harlan Mills
(and Niklaus Wirth) in developed structured programming.
• Unified Process (UP) is an iterative software development methodology
framework, based on UML. UP organizes the development of software into four
phases, each consisting of one or more executable iterations of the software at that
stage of development: Inception, Elaboration, Construction, and Guidelines.
There are a number of tools and products available designed to facilitate UP
implementation. One of the more popular versions of UP is the Rational Unified
Process (RUP).
• Agile Software Development refers to a group of software development
methodology approaches based on iterative development, where requirements and
solutions evolve through collaboration between self-organizing cross-functional
teams. The term was coined in the year 2001 when the Agile Manifesto was
formulated.
• Integrated Software Development refers to a deliverable based software
development framework utilizing the three primary IT (project management,
software development, software testing) life-cycles that can be leverage using
multitude (iterative, waterfall, spiral, agile) software development approaches,
where requirements and solutions evolve through collaboration between self-
organizing cross-functional teams.

[edit] Software development methodology topics


[edit] View model

The TEAF Matrix of Views and Perspectives.

A View model is framework which provides the viewpoints on the system and its
environment, to be used in the 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 systems, and to organize the elements of the problem and the solution around
domains of expertise. In the engineering of physically-intensive systems, viewpoints
often correspond to capabilities and responsibilities within the engineering organization.[8]

Most complex system specifications are so extensive that no single 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's specifications. A
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 a particular 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.

[edit] Business process and data modelling

Graphical representation of the current state of information provides a very effective


means for presenting information to both users and system developers.
example of the interaction between business process and data models.[9]

• A business model 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 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.[9]

Usually, a model is created after conducting an interview, referred to as business analysis.


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
cross the facility and the results of the information from all the interviewers must fit
together once completed.[9]

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
reengineering is required as 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.[9]
[edit] Computer-aided Software Engineering

Computer-Aided Software Engineering (CASE), in the field software engineering is the


scientific application of a set of tools and methods to a software which results in high-
quality, defect-free, and maintainable software products.[10] It also refers to methods for
the development of information systems together with automated tools that can be used in
the software development process.[11] The term "Computer-aided software engineering"
(CASE) can refer to the software used for the automated development of systems
software, 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.[12]

Two key ideas of Computer-aided Software System Engineering (CASE) are:[13]

• The harboring of computer assistance in software development and or software


maintenance processes, and
• An engineering approach to the software development and or maintenance.

Some typical CASE tools are Configuration management tools, Data modeling tools,
Model transformation tools, Refactoring tools, Source code generation tools, and Unified
Modeling Language.

[edit] Integrated development environment

Anjuta, a C and C++ IDE for the GNOME environment

An integrated development environment (IDE) also known as integrated design


environment or integrated debugging environment is a software application that provides
comprehensive facilities to computer programmers for software development. An IDE
normally consists of a:

• source code editor,


• compiler and/or interpreter,
• build automation tools, and
• debugger (usually).

IDEs are designed to maximize programmer productivity by providing tightly-knit


components with similar user interfaces. Typically an IDE is dedicated to a specific
programming language, so as to provide a feature set which most closely matches the
programming paradigms of the language.

[edit] Modeling language

A modeling language is any artificial language that can be used to express information or
knowledge or systems in a 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.[14] 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 standardised keywords
accompanied by parameters to make computer-interpretable expressions.

Example of graphical modelling languages in the field of software engineering are:

• Business Process Modeling Notation (BPMN, and the XML form BPML) is an
example of a Process Modeling language.
• EXPRESS and EXPRESS-G (ISO 10303-11) is an international standard general-
purpose data modeling language.
• Extended Enterprise Modeling Language (EEML) is commonly used for business
process modeling across a number of layers.
• 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 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, C++, C#) programs and design patterns.
• Specification and Description Language(SDL) is a specification language targeted
at the unambiguous specification and description of the behaviour 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, the use of them doesn't
necessarily mean that programmers are no longer required. On the contrary, executable
modeling languages are intended to amplify the productivity of skilled programmers, so
that they can address more challenging problems, such as parallel computing and
distributed systems.

[edit] Programming paradigm

A programming paradigm is a fundamental style of computer programming, in contrast to


a software engineering methodology, which is a style of solving specific software
engineering problems. 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 compose a computation (assignation, evaluation, continuations, data flows...).

A programming language can support multiple paradigms. For example programs written
in C++ or Object Pascal can be purely procedural, or purely 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 advocate different methodologies,


different programming languages advocate different programming paradigms. Some
languages are designed to support one particular paradigm (Smalltalk supports object-
oriented programming, Haskell supports functional programming), while other
programming languages support multiple paradigms (such as Object Pascal, C++, C#,
Visual Basic, Common Lisp, Scheme, Python, Ruby and Oz).

Many programming paradigms are as well known for what techniques they forbid as for
what they enable. For instance, pure functional programming disallows the use of side-
effects; structured programming disallows the use of the goto statement. Partly for this
reason, new paradigms are often regarded as doctrinaire or overly rigid by those
accustomed to earlier styles.[citation needed] Avoiding certain techniques can make it easier to
prove theorems about a program's correctness—or simply to understand its behavior.

[edit] Software framework

A software framework is a re-usable design for a software system or subsystem. A


software framework may include support programs, code libraries, a scripting language,
or other software to help develop and glue together the different components of a
software project. Various parts of the framework may be exposed through an API.
[edit] Software development process

A Software development process is a framework imposed on the development of a


software product. Synonyms include software life cycle and software process. There are
several models for such processes, each describing approaches to a variety of tasks or
activities that take place during the process.

A largely growing body of software development organizations implement process


methodologies. Many of them are in the defense industry, which in the U.S. requires a
rating based on 'process models' to obtain contracts. The international standard for
describing the method of selecting, implementing and monitoring the life cycle for
software is ISO 12207.

A decades-long goal has been to find repeatable, predictable processes that improve
productivity and quality. Some try to systematize or formalize the seemingly unruly task
of writing software. Others apply project management techniques to writing software.
Without project management, software projects can easily be delivered late or over
budget. With large numbers of software projects not meeting their expectations in terms
of functionality, cost, or delivery schedule, effective project management appears to be
lacking.

[edit] See also


Lists

• List of software engineering topics


• List of software development philosophies

Related topics

• Domain-specific modeling
• Lightweight methodology
• Object modeling language
• Structured programming
• Integrated IT Methodology

[edit] References
1. ^ a b c d e f g h i SELECTING A DEVELOPMENT APPROACH. Revalidated:
March 27, 2008. Retrieved 27 Oct 2008.
2. ^ a b Geoffrey Elliott (2004) Global Business Information Technology. p.87.
3. ^ Wasserfallmodell > Entstehungskontext, Markus Rerych, Institut für
Gestaltungs- und Wirkungsforschung, TU-Wien. Accessed on line November 28,
2007.
4. ^ (Boehm, 1986)
5. ^ (Boehm, 1986 and 1988)
6. ^ (Boehm, 2000)
7. ^ Georges Gauthier Merx & Ronald J. Norman (2006). Unified Software
Engineering with Java. p.201.
8. ^ Edward J. Barkmeyer ea (2003). Concepts for Automating Systems Integration
NIST 2003.
9. ^ a b c d 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.
10. ^ Kuhn, D.L (1989). "Selecting and effectively using a computer aided software
engineering tool". Annual Westinghouse computer symposium; 6-7 Nov 1989;
Pittsburgh, PA (USA); DOE Project.
11. ^ P.Loucopoulus and V. Karakostas. System Requirement Engineering.
12. ^ CASE definition In: Telecom Glossary 2000. Retrieved 26 Oct 2008.
13. ^ K. Robinson (1992). Putting the Software Engineering into CASE. New York :
John Wiley and Sons Inc.
14. ^ Xiao He (2007). "A metamodel for the notation of graphical modeling
languages". In: Computer Software and Applications Conference, 2007.
COMPSAC 2007 - Vol. 1. 31st Annual International, Volume 1, Issue , 24–27
July 2007, pp 219-224.

[edit] External links

Wikimedia Commons has media related to: Software development methodology

• Selecting a development approach at cms.hhs.gov.


• Software Methodologies Book Reviews An extensive set of book reviews related
to software methodologies and processes

[hide]
v•d•e
Software Engineering

Requirements analysis • Systems analysis • Software design • Computer


Fields programming • Formal methods • Software testing • Software deployment •
Software maintenance

Data modeling • Enterprise architecture • Functional specification •


Modeling language • Programming paradigm • Software • Software
Concepts architecture • Software development methodology • Software development
process • Software quality • Software quality assurance • Software
archaeology • Structured analysis
Agile • Aspect-oriented • Object orientation • Ontology • Service orientation
Orientations
• SDLC

Agile • Iterative model • RUP • Scrum • Spiral model •


Development
Waterfall model • XP • V-Model • Incremental model •
models
Prototype model

Automotive SPICE • CMMI • Data model • Function model •


Models Other
Information model • Metamodeling • Object model • Systems
models
model • View model

Modeling
IDEF • UML
languages

Kent Beck • Grady Booch • Fred Brooks • Barry Boehm • Ward


Cunningham • Ole-Johan Dahl • Tom DeMarco • Martin Fowler • C. A. R.
Software Hoare • Watts Humphrey • Michael A. Jackson • Ivar Jacobson • Craig
engineers Larman • James Martin • Bertrand Meyer • David Parnas • Winston W.
Royce • Colette Rolland • James Rumbaugh • Niklaus Wirth • Edward
Yourdon • Victor Basili

Computer science • Computer engineering • Enterprise engineering • History


Related
• Management • Mathematics • Project management • Quality management •
fields
Software ergonomics • Systems engineering
Retrieved from "http://en.wikipedia.org/wiki/Software_development_methodology"
Categories: Software engineering | Software development | Software development
process | Software development philosophies
Hidden categories: All articles with unsourced statements | Articles with unsourced
statements from January 2008

Personal tools

• New features
• Log in / create account

Namespaces

• Article
• Discussion

Variants

Views

• Read
• Edit
• View history

Actions

Search

Navigation

• Main page
• Contents
• Featured content
• Current events
• Random article
• Donate

Interaction

• About Wikipedia
• Community portal
• Recent changes
• Contact Wikipedia
• Help

Toolbox

• What links here


• Related changes
• Upload file
• Special pages
• Permanent link
• Cite this page

Print/export

• Create a book
• Download as PDF
• Printable version

Languages

• Česky
• Español
• 한국어
• Bahasa Indonesia
• Português
• 中文

• This page was last modified on 18 October 2010 at 22:54.


• Text is available under the Creative Commons Attribution-ShareAlike License;
additional terms may apply. See Terms of Use for details.
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-
profit organization.
• Contact us

• Privacy policy
• About Wikipedia
• Disclaimers


Abstract
This short paper contains a preliminary description of a novel type of chat system that
aims at realizing natural and social communication between distant communication
partners. The system is based on an Emotion Estimation module that assesses the
affective content of textual chat messages and avatars associated with chat partners that
act out the assessed emotions of messages through multiple modalities, including
synthetic speech and associated affective gestures.

Fulltext Preview
http://www.springerlink.com/content/0w27fy9wtwk6e4d
d/
http://books.google.com.ph/books?
id=vz2JE33ZOGcC&pg=PA58&lpg=PA58&dq=methodologies+of+chat+system&sourc
e=bl&ots=xPJgu-
nMxw&sig=OrdlWdcICXnz0q5hdbEkAiGFI6M&hl=tl&ei=LlDGTNOtEsLQceb9oZYO
&sa=X&oi=book_result&ct=result&resnum=8&ved=0CEEQ6AEwBw#v=onepage&q&f
=false
An analysis of Internet chat systems
Christian Dewes Arne Wichmann Anja Feldmann
Universit ¨ at des Saarlandes TU M¨unchen TU M¨unchen
cdewes@net.uni-sb.de aw@net.in.tum.de anja@net.in.tum.de
Abstract
In our quest to better understand network traffic dynamics,
we examine Internet chat systems. Although chat as an application
does not contribute huge amounts of traffic, chat
systems are known to be habit-forming. This implies that
catering to such users can be a promising way of attracting
them, especially in low bandwidth environments such as
wireless networks.
Unfortunately there is no common protocol base for chat
systems. Rather there are a multitude of protocol variants
whose specifications, with some exceptions, such as IRC and
ICQ, are unavailable or ill defined. In addition, chat systems
are often layered on top of other application protocols like
HTTP. Therefore there is no simple way of even identifying
chat traffic. In this paper we show how to separate chat
traffic from other Internet traffic and present the results
of an extensive validation of our methodology. Using our
methodology we gather a week long trace of all chat traffic
that crosses a 155 Mbit/s link from the Saarland University
to the Internet and present an initial characterization.
Categories and Subject Descriptors
C.2.3 [Computer-Communication Networks]: Network
Operations
General Terms
Measurement, Experimentation
Keywords
Chat, IRC, Network Measurements
1. INTRODUCTION
Chat systems, and especially Web-chats, are used by a
sizable number of people around the world for exchanging
ideas and/or discussions. Considering the spectrum of Internet
applications, chat systems occupy the extreme, short-
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
IMC’03, October 27–29,2003, Miami Beach, Florida, USA
Copyright 2003 ACM 1-58133-773-7/03/0010 ...$5.00.
lived interactive end, while stable, non-interactive applications
like the Web occupy another.
Given that chat as an application does not generate a
lot of traffic it is not surprising that chat systems do not
contribute a large fraction of traffic to the Internet. Therefore
one may ask why is chat a worthwhile target for traffic
characterization. Our primary motivation is that chat offers
computer mediated communication. This means that
the measured ”behavior” is expected to mainly depend on
human behavior (maybe influenced in some ways by packet
delays). Furthermore chat is used by a large number of
users. It has the potential of being habit-forming [1]. Since
chat systems need little bandwidth, they are an interesting
and attractive wireless application. A wireless application
that has gained extreme popularity in Asia and Europe is
SMS (short message service) and is used by some users in a
manner similar to chat.
In today’s Internet there are various chat systems in use
which differ in a number of aspects. Internet Relay Chat
(IRC) [2] is one of the oldest systems still in use. From a
high level perspective an IRC-system consists of a network
of servers which form a spanning tree among them, that
is used as the backbone of the network. A client using an
IRC-system connects himself to one of these servers and the
messages will travel along the backbone to each of the connected
servers. The IRC protocol which regulates message
exchange is well defined and easy to understand. Accordingly
we chose IRC as a starting point for our analysis.
While IRC is still a widely used protocol, a significant
share of today’s users appear to be using Web-based chat
systems. There seem to be two main motivations: ease
of use and ease of access. Everyone is familiar with the
user interface of a Web browser, and most portals are offering
Web-based chat systems. Unfortunately these systems
vary widely in terms of visual appearance and technical realization
as well as in terms of protocol. Nevertheless we
have identified a number of common characteristics of Webbased
systems that can be used to separate traffic generated
by them from other traffic. As a result we can analyze
Web-based chat systems and compare their characteristics
to those of IRC-systems.
Other popular chat systems include ICQ [3] and AIM [4]
(AOL Instant Messenger). These differ from the above systems
in that they use UDP as transport protocol and that
their main goal is the exchange of short messages rather
than the exchange of opinions or longer discussions. Most
chat systems are open systems. In contrast Gale [5] is a
fairly new system which encrypts its messages cryptographically
and supports even more decentralization of the server
functions than IRC.
The main problem in analyzing chat traffic is the multitude
and the diversity of systems and protocols. In addition
IRC differs significantly from Web-chat and there is
no unique Web-chat system. Indeed most Web-chat protocols
differ widely and are usually not well documented.
Some systems do not only use the Web browser as their
user interface but realize their protocol on top of HTTP.
This implies that it becomes rather difficult to consistently
separate Web-chat traffic from regular Web traffic and other
TCP traffic. Therefore we first have to address the challenge
of capturing chat traffic before we can present the results of
our analysis.
Our approach for separating Web-chat traffic from other
network traffic is to first collect traffic generously, then identify
candidate chat traffic, and finally disregard known nonchat
traffic. We start by collecting all network traffic that
satisfies some rather general criteria. We then keep all connections
which match a number of criteria derived from our
analysis of IRC and a basic understanding of Web-chat systems.
Close inspection of the resulting traffic has shown that
some other protocols may have similar behavior. These are
easy to identify and can therefore be excluded from further
analysis. In order to show the validity of this approach we
present the results of an extensive validation and a statistical
characterization of the collected chat traffic.
Another problem with this approach is imposed by resource
limitations. The amount of traffic to process exceeded
the disk, cpu, and memory resources of our server machine.
Accordingly we further subdivided the work into two filter
steps, the first checks for the inexpensively computable criteria
while the second performs the computational expensive
ones. This pipelining enables us to cope with the amount of
data.
The remainder of this paper is structured as follows: first,
in Section 2, we will review some details of IRC and Webchat
systems. Next we present our methodology for collecting
chat traces (Section 3). In Section 4 this is followed by
an account of our experiences in realizing these ideas. As we
propose to use quite a complex heuristic Section 5 discusses
our approach for validating their appropriateness. In Section
6 we present the results of analyzing the properties of
IRC and Web-chat usage. Finally, in Section 7 we summarize
our experience and suggest future research directions.

2.3 Other chat systems


There are a number of other services, which enable interactive
communication. Some of the most popular ones seem
to be instant messenger applications such as ICQ or AOL
and Microsoft’s instant messenger services (AIM, MIM) or
the Yahoo messenger service http://messenger.yahoo.com.
These systems are stand-alone client applications which have
to be explicitly downloaded and installed on the corresponding
hardware. In general instant messenger services resemble
applet-Web-chat systems in that the purpose is to send and
receive messages with little delay. One of the differences is
that only some support channels. On the other hand they
add certain functionality, e.g., a user can specify a list of
friends (buddy list) to the server of the system and is then
notified when one of these friends logs into the system. We
expect that communication behavior in these networks is
comparable to that in chat systems as long as they support
channels. More information about, e.g., ICQ can be found
in [3].
3. METHODOLOGY
The goal of this section is to identify components of chat
traffic that will help us separate chat traffic from other Internet
traffic.
Mobile phone
http://en.wikipedia.org/wiki/Mobile_ph
one
From Wikipedia, the free encyclopedia
Jump to: navigation, search
"Cell Phone" redirects here. For the film, see Cell Phone (film).
This article may contain original research. Please improve it by verifying the
claims made and adding references. Statements consisting only of original research
may be removed. More details may be available on the talk page. (August 2010)
This article needs additional citations for verification.
Please help improve this article by adding reliable references. Unsourced material may be
challenged and removed. (August 2010)
Mobile phone

Mobile phone
Inventor Martin Cooper
Launch year 1983
Company Motorola
Availability Worldwide

A mobile phone (also called mobile, cellular telephone, cell phone or handphone[1]) is
an electronic device used for full duplex two-way radio telecommunications over a
cellular network of base stations known as cell sites. Mobile phones differ from cordless
telephones, which only offer telephone service within limited range through a single base
station attached to a fixed land line, for example within a home or an office.
A mobile phone allows its user to make and receive telephone calls to and from the
public telephone network which includes other mobiles and fixed line phones across the
world. It does this by connecting to a cellular network owned by a mobile network
operator. A key feature of the cellular network is that it enables seamless telephone calls
even when the user is moving around wide areas via a process known as handoff or
handover.

In addition to being a telephone, modern mobile phones also support many additional
services, and accessories, such as SMS (or text) messages, email, Internet access, gaming,
Bluetooth and infrared short range wireless communication, camera, MMS messaging,
MP3 player, radio and GPS. Low-end mobile phones are often referred to as feature
phones, whereas high-end mobile phones that offer more advanced computing ability are
referred to as smartphones.

The first handheld cellular phone was demonstrated by Martin Cooper of Motorola in
1973, using a handset weighing 2 kg (4.4 lb).[2] In the year 1990, 12.4 million people
worldwide had cellular subscriptions.[3] By the end of 2009, only 20 years later, the
number of mobile cellular subscriptions worldwide reached approximately 4.6 billion,
370 times the 1990 number, penetrating the developing economies and reaching the
bottom of the economic pyramid.
cell phone
(http://www.businessdictionary.com/def
inition/cell-phone.html)
Hide links within definitionsShow links within definitions

Definition
Small wireless device that has at least the same functions of a standard wired telephone but is smaller and more
mobile. A cell phone requires a subscription to a service provider and requires either a prepaid or monthly billing
setup. Generally, they have more functions than traditional land lines and need to be charged after a period of
time. Also called mobile phone or mobile device.

Read more: http://www.businessdictionary.com/definition/cell-


phone.html#ixzz13QzlzmKf

You might also like