software development. software developers refresher a person or organization that designs software...

15
Software Development

Upload: imogen-nichols

Post on 16-Jan-2016

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Software Development

Page 2: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Software Developers

Refresher • A person or organization that designs software and

writes the programs.

• Software development is the process of developing software through successive phases in an orderly way. This process includes not only the actual writing of code but also the preparation of requirements and objectives, the design of what is to be coded, and confirmation that what is developed has met objectives.

• Software developers are focused on the code!

Page 3: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Software life cycleRefresher • Concept - often missed• Requirements - almost never done well• Define exit criteria - almost never done• Design/prototype - often missed• Official design - often rushed• Implementation - almost never planed correctly• Test - first to go to meet schedule• Maintenance - 80%+ the life of the software

Page 4: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Six +1 Key Programming Issues

• Modularity

• Modifiability

• Ease of Use

• Fail-Safe Programming

• Style

• Testing

• Debugging

Page 5: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Modularity

• A module is basically a component of a larger system,

• A module operates within that system independently from the operations of the other components.

• A module provide a separation between interface and implementation.

• A module interface defines elements that are visible to other modules.

• The implementation contains the working code that corresponds to the elements declared in the interface.

Page 6: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Languages that support modules

• Ada

• Fortran

• Pascal (some derivatives)

• Modula-2

• Python Ruby

Page 7: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Modules vs. Classes

• Differences– Classes can be instantiated to create objects,

modules can not be instantiated– Classes can inherit behavior and data from

another class, – Polymorphism allows relationships between

class instances to change at run-time, while relations between modules are static.

• Similarities– Both can be used to hide implementation details

from public view. – Both can form a hierarchy of modules/classes.

Page 8: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

JSR-277 Java Modules

• Consists of:– distribution format (i.e., a Java module) – metadata

• information about a module, • resources within the module, • dependencies upon other modules. • export list to restrict resources from being

exposed outside the module unintentionally.

Page 9: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Modifiability

• Modifiability is the degree to which a system or component facilitates the incorporation of changes

• Examples– encapsulation– abstraction– good programming techniques

Page 10: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Ease of Use

• Ease of use refers to the property of a product or thing that a user can operate without having to overcome a steep learning curve.

• Examples– prompt the user for input– echo the input– label the output– online help

Page 11: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Fail-safe Programming

• Fail-safe programming refers to anticipate the ways the program may fail.

• Examples– error checking the input data– error checking the program logic– anomaly handling and recovery

Page 12: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Style

• Consistent and good programming style is essential for quality software.

• Examples– Extensive use of methods– Encapsulation– Anomaly handling– Readability– Documentation

Page 13: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Testing (the missed issue)

• Software testing is the process used to measure the quality of developed computer software.

• Quality is usually constrained to topics like:– correctness– completeness– security

• But can also include– capability– reliability– efficiency– portability– maintainability– compatibility– usability

Page 14: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Debugging

• Debugging is the act of determining why some action occurred based on a set of inputs.

Page 15: Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the

Things to think about …

• Discipline is the best tool. • Design first, then code. • Don't patch bugs out, rewrite them out. • Don't test bugs out, design them out. • If you don't understand it,

you can't program it. • If you didn't measure it, you didn't do it. • If you've found 3 bugs in a program, best

estimate is that there are 3 more.