Download Sysline Oy

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Distributed operating system wikipedia , lookup

Transcript
A few words from the field
Programming in Java
Source
file
Source
Sourcefile
file
Application
Java Compiler
Application
Bytecode
Core
Libraries
Java VM
implementation
Native
Platform
Java and platform independence
What it does
- VM and Core Libraries hide partially underlying
hardware/OS
- Compiled bytecode can be used with different VM
implementations
- Guarantee bytecode level backward compatibiity
- Gives us pretty productive language
... and does not
- Give us fully standardized networking/persistent storage IO
- Stable user interface management
- Remove the problems caused by poor development process
or tools
Java Platforms
Java Enterprise Edition
- EJB, CORBA, Servlets/JSP, JMS
Java Standard Edition
- Commonly used as client counterpart of J2EE backend
Java Personal Edition
- AWT basis, lightweight Virtual Machine
- Aimed to small devices
Java Micro Edition
- Device configuration specifications (CLDC/MIDP)
- KiloByte Virtual Machine
... are specifications that
• do evolve -> different versions of VMs and
extension libraries
• contain both mandatory and (common) optional
features
• are implemented by dozens vendors that have
different capabilities of
- fullfilling specified requirements
- documenting and maintaining the
implementation
- supporting actual development
... running on devices, with
•
•
•
•
•
•
•
•
varying support for colors, fonts etc.
different screen sizes
different pointing devices and keyboards
own layout / look-and-feel standards and
recommendations
memory and performance limitations
varying support for character encodings
varying support for networking
etc.
... and on the top of all
• Core and extension libraries are huge, and each
developer interprets the documentation differently
• Libraries contain overlapping functionality
• Developers have different cababilities of solving
development/desing problems => Each problem
can be solved / each requirement can be fullfilled
by dozens of different ways
Example of problem solving
package hello;
package hello;
public class FirstHello
public class SecondHello
{
{
public static void main(String[] args)
static
{
{
System.err.println("Hello World!");
System.out.println("Hello World!");
System.exit(0);
}
}
}
}
Write once, run anywhere?
Run anywhere
• Increasing applications portability increases applications
complexity
• Try to please everyone == please no-one
... Or Run where you need it
• Maximize component re-use between selected platforms
• Make configurable components based on real needs, not
ideas
• Keep your focus on correct issues => solve customers
problems
What do we need?
• Somebody who can find out what customer really needs,
and can interpret these needs to clear requirements
• Somebody who picks technologies that should be used
• Somebody who decides how this new application should be
constructed
• Somebody who states guidelines and patterns that should
be used in development
• Somebody who designs and developes the application
• Somebody who checks that application does what it is
supposed to do
• Somebody who manages the time and money spent during
development process
... so, what do we need?
• Software development process with
- Requirement design
- UI and usability design
- Architecture design
- Implementation level design, development and
Unit Testing
- Application level testing
• Tight and working project management
• Backend systems to support the process, ease
management and keep track of deliverables
Requirements design
• Conducts work shops with the team and
customers to establish a common view of the
system
• Does customer interviews
• Identifies business processes
• Defines Use Cases and ER –diagrams
• Controls Changes to the requirements
UI and usability design
• Analyzes the user’s tasks by looking at the
requirements and use case scenarios
• Defines iteratively the overall functionality of the
user interface
• Creates an UI demonstration
• Conducts usability tests
Architecture design
• Designing the structure of the software as a component
architecture
• Feature package production with Project Manager
• Selecting platforms for production, testing and delivery
• Finding reusable parts and pre-existing components that
can be used in project
• Designing initial components and the interaction between
them
• Setting up the deployment order
• Stating guidelines and patterns for design development
• Verify that desing and development follow these
guidelines/patterns
Design, development and Unit Test
• Modeling and structuring interfaces and classes
and their relationships
• Planning a unit tests
• Designing operations, selecting algorithms etc.
• Implementing and testing the component
Testing
• Plans and schedules the testing process
• Designs automatic and manual tests with testing
team
• Executes and administers tests alongside testing
team
• Informs results of testing
• Verifies delivery of software
• Co-operates with development team
Project Management
•
•
•
•
•
•
•
•
Roadmap management
Goals
WBS and workload allocation
Resource assignments
Scheduling
Budgeting
Risk Management
Reporting
Designing Platform Independent Software
Approach
• Isolate parts that are changing between platforms
• Define main layers of application (based on isolation
decisions)
• Divide application into manageable components (keep the
layering in mind)
• Put components into layers
• Define component interfaces and interactions
• Define design patterns that should be used on component
development (keep isolation in mind)
• Assign appropriate pattern for each component
• Check components that are within same layer and/or share
same pattern
• Decide design and development order
Isolation of changing parts
Device depedent rendering components
Configurable rendering components
Configuration
styles,
mechanisms and
posting styles
Graphics/UI
Configuration
Network IO
Logic and state
File/other persistence IO
Supported protocols and access styles
Main layers of application
Data visualization
Client Logic
Protocol encapsulation
Business Logic
Persistence storage access
Persistent Storages
System
Integration
Application Components
Human
Resources Main
Resouce List View
Logon
Resouce Browse
Resource View
Resource Management
Access Rights
LDAP Storage
Human Resources Database
Resource List in application layers
Data visualization
Client Logic
Resource List
Protocol encapsulation
Business Logic
Persistence storage access
Persistent Storages
Resource List interactions
Application
Resource List
<init>
Set Privileges
Set Configuration
Refresh List
Selection Changed
Get Selection
Load Resource Info
Resource List
Resource List interface
IN:
• setAccessPrivileges(ApplicationUser)
• setConfigurationProvider(ConfigurationProvider):void
• refreshList():void
• getSelection():Resource
OUT:
• selectionChanged(Notification):void
Pattern for Resource List
View
RListView
Controller
RListControl
Model
BL
Access
RListModel
Browse
Access
PATTERN
IMPLEMENTATION
A few common patterns
• Factory
• Singleton
• Proxy
• Observer
• Command
• Facade
• Model-View-Controller
=> Do not re-invent the wheel
Sources for information
Main Sources for Java:
http://java.sun.com
http://developer.java.sun.com/developer/
Books:
• Framing software Reuse. Lessons from the real world: Paul G. Basset
• Implementing application frameworks: Mohamed E. Fayad, Douglas C. Schmidt,
Ralph E. Johnson
• Domain specific application frameworks: Mohamed E. Fayad, Ralph E. Johnson
• Software Project Management. A unified framework: Walker Royce
• The craft of software testing: Brian Marick
• Java Design Patterns:James W. Cooper