Complete the following sections:
- Engineering RequirementsCreate a list of the top 10 software engineering requirements for the organization.This list should address requirements that are common to most of the software development projects rather than specific project requirements.Include descriptions for each of the requirements that provide sufficient information to align the requirements with architectural strategies that were defined in the previous week.
- Complete the following section: Emerging TechnologiesProvide a summary of at least 3 emerging technologies that you believe will be used in your organization.Discuss how your selected architecture supports these emerging technologies and what changes may be required in the architecture to overcome any limitations in this support.
- Ensure that this final version of the plan is sufficiently detailed to allow the organization to confidently move forward with the use of the architecture for software development based on your recommendations.
- Be sure to update your table of contents before submission.
- Add the subtitle: Architecture Strategy EvaluationDiscuss the pros and cons of the architectural strategy that you selected in Week 3 in reference to the engineering requirements defined in the previous section of this report.For each con identified in the previous section, provide a mitigation strategy to compensate for the shortfall in the selected architecture.
Running head: SOFTWARE ARCHITECTURE STRATEGY
Software Architecture Strategy
Shirish Bhatnagar
Colorado Technical University
CS644-2001A-01
January, 29th 2020
1
SOFTWARE ARCHITECTURE STRATEGY
2
Table of contents
Description …………………………………………………………………………………………………………………………………. 3
Software Architecture Evaluation ………………………………………………………………………………………………….. 3
Knowledge management and communication ……………………………………………………………………………… 5
Design reasoning and decision making ……………………………………………………………………………………….. 5
Documentation ………………………………………………………………………………………………………………………… 5
Conceptual integrity …………………………………………………………………………………………………………………. 5
Ease of dealing with recurring errors ………………………………………………………………………………………….. 5
Quality …………………………………………………………………………………………………………………………………… 6
Cost-saving …………………………………………………………………………………………………………………………….. 6
Agile development …………………………………………………………………………………………………………………… 6
Waterfall development ……………………………………………………………………………………………………………… 6
Conclusion ……………………………………………………………………………………………………………………………… 7
Development Processes ……………………………………………………………………………………………………………….. 7
DevOps Deployment Methodology ……………………………………………………………………………………………. 8
Architecture………………………………………………………………………………………………………………………………… 9
Layered Architecture ……………………………………………………………………………………………………………… 10
Architectural Strategy ………………………………………………………………………………………………………………… 11
Converged Architecture ………………………………………………………………………………………………………….. 11
References ………………………………………………………………………………………………………………………………… 13
SOFTWARE ARCHITECTURE STRATEGY
3
Description
Trex is an ICT solutions firm that was founded in 2004 in San Jose, California. The
company has been in operation ever since, with over 10,000 clients, and 2,000 employees who
are continuously multiplying. For the two decades, Trex has been offering consultancy services
and developing some of the most recognized and reliable technology applications for the
financial industry. This helps the financial industries grow, adapt and share the company’s
financial technology expertise. The key business areas for Trex include; trading platforms,
intricate software development plans, and IT consultancy. For this reason, the Trex company has
been facing inefficiency in software development since the current strategy that’s been in use has
been termed as inefficient. This has made the company lose some of the loyal clients in recent
days.
Software Architecture Evaluation
While reviewing the organization’s software design practices, it was discovered that the
currently used designs were incapable of delivering successful output since it was not well
documented. Also, the design strategy did not encompass various vital processes in the
documentation. In the finance industry, software systems are usually complicated. However, the
systems need to be fast, reliable and error-free. This ensures that the clients have a positive
SOFTWARE ARCHITECTURE STRATEGY
4
experience while anticipating business and technology issues that can derail projects. In Trex
company, the traditional methodologies used were uncomfortable for the developers, which made
the systems inefficient. For instance, the old software development strategies did not have the
option for error reporting, which made it difficult for troubleshooting to be successfully done in
time. The financial systems were also not very easy to use. Ease of use in systems helps in winning
clients since the systems provide seamless services that align with clients’ needs and lifestyles.
Also, the systems did not have features that provide professional support to clients on time. This
led to time wastage and projected derailment since the clients had to wait for up to two days or
more for the software engineers to fix the problems.
Moreover, the old systems did not support integrations with other tools and systems which
do not enhance and optimize clients’ businesses. The reliability of Trex company systems was,
therefore limited. This made some clients look for financial technology solutions elsewhere, hence
leading to decreased returns for Trex company. The IT department revised the old strategies and
came up with structural changes that would ensure the company regains its lost glory. This could
be done by implementing a strategy that was suitable for a nontechnical audience. The
recommended solutions were collected from system engineers, managers, clients and other
employees at Trex. This was done by surveys, face-to-face interviews, and filling of online forms.
The strategy that was easier for a nontechnical audience was an agile approach. This is because
the approach adopts collaborative preparation, evolutionary progress, early conveyance, constant
enhancement, and inspires a supple response to variation (Karimov, 2016). The data collected was
found to prove that some software development activities could benefit from using software
development architecture strategies. They include;
SOFTWARE ARCHITECTURE STRATEGY
5
Knowledge management and communication
Since a software engineer doesn’t operate in isolation, they get inputs, requirements, and
design contexts from stakeholders. Software development architecture strategies make it easier to
find, communicate, and retain knowledge.
Design reasoning and decision making
It entails gathering, articulating strategy decision hitches, finding resolution options and
assessing processes before making verdicts. Software development strategies make it easier to
make decisions efficiently.
Documentation
Software development strategies help in recording the design created during the software
construction course. If the software development strategy is implemented, positive outcomes
would be seen in various ways such as;
Conceptual integrity
This means that if a strategy is implemented efficiently, the architecture of the system will
represent an overall vision of what it should do and how it should do it. This ensures that the
system development process goes according to the architecture strategy, thus preserving
conceptual truthfulness.
Ease of dealing with recurring errors
Software architecture designs have developed various ways of addressing recurring
concerns. Using a software architecture strategy ensures that these recurring concerns are
efficiently solved using minimal resources.
SOFTWARE ARCHITECTURE STRATEGY
6
Quality
The architecture of a software system is further strictly related to its superiority qualities
such as error tolerance, ability to be compatible, dependable, maintainable etc. (Clements &
Kazman, 2012).
Cost-saving
Software planning is a way to control peril and expenses in multifaceted IT projects.
Software development planning strategy helps to reduce risks and chances of failure.
The IT department also found that two architectural frameworks could be suitable for the Trex
company. They are;
Agile development
The reasons for finding this framework suitable is because it has values like consideration
of entities and relations over processes and tools, working software over extensive documentation,
customer collaboration over contract negotiation, retorting to change over following a plan
(Marick, 2001). Agile development ensures client fulfilment by early and constant conveyance of
systems parts, delivering software regularly, sustainable development, simplicity or ease of use,
and unceasing devotion to procedural quality and good design.
Waterfall development
The waterfall model is suitable for the Trex company since the breakdown of project
processes into stages ensures efficiency, where the steps depend on the deliverables of the
preceding one and match the speciality of tasks. The model also offers a planned approach as it
advances linearly through distinct, straightforwardly clear and reasonable stages, and is therefore
SOFTWARE ARCHITECTURE STRATEGY
7
easily understandable. Additionally, this model also provides effortlessly distinguishable markers
in the development process. The model has phases, namely prerequisite gathering, viability study,
strategy, coding, testing, setting up, and conservation. The advantage of this model is that the
product quality obtained is excellent. Secondly, the initial investment is less since the testing team
is hired once the coding is complete. Lastly, there is a significant amount of documentation, unlike
in agile methodology.
Conclusion
After carefully analyzing the two methodologies, the agile method was found to be the best
and most suitable framework for software architecture development. This is because the agile
model is best for long term projects, which are the most common in the Trex company. Secondly,
in agile methodology, there is a better quality of development, unlike in the waterfall model where
the quality is average. Thirdly, the agile method provides much flexibility, unlike in the waterfall
model. Lastly, there is a high level of involvement between clients and users, unlike in the waterfall
model.
Development Processes
Information technology is accelerating at a fast and humans are now heavily dependent
on it for every purpose. With the recent massive demand for software, software development is
now very crucial. The software development services process at Trex follows a series of stepwise
stages technique that is common among developing companies. These technique gets referred to
as the software development life cycle (Ali, 2017). These stages include planning, analysis,
design, development and implementation, testing and deployment, and maintenance.
SOFTWARE ARCHITECTURE STRATEGY
8
The planning phase affects a project’s progress positively and kicks it off flawlessly.
Without a good plan, including calculating the weaknesses and strengths of the project, software
development is meaningless. The analysis step includes analyzing software performance at
various stages and noting down any additional requirements (Ali, 2017). This stage is vital to
advancing to the next stages. Design step follows after the analysis phase is complete. Design is
building the project’s architecture. This step involves removing any flaws through standardssetting and maintaining those standards.
The fourth step is the development and implementation. This step involves actual
development tasks with ongoing background data recording processes. Once the software gets
developed the implementation stage follows where the product goes through a pilot study and
investigate if it’s functioning as intended. The fifth step testing assesses the product for errors
and documents bugs if any occur. Maintenance is the final stage of this lifecycle. After the
software product successfully passes all steps, it then undergoes a maintenance process where it
gets upgraded and maintained regularly to adapt to new trends and changes (Ali, 2017). Most
software development companies, including Trex, follow these six stages technique.
DevOps Deployment Methodology
The DevOps methodology is suitable for the Trex Company since it is not just a
methodology but also a practice set that supports a company’s culture. This methodology focuses
on organizational change which enhances collaboration between company departments. These
departments are responsible for different phases of the development lifecycle, including
operations, quality assurance, and development (Perera et al., 2017). The benefits of DevOps
include its focus on improving time to market, lowering new releases failure rate, maximizing
SOFTWARE ARCHITECTURE STRATEGY
9
reliability while minimizing disruption, and shortening the time needed between fixes and
updates.
DevOps methodology aims at automating continuous deployment to ensure everything
happens reliably and smoothly. An organization that utilizes this methodology benefit from
significantly reduced time to market and enhancing employee efficiency and productivity,
product quality, and customer satisfaction. This method logy, however, has few disadvantages,
including some industries having regulation and laws requiring extensive testing before a product
gets to operations phase (Perera et al., 2017). Some clients also do not want continuous updates
to their software or systems. Additionally, some quality aspects require human interaction, and
that slows down the delivery process. However, despite these drawbacks, DevOps deployment
methodology is a suitable choice for Trex Company.
Architecture
The software needs architectural design to define the software’s design. Architectural
design, according to the IEEE, is the process of defining a collection of software and hardware
components and their interfaces to establish a framework for a computer system’s development.
The platform that gets developed for computer-based systems can exhibit one of the several
architecture designs. Each design describes a system containing a set of components including
computational modules and a database that a function vital to the system. The plan also includes
a set of connectors that help in communication, cooperation, and coordination between the
components (Ali, 2017). Conditions of how components can get integrated to form the system
and semantic models that assist the designer in understanding the systems overall properties also
get included in the design.
SOFTWARE ARCHITECTURE STRATEGY
10
Layered Architecture
This the most common approach since it usually gets built around the database.
Additionally, many systems in business typically store data in tables. Most of the best and
biggest software frameworks, including express, Drupal, and Java EE, were built for this
structure. Therefore, many applications developed in these frameworks are naturally in a layered
architecture (Crawley et al., 2015). The code gets formulated in a way that data enters through
the top layer and works its way down through layers until it reaches the database, which is
usually the bottom layer.
Along the data’s channel, the layers have a specific task, including reformatting values
and checking data for consistency. It is a common practice for different teams to work
independently on each layer. The model view controller structure is an example of layered
architecture and is the standard software development technique offered by common web
frameworks. The significant advantage of this architecture is the separation of concerns meaning
each layer can focus solely on its function (Crawley et al., 2015). This advantage makes the
architecture easy to enhance and update layers separately, testable, maintainable, and also easy to
assign different and separate roles.
Well-layered architectures have isolated layers that do not get affected by specific
changes in other layers making refactoring easier. Subdividing the tasks and formulating
different layers possess the biggest challenges for an architect. When the requirements fit into the
pattern well, the layers will get easier to separate and assign to different teams or programmers.
This architecture is best for business or enterprise applications that need to mirror conventional
information technology processes and departments (Crawley et al., 2015). The architecture is
also best suited for new software that needs to get built quickly, teams comprising of
SOFTWARE ARCHITECTURE STRATEGY
11
inexperienced developers without an understanding of other architectures, and even applications
requiring strict testability and maintainability standards.
Architectural Strategy
Trex Company, like other software companies, possesses various procedures and systems
implemented and working internally across all departments and sub-teams. These systems and
processes include business analysts modelling tools such as IBM Rational Rose. Also included
are version control systems and product versioning procedures, code analysis tools, and
deployment mechanisms for programmers. Also included in the primary systems are testers,
including test automation tools, bug tracking systems, and even stress and performance test tools.
There project managers tools, including change management procedures and systems, product
portfolio management, and enterprise project management procedures and systems. Trex
Company also has a mechanism of measuring its efficiency. The company achieves this by
defining key performance indicators set.
Converged Architecture
With this type of infrastructure networks, storage, and computing are in separate resource
pools jointly delivered and in one chassis. System upgrades get carried out through swapping
chassis components. System growth in this architecture is through adding elements to empty
slots in the frame (Crawley et al., 2015). This architecture supports rapid deployment of several
workloads. Traditionally data centre computing got characterized by large and integrated
SOFTWARE ARCHITECTURE STRATEGY
12
resources called mainframes. As shared computing resources became more affordable and
decentralized, these resources got split into distributed computing layers of software, networks,
storage, and servers. For minimizing the risk of distributed information technology, these
computing resources get virtualized and pooled to reduce costs while maximizing efficiency
(Crawley et al., 2015). The computing layers get delivered in one chassis either as a reference of
architectures or from a single vendor To enable rapid deployment of new pooled resources.
SOFTWARE ARCHITECTURE STRATEGY
13
References
Clements, P. & Kazman, R. (2012). Software Architecture in Practice, Third Edition. Boston:
Addison-Wesley. ISBN 978-0-321-81573-6
Karimov, M. (2016). The Importance of Software Architecture Planning. [online] Upwork.
Available at: https://www.upwork.com/hiring/development/the-importance-of-softwarearchitecture-planning-during-development/ [Accessed 13 January 2020]
Marick, B. (2001). Agile Alliance. “Manifesto for Agile Software Development”. Retrieved 13
January 2020.
Ali, K. (2017). A Study of Software Development Life Cycle Process Models. International
Journal of Advanced Research in Computer Science, 8(1).
Crawley, E., Cameron, B., & Selva, D. (2015). System architecture: strategy and product
development for complex systems. Prentice Hall Press.
Perera, P., Silva, R., & Perera, I. (2017, September). Improve software quality through practicing
DevOps. In 2017 Seventeenth International Conference on Advances in ICT for
Emerging Regions (ICTer) (pp. 1-6). IEEE.