Book Image

Digital Java EE 7 Web Application Development

By : Peter Pilgrim
Book Image

Digital Java EE 7 Web Application Development

By: Peter Pilgrim

Overview of this book

Digital Java EE 7 presents you with an opportunity to master writing great enterprise web software using the Java EE 7 platform with the modern approach to digital service standards. You will first learn about the lifecycle and phases of JavaServer Faces, become completely proficient with different validation models and schemes, and then find out exactly how to apply AJAX validations and requests. Next, you will touch base with JSF in order to understand how relevant CDI scopes work. Later, you’ll discover how to add finesse and pizzazz to your digital work in order to improve the design of your e-commerce application. Finally, you will deep dive into AngularJS development in order to keep pace with other popular choices, such as Backbone and Ember JS. By the end of this thorough guide, you’ll have polished your skills on the Digital Java EE 7 platform and be able to creat exiting web application.
Table of Contents (21 chapters)
Digital Java EE 7 Web Application Development
Credits
About the Author
Acknowledgment
About the Reviewers
www.PacktPub.com
Preface
Index

Roles


Let's look at the roles in the next sections. We will divide the roles into distinct perspectives: development, design, architectural, and management.

The development perspective

There are many roles in the digital team that require viable software construction skills and the ability to solve problems with a programming logic along with hints of creativity.

A Java engineer

Because you are reading this book, you are mostly likely to be already acquainted with the role of Java engineer. You role as a software developer means you have responsibility to write the implementation of the product code for a digital application. I will go further that this role includes writing unit tests, functional tests and integration tests. Modern developers follow agile practices for proficiency. They are involved with the business and domain logic, the presentation tier, domain tier, and integration tier. A Java engineer will be in close communication with testers, interface developers, and sometimes a business analyst.

An interface developer engineer

An interface developer is responsible for writing the client side JavaScript code for the frontend of a digital application. This title is also amenable to the smartphone developers that write code with iOS, Android, and other platforms. Interface developers tend to be involved with the HTML5, CSS, and JavaScript coding. Invariably, they are also knowledgeable about modern practices and the latest frontend testing, debugging, and testing.

Interface developers will work almost exclusively on the presentation tier. They may also help design and supply input and ideas to the domain tier architect. It was Apple USA that divided, reputedly, their web team between user interface engineering and server-side engineering while sharing a domain model.

An interface developer will communicate with the tester, Java engineers, and business analysts. They will definitely be in close proximity with the user experience designers, creative designers, and content strategists because a part of an interface developer's job is to translate the designs into a frontend product code.

Quality assurance tester

This role ranges from a traditional dedicated tester in a separate team that finds the breakages in the product team in a non-agile environment to those testers that are part of an agile team and involved in all the aspects of the software development life cycle. A tester in a digital environment may be responsible for asserting the quality of the production code in a variety of different devices: smartphones, tablets, and desktops and also throw in modern wearable computers. A tester may also write the specifications that have to be heavily involved in a behavioral-driven design specification so that the quality of the eventual system is high and fits the targets of the entire team.

The testers will communicate and talk to everyone in the team including the designers. Often, in proficient agile teams, they are the people that everyone has to impress because they write the definition of done.

Software in developer test

A software developer in a test is a variation of the quality assurance tester, which is a controversial role according to the different points of view. At best, this role is a migratory and contentious role that ensures that the other software developers in the team are writing enough production code that is testable and verifiable. Therefore, this role requires an ability to develop the Java code; it may also require the JavaScript ability and automated tests. Due to the ramifications of the political outcome, whether Java and interface developers are writing enough quality tests such as unit tests, functional tests, and integration tests, it remains a loosely defined role. The role probably includes testing advocacy.

A wider role beyond software in a developer test might include the responsibility to maintain and solve issues in the build environment and also include the aspects of continuous integration and continuous deployment.

The design perspective

If you get invited to a party and you meet another professional there and you happen to ask them, what do they do for a living? The other person then says that they also work in the digital field, but as a designer. It is often not clear what they do as a daily job. There are many types of designers under the umbrella term. Here we are talking about a digital and creative designer for a software application as opposed to a software architect and designer. This role is also different to the designers in the other industries such as automotive (cars and automobiles), aviation (airplanes), electronics, and industrial products (vacuum cleaners and iPods) because they work with tangible products. There is one common aspect of a designer: they design a solution to a problem where there is no right or clear answer.

In the next sections, we will look at the designers in the digital domain.

A creative designer

A creative designer has a role to illustrate or render the digital concepts to client and stakeholder requirements. This role is about artistic ability and using the knowledge around graphic design, typography, and modern standards.

Usually, a creative designer works in a team and it is important that they support others and communicate in a group environment in order to explore different ideas. It is okay to be different and individualistic; however, the key design of the project must take priority, ensuring that only the best graphic designs are released to the stakeholder.

A creative designer has knowledge of the popular professional software packages including Adobe PhotoShop, Fireworks, InDesign, Illustrator, and Xara Design.

Designers, especially those that work in the digital agencies, have a great deal of communication. Therefore, this role requires the ability to meet deadlines and deliver clever concepts to differentiate from the client's competition and there is pressure to perform with meticulous attention to details as well. Often there might be long hours of work compared to the rest of the team in order to deliver a new digital industrial concept. Designers work closely with the usability engineers, interface designers, and content strategists.

A usability experience engineer

The role of a usability engineer is to design and develop engaging user experiences for a digital application. The role is about enhancing the kinesthetic emotion and feel for a product. A usability engineer is responsible for field testing the visual compositions of the design. This may mean working in and with an external usability testing laboratory and building the wireframes of the interaction design.

The User Interface (UI) and User Experience (UX) engineer/designers' roles are relatively recent in the workplace because businesses have concentrated their efforts in building human interaction across many device screens. The roles have become a specialism on their merits and split off from the general purpose creative designer. The UX role is about identifying the human level interfaces, elements and core functions, the visual language of the language so that it helps the customer progress quickly and proficiently so as to achieve their end goal. The UX engineers generate mockups, wireframes, and give presentations of the customer's journey to the stakeholders and team. As a key feature of this role is completely about user testing, they also facilitate AB testing and they perform a lot of research in the behavior and design language.

A UX engineer typically communicates frequently with the creative designers, interface developers, and quality assurance. For core development, they also communicate with the Java developers. A UX engineer will also directly discuss issues with the content strategists to clarify the overall design language of the project.

A content strategist

A content strategist is a person who writes the design of the content. This role is about looking at the language of an interaction for a project. It is about planning the copy writing, the style of the writing, how to control the process of language delivery, and being a source of governance. A content strategist's role may be likened to that of a museum curator, winemaker, or master taster. The content strategist has an excellent command of the written language, which may include media content, video, filmmaking, and photography, if this is required.

A very common role for a content strategist is the foundation of the business term knowledge for the entire project. The role requires delivering the key messages and themes for a digital business (or government department). They are also responsible for the content that determines the optimization for search engines. A strategist will work with the metadata, content purpose, and web writing as well.

During the day-to-day activities, the content strategist works very closely with the business analysts and stakeholders to identify the design language.

The architectural perspective

In digital, there are also some roles that are about the architecture of the application and are more than the creative or software design.

A data scientist

In recent times, digital has seen the emergence of another role for the express purpose of analyzing data statistically, modeling data, and information design. This is the duty of a dedicated data scientist, which is an emerging area to do with the so-called big data. A data scientist is responsible for extracting the information and knowledge from large data sets that may be structured or unstructured. Simply, they can make sense of the signals in what may appear to the casual reader as just noise. The results are data visualizations and models that are presented to the key business stakeholders and management.

Data scientists analyze the immense swathe of data by applying scientific and mathematical techniques. They might use some particular computer algorithms in order to gain insights into the patterns of the data set. Some data scientists can write computer programs, although many are familiar with statistical analysis packages. They usually have post-university degrees such as an MSc or a PhD so as to practice in their role.

A data scientist may work independently of the digital team. They might work for several different teams. They generally communicate with the Java engineers, business, and the management.

A technical architect

A digital team may have a specific technical architect in order to ensure that the application meets certain non-functional requirements. A non-functional requirement is an aspect or feature of the target software that does not reflect on its functional operation. A functional operation for a caseworker is that the staff are allowed to process the cases in real time. Non-functional requirements (NFRs) are features or criteria that specify and describe the operation of a system's architecture. The operational features are known as adaptability, availability, flexibility, maintainability, performance, reusability, robustness, scalability, security, and testability. Usually, an architect has to trade off these non-functional requirements. For example, they consider availability versus performance and ask the business stakeholder which feature is more important or strike a compromise with the architecture.

The architect is responsible for ensuring that the final application is on track and meets the non-functional requirements. There tends to be a lot of software design and analysis of the domain model. An experience of the common design patterns in software might be helpful, but a good architect will examine the root requirements in great detail before deciding on a particular strategy.

The technical architects communicate directly with the core platform team: the Java engineers and interface developers, especially in the design process. They will facilitate the team discussions about which programming language to use and whether an open source library framework should be used. Architects are also in touch with the business stakeholders and management. They may also talk to a data scientist in order to help with the process of retrieving or capturing information for statistical analysis. Finally, the hands-on architects are expected to develop software and need to be able to coach and mentor the other technical engineers on all the levels.

The management perspective

A project needs a good quality management. Your manager is a key members of staff that sits between the business stakeholder and the rest of the team of engineers, testers, and designers. He is effectively the buffer between the senior management and the software developer team.

A business analyst and liaison officer

Some digital teams will have a dedicated business analyst for the purpose of looking at the business requirements of the project. This type of role depends on the agility of the project. Some projects and companies dispense with the role of the business analyst and rely on the agile process of a scrum to gain knowledge of the requirements. Other types of enterprises, especially those that practice the aspects of Waterfall software development, still have a separate person that bridges the gap between the engineers and designers and helps to establish the deeper domain knowledge in the team: the analyst.

A business analyst assesses the change proposals. They define the scope and definition of user stories that are unclear and in early progress. They gather the information and evidence to assess the benefits, costs, and risks to a project. The analyst dives into the business domain knowledge to clarify the legal and commercial terms and policies that ultimately affect the project. Therefore, a business analyst is the key to establishing the ubiquitous language with the stakeholders. This is the discourse for the software team to understand the requirements of the business stakeholders and vice versa. An analyst communicates widely with the stakeholder, project manager, development manager, and the other technical staff when necessary.

A project manager/scrum master

The project manager is responsible for delivering the product to the stakeholder and business. Sometimes a project manager is also known as the product owner. In other organizations, the role is split between two persons: the developer manager and project manager. Often, the project manager is a certified scrum master or has some idea of the agile process.

The project manager leads the software team to deliver the product on time and within the budget. They liaise closely with the stakeholders to define the product delivery. In an agile project, they record and set up the background stories by running various activities. The project manager then assumes the role of a scrum master by organizing sprint planning sessions, retrospectives, daily stand-ups, and running the iterations. At the end of the sprint, they set up the show and sense meeting where the stakeholder gets a chance to see the current progress, demonstrations, and work delivered.

This role requires lots of communication in order to be continuously kept abreast of the project details because the project manager has to track the progress of the product. Project managers essentially rely on the information during the daily stand-up. Therefore, project managers talk to every person on their project regularly. The members of the team notify the scrum master if there is a user story that cannot be reasonably progressed. These user stories are known as blockers. The best project managers focus on the updates on the user stories rather than the actual work and pressurizing individuals.

A digital development manager

A development manager is responsible for the delivery projects and functioning of the development team. In this role, the manager has a close collaboration with the other departments or divisions. He or she will be involved with the sales and marketing, retail, consumer finance, insurance, and human resources personnel. Therefore, this person has responsibilities for the strategies and operations of the business. A manager running the in-house projects delivers ultimately to the other functions in a corporation, whereas a customer-facing project involves in-depth conversations and interactions with the customers and stakeholders.

With this manager role, the individual will work with financial planning; if not involved in the finance, they will be making decisions and modeling the business. Therefore, development managers require budget, organizational planning, and numeration skills.

Although the development manager has an overall authoritative leadership over the direct reports, he or she may delegate the day-to-day responsibilities to the team leaders, especially if there are multiple development projects going on concurrently. In flat hierarchical organizations, the development manager may delegate to the effective project managers and scrum masters, especially if the individual projects are working as viable self-organized teams. The best development managers encourage organic growth for individuals and the team as a whole.