6.1 When describing a system, explain
why you may have to design the system architecture before the requirements
specification is complete.
The architecture may have to be designed before specifications are written to provide a means of structuring the specification and developing different subsystem specifications concurrently, to allow manufacture of hardware by subcontractors and to provide a model for system costing and because the architecture has a significant impact on the non-functional requirements and can also influence the functional requirements as well. Specifically, in order to demonstrate to stakeholders that an application will meet its performance requirements a project manager or system architect may have to show how the architecture will aid in accomplishing this goal.A software requirements specification (SRS) is a description of a software system to be developed. It lays out functional and non-functional requirements, and may include a set of use cases that describe user interactions that the software must provide because Software requirements specification establishes the basis for an agreement between customers and contractors or suppliers (in market-driven projects, these roles may be played by the marketing and development divisions) on what the software product is to do as well as what it is not expected to do. Software requirements specification permits a rigorous assessment of requirements before design can begin and reduces later redesign. It should also provide a realistic basis for estimating product costs, risks, and schedules. Used appropriately, software requirements specifications can help prevent software project failure. According to Sommerville the components affect the requirements and therefore an architecture that explains the components and their relationships may aid in the determination of the requirements and also to provide a means of structuring the specification and developing different sub-system specifications concurrently, to allow manufacture of hardware by sub-contractors and to provide a model for system costing.. The system architecture is to be designed first before describing the system itself simply because the architectural design serves as basis for the description. Since it involves identifying major system components, subsystems, and their communications, it will be easier in the description to specify which one goes to which subsystems and then subsystems are already made, it will be easier to determine what components are needed by hard!are manufacturers. Software design is the process of implementing software solutions to one or more sets of problems. One of the main components of software design is the software requirements analysis (SRA). SRA is a part of the software development process that lists specifications used in software engineering. If the software is "semi-automated" or user centered, software design may involve user experience design yielding a storyboard to help determine those specifications. If the software is completely automated (meaning no user or user interface), a software design may be as simple as a flow chart or text describing a planned sequence of events. There are also semi-standard methods like Unified Modeling Language and Fundamental modeling concepts. In either case, some documentation of the plan is usually the product of the design. Furthermore, a software design may be platform-independent or platform-specific, depending upon the availability of the technology used for the design.
6.2 you have been ask to prepare and deliver
a presentation to a nontechnical manager to justify the hiring of a system
architect for a new project. Write a list of bullets points setting out
the key points in your presentation in which you explain the importance of
software architecture.
Definition
How do you define software architecture? Everyone will have their own
definition. There are many definitions out there, and most of them are
very much software-oriented; an example is the one chosen by wikipedia which defines software
architecture as “the set of structures needed to reason about the system, which
comprise software elements, relations among them, and properties of both.
Microsoft’s definition is
fairly high-level and abstracts this subjective notion: “Software application
architecture is the process of defining a structured solution that meets all of
the technical and operational requirements, while optimizing common quality
attributes such as performance, security, and manageability. It involves a
series of decisions based on a wide range of factors, and each of these
decisions can have considerable impact on the quality, performance,
maintainability, and overall success of the application.”
Another interesting definition comes from Martin Fowler: “The highest-level breakdown
of a system into its parts; the decisions that are hard to change; there are
multiple architectures in a system; what is architecturally significant can
change over a system’s lifetime; and, in the end, architecture boils down to
whatever the important stuff is.”
In the end, this is the way we view it at Mentum: software architecture is for us the
continuously evolving set of decisions and architectural patterns that
structure our software tools, enable transversal attributes such as
scalability, performance, maintainability, usability and quality, and upon
which we can base the efficient development of the best functionality to
address the needs of the radio planning market in general and of our customers
in particular.
A well thought-out architecture must
consider these important principles:
Build to change instead of build to last
Understand the end user needs and the
domain before designing components
Identify sub-systems in your product and
consider layers and components to abstract them and identify the key interfaces
Use an incremental and iterative approach
to designing the architecture
Learn from history, document your decisions
and identify and mitigate key risks
Do not under-invest in architecture
Mentum has a long track-record of building
successful architectures. Our flagship product, Mentum Planet,
undergoes significant architectural redesigns in every major release, the last
one having been implemented in Mentum Planet 5.0.
Those represent a very large investment and allow this product to remain
best-in-class. The current architecture has been fundamentally redesigned in
order to optimally support the evolving needs of 4G radio planning, looking
into both the technology and the streamlining of engineering tasks and
workflows. Similarly, Mentum Ellipse has
recently been redesigned entirely, following the same architectural principles,
though adopting patterns that are specific to microwave and backhaul planning,
along with its technological and engineering specificity.
Value
To Mentum as well as any business, a good
architecture allows:
Delivery of higher quality at a lower cost
Better code reuse hence faster software
development
Support for incremental code
optimization
Facilitate communication between R&D
and customers, through product management, sales and customer support
6.3 Performance and security may pose to be conflicting non-functional
requirements when architecting software systems. Make an arguement in support
of this statement.
Non-funtional requurements, such as modifiability, performance,
reusability, comprehensibility and security are often crucial to a software
system. As such, these non-funtional requirements should be addressed as early
as possible in a software lifecycle and properly reflected in a software
architecture before commiting to a detailed design. The purpose of this paper
is to discuss how the treatment of non functional requiremtns as goals ( which
may be synergistic or conflicting) serves to systematically guide selection among architiectural design
alternatives. During the architectural design process, goals are decomposed,
design alternatives are analyzed with respect to their trade ofs, design
decisions are made rationalized, and
goal achievement is evaluated. This process can be supportded by a bodyof
organized knowledge. This paper outlines is an approach by which such a
knowledge can be organized. This approach is illustrated by a preliminary study
of architectural design for a KWIC (key
word in context) system.
Non-functional requirements, such as modifiabilty, performance,
reusablitiy comprehensibility are often crucial to a software system. As such,
these non-functional requirements should
be addressed as early as possible in the
software lifecycle and properly built into a software architecture before a
detailed design proceeds on an otherwise undesirable path.
As pointed out by Garlan and Perry,
architectural design has traditionally been largely informal nand adhic. The manifested symptoms
include difficulties in communication , analysis, and comparison of
architectural designs and principles. A more disciplined approach to
architectural design is needed to
improve our ability to understand and interacting high-level system constraints
and the rationale behind architectural choices.
6.4 Draw diagrams showing a conceptual view and process view of the architectures of the following systems
A ticket machine used by passengers in a railway station.
6.4 Draw diagrams showing a conceptual view and process view of the architectures of the following systems
A ticket machine used by passengers in a railway station.
A computer controlled video conferencing system that allows video audio, and computer data to be visible to several participants at the same time.
A robot floor cleaner that is intended to clean relatively clear spaces such as corridors. The cleaner must be able to detect walls and obstructions.
6.5 A software system will be built to allow drones to autonomously herd cattle in farms. These drones can be remotely controlled by human operators. Explain how multiple architectural patterns can fit together to help build this kind of system.
6.6 Suggest an architecture for a system ( such as Itunes) that is used to sell and distribute music on the internet. What architecural patterns are the basis for your proposed architecture?
Client-server
model is the appropriate architectural pattern for such kind of system. iTunes stores all the music they sell in a
database there the client can search these tracks by artist name,
genre, etc.all via web based interface. also, tracks can be downloaded
and paid accordingly. Then the server manages the music
ordering also via web based interface.The architecture needed for this type of
system is a client-server model. iTunes will have a database that has records
on all the music that is available through their system. These music records
can be searched for by the user by artist name, genre, etc., through a web
based interface and downloaded for a certain price. The server handles music
orders through the web based interface. The architectural pattern that is the
basis for this is client-server pattern.
6.7
6.8 Using the generic model of a language processing system presented design the architecture of a system that accepts natural language commands and translates this into the database queries in a language such as SQL.
Giving reasons for your answer based on the type of system being
developed, suggest the most appropriate generic software process model that
might be used as a basis for managing the development of the following systems:
a) A system to control anti-lock braking in a car
b) A virtual reality system to support software maintenance
c) A university accounting system that replaces an existing system
d) An interactive travel planning system that helps users plan journey
with the lowest environment impact
a) Anti-lock braking system This is a
safety-critical system so requires a lot of up-front analysis before
implementation. It certainly needs a plan-driven approach to development with
the requirements carefully analysed. A waterfall model is therefore the
most appropriate approach to use, perhaps with formal transformations between
the different development stages.
b) Virtual reality system This is a
system where the requirements will change and there will be an extensive user
interface components. Incremental development with, perhaps, some UI
prototyping is the most appropriate model. An agile process may be used.
c) University
accounting system This is a system whose
requirements are fairly well-known and which will be used in an environment in
conjunction with lots of other systems such as a research grant management
system. Therefore, a reuse-based approach is likely to be appropriate for this.
d) Interactive travel
planning system System with a complex user
interface but which must be stable and reliable. An incremental development
approach is the most appropriate as the system requirements will change as real
user experience with the system is gained.
6.9 Using the basic model of an information system, suggest the components that might be a part of an information system that allows users to view box office events , available tickets and prices, and to eventually buy tickets.
Almost all programs in business require students to take a course in something called information systems. But what exactly does that term mean? Information systems have become the backbone of most
organizations. Banks could not process payments, governments could not collect
taxes, hospitals could not treat patients, and supermarkets could not stock
their shelves without the support of information systems. In almost every
sector—education, finance, government, health care, manufacturing, and
businesses large and small—information systems play a prominent role. Every day
work, communication, information gathering, and decision making all rely on
information technology (IT). When we visit a travel agency to book a trip, a
collection of interconnected information systems is used for checking the
availability of flights and hotels and for booking them. When we make an
electronic payment, we interact with the bank’s information system rather than
with personnel of the bank. Modern supermarkets use IT to track the stock based
on incoming shipments and the sales that are recorded at cash registers. Most
companies and institutions rely heavily on their information systems.
Organizations such as banks, online travel agencies, tax authorities, and
electronic bookshops can be seen as IT companies given the central role of
their information systems. For example is an ARS ( Airline Reservation System ) Airline reservation system
contains airline schedules, fare
tariffs, passenger reservations and ticket records. An airline's
direct distribution works within their own reservation system, as well as
pushing out information to the GDS. The second type of direct distribution
channel are consumers who use the internet or mobile applications to make their
own reservations. Travel agencies and other indirect distribution channels
access the same GDS as those accessed by the airline reservation systems, and
all messaging is transmitted by a standardized messaging system that functions
on two types of messaging that transmit on SITA's HLN [high level network].
These messaging types are called Type A [usually EDIFACT format] for real time
interactive communication and Type B [TTY] for informational and booking type
of messages. Message construction standards set by IATA and ICAO, are global,
and apply to more than air transportation. Since airline reservation systems
are business critical applications, and they are functionally quite complex,
the operation of an in-house airline reservation system is relatively expensive.
6.10 Should there be a separate profession of "software architect" whose role is to work independently with a costumer to design the software system architecture? a separate software company would then implement the system. What might be the difficulties of establishing such a profession.
No, there should not be a separate profession of software architect whose role is to work independently with a costumer to design the "system architecture". Software architecture affect the performance, robustness, this reputability, and maintainability of a system. As it has an important role, the system architecture cannot be design simply by working with the costumer alone independently. It is to be analyzed from various prospects.
There has been a movement in the development field within
the past few years to solidify the separate profession of software architect,
whose role is to work independently with clients to design software (web and
application) system architectures. In this situation, a separate organization
would likely then implement the system, separately.
There are literally thousands of factors to consider when
designing and coding software applications and solutions of any type. There
must be a central person to provide overall direction for the teams working on
multiple apps for multiple clients. The software architect, who is likely
capable of guiding projects from concepts to solution, can fill this role.
Software architecture is vital because of its affect on
the performance, robustness, distributability, and maintainability of a system
where individual components implement the functional system requirements. The
software architect must be skilled and well-versed when it comes to the
technical aspects of the software but also be able to adjust and discuss these
specifications with clients who are not so knowledgeable.
Clients most often have a good idea of the capabilities
desired of new software systems based on their personal or organizational needs
since they are closest to the actual users of the software.
It may be difficult to establish such a position if
clients are not aware of their existence to provide a larger market for the
role. Many software companies may offer the services that a sole software
architect working independently and directly with the client provides. In an
organization as an additional position within the appropriate department, the
role may be better suited.
Many organizations with well-established, reputable
software system divisions have already made the decision to create the role of
software architect to assist with communication between end-users and build
teams. Developers in the trenches are often bogged down with ad-hoc requests
and to-do lists. The software architect is able to pull away and handle the forward-thinking,
long-term major points of: this is how it works now, this is how it should be
working and what do we do to get there?