Showing posts with label Mobile. Show all posts
Showing posts with label Mobile. Show all posts

Tuesday, 1 September 2015

Brief Q&As About Solution Architecture

1. What would be the key artefacts that need to be delivered when defining a solution architecture?

Key artefacts present different views on solution design where each view is targeting specific user groups. For example:

  1. Business architecture artefacts address business users, planners and business stakeholders.
  2. Data architecture artefacts address database and system administrators.
  3. Application architecture artefacts provide guidelines and instructions for software development and test teams.
  4. Technology architecture artefacts are essential for infrastructure administrators, development team and system managers.
  5. Security architecture artefacts address the development and test teams, system administrators, security auditors, business users and managers.
Solution architecture artefacts also depend on methodology used by an organisation that the solution is designed for. Popular methodologies include but not limited to TOGAF, Zachman, RUP, CMMI, FEAF.  Examples of key artefacts could be:

  1. TOGAF:
    1. Catalogues (role catalogue, product catalogue, data entity catalogue, etc)
    2. Matrices (business interaction matrix, actor/role matrix, system data matrix, etc)
    3. Core and extension diagrams (functional decomposition diagram, use case diagram, process flow diagram, event diagram, product lifecycle diagram, data security diagram, etc)
  2.  Zachman:
    1. Practically sufficient subset of Lists, Models, Diagrams, Specifications and Details documents that are based on 30 views of Zachman framework matrix – Why/How/What/Who/Where/When by Contextual/Conceptual/Logical/Physical/Detailed.
Sometimes a final Architecture Document could combine major views and present the solution to most user groups. From my experience I found that in some cases that require relatively urgent delivery, a properly built Business Requirements Document could become a part of the final Architecture Document. I published a short manual for such BRD on my blog at http://bananaqualitytester.blogspot.co.uk/2013/01/guidelines-for-business-requirements.html.


2. What would be the role of Solution Architect during the project lifecycle?

Solution Architect’s activity during the project lifecycle should be organically coupled with business stakeholders’ decision making, development team/s delivery progress and the end users expectations to ensure:

  • Target architecture would accommodate any possible evolution of the business stakeholders’ vision of the future system.
  • Development teams would follow the architectural guidelines without sacrificing quality, robustness and effectiveness of the future system.
  • The end users have an early access to the system-in-development, play with it, test it and provide feedback to architecture and development teams.
It always a good idea to keep architecture artefacts such as definitions, models, diagrams, specifications, etc updated during the project to make sure they could be re-used in the future by the business users, help desk and system support staff.


3. How would a Solution Architecture work in the context of Waterfall and Agile methodologies?

Once all business requirements are clarified and understood, a typical search for a solution may include such activities as reviewing competitive technologies, evaluating open and commercial off-the-shelf products, building and testing prototypes, etc. In some organisations it’s called Research and Development (R&D) stage. The output of R&D stage is a solution design that is (or at least very close to) target architecture that would be eventually defined in such documents as Architecture Document mentioned above.

Waterfall methodology is acceptable in cases when business decision about future system is final and a chance for any changes is very low. In this case R&D stage is paramount for the whole project as the solution architecture artefacts would be translated into project management timelines, delivery milestones, QA test case scenarios and system releases. Given the importance of R&D, it would make sense to spend more time on avoiding any ambiguity during reviewing business, functional and non-functional requirements, looking for possible issues with off-the-shelf products and stress-testing prototypes to ensure a delivery of a flawless solution.

Agile methodology doesn’t require absolutely complete set of requirements, giving it a chance to evolve during the system development. From high-level perspective, an agile project could be represented as follows:



The straight lines coming from the centre (epicentre) are individual use cases, circle lines are delivery milestones and the red spiral line is actual system development that ‘covers’ use cases (and milestones) more and more with each iteration until all of them are done (or delivered). In this case the core system functionality (area around the epi-centre) is paramount and requires clear prioritisation by the solution architect. Because of project agile nature, it is expected that solution architecture artefacts would evolve during the project and therefore should be continuously updated by the architect and those changes propagated through all teams involved into the product delivery.


4. What process steps would be expected between the capture of requirements and start of the coding?

These steps may depend on architecture methodology used in the organisation (TOGAF, RUP, Zachman, etc) as well as the type of given project (waterfall or agile). They may include:

  • Business, functional and non-functional requirements review and clarification.
  • Business requirements update (see Guideline for Business Requirements mentioned above) and their verification with business users. These steps would help to build with business users unambiguous project vocabulary, learn more about their expectations, identify key people in their team and establish working relationships with them.
  • R&D stage – please, see (3) for more details.
  • Initial solution design.
  • Verification of acceptability of proposed solution for existing or target infrastructure.
  • Cross-check of proposed solution design with budget requirements.
  • Validation of proposed solution design against system security constraints.
  • Validation of proposed solution design against internal and/or external rules and legislation.
  • Approval of solution design with key stakeholders.
  • Final (or semi-final in case of agile) solution design.
  • Creation of solution architecture artefacts - please, see (1) for more details.
  • Definition of development environment. This may include continuous integration and automated testing, knowledge management system, issue tracking system, network topology (in case of delivering a Cloud-based solution), etc – this is a range of approaches that would allow to keep development process transparent to the architecture team as well as to other interested parties involved in the project.
  •  Requirements for system test coverage.

Thursday, 2 July 2015

Functional Requirements for Commodity Price Engine

Introduction

Commodity Price Engine is a derivatives sales tool and potentially a trading application designed specifically for the commodities market covering energy, base metals and agricultural products. It provides server based pricing and sensitivities for structures consisting of forwards and options that incorporate volatility skew and is designed to be delivered via the web and as native mobile applica- tions. The implemented functionalities in the prototype are detailed below, along with market data requirements and planned extensions.

Supported Underlying Assets

Commodity Price Engine supports any asset with forward curves and implied volatility surfaces. This includes exchange traded products with sufficient liquidity and products for which the user is able to supply the forward curves and volatility surfaces. A planned extension for Commodity Price Engine would build required curves and surfaces to accommodate structures on illiquid underlying assets.

Supported Derivatives and Valuation

Pricing and sensitivities are available for forwards, bullet and Asian options, and structures consisting of any combination of forwards and options. The valuation model takes into account volatility skew and has been benchmarked against commercial software used in investment banks. Price and sensitivities can be converted to any currency and standard metric units.

4. Sales and Trading Features

Commodity Price Engine would allow addition of sales and trading margins, shifting of forward curves and volatility surfaces for what-if analysis, solving for break even strikes for structures, generation of term sheets, and graphing of forward curves and payoff diagrams. It also would accommodate back-dated pricing for available historical data.

5. Planned Extensions and Enhancements

Additional features that are planned for Commodity Price Engine include:
- Construction of illiquid forward curves and implied volatility surfaces.
- Calculation of credit value adjustment (CVA).
- Computation of value-at-risk (VaR).

6. Market Data Requirements

Commodity Price Engine assumes availability of the following market data:
- Yield curves for required currencies (it would be possible to bootstrap yield curves from cash, futures, OIS, swap, and single currency basis swap quotes).
- Forward curve and implied volatility surface (it is possible to build volatility surfaces from market quoted option prices) for required underlying assets.
- FX forward curve and volatility surface for required currency pairs.
- Implied survival probabilities for relevant entities if CVA calculation is required (it would be possible to compute the survival probabilities from yield curves and credit default swap (CDS) spread quotes).
- Historical data for above if VaR calculation is required.
Market data can be obtained from commercial data vendors such as Bloomberg or Reuters (commodities data from such market data sources as ze.com will need to be supplemented by interest rate, FX, and credit data).

7. Technology Architecture

Commodity Price Engine architecture consists of server and client side components. The server side manages market data and could be loosely coupled with a grid of quantitative pricing libraries. The client side is the Graphical User Interface (GUI) that communicates with the server via secure protocol and could be accessed from desktops or a variety of mobile devices. Pricing libraries could be placed on the client side if required.

8. Conclusion

Commodity Price Engine would be a sales and trading application designed for participants in the commodities market who traditionally relied on investment banks for pricing support due to limited access to suitable tools. It would have the capacity to become a full-scale trading platform if supplemented with modules for connecting to trade booking and counterparty portfolio management systems.

Friday, 1 May 2015

A Potential Need for Commodity Price Engine

Introduction

Commodities market has experienced significant turbulence in recent times, possible returns and diversification benefits offered by commodities have attracted some investor interest. Derivatives have an important role to play in encouraging a further activity on this market, and this requires wide availability of pricing tools to improve price transparency and investor confidence. However, in contrast to other markets, there is an absence of such pricing tools for commodity derivatives due to their inherent complexities and this is the impetus behind the idea of development of a Commodity Price Engine described in this post.

Situation

Recent fluctuations in demand for raw materials is expected to continue for some time. High volatility in commodities market has led to certain growth in the derivatives market as commodity producers and consumers sought ways to hedge against adverse price movements.

When used for hedging purposes, futures contracts remove the risk of unexpected losses by providing price certainty, but for the same reason they also preclude the possibility of profiting from favourable price movements. As participants become more sophisticated, they naturally turn to options and other derivatives that allow them to obtain more flexible hedges and speculative positions.

At present, participants in the commodity derivatives market comprises primarily of large producers and consumers of raw materials, who have little choice but to use derivatives, usually over-the-counter (OTC), to hedge their positions, and large financial institutions that have the capacity to acquire necessary pricing tools to service this demand. But as regulators push more of these “standard” OTC derivatives onto exchanges to ensure greater transparency and competition, the derivatives market will attract broader class of investors attempting to take advantage of the benefits offered by commodities.

Complication

Although some commodity derivatives are already listed on exchanges and many others are traded over-the-counter, investors interested in entering this market are confronted with issues such as limited liquidity, poor quality of market data, and the absence of accurate pricing tools. These contribute towards the lack of transparency in the way commodity derivatives are valued, which adds to the perception of risks associated with these derivatives.

Liquidity and the quality of market data can only improve with greater activity in these derivatives, and for this to occur there must be more transparency and confidence in the way prices are determined.

Unfortunately, commodity derivatives have inherent complexities that require more advanced pricing tools than those used for derivatives in other markets. Although such tools do exist, their availability is limited to large financial institutions, and are included only in high-end commercial financial software. In order for the derivatives market to flourish, investors need a better understanding of the salient features of commodity derivatives and, more importantly, require access to quantitative tools for independent valuation of these derivatives with higher degree of confidence.

Solution

Commodity Price Engine could implement advanced pricing models for commodity derivatives and deliver these through platforms including the web, smartphones, and tablets. Salient properties of commodity derivatives and observed volatility skews in the market would be fully incorporated into the models to provide accurate valuation and flexible delivery platforms would ensure that these tools are available anywhere with access to the internet.

For reliability and scalability Commodity Price Engine could be deployed on a cloud computing infrastructure and be accompanied by a distributed data server that cleans and smoothes market data. The former ensures that intensive pricing calculations are available even on devices with limited computing power, while the latter eliminates, for most users, the non-trivial task of obtaining reliable market data.

In order to handle large number of concurrent user sessions, Commodity Price Engine could be enhanced with grid computing capabilities to ensure valuation requests receive faster responses even for complex derivatives and large portfolios. These features would enable small to medium sized market participants to independently value and monitor their derivative portfolios with confidence.

Conclusion

Higher returns and diversification benefits of commodities provide attractive trading opportunities and market participants seeking more tailored solutions for their requirements are naturally led to derivatives. With regulators pushing to move standard OTC derivatives onto exchanges, the demand for derivatives have a good chance to increase. A necessary catalyst to transform this increasing interest into growth in market activity is accessible quantitative tools that help bring transparency to this market, and this is precisely the role that Commodity Price Engine may play.

Wednesday, 13 March 2013

OTN ADF Mobile Workshop @ Oracle Offices in Singapore


From marketing perspective this workshop gave a pretty good overview for what Oracle is doing in regards to concurring mobile platforms with Java. From technical perspective, the exercises we've done there were rather simple and could've been better ones - it would be more fun to build something with database connections and more sophisticated browsing.

Anyway, this is what was discussed about Oracle JDeveloper and its ADF Mobile Extension (ADF stands for Application Development Framework):




SOME MARKETING STUFF:


1. ADF Mobile components have sufficient number of widgets to build a decent application for iOS and Android from single code base.

2. Oracle implementation of mobile security seems to be the most shining component in the whole stack. Sorry, I can't say more than that because presentation of security features didn't really happen due to some technical issues.

3. Those who have experience working with Oracle ADF objects, could start doing things with Mobile ADF in no time at all.

4. Currently, Mobile ADF components can be used for generating application deployment packages only for iOS and Android. Windows 8 is not in the list. Not yet. Few years ago Oracle got ready for Windows 6 that had never come out! Now they want to wait and see if Windows 8 spills out of marketing campaigns and acquire some real popularity. If Windows 8 gets its market share, it would be relatively easy for Oracle, as they say, to accommodate it within their Mobile ADF.

5. GUI is done in Javascript, HTML5 and CSS3, so it's compatible with any current browser and mobile device. This is so called Hybrid Application when this kind of GUI works on top of a Java container that nicely communicates with whatever hardware is below. Platform-specific JVM is an old Java trick and in this case it's coupled with a widely used GUI technology.



SOME TECHNICAL STUFF:


1. Size of a final application ready to be deployed on a mobile OS would be around 10Mb+ because it includes headless Java Virtual Machine. JVM was cut off all GUI classes hence 'headless'. Basically, it's based on JavaME/JDK1.4 and has no Java5 features like collections and annotations.

2. Oracle mobile application would communicate with native OS and hardware resources (like email, camera, GPRS) via PhoneGap layer. Well, now it's PhoneGap but Oracle will switch it to Cordova because PhoneGap is owned by Adobe and there are some license related issues with that.

3. Mobile ADF Components are free only for developing prototypes. Any plans for using them within commercial products have to be discussed with Oracle sales people.



CONCERNS:


1. Every single mobile app built with Mobile ADF would come with its own JVM... Is that good? Or it doesn't matter? I'm not quite sure... Mobile operating systems are multi-threaded now. Some apps may run in the background tracking your location, popping up messages, making alerts. In a year time, an average phone might have, say, 25 apps constantly running in the background. Would it be good (size-wise, efficiency-wise) if some of them contain their own run-time environments? It's like to run few Eclipse IDEs at once on a desktop, isn't it?

2. Price is always the issue. Small businesses may not like it. Big businesses may stick to their existing development platforms, whatever they currently use.



ADVANTAGES:


Well, there are four actually:

1. Generation of hybrid-native deployment packages from a single code base. It does sound a bit scary, especially for those companies that already have separate iOS and Android development teams. Will that 'single code base' really work? Hmm... it's hard so say... but there is always an alternative - just start hiring Windows 8 team now.

2. Maybe it's true and Oracle mobile security solutions really stand out on the market (this needs to be confirmed...).

3. Millions of Java developers can apply their skills in mobile sector, and

4. The whole thing is backed by Oracle and it's not about to disappear from this market. What does that mean? Well, Cordova is open source - its future is not quite certain. PhoneGap belongs to a bit unpredictable Adobe - people still remember what they have done with Flex.


Probably it's time to check what ApplicationCraft is...

Wednesday, 9 January 2013

Who would provide Mobile Services for The Enterprise?

B.Y.O.D. is now an important part of an urban lifestyle description. Thanks to powerful mobile devices, online shopping (aka eCommerce) caught its second wind (look at Australia for example). Brick and mortal retail stores are getting obsolete, warehouses nearby large cities became hot properties. Rumors say that small businesses in Europe are happy to pay 2-5K Euros to teen developers for opening their own internet shops. Online payment services flourish. Clearly mobile networks are getting busier than ever (no refs to telcos income numbers). But what happens in the Enterprise?

Well, apparently biggest consumers of IT services, banks and telcos (no idea about military and aeronautics), don't have an access to their systems from mobile devices standardized yet. Yes, there are BlackBerries, iPhones and Androids with their connections to corporate Outlook Exchange servers, something that existed for quite awhile with no major upgrades. Now it looks even a bit ugly when people keep in their pockets two phones - one corporate BlackBerry and a personal 'iDroid'. How long is it going to stay this way? What do enterprise people need?

The Enterprise needs its own 'eCommerce' - synchronized data (mails, documents, etc - you name it), visual monitoring of various kinds that would help to replace every day email tsunamis, highly secure access to core functional services for those who are on-the-go or on-the-meeting. They need James Bond kind of things demonstrated in latest movies with Daniel Craig. The question is - who could deliver such services?

There are three major players in this space - Apple, Google and Microsoft. I'm not sure what's happening in China and Japan, they might have their own ones. There is also Samsung but I don't think that it could be listed here. Samsung is a good hardware producer but without its own OS and integration software it cannot compete with three from above.

To make a long story short, I would not go through what Apple and Google already have and what they may offer for this in near future. I think that Microsoft has all the chances to be a favorite again. Why? Because:

1. The Enterprise uses Windows desktops and it will continue to do that.

2. Windows Server is slowly becoming a standard platform for back-end processing. Yes, Microsoft dropped the ball at the server-side space and couldn't pick it up for a decade or so. That's probably why Linux became so popular. But Microsoft learnt its lesson - look at Windows Server 2012, check what and how it does. It is not that bad at all. I worked with Linux since late 90s and last two years spent using both Linux and Windows Servers, I don't really see any advantages of using one over the other except for the license cost and security.

3. Microsoft has its own mobile touch screen. Yes, iPad looks great, I completely agree with that, I love Apple devices and use them everywhere except my work. As the matter of fact, Apple taught people to use touch screens, all generations apparently. Now Microsoft made similar device but practically better - it comes with a keyboard. It doesn't look that sexy yet, just give it a time.

4. Microsoft has its own mobile OS. Well, it's comparatively new and hasn't become popular yet. But people will get used to it. The Enterprise will do its thinking and allocate the budget...

5. Microsoft has its own Cloud.

6. And it has Windows Intune to manage all listed above.

It seems that Microsoft has a complete technology stack to make 'James Bond' real in a company even if its employees travel 100% of their time. And the number of employees doesn't really matter.

I wonder if it's time to buy Nokia shares, their price is amazingly low at the moment... Is anyone up for a Jim Rogers kind of investment?

Online Encyclopedia of Statistical Science (Free)

Please, click on the chart below to go to the source: