Skip to content

Instantly share code, notes, and snippets.

@asrinoztin
Last active November 13, 2024 04:42
Show Gist options
  • Save asrinoztin/d2426ed2c51756c4e4c0e2eea1517aa8 to your computer and use it in GitHub Desktop.
Save asrinoztin/d2426ed2c51756c4e4c0e2eea1517aa8 to your computer and use it in GitHub Desktop.
SwE_Ian_Sommerville_Ans

Extra

Iterative - you don't finish a feature in one go. You are in a code >> get feedback >> code >> ... cycle. You keep iterating till done. Incremental - you build as much as you need right now. You don't over-engineer or add flexibility unless the need is proven. When the need arises, you build on top of whatever already exists. (Note: differs from iterative in that you're adding new things.. vs refining something). Agile - you are agile if you value the same things as listed in the agile manifesto. It also means that there is no standard template or checklist or procedure to "do agile". It doesn't overspecify.. it just states that you can use whatever practices you need to "be agile". Scrum, XP, Kanban are some of the more prescriptive 'agile' methodologies because they share the same set of values. Continuous and early feedback, frequent releases/demos, evolve design, etc.. hence they can be iterative and incremental.

1

Why professional software is not just the programs that are developed for a customer, but it's for organizations and other big businesses

Professional software is not just the programs developed for a customer because the software is almost always packaged with associated documentation such as requirements, design models, and user manuals.

A good or professional software goes beyond software developed solely for a customer. It is usually composed of executable code coupled with documentation and configuration of data that is required to make these programs operate correctly.

A professionally developed software system is often more than a single program. The system usually consists of a number of separate programs and configuration files that are used to set up these programs. It may include system documentation, which describes the structure of the system; user documentation, which explains how to use the system, and web sites for users to download recent product information.

For example, a word processing system consist of executable program, user manual and the document such as requirements and the design needed to produce the executable program.

Briefly discuss why it is usually cheaper, in the long run, to use software engineering methods and techniques for software systems.

The longevity of software largely depends on the use of software engineering methods. Typically, most software projects usually follow four (4) patterns;

  1. Software Specification: This entails the definition of the software requirements as well as the identified constraints.

  2. Software Development: This is the stage where the software product is developed based on the identified specification.

  3. Software Validation: The software validation stage is where the developed software is checked against the initial requirements. The goal of this is to ensure that the software meets the needs of the end user.

  4. Software Evolution: Software evolution is the concept that a given software must be developed in a manner that is flexible and easy to modify to reflect changing business rules, or market requirements.

Having highlighted the software engineering methods above, it is easy to see why it is cheaper to use software engineering methods and techniques when developing software systems. A good software must follow a software engineering method or technique.

The software engineering methods and techniques for software systems enforce control and accountability in software development.

Without software engineering methods and techniques, developers will tend to build software without any well-defined plan. The cost is increased in this case because they tend to spend more time on development and consequently testing as well. With development cost accounting for about 60% of the entire software cost, and 40% for testing costs, it is clear that the decision to ignore software engineering methods and techniques can cost a lot more in the long run.

Software engineering is not only concerned with issues like system heterogeneity, business and social change, trust, and security, but also with ethical issues affecting the domain. Give some examples of ethical issues that have an impact on the software engineering domain.

Confidentiality - Always respect this even if no confidentiality agreement is signed

Competence - don't mis-represent your level of competence

Intellectual property rights - be aware of local laws governing intellectual property rights

Based on your own knowledge of some of the application types discussed in the textbook (chapter 1, section 1.1.2), explain, with examples, why different application types require specialized software engineering techniques to support their design and development.

Different application types require the use of different development techniques for a number of reasons:

  1. Costs and frequency of change. Some systems (such as embedded systems in consumer devices) are extremely expensive to change; others, must change frequently in response to changing requirements (e.g. business systems). Systems which are very expensive to change need extensive upfront analysis to ensure that the requirements are consistent and extensive validation to ensure that the system meets its specification. This is not cost effective for systems that change very rapidly.

  2. The most important ‘non-functional’ requirements. Different systems have different priorities for non-functional requirements. For example, a real-time control system in an aircraft has safety as its principal priority; an interactive game has responsiveness and usability as its priority. The techniques used to achieve safety are not required for interactive gaming; the extensive UI design required for games is not needed in safety-critical control systems.

  3. The software lifetime and delivery schedule. Some software systems have a relatively short lifetime (many web-based systems), others have a lifetime of tens of years (large command and control systems). Some systems have to be delivered quickly if they are to be useful. The techniques used to develop short-lifetime, rapid delivery systems (e.g. use of scripting languages, prototyping, etc.) are inappropriate for long-lifetime systems which require techniques that allow for long-term support such as design modelling.

Explain why the fundamental software engineering principles of process, dependability, requirements management, and reuse are relevant to all types of software system.

Fundamental principles of software remains relevant to all types of software system

A set of programming instructions which are executed to perform a specific task as per the requirements of user is known as software. Each software has some basic principles to follow. These principles include managements of user requirements, platform dependability, development process definition, updating and maintenance.

These principles are same for both generic and customized software. The points to show the reasons are as given below:

• The process of requirement gathering is required in both generic and customized software.

• A document to define the development process is required in all type of software application.

• Updating is required in each type of software. For doing so, new version of each type of software is released.

• Maintenance is an important part of software development. It is required in each type of application development.

• Software has some minimum requirements to execute. So, platform dependability is considered in all software development.

Explain how electronic connectivity between various development teams can support software engineering activities.

The key enabler of team collaboration is communication. Without an effective communication medium, collaborating with others on a project is almost impossible.

Electronic connectivity provides wireless communication through the use of modern-day technologies like smartphones and computer systems.

In software development, it is crucial for team members to keep track of their individual development process. Electronic connectivity makes this process relatively stress-free. Availability of tools like GitHub make it easy for team members to collaborate and contribute code to a single remote repository. Use of electronic connectivity tools not only makes the development process a lot faster, but also improves the quality of the end-product or software.

Noncertified individuals are still allowed to practice software engineering. Discuss some of the possible drawbacks of this.

Noncertified individuals are still allowed to practice software engineering. Discuss some of the possible drawbacks of this. Misapplication of Software Engineering processes are, at best, ineffective for what they're designed for, and a waste of resources.

2

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Incremental software development could be very effectively used for customers who do not have a clear idea about the systems needed for their operations. Discuss.

Incremental software development is the most effective approach for developing business software solutions, and is in fact a very effective software development model for customers who do not have a clear idea about the systems needed for their operations.

In the incremental model, software is built and tested incrementally, i.e. features are added after each test till the finished product is delivered to the customer's satisfaction. It combines features from the waterfall and prototyping model.

For a customer that does not have a clear system requirement at the start, developing incrementally is in fact the best approach as they get to see the features developed very early in the development cycle, review and make suggestions for further changes. Interacting with the initial prototypes or increments can give them ideas on the directions to take for their system.

With a proper communication, planning, modeling, construction and development strategies, this model will work well for the customer who does not have a clear idea on the systems needed for their operations.

Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process.

  1. User Requirements describe the system functions and features from the perspective of a user. These are usually abstract. System requirements provide a more detailed explanation of the procedure.
  2. User requirements are written in plain and natural language. System requirements are more detailed with specific specifications that could be part of a contract.
  3. User requirements start with gathering information, identifying important aspects, and understanding them. System Requirements can only be implemented after the user requirements are understood and finalised.

Give two advantages and two disadvantages of the approach to process assessment and improvement that is embodied in the process improvement frameworks such as the CMMI.

Advantages of process improvement frameworks

  1. Provides a means of measuring the state of a process and a structured approach to introducing process improvements.
  2. Useful as a way of building on the experience of others in process improvement.
  3. Focused on software engineering processes and practices used
  4. Led to significant improvements in capabilities

Disadvantages of process improvement frameworks

  1. Like any measurement system, there is a tendency to introduce improvements to improve the measured rating rather than concentrate on improvements that meet real business goals.
  2. Expensive and bureaucratic to operate. Not suitable for agile approaches.
  3. Too much overhead in formal process improvement in small companies
  4. Maturity estimation with agile processes is difficult

Explain why software testing should always be an incremental, staged activity. Are programmers the best people to test the programs that they have developed?

Software testing: • Each program is tested for correct functionality • Complete program divided into small modules, tested individually. (UNIT TESTING) • Then whole system is tested with the programs tested above. (SYSTEM TESTING) • Beta version released and end user checks (CUSTOMER TESTING) Programmers are not the best persons • Hard to find own errors. • Best skills to develop but not to test.

Explain why the design activities of architectural design, database design, interface design, and component design are interdependent.

Interdependent design activities

Design of any software is very important activity. It includes design of database, design of various components, user interface design and design of architecture.

Consider an example of library management system and know how these design activities are interdependent.

  1. Design of architecture: In this designing phase, the system’s overall structure is defined. It also defines the distribution and relationship between principle components of the system.

• Design architecture of Library management describes the overall structure of library. It includes students who have access to library, library administrative department and books regarding to various departments etc.

• Therefore, to issue a book from the library, these components must be communicated with each other.

  1. Design of database: The structure of database with their respective representation is defined in this phase. Here, user has to define that he/she is going to develop a new database of using the existing database.

• This phase is very important in Library management system because, huge amount of books related to different departments are stored in the database.

• Students are allowed borrow the book with their credentials and need to submit it as per the rules of library administrator.

• The management must be consistent when books borrowed and returned from the database.

• If the database is well designed, then it is easy to search and maintain the book information.

  1. Design of interface: The interface among different components of the system is defined here. It is possible that one component is again used for any implementation in system.

• This phase defines various possible interfaces to allow and access the books to students.

• Every student has library-ID or roll number to access the books. With these credentials, student can directly go to the library and borrow the book or they may use the library web portal.

• With the use of library-ID or roll number, student can search the availability of required books, and can see the due time for submission etc.

• Therefore, interface is an important phase while designing any software.

  1. Component design and their selection: The reusable components which match the requirements of new system are defined here.

• If a student requires a book which is not available in the library, administrator should check for the matching books to satisfy the student request.

• If no match is found, management must purchase a new book which is requested from the student.

Therefore, to effectively manage the library and fulfil the student requirements, library management should follow all the design activities mentioned above.

Hence, it can be said that these all are interdependent to each other.

Imagine that a government wants a software program that helps to keep track of the utilization of the ountry’s vast mineral resources. Although the requirements put forward by the government were notvery ear, a software company was tasked with the development of a prototype. The government found he prototype impressive, and asked it be extended to be the actual system that would be used. Discuss thepros and cons of taking this approach

Pros: • Allows changes to prototype • Customer sees prototype and modifications made before design is created • Better implementation • Satisfied customer Cons: • Additional cost for prototype creation • Delays due to extra time creating prototypes

You have developed a prototype of a software system and your manager is very impressed by it. She roposes that it should be put into use as a production system, with new features added as required. This voids the expense of system development and makes the systems immediately useful. Write a short eport for your manager explaining why prototype systems should not normally be used as production ystems

• Prototype anticipates changes required • Requirements engineering prototype helps with elicitation and validation • System design process: used to explore software solutions in UI development • Minimal UI and not intuitive • No error detection • Vague error messages • Not viewed as high quality product, only development aids.

Historically, the introduction of technology has caused profound changes in the labour market and, emporarily at least, displaced people from jobs. Discuss whether the introduction of extensive process utomation is likely to have the same consequences for software engineers. IF you don’t think it will, xplain why not. If you think that it will reduce job opportunities, is it ethical for the engineers affected to assively or actively resist the introduction of this technology?

• Reduce human error in code creation • Potential to produce similar or better software than conventionally produced software • Cost reduction • Standardised components used, increasing software reliability and cost reduction in future aintenance • Automation assists software to address primary issues in the development process. (complexity, eliability, and productivity)

3

At the end of their study program, students in a software engineering course are typically expected to complete a major project. Explain how the agile methodology may be very useful for the students to use in this case.

The agile methodology is team centered so it would help them interact with each other. It also encourages releases in phases so that the team can show the professor updates as they work.

OR

• Team centered, assisting with interaction. • Phase release, showing updates as they work • Specification, design, and implementation are interleaved. • No detailed system spec and design docs is minimized.

Explain how the principles underlying agile methods lead to the accelerated development and deployment of software.

The principles underlying agile development are:

  1. Individual and interactions over processes and tools.By taking advantages of individual skills and ability and by ensuring that the development team know what each other are doing, the overheads of formal communication and process assurance are avoided. This means that the team can focus on the development of working software.

  2. Working software over comprehensive documentation.This contributes to accelerated development because time is not spent developing, checking and managing documentation. Rather, the programmer’s time is focused on the development and testing of code.

  3. Customer collaboration over contract negotiation.Rather than spending time developing, analyzing and negotiating requirements to be included in a system contract, agile developers argue that it is more effective to get feedback from customer’s directly during the development about what is required. This allows useful functionality to be developed and delivered earlier than would be possible if contracts were required.

  4. Responding to change over following a plan.Agile developers argue (rightly) that being responsive to change is more effective than following a plan-based process because change is inevitable whatever process is used. There is significant overhead in changing plans to accommodate change and the inflexibility of a plan means that work may be done that is later discarded.

Extreme programming expresses user requirements as stories, with each story written on a card. Discuss the advantages and disadvantages of this approach to requirements description.

Extreme programming (XP) is perhaps the best known and most widely used of the agile method. The name was coined by Beck because the approach was developed by pushing recognized good practice

In Extreme programming, requirements are expressed as scenarios which are implemented directly as a series of tasks. This program involves a number of practices through Incremental planning, Small releases, Simple design, Test-first development, Refactoring, Pair programming, Collective ownership, Sustainable pace, on-site customer.

Advantages and Disadvantages of Extreme Programming user requirements:

Advantages

  1. Scenarios cope with most of common operation. It is easy to identify what type of operation that is required in the user’s stories.
  2. Customer focus in the scenario card increase the chance that the software produced will actually meet the needs of the users
  3. Easy for users to understand and critique stories
  4. Represent increments of functionality
  5. epresent real situations arising so systems support common user operations

Disadvantages

  1. Using scenarios on a card can bring to a function overlooked or omission which can be a time-consuming process to complete the system.
  2. Two different scenarios can lead to the same function as it will be conflicted each other. Crossing out redundant scenarios can be a cumber some tasks
  3. Liable to be incomplete
  4. Focus on functional requirements
  5. Representing system requirements such as performance and reliability are impossible
  6. Relationship between architecture and user stories is unclear.

Suggest four reasons why the productivity rate of programmers working as a pair might be more than half that of two programmers working individually.

A pair of developers would produce half as much code as two individuals working alone and productivity with pair programming seems to be comparable with that of two people working independently. And the best way to pair program is to just sit side by side in front of the monitor. Slide the key board and mouse back and forth. Both programmers concentrate on the code being written.

Reasons:

  1. Pair programming makes the code less defective.

  2. It increases the communication in discussing the software before development result in fewer false starts and less rework. The number of errors avoided by the formal inspection is such that less time is spent to repairs bugs in the testing phase.

  3. All code to be sent into production is created by two people working together at a single computer. Pair programming increases software quality without impacting time to deliver. It is counter intuitive, but 2 people working at a single computer will add as much functionality as two working separately except that it will be much higher in quality.

  4. Pair programming encourages refactoring. The code is prone to be edited and enhanced to increase effectiveness and testing the code will output in a non biased result.

To reduce costs and the environmental impact of commuting, your company decides to close a number of offices and to provide support for staff to work from home. However, the senior management who introduce the policy are unaware that software is developed using agile methods, which rely on close team working and pair programming. Discuss the difficulties that this new policy might cause and how you might get around these problems.

The difficulties that this new policy might cause are : There would definitely be communication gap among the team members . There are numerous benefits which are obtained through agile methods. But because of this arrangement it would be nullified. Error detection and evaluation benefits through pair programming would be completely lost. Since there are sudden changes in the teams, the project development would be slowed down.

Why is it necessary to introduce some methods and documentation from plan-based approaches when scaling agile methods to larger projects that are developed by distributed development teams?​

Plan based approach of agile methodology If documentation is not provided, then, it becomes very difficult for the team members to understand the entire project. To document the identified progress issues obtained during monitoring of scrum program, documentation and methods for large projects development are required

Explain why agile methods may not work well in organizations that have teams with a wide range of skills and abilities and well-established processes.

Since the agile approach requires the use of methods that typically lacks solid procedure, it does not function well in companies with teams with a wide variety of skills and abilities and well-established processes

One of the problems of having a user closely involved with a software development team is that they “go native.” That is, they adopt the outlook of the development team and lose sight of the needs of their user colleagues. Suggest three ways how you might avoid this problem, and discuss the advantages and disadvantages of each approach.

The following are the advantages and disadvantages that need to be corrected to recover from the “go-native” problem:

Validating the suggestions given by the user with the different users:

The suggestions given by the user must be validated with the suggestions given by any different user.

Advantage:

• By discussing the suggestion of users helps to check the user suggestions independently.

Disadvantage:

• If the suggestions are discussed in independent manner then it slows down the process of software.

• If the project gets delayed then it leads to extra cost for the project.

Getting the suggestions from multiple users:

Multiple users must be involved in development team to get the suggestions.

Advantage:

• By multiple suggestions, the multiple perspective views from different users can be obtained for specific problem.

• The probability of having any typical user will decrease.

Disadvantage:

• There may be a possibility of correlation on suggestions from different users.

• If the correlation rises, then it makes extra cost to complete the project.

Changing the member from the team:

If any of the user suggestion creates a problem in team. Then, change the user from the team.

Advantage:

• By multiple suggestions, the multiple perspective views from different users can be obtained.

• By discussing the suggestion of users helps to check the user suggestions independently.

Disadvantage:

• It is possible that the new user is not aware of the system. So, he/she will take time to understand the system to give suggestions.

• Checking the user’s suggestions independently leads to increase the productivity time of the project.

• If the project gets delayed then it leads to extra cost for the project.

4

Identify and briefly describe four types of requirements that may be defined for a computer-based system.

  1. User requirements: These requirements are the statements in a natural language plus diagrams of the services the system provides and its operational constraints.

  2. System requirements: A structured document setting out detailed descriptions of the system’s functions, services and operational constraints. Defines what should be implemented. It may be part of a contract between client and contractor.

  3. Functional requirements: These are the statements of services that the system should provide, how the system should react to particular inputs and how the system should behave in particular situations.

  4. Non-functional requirements: Constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc.

These requirements are usually applied to the system as a whole rather than individual features or services.

Write a set of non-functional requirements for the drone system, setting out its expected safety and response time.

Depending on the type of drone and its specific application, here are some non-functional requirements to consider:

  1. The drone's flight path should allow it to avoid any obstacles or obstructions upon which it may crash.

  2. Recovery time after system failure should not exceed 0.5 seconds.

  3. Within a day, total system downtime should not exceed 5 seconds.

  4. The drone should be able to return to the launch site if it meets any unfavourable conditions while flying.

  5. On reliability, this system relies on the durability of the physical user interface, the network connection in the area the drone is being operated in.

  6. The drone will fly below 400 feet above the ground to prevent collisions with FAA regulated aircraft in public airspace.

You have taken a job with a software user who has contracted your previous employer to develop a system for them.

The key thing here is to understand that there is nothing unethical about resolving ambiguities in software requirements. There are certainly diplomatic ways you can forward your recommendations to your current employer without breaching the confidentiality to your previous employer. If you have signed any Non Disclosure Agreements - NDAs with your previous employer, make sure you do not go against it.

What are required to do here is to make a detailed report of the ambiguities you've discovered without any direct reference to your previous employer's interpretation of the requirements. Make sure your recommendations are genuine and authentic. You may only use your previous employer's interpretation as a guide.

Suggest how an engineer responsible for drawing up a system requirements specification might keep track of the relationships between functional and non-functional requirements.

Functional requirements describe what the system will do.

Ex: inputs and outputs.

Non-functional requirements describe the expectations but it is not concerned with the system.

Ex: security

While drawing up a system requirements specification, an engineer might keep track of the functional and non-functional requirements by ensuring the following:

• The requirements needed to design meets the requirements such as compatibility, portability etc.

• Design the system so that it ensures the safety and security.

• Implementing the system in an efficient manner.

• The cost and time required for the development should not affect the design and implementation of the system

Here, the non-functional requirement defines what are the expectation to get out and the user requirements.

The functional requirement defines the use of the developer knowledge.

It does not conflict with each other.

The first step is to make the Systems Requirement Document.

It is engineer responsible to prepare documents to each functional and non-functional requirement.

• The engineer needs to prepare the document depending on this; Non-functional requirements need the natural language and functional requirements need the structured language to understand better.

• It gives the matrix that shows each requirement related to each other.

• It is very difficult to manage because the functional and non-functional requirements put efforts with each other on track of relationships.

• Non-functional requirements linked with functional requirements to list, identify the system levels that have related each other.

• The engineer needs to prepare the way to link the functional to non-functional to implement it.

• The functional requirements enforce the non-functional requirements that shall be recorded and tracked.

For example,

The user needs to search for the candidate list for the interview.

  • It is a functional requirement.

That the search should return all the list of candidates who are attending the interview.

  • It is a non-functional requirement.

Therefore, it helps the engineer to avoid overlap and that relates to each other.

And it keeps track the relationships between functional and non-functional requirements.

Using your knowledge of how an ATM is used, develop a set of use cases that could serve as a basis for understanding the requirements for an ATM system.

Use cases are generally a set of interaction between the User/Actor with the system to generate a desired output.

A use case diagram is a graphical representation of all use case that interacts with the system. Use case diagram is part of Unified Modelling language also known as UML.

Set of Use cases that are used in this ATM use case diagram to understand the requirements of the ATM are given below:

• Insert ATM card

• Enter pin

• Perform required transaction

o Withdrawal

o Deposit

o Transfer

o Change pin

• Exit

Both customer and Bank are treated as actor. Actors are the one who interacts with the system.

When emergency changes have to be made to systems, the system software may have to be modified before changes to the requirements have been approved. Suggest a model of a process for making these modifications that will ensure that the requirements document and the system implementation do not become inconsistent.

Answer:

Incremental model

Explanation:

Incremental model is the best modification in older version are feasible and can be easily managed.

Incremental model involves the technique of developing soft ware in which the product is designed implemented and tested in stages until the product is finished. The term finished here means the product as meet all its requirement.

This model entails development as well as maintenance.

5

Scope creep can be defined as a continuous increase of a project that can significantly increase project cost. Explain how a proper system context can help prevent scope creeps.

Early Stage: o Define system boundaries o Decide what functionality should be included with processing and operations in mind. o Check possible overlaps in functionality with existing systems and decide where new functionality should be implemented. • Later on: o Definition of context and dependencies that a system has on its environment. o Producing simple architectural model is first step in this activity. • Context model o Shows that the environment includes several other automated systems. o UML activity diagrams may be used to show business processes in which systems are used

The way in which a system boundary is defined and an appropriate context model is created may have serious implications on the complexity and cost of a project. Give two examples where this may be applicable

• Social and organizational concerns mean the position of a system boundary may be determined by non technical factors • For example, a system boundary may be deliberately positioned so that the complete analysis process can be carried out on one site • In developing the specifications you have to decide whether the system should focus exclusively on collecting information about consultations or whether it should also collect personal patient information (Mentcare example) • The cost and complexity for the system to integrate to various other system will increase if this becomes an integrated Healthcare system reading data from various other systems and also providing data to those systems.

For the Mentcare system, propose a set of use cases that illustrates the interactions between a doctor, who sees patients and prescribes medicine and treatments, and the Mentcare system.

Actors

  1. Doctor, Patient record system Desc
  2. The doctor enters the patient’s Unique Identification data into the Mentcare system
  3. The Patient records system transfer basic patient information to the doctor to view e.g. Personal information, diagnoses, previous recordings, treatment information
  4. The doctor records his session with the patient in the Mentcare system eg date, time, diagnoses
  5. The doctor records the treatment prescribed in the Mentcare system Data
  6. Patient’s personal information, treatment summary Stimilus
  7. User command issued by the doctor Response
  8. Confirmation that the patient’s record in the Mentcare system has been updated Comments
  9. The doctor must enter a valid unique Identification number to be able to access the patient’s data
  10. The doctor must have appropriate security permissions to access the patient information

6

When describing a system, explain why you may have to start the design of the system architecture before the requirements specification is complete

• Architecture has an impact on the nonfunctional requirements and can influence the functional requirements too. • Early stage of agile development: o Focus on designing an overall system architecture. o Incremental development is not usually successful. o Refactoring components in response to changes is relatively easy o Refactoring architecture is expensive because most system components will need to be modified. • Architecture designed before requirements spec is complete because: o Allow manufacture of hardware by subcontractors and provide models for system costing. o you need to model the architecture to identify subsystems and associate the requirements with these subsystems. • Main reasons for the above: o Means for structuring o Model for estimating system costing o Allow manufacture of hardware by subcontractors

You have been asked 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 bullet points setting out the key points in your presentation in which you explain the importance of software architecture.

In order to justify the hiring of a system architect for a new project, below are some key points you can use to in your explanation to explain the importance of this decision:

• System architecture is concerned with understanding how a system should be organized and the overall structure of the system to be designed.

• Software architecture is important because it affects the performance, robustness, distributability, and maintainability of a system.

• The non functional requirements depend on the system architecture – the way in which these components are organized and communicate.

• Various non-functional requirements on which the architectural style and structure of the system depends are performance, security, safety, availability, and maintainability.

• Architectural design is creative processes where you design a system organization that will satisfy the functional and non- functional requirements of a system.

• Because architectural design is a creative process, the background and experience of the system architect, and the specific requirements for the system.

• During the architectural design process, system architects have to make a number of structural decisions that profoundly affect the system and its development process.

• Based on the knowledge and experience of the system architect, various aspects about the system such as architectural patterns, design, approach used to structure the system etc are to be considered.

As the software architecture is the fundamental framework for structuring the system, it is to be designed carefully, by considering various factors. So, an experienced system architect would help in designing the system.

Performance and security may pose to be conflicting non-functional requirements when architecting software systems. Make an argument in support of this statement.

Performance means few large components are used. • Reducing component communication Security means using a layered architecture, which required more than one component to implement security validation.

A software sysem 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.

• Manages fundamental behaviors and data of the application • Responds to requests and instructions • Notifies observers in event driven systems when information changes. • Could be a DB or any number of data structures or storage systems • The view provides the UI element, rendering data from the model into a form suitable for UI • Controller receives input and makes calls to model objects and view to perform various actions. • These work together to create the 3 components of MVC

Suggest an architecture for a system (such as iTunes) that is used to sell and distribute music on the internet. What architectural patterns are the basis for your proposed architecture?

Client-server model. • iTunes store music in a database where clients can search these tracks by music details via a web based interface. • Music can be purchased and downloaded via a web based interface.

Should there be a separate profession of ‘software architect’ whose role is to work independently with a customer 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?

The difficulties that may arise by the establishment of such a profession are:

  1. Difficulty in the implementation
  2. The company that would implement the system may find difficulty in understanding the architecture
  3. Incompatibility of the architecture with the developing system
  4. Architecture may not satisfy all the technical requirements
  5. Re-work or redesign is needed sometimes, due to incompatibility or change in technical requirements
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment