Biyernes, Pebrero 24, 2017

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, subsystems, and their communications, it will be easier in the description to specify which one goes to which subsystems 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.
A computer controlled  video conferencing system that allows video audio, and computer data to be visible to several participants at the same time.
Image result for 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.
Image result for 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?