Ohjelmistoprojektiehdotus

Tekijä: Marko Seppänen
Teostyyppi: harjoitustyö
Oppilaitos: Saimaan ammattikorkeakoulu
Julkaisuajankohta: Tammikuu 2010
Kurssi: Projektityöskentely

 

 

1 Projektiehdotus

2 Taustaa

3 Java-teknologisia ohjelmistotuotannon välineitä

3.1 Alustoja

3.2 Ohjelmistokehyksiä

3.3 Irtoteknologioita

3.4 Valmiskomponenttisia

3.5 Sovelluspalvelimia

3.6 Ohjelmistoympäristöjä

 

 

1  Projektiehdotus

Projektin nimi

Ohjelmointiyrityksen ohjelmisto- ja alustarepertuaarin analysointi ja kouluttautuminen

Lyhyt kuvaus

Yritys Oy:ssä on Oraclen tuoreimman yritysoston (Sun) jälkeen virinnyt ajatus käydä läpi heidän käyttämäänsä ohjelmisto- ja alustarepertuaaria alustojen, sovelluskehysten, ohjelmointiympäristöjen ja avainteknologioiden osalta, sekä hankkia kaikille työntekijöille sellainen lisäkoulutus, että niistä voidaan keskustella sujuvasti. Yritys Oy suomalainen ohjelmistoyritys, jonka asiakkaat ovat suuria yrityksiä ja julkishallinnon organisaatioita.

(Varsinainen projektisuunnitelma tehdään erikseen.)


2  Taustaa

Yrityksen 12-henkisellä miehistöllä on monenlaisia kompetensseja, joista osa on sellaisia, joita ei löydy kuin yhdeltä. Koska yritys on toiminut jo pitkään samalla henkilökokoonpanolla ja yrityksen työntekijät ovat kaikki myös yrityksen osakkaita, on yrityksen työntekijöiden välille kehkeytynyt luottamukselliset suhteet. Tämän luottamuksen turvin, joka sisältää myös kunkin näkemykset toisistaan uuden oppijana, on saanut heidät kollektiivisesti hyväksymään vision, jonka saavuttaminen laajentaisi heidän yhteistä kompotenssiaan ja mahdollistaisi entistäkin ketterämmät yrityksen toimintaan vaikuttavat toiminnalliset eleet ja liikkeet. Lisäksi he aikovat ottaa yritykseen mukaan uusia työntekijöitä, joille myös olisi hyödyllistä ja yrityksen kehittymisen kannalta melkeinpä välttämätöntä, saada sama perustuntemus kuin muillekin.

Yritys Oy:n työntekijät keräsivät esiselvityksen osaksi lyhyine kuvauksineen varustetun listan ohjelmistuotannon välineistä, joita heillä on a) tapana käyttää tai b) ollut haluna käyttää, mutteivat ole ehtineet opetella. Lista ei ole lopullinen, eikä se tässä muodossaan erottele tuotteiden eri versioita (viittaukset vain uusimpaan). Tarkoituksena on pyrkiä muodostamaan sellainen ohjelmistotuotannon välineiden paletti, josta a) olisi aina löydettävissä kulloisenkin asiakkaan tarpeisiin sopiva yhdistelmä ja b) josta kaikilla työntekijöillä olisi vähintään tietyntasoinen ymmärrys. Yhdistävänä teknologiana ovat Java-pohjaiset sellaiset.

Esimerkkikombinaatio: JBoss Application Server 6, Seam 3, JSF 1.2, Hibernate 3.3.2

Kätevää taulukkoa, josta voisi ruksata täsmäävät, asiakkaan vaatimukset täyttävät sarakkeet ei välttämättä pystytä muodostamaan – eikä se perimmäinen tarkoitus olisikaan. Sellaisen taulukon muodostamista ei tekisi niinkään hankalaksi se, että ICT-alalla on yleisemminkin havaittavissa sumeutta termien alusta, sovelluskehys ja arkkitehtuuri merkityksien rajauksissa, vaan se että sovelluskehyksien välisiä hienoisia eroja kertyisi niin paljon.

Sinänsä on helppo listata sovelluskehyksiin sisällytettyjä ja niiden tukemia teknologioita kuten EJB 3 tai Java EE 6, mutta hienoisemmat erot on helpompi ymmärtää intuitiivisemmin – sitten kun kouluttautunut sopivasti. Lisäksi tuotteiden eri versioissa voi olla merkittäviä eroja, tuottajatahon koettua, että on aika laskea irti aiemmista huonoista käytännöistä ja laatia tuotteen uusi versio kulloisten parhaiden käytäntöjen mukaiseksi (esim. Struts 2 ja JSF 2.0).

Koska kaikilla työntekijöillä on hivenen erilaisia taustoja koulutuksensa ja työkokemuksensa osalta, eikä eri paikkakunnilla toimivista saman alan oppilaitoksista valmistu yhtäläisen tietotaidon saavuttaneita asiantuntijoita – eikä aina samastakaan oppilaitoksesta – ei voida olettaa, että projektin koulutusvaiheessa annosteltu opetus menisi ymmärrykseen samankaltaisesti. Kuitenkin, koska työntekijät ovat mieltyneet siihen kuinka hyvin heidän yrityksellään on mennyt, johtuen pitkälti heidän keskinäisestä luottamuksestaan, he ovat valmiita hiukan "kärsimäänkin" ja opettelemaan asioita, sekä asioiden ympäriltä, niin paljon, että kaikki työntekijät saavuttavat sillä tapaa samankaltaisen ymmärryksen, että valituista teknologioista keskenään keskusteleminen sujuu luontevasti.

Työntekijät nauttivat normaalia tuntipalkkaa jokaisen opiskelutunnin osalta – myös niiltä tunneilta, joita käyttävät muita enemmän. Olennaista on, että kukin tunnistaa puutteet itsessään, eikä koe kiusalliseksi kertoa niistä muille yrityksen osakkaille. Keskinäisen luottamuksen on oltava jatkuvaa ja aktiivisesti hoidettua.

Sitä missä muodossa oppiminen tapahtuu, miten se järjestetään ja erityisesti mitä opetetaan, on vielä projektin alussa täysin avointa. Kyseeseen voisivat tulla sertifikaatteja tarjoavien järjestelmätoimittajien kurssit ja muut valmiskurssit, mutta vaihtoehtojen joukossa on myös kustomoidun opetuksen hankkiminen. Jälkimmäinen tulee todennäköisesti kalleimmaksi.

Lisäksi on tarkoitus tehdä myös kustannuslaskelmia ohjelmistotuotannon välineistä muodostuvista kombinaatioista. Useimmat tuotteista ovat Apache- ja LGPL-lisenssisiä eli ilmaiseksi käyttöönotettavia, mutta saatavilla on kokonaispaketteja, joihin sisältyy esim. maksullinen tuotetuki. Muodostuvalta paletilta, joka siis tulee vielä muuttumaan esiselvityksen mukaisesta listasta, tullaan karsimaan pois sellaiset, joilla ei ole aktiivista käyttäjäyhteisöä, laadukasta dokumentaatiota, sekä roadmappia, josta näkisi mihin se on tulevaisuudessa kehittymässä.


3  Java-teknologisia ohjelmistotuotannon välineitä


3.1 PAKETTIRATKAISUja


SUN GLASSFISH PORTFOLIO
provides the foundation to develop and deploy Web and enterprise applications and is a cost-effective way to acquire, manage, and maintain critical aspects of your Web platform.
http://www.sun.com/software/products/glassfish_portfolio/


JBOSS ENTERPRISE WEB PLATFORM
is the ideal solution for light and rich Java applications. Based on Java standards, JBoss Enterprise Web Platform enhances the Java EE Web Profile with enterprise features to provide a flexible platform specifically targeted for lightweight Java applications.
http://www.jboss.com/products/platforms/webplatform/
http://community.jboss.org


JBOSS ENTERPRISE APPLICATION PLATFORM
is the market leading platform for innovative and scalable Java applications. Integrated, simplified, and delivered by the leader in enterprise open source software, it includes leading open source technologies for building, deploying, and hosting enterprise Java applications and services.
http://www.jboss.com/products/platforms/application/

 

3.2 Sovelluskehyksiä


SEAM
is a powerful open source development platform for building rich Internet applications in Java. Seam integrates technologies such as Asynchronous JavaScript and XML (AJAX), JavaServer Faces (JSF), Java Persistence (JPA), Enterprise Java Beans (EJB 3.0) and Business Process Management (BPM) into a unified full-stack solution, complete with sophisticated tooling.
http://www.seamframework.org
http://docs.jboss.com/seam/latest/reference/en-US/html/Book-Preface.html


APACHE TAPESTRY
is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.
http://tapestry.apache.org
http://www.infoq.com/articles/tapestry5-intro


APACHE STRUTS 2 is an elegant, extensible framework for creating enterprise-ready Java web applications. The framework is designed to streamline the full development cycle, from building, to deploying, to maintaining applications over time.
http://struts.apache.org/2.x/index.html
http://www.vaannila.com/struts-2/struts-2-example/struts-2-annotation-example-1.html


SPRING
has a layered architecture, meaning that you can choose to use just about any part of it in isolation, yet its architecture is internally consistent. So you get maximum value from your learning curve. You might choose to use Spring only to simplify use of JDBC, for example, or you might choose to use Spring to manage all your business objects. And it's easy to introduce Spring incrementally into existing projects.
http://www.springsource.org/about
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/


ORACLE ADF
is an end-to-end Java EE framework that simplifies development by providing out of the box infrastructure services and a visual and declarative development experience.
http://www.oracle.com/technology/products/adf/index.html
http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/adfoverview/adfoverview.htm
http://www.oracle.com/technology/products/adf/pdf/ADF_11_overview.pdf
http://wiki.oracle.com/page/ADF+Technologies

 

3.3 Irtoteknologioita


HIBERNATE
is a powerful, high performance object/relational persistence and query service. Hibernate lets you develop persistent classes following object-oriented idiom - including association, inheritance, polymorphism, composition, and collections. Hibernate allows you to express queries in its own portable SQL extension (HQL), as well as in native SQL, or with an object-oriented Criteria and Example API.
https://www.hibernate.org


ENTERPRISE JAVABEANS (EJB)
technology is the server-side component architecture for Java Platform, Enterprise Edition (Java EE). EJB technology enables rapid and simplified development of distributed, transactional, secure and portable applications based on Java technology.
http://java.sun.com/products/ejb/index.jsp
http://java.sun.com/javaee/5/docs/tutorial/doc/bnbls.html


JAVASERVER FACES
architecture clearly defines a separation between application logic and presentation while making it easy to connect the presentation layer to the application code. This design enables each member of a web application development team to focus on his or her piece of the development process, and it also provides a simple programming model to link the pieces together.
http://java.sun.com/javaee/javaserverfaces/
https://javaserverfaces.dev.java.net/


APACHE AXIS2
is a core engine for web services. Apache Axis2 not only supports SOAP 1.1 and SOAP 1.2, but also has integrated support for the widely popular REST-style of web services. The same business logic implementation can offer both a WS-* style interface and a REST/POX style interface simultaneously.

http://ws.apache.org/axis2/


JAVA PLATFORM, ENTERPRISE EDITION (JAVA EE 6)
is the industry standard for enterprise Java computing. Utilize the new, lightweight Java EE 6 Web Profile to create next-generation web applications, and the full power of the Java EE 6 platform for enterprise applications. Developers will benefit from productivity improvements with more annotations, more POJOs, simplified packaging, and less XML configuration.
http://java.sun.com/javaee/
http://java.sun.com/javaee/technologies/

 

3.4 Valmiskomponenttisia


GOOGLE WEB TOOLKIT
is a development toolkit for building and optimizing complex browser-based applications.
http://code.google.com/webtoolkit/
http://code.google.com/webtoolkit/examples/


VAADIN
is a Java web application framework. It is designed for creating rich and interactive applications that run in the browser, without any plugins. A server-driven architecture together with reusable component model is used to simplify programming of applications and for better web application security. No HTML, XML or JavaScript necessary and all Java libraries and tools are at your disposal.
http://vaadin.com
http://vaadin.com/tutorial


APACHE WICKET
makes developing web-apps simple and enjoyable again with proper mark-up/logic separation, a POJO data model, and a refreshing lack of XML. Swap the boilerplate, complex debugging and brittle code for powerful, reusable components written with plain Java and HTML.
http://wicket.apache.org
http://wicket.apache.org/examplehelloworld.html

 

3.5 Sovelluspalvelimia


ORACLE WEBLOGIC SERVER STANDARD EDITION
is the world's best application server for building and running enterprise applications and services. It fully implements the latest Java EE standards and offers choice in development frameworks and tooling. Comprehensive and accessible management capabilities enable administration of sophisticated systems via a well-designed graphical console and/or automation.
http://www.oracle.com/appserver/weblogic/standard-edition.html
http://www.oracle.com/appserver/appserver_family.html


SUN GLASSFISH ENTERPRISE SERVER V3
is the industry's first application server to support the Java Platform, Enterprise Edition 6 (the Java EE 6 platform) standard. Its greatly improved flexibility and ease of use reduces cost by providing improved developer productivity, simplified application architecture, and low-cost annual subscriptions.
http://www.sun.com/software/products/glassfishv3/
http://www.sun.com/software/products/glassfishv3/features.jsp


JETTY
provides an HTTP server, HTTP client, and javax.servlet container. These components are open source and available for commercial use and distribution. Jetty is used in a wide variety of projects and products. Jetty can be embedded in devices, tools, frameworks, application servers, and clusters.
http://jetty.codehaus.org/jetty/
http://www.eclipse.org/jetty/about.php


APACHE TOMCAT is an open source software implementation of the Java Servlet and JavaServer Pages technologies.
http://tomcat.apache.org
http://tomcat.apache.org/tomcat-6.0-doc/introduction.html


JBoss Enterprise Web Server
combines market leading open source technologies with enterprise capabilities to provide a single solution for large scale websites and lightweight web applications. By integrating Apache Tomcat, Apache Web Server and all of the common connectors used in between under a single subscription, JBoss Enterprise Web Server provides IT with a simple and complete solution for lightweight Java applications.
http://www.jboss.com/products/platforms/webserver/

 

3.6 Ohjelmistoympäristöjä


JBOSS DEVELOPER STUDIO PORTFOLIO EDITION
provides a certified open source development environment.
http://www.jboss.com/products/devstudio/
http://www.jboss.com/products/devstudio/features/


NETBEANS
is a free, open-source Integrated Development Environment for software developers. You get all the tools you need to create professional desktop, enterprise, web, and mobile applications with the Java language.
http://netbeans.org
http://netbeans.org/features/web/index.html


ORACLE JDEVELOPER
is a complete IDE for Service-Oriented Architecture (SOA), Java and Rich Enterprise Application (REA) development that is ranked best among major Java vendors in Forrester TechRankings. As part of Oracle Fusion Middleware 11g, JDeveloper 11g is "hot-pluggable"  with Oracle and non-Oracle environments, supporting all major J2EE application servers and databases.
http://www.oracle.com/tools/jdev_home.html


INTELLIJ IDEA
is a code-centric IDE focused on developer productivity. IntelliJ IDEA deeply understands your code and gives you a set of powerful tools without imposing any particular workflow or project structure. IntelliJ IDEA is your dream pair-programmer who knows its way around the codebase, makes great suggestions right when you need them, and is always ready to help you shape your code.
http://www.jetbrains.com/idea/
http://www.jetbrains.com/idea/features/index.html


ECLIPSE
is an open source community whose projects are focused on building an extensible development platform, runtimes and application frameworks for building, deploying and managing software across the entire software lifecycle.
http://eclipse.org
http://www.eclipseplugincentral.com
http://www.eclipse.org/projects/listofprojects.php
http://eclipse.org/downloads/


MYECLIPSE
is the most affordable and comprehensive J2EE IDE and Web development tool suite for the Eclipse open-source platform. MyEclipse is the Eclipse plugin-based solution for all your UML, AJAX, Web, Web Services, J2EE, JSP, XML, Struts, JSF, Java Persistence, EJB, extended database support and application server integration needs.
http://www.myeclipseide.com
http://www.myeclipseide.com/module-htmlpages-display-pid-1.html


ORACLE ENTERPRISE PACK FOR ECLIPSE
is a free set of certified plug-ins, enabling WebLogic developers to support Java EE and Web Service standards where Eclipse is the preferred Integrated Development Environment (IDE) within an organization. As part of Oracle Fusion Middleware, the Oracle Enterprise Pack for Eclipse supports development with technologies including Database, Java SE, Java EE, Web Services, XML, and the Spring Framework.
http://www.oracle.com/tools/enterprise-eclipse-pack.html


SMART DEVELOPMENT ENVIRONMENT integrates Unified Modeling Language  (UML), database design and business process modeling toolset to your favorite IDE. SDE integrates with Eclipse, Visual Studio.NET, NetBeans  and IntelliJ IDEA. SDE extends Integrated Development Environment (IDE) to cover full software development lifecycle from requirements capturing, system analysis, database design, code generation and documentation generation.
http://www.visual-paradigm.com/product/sde/
http://www.visual-paradigm.com/product/sde/ec/provides/codedbeng.jsp