Software - Mymancosa .com mymancosa.com

Download Report

Transcript Software - Mymancosa .com mymancosa.com

INFORMATICS 1A
Chapter 1
Introduction to Informatics 1A
Informatics is the discipline of science which investigates the structure and properties (not specific content)
of scientific information, as well as the regularities of scientific information activity, its theory, history,
methodology and organization. The purpose of informatics consists in developing optimal methods and
means of presentation (recording), collection, analytical-synthetic processing, storage, retrieval and
dissemination of scientific information.
Informatics - the sciences concerned with gathering, manipulating, storing, retrieving, and classifying
recorded information.
Informatics is the study and application of information technology to the arts, science and professions, and
to its use in organizations and society at large.
Informatics turns data and information into knowledge that people can use every day.
Background
Informatics is a new and rapidly developing field. It uses computing to solve the big problems: privacy,
security, healthcare, education, poverty, and challenges in our environment. All Informatics applications are
computer-based. Those applications are enhanced with tools and techniques from fields such as
communication, mathematics, multimedia, and human-computer interaction design. Informatics differs from
computer science and computer engineering because of its strong focus on the human use of computing.
Students of Informatics learn skills that allow them to harness the power of computing to solve real
problems that directly impact our lives and the lives of those around us. They use their technology and
problem solving skills to make a difference in the world. For students interested in a career with infinite
potential, Informatics stands out as a strong, flexible and dynamic field of study.
The Impact of Informatics
Health
Construct computer health information systems by studying the needs of doctors, nurses, patients, and
health care organizations.
Create health networks that allow doctors and nurses to share knowledge and best practices.
Create new methods of information delivery that motivate patients to follow treatment recommendations.
Provide accurate digital health records available instantly when needed.
Identify the best treatment for patients based on evidence drawn from national health networks.
Allow patients to participate in their own care through the creation of digital Personal Health Records.
Science
Extend our understanding of the human genome.
Develop computing applications that manage data from biotechnical and pharmaceutical collaborations.
Manage and understand data collected to solve scientific challenges in the natural and social sciences.
Find new and more effective personalized medicines.
Track the spread of disease and find new ways to reduce its impact.
Visualize scientific data in ways that aid human understanding.
Human Computer Interaction (HCI)
Devise theories and methods to improve human interaction with computers.
Design and develop computer interfaces that connect individuals and groups.
Study human intelligence to create better machine intelligence.
Design desktop, mobile and medical devices that sense user needs.
Create shared work applications that increase successful collaboration.
Complement human abilities with artificial intelligence and robotic skills.
Interactive Media and Art
Create 2-D and 3-D animation and visualizations.
Explore the best use of digital media to solve problems in education, health care and entertainment.
Study and design the structure of information and its aesthetic presentation.
Build simulation and virtual reality environments.
Employ digital tools to create learning experiences that engage all the senses.
Create educational computer games that immerse users in useful learning through casual and serious play.
Design and develop interactive websites for business, education and medical enterprises.
Model new platforms for learning.
Business
Develop information tools to capture and analyze data to create better business intelligence.
Design decision support systems to assist business leaders.
Create software tools that automate warehouses and factories.
Integrate computer technology into vital business operations.
Provide tools that manage global supply chains.
Drive the innovation businesses need to be competitive in the 21st century.
Communities
Create information and communication technologies that bridge cultural gaps.
Build geographic information systems that map our communities and help with urban planning.
Use technology to promote government participation and voting.
Connect world communities so that they may better understand one another.
Provide tools to design more livable and sustainable cities.
Provide social networks that facilitate social engagement.
Applications of Informatics
• ARTIFICIAL INTELLIGENCE (AI)
• Robotics
• Expert Systems
• Neural Networks
Chapter 2
INTRODUCTION TO SOFTWARE CONCEPTS
Definition:
Software is the collection of computer programs and related data that provide the instructions
telling a computer what to do and how to do it.
Types of Software
•
System Software
•
Application Software
•
Programming Software
System Software
System software provides the basic functions for computer usage and helps run the computer
hardware and system.
It includes a combination of the following:
• Device drivers
• Operating systems
• Servers
• Utilities
• Window systems
Application Software
Application software is a set of programs that allows the computer to perform a specific data
processing job for the user.
It includes:
• Business software
• Computer aided design
• Databases
• Decision making software
• Educational software
• image editing
• Industrial automation
• Mathematical software
• simulation software
• Word processing
• Video games
• Spreadsheets
• Telecommunications (including the Internet)
Programming Software
Programming software usually provides tools to assist a programmer in writing computer
programs, and software using different programming languages.
The tools include:
• Compilers
• Debuggers
• Interpreters
• Linkers
• Text editors
An integrated development environment (IDE) is a single application that attempts to manage all
these functions.
Chapter 3
SOFTWARE/PROGRAM DEVELOPMENT PROCESS
Software systems come and go through a series of passages that account for their inception,
initial development, productive operation, upkeep, and retirement from one generation to
another.
What is a software life cycle model?
A software life cycle model is either a descriptive or prescriptive characterization of how
software is or should be developed.
What is a software process model?
In contrast to software life cycle models, software process models often represent a networked
sequence of activities, objects, transformations, and events that embody strategies for
accomplishing software evolution.
Software development Models
Any software development process is divided into several logical stages that allow a software
development company to organize its work efficiently in order to build a software product of
the required functionality within a specific time frame and budget.
A typical software development lifecycle comprises the following stages:
•
•
•
•
•
•
Documentation of software development.
Designing a software product.
Implementing the software product.
Testing the software solution.
Deployment of the solution.
Maintenance of the product.
Software Development Methodologies
Software development teams, taking into account its goals and the scale of a particular project,
have a number of well-established software development models to choose from. Therefore,
each software development company adopts the best-suited model, which facilitates the
software development process and boosts the productivity of its team members.
Waterfall Model
This model is mainly apt for small and relatively easy software projects. Software companies
working according to this model complete each stage in consecutive order and review its
results before proceeding to another stage, which renders the waterfall model inflexible and
unsuitable for complex long-term software projects.
V-shaped Model
This model is similar to the waterfall model, though the main emphasis is placed on the
verification stage and testing, which overlap all the other stages of the software development
lifecycle. Tests are planed starting from the documentation stage, then throughout integration
and coding and after the actual implementation of a software product testing itself is initiated.
Therefore, the V-shape is formed due to the upward direction of testing, i.e. test execution.
Iterative and Incremental Development
This model allows a software company to spot and mend problems at the earlier stages of the
software development lifecycle, which makes the development process more flexible. This aim
is achieved by breaking down the whole lifecycle into several iterations, thus handling the
process in smaller portions. The iterative model allows creating the initial version of a software
product straight after the first iteration.
Spiral Model
The essence of this model is in the underscored importance of a risk-analysis during the
development process. The spiral model presupposes that each stage of the classical waterfall
model is divided into several iterations, and each iteration undergoes planning and risk
analysis. As a result this model allows a software company to produce working software after
each iterative stage, while evaluating the risks on an ongoing basis. However, adopting the
spiral model may result in notably higher costs.
Extreme Programming
Extreme programming (XP) is a software development methodology which is intended to
improve software quality and responsiveness to changing customer requirements. As a type of
agile software development, it advocates frequent "releases" in short development cycles
(timeboxing), which is intended to improve productivity and introduce checkpoints where new
customer requirements can be adopted.
Other elements of extreme programming include: programming in pairs or doing extensive
code review, unit testing of all code, avoiding programming of features until they are actually
needed, a flat management structure, simplicity and clarity in code, expecting changes in the
customer's requirements as time passes and the problem is better understood, and frequent
communication with the customer and among programmers. The methodology takes its name
from the idea that the beneficial elements of traditional software engineering practices are
taken to "extreme" levels, on the theory that if a little is good, more is better.
Rapid Application Development (RAD)
Rapid application development (RAD) is a software development methodology that uses
minimal planning in favor of rapid prototyping. The "planning" of software developed using
RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally
allows software to be written much faster, and makes it easier to change requirements.
Rapid application development is a software development methodology that involves methods
like iterative development and software prototyping.
In rapid application development, structured techniques and prototyping are especially used to
define users' requirements and to design the final system.
Joint Application Development (JAD)
Joint Application Development (JAD) is a technique for engaging a group or team of software
developers, testers, customers, and prospective end-users in a collaborative requirements
elicitation and prototyping effort.
The JAD process is based on four ideas:
1. People who actually work at a job have the best understanding of that job.
2. People who are trained in software development have the best understanding of the
possibilities of that technology.
3. Software-based information systems and business processes rarely exist in isolation – they
transcend the confines of any single system or office and effect work in related
departments. People working in these related areas have valuable insight on the role of a
system within a larger community.
4. The best information systems are designed when all of these groups work together on a
project as equal partners.
Prototyping
Prototyping is a technique for providing a reduced functionality or a limited performance
version of a software system early in its development.
In contrast to the classic system life cycle, prototyping is an approach whereby more emphasis,
activity, and processing are directed to the early stages of software development
(requirements analysis and functional specification).
Software prototypes come in different forms including throwaway prototypes, mock-ups,
demonstration systems, quick-and-dirty prototypes, and incremental evolutionary prototypes.
Prototyping allow developers to rapidly construct early or primitive versions of software
systems that users can evaluate.
This has the advantage of always providing a working version of the emerging system, while
redefining software design and testing activities to input specification refinement and
execution.
Agile Development
This development model adopts the iterative model as a baseline, while putting an emphasis
on the human factor, which is achieved by software team feedbacks throughout the ongoing
development process.
Chapter 4
SOFTWARE DEVELOPMENT ENVIRONMENTS
By software development environment we mean an environment that augments or automates
the activities comprising the software development cycle, including programming-in-the-large
tasks such as configuration management and programming-in-the-many tasks such as project
and team management. We also mean an environment that supports large-scale, long-term
maintenance of software.
Integrated Development 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
a compiler and/or an interpreter
build automation tools
a debugger
Types of Programming Languages
Procedural Programming
Procedural programming can sometimes be used as a synonym for imperative programming
(specifying the steps the program must take to reach the desired state).
Procedures and Modularity
Modularity is generally desirable, especially in large, complicated programs. Inputs are usually
specified syntactically in the form of arguments and the outputs delivered as return values.
Scoping is another technique that helps keep procedures strongly modular. It prevents the
procedure from accessing the variables of other procedures (and vice-versa), including
previous instances of itself, without explicit authorization.
Visual Programming
A visual programming language (VPL) is any programming language that lets users create
programs by manipulating program elements graphically rather than by specifying them
textually.
Event-Driven Programming
Event-driven programming or event-based programming is a programming paradigm in which
the flow of the program is determined by events—i.e., sensor outputs or user actions (mouse
clicks, key presses) or messages from other programs or threads.
Object-Oriented Programming
Object-oriented programming (OOP) is a programming paradigm that uses "objects" – data
structures consisting of data fields and methods together with their interactions – to design
applications and computer programs. Programming techniques may include features such as
data abstraction, encapsulation, modularity, polymorphism, and inheritance.
Concepts of Object Oriented Programming (OOP)
Class discussion
Software Development Tools
A programming tool or software development tool is a program or application that software
developers use to create, debug, maintain, or otherwise support other programs and
applications.
Software development tools can be roughly divided into the following categories:
• performance analysis tools
• debugging tools
• static analysis and formal verification tools
• correctness checking tools
• memory usage tools
• application build tools
• integrated development environment
Data Representation in a Computer Environment
Data input follows either of the following data type:
•
•
•
•
•
•
•
Integer (numeric e.g. 10, 11, 100, -10)
Real or Single (Numeric, Floating point e.g. 10.2, -13.497)
Double (Numeric, floating point e.g. 23.467537879, -123.3266479098)
String (letters, characters, numbers e.g. “there were 4% of the students in the class”)
Date (e.g. 10/08/2010)
Variant
Boolean (e.g. Yes/No or True/False)
THANK YOU