Showing posts with label solution. Show all posts
Showing posts with label solution. 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

NetKernel Takes Micro-Services to the Ultimate Level

While talking about such relatively new boys on the market as Vert.x, Akka, Chronicle, Kafka, Ready! API, RxJava, etc which certainly are great components for solutions that respond to current demand for micro-services, the mainstream seems to be completely missing such nice, mature and easy to use product as NetKernel. The latter one is not competing with newcomers and together they can comprise quite elegant solutions that any architect would be eventually proud of.

NOTE: This is not a promotion for NetKernel. I don't work for them. This is just an attempt to be fair to those that somehow happened to be on a side of the road.

Friday, 20 March 2015

An Idea for a Telco Company


1. CURRENT SITUATION

Introduction of the Cloud removed any constrains in scaling infrastructures for SME companies. Nowadays PaaS and SaaS kind of services became a reality and in many cases it’s a practical and only way to extend business operations without substantial investments in expensive hard- and software.

The nature of software packages evolved to accommodate new runtime environments. Instead of keeping heavy software packages on individual platforms, their compute power is moved to horizontally scalable Cloud servers and their functionality is handled remotely via nice and intuitively understandable GUIs easily accessible from any stationary or mobile device. Modernised and newly created products from Microsoft, Adobe and Google are good examples.

Current technology trends are not industrially finalised yet and keep changing traditional approaches. For the purpose of this message, we could highlight three current distinctive practices:

-    Vendors deliver functionality in a modularised manner, when a consumer can pick up only useful services and pay accordingly,
-    Modularised functionality could be easily extended via well defined APIs that are progressively becoming standard part of such services, and
-    Deployment of customised environments with all selected modules (or services) could be up to 100% automated.

In regards to technical support and maintenance, consumer market has changed as well. Customers try to avoid unnecessary expenses for keeping in-house IT departments and started looking for available services (or service providers) elsewhere. Such demand created a new market for taking services from one or more vendors, combining them into bundles and selling them to right buyers.


2. IDEA

Given that, on the one hand, the market is getting saturated with new cloud-based modularised soft- and hard-ware services empowered by standardised APIs and, on the other hand, consumers look for customisable solutions, it could be a perfect time to build a business that connects one with another.

Such ‘connection’ could be done by creation of reusable scripts (or programs) that would automatically deploy a whole environment for an individual or a group of customers. Such environments should include build-in plug-ins for handling customer-to-Telco and Telco-to-vendor billing.

Scripts could be archived in a Library that would naturally grow covering more and more use cases. The Library would become company ‘know-how’ and its value could be measured by the number of use cases it handles.


3. POSSIBLE SOLUTION

a.     Allocate Cloud servers.
b.    Find vendors of modularised and API-enabled PaaSes and SaaSes.
c.     Create a team to build scripts for automated deployments.
d.     Organise development from epicentre out in agile manner covering more and more functionality within each cycle:
a.     Collect consumer requirements and find most popular scenarios (use cases).
b.    Build and test scripts to meet business requirements in current cycle.
c.     Deploy new environments and allocate some resources for their initial maintenance.
d.     Move scripts to the Library and repeat (d).



REFERENCES:

Online Encyclopedia of Statistical Science (Free)

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