Software Development Concepts ITEC 2120. Software Development Software Development refers to all...

29
Software Development Concepts ITEC 2120

Transcript of Software Development Concepts ITEC 2120. Software Development Software Development refers to all...

Page 1: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Software Development Concepts

ITEC 2120

Page 2: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Software Development

Software Development refers to all that is involved between the conception of the desired software through to the final manifestation of the software. It may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products1.

1. http://en.wikipedia.org/wiki/Software_development

Page 3: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Software Development Phases

Page 4: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Software Development Phases

1. Requirements Gathering and Analysis2. High Level Software Design3. Implementation4. Testing5. Deploying and Maintenance

Page 5: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Requirements Gathering and Analysis

• Questions:– What is the purpose of the software?– Who will use the software and why?– What are the specific requirements by the customer(s)?

• People:– Domain Experts: People who are knowledgeable about the specific

field the software will be used in. For Example, if the software is for managing zoo animals, we are going to need some animal experts

– Technical Writers: People who can write documentation that clearly and precisely explains the requirements of the software in such a way that both the domain experts and software developers can understand.

Page 6: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

High Level Software Design

• Questions:– What is the high-level architecture of the software

project?– What big pieces can the project be broken into?– What existing systems can be leveraged?– What parts will need code to be written?– How will the code be organized?

• People:– Software Architects: Senior Level Programmers and

Developers

Page 7: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Implementation

• Questions:– What programming languages should be used?– What new software modules need to be written?– What existing software modules/libraries can be leveraged?– What data structures will need to be stored and

manipulated?– What new functions / methods will be needed?

• People:– Computer Programmers– Other: Artists, Modelers, Animators, Musicians, Sound

Effect Experts, …

Page 8: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Testing

• Questions:– What errors are in the code?

• Syntax Errors: Errors due to coding typos• Runtime Errors: Errors that cause the program to crash• Logic Errors: Errors that cause the program to produce incorrect

results / responses

– Is the software easy to use (user-friendly)?– Does the software satisfy all the requirements?

• People:– Computer Programmers– Software Testers– Other: Alpha, Beta customers, …

Page 9: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Deploying and Maintenance

• Questions:– How will the software be distributed to the customers?– What computer infrastructure is needed by the system?

(Network Servers, Databases, Custom Hardware, …)?– How will the computer infrastructure be maintained?– How will software updates (patches) be managed and

delivered?– How will customer feedback be managed?

• People:– Computer Systems and Security Experts– Computer Programmers

Page 10: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Software Development Methodologies

Page 11: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Software Development Methodologies

Over the last 70 years many different software development teams have developed different methodologies for managing a software development project.These methodologies organize and formalize the software development phases into a standardized process with specific deliverables and time-tables.

Page 12: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Waterfall Methodology

One of the first software methodologies. Established the basic phases of software development.

Page 13: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Iterative Methodology

Redo the project from end-to-end until it is ready to deploy and maintain.

Page 14: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Incremental Methodology

Do small parts of the project building up to the whole project.

Page 15: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Agile Methodology

Lots of small and fast (about 2 weeks) iterations of the whole project.

Page 16: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Documentation

Page 17: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Software Development Documentation

Documentation is often the most important product of each phase of software development. Each phase produces documents that guide or specify what the next phase should accomplish.

Upon iteration, each phase can compare its previous documents to its next release.

Page 18: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Documentation for Software Design

Although each phase of software development produces documentation, there are special documentation techniques specifically used in the design phase. Some of these are:• Entity Relation Diagrams• Universal Modeling Language (UML) Diagrams• Flow Charts• Pseudo Code

Page 19: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Entity Relation (ER) DiagramsThese diagrams establish the real world entities/concepts that need to be represented by the software system and how they relate to each other. For example, how will the system represent customers, products, and orders?

CustomerName

Address

Orderplaces

has 1 or more

Product

Name

Price

Page 20: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

UML DiagramThis set of standard diagrams provide different ways to visualize a software system. One diagram, called the “Class Diagram” describes software components called classes which combine data with the associated operations need on that data.

Page 21: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Flow ChartThese diagrams depict the different steps in a process, and the different paths between those steps. They can often be easily converted into computer programs.

Start

MATH 0099 MATH 1111

Stop

Is compass score above 36?

No

Yes

Is grade “C” or better?

Yes No

Page 22: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Pseudo CodeThis documentation technique is used to describe a computer algorithm in a code like fashion, without consideration for programming syntax rules.

function search(map, city_a):label city_a as discoveredfor all city_b in map.adjacentCities(city_a) do

if city_b is not labeled as discovered thenrecursively call search(map,

city_b)

Page 23: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Programming Languages

Page 24: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Programming Languages

Programming Languages are the languages written to develop software applications. They can be categorized by how many translation steps are needed to convert them into the codes used directly by a computer processor.

Page 25: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Low – Level Programming Languages

A Central Processing Unit (CPU) or microprocessor executes commands written in “Machine Code” consisting of 0 and 1’s.

CPU100101110101011

Machine Code for an instruction to add 2 numbers

Page 26: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Low – Level Programming Languages

Machine Code can be directly mapped to “Assembly Instructions”, which provide short English abbreviations for the corresponding commands.

Assembly directly maps to Machine Code

add 5, 6 100101110101011

Page 27: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

High-Level Programming Languages

Almost all modern programming is done in a high-level programming language which is translated into machine code.

The translation is either done ahead of time, or on the fly. Programs that translate high-level languages ahead of time are called “Compilers”. Programs that translate high-level languages on-the-fly are called “Interpreters”. Both techniques have their own advantages and thus remain in common use today.

Most high-level languages can be organized into 2 main“programming paradigms”:• Procedural• Object Oriented

Page 28: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Procedural Programming

Procedural programming languages break large problems into a set of procedures or functions that solve a problem step-by-step.

The C programming language is the most common procedural language in use today. Due to it’s ability to directly manipulate computer memory and other hardware, it is often used to develop operating systems and their associated tools.

Page 29: Software Development Concepts ITEC 2120. Software Development Software Development refers to all that is involved between the conception of the desired.

Object Oriented Programming

Object Oriented Programming (OOP) languages break large problems into a set of objects that describe real world entities. Each object includes the data representing the entity as well as actions (operators / behaviors / methods) that the entity can perform.

Most modern programming languages support the OOP paradigm.Examples include: C++, C#, Java, Python, Visual Basic, …

Note: All of these languages also support the “procedural” programming paradigm.