Cheat Sheet
Cheat Sheet
Software engineering is essential for the functioning of government, society, and national and
international businesses and institutions. We can’t run the modern world without software.
Software engineering is concerned with theories, methods and tools for professional
software development. Software failures are a consequence of two factors:
(1) Increasing system complexity : As new software engineering techniques help us to build
larger, more complex systems, the demands change. Systems have to be built and
delivered more quickly; larger, even more complex systems are required; and systems
have to have new capabilities that were previously thought to be impossible.
(2) Failure to use software engineering methods : It is fairly easy to write computer programs
without using software engineering methods and techniques. Many companies have drifted into
software development as their products and services have evolved. They do not use
software engineering methods in their everyday work. Consequently, their software is often
more expensive and less reliable than it should be.
Software engineers are concerned with developing software products, that is, software that can
be sold to a customer. There are two kinds of software product:
(1) Generic products: These are stand-alone systems that are produced by a development
organization and sold on the open market to any customer who is able to buy them.
Examples of this type of product include apps for mobile devices, software for PCs such as
databases, word processors, drawing packages, and project management tools.
(2) Customized products: These are systems that are commissioned by and developed for a
particular customer. A software contractor designs and implements the software especially
for that customer. Examples of this type of software include control systems for electronic
devices, systems written to support a particular business process, and air traffic control
systems.
Software engineering Software engineering is an engineering discipline that is concerned
with all aspects of software production from the early stages of system specification through to
maintaining the system after it has gone into use. In this definition, there are two key phrases:
(1) Engineering discipline: Using appropriate theories and methods to solve problems
bearing in mind organizational and financial constraints.
(2) All aspects of software production: Not just technical process of development. Also project
management and the development of tools, methods etc. to support software production.
Key features of the Mentcare system:
(1) Individual care management • Clinicians can create records for patients, edit the information
in the system, view patient history, etc. The system supports data summaries so that doctors
can quickly learn about the key problems and treatments that have been prescribed.
(2) Patient monitoring • The system monitors the records of patients that are involved in
treatment and issues warnings if possible problems are detected.
(3) Administrative reporting • The system generates monthly management reports showing
the number of patients treated at each clinic, the number of patients who have entered and left
the care system, number of patients sectioned, the drugs prescribed and their costs, etc
(4) Privacy • It is essential that patient information is confidential and is never disclosed to
anyone apart from authorised medical staff and the patient themselves.
(5) Safety • Some mental illnesses cause patients to become suicidal or a danger to other
people. Wherever possible, the system should warn medical staff about potentially suicidal
or dangerous patients. • The system must be available when needed otherwise safety may be
compromised and it may be impossible to prescribe the correct medication to patients.
■ Software engineering is an engineering discipline that is concerned with all aspects of software
production.
■ Software is not just a program or programs but also includes all electronic documentation that is
needed by system users, quality assurance staff, and developers. Essential software product attributes
are maintainability, dependability and security, efficiency, and acceptability.
■ The software process includes all of the activities involved in software development. The high-level
activities of specification, development, validation, and evolution are part of all software processes.
■ There are many different types of system, and each requires appropriate software engineering tools
and techniques for their development. Few, if any, specific design and implementation techniques are
applicable to all kinds of system.
■ The fundamental ideas of software engineering are applicable to all types of software system. These
fundamentals include managed software processes, software dependability and security, requirements
engineering, and software reuse.
■ Software engineers have responsibilities to the engineering profession and society. They should not
simply be concerned with technical issues but should be aware of the ethical issues that affect their
work.
■ Professional societies publish codes of conduct that embed ethical and professional standards. These
set out the standards of behavior expected of their members
EXERCISES
1.1: Explain why professional software that is developed for a customer is not simply the programs that
have been developed and delivered?
Ans: This is because when software is given to the customer, it is almost always given with associated
documentation’s, such as user manuals, requirements and design models.
1.2: What is the most important difference between generic software product development and custom
software development? What might this mean in practice for users of generic software products?
Ans: the main difference is that in generic software product development, the software specification is
owned by the product developer whereas in custom the customer controls the specification
1.3: Briefly discuss why it is usually cheaper in the long run to use software engineering methods and
techniques for software systems.
Ans: Since if we follow SE methods, everything can be taken care of surprisingly well and avoid bugs and
problem, this way maintenance is cheaper hence its cheaper in the long run to make the product close
to perfect in the first making.
1.4: 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.
Ans: Confidentiality, l security arrangement hence allows free exchange of information between client
and worker, competence aka talent for work. Intellectual property rights, it will be mindful of regional
intellectual property laws in which the individuals over its minds constructs are given over a certain
amount of time.
1.7:electronic connectivity
Ans: it is supportive as emails can be used to convey changes and make them documented along with
data transfer
Ans:non certified might misapply software engineering processes and end up making the software in
effective. They could work alongside certified SE and cause problems with disagreeing ideas. They could
be counterproductive with their own ideas of certain concepts and cause pointless confusion and end up
making simpler things more complex
CHAPTER 2:
■ Software processes are the activities involved in producing a software system. Software process
models are abstract representations of these processes. ■ General process models describe the
organization of software processes. Examples of these general models include the waterfall model,
incremental development, and reusable component configuration and integration. Chapter 2 ■
Website 69 ■ Requirements engineering is the process of developing a software specification.
Specifications are intended to communicate the system needs of the customer to the system
developers. ■ Design and implementation processes are concerned with transforming a requirements
specification into an executable software system. ■ Software validation is the process of checking that
the system conforms to its specification and that it meets the real needs of the users of the system. ■
Software evolution takes place when you change existing software systems to meet new requirements.
Changes are continuous, and the software must evolve to remain useful. ■ Processes should include
activities to cope with change. This may involve a prototyping phase that helps avoid poor decisions on
requirements and design. Processes may be structured for iterative development and delivery so that
changes may be made without disrupting the system as a whole. ■ Process improvement is the process
of improving existing software processes to improve software quality, lower development costs, or
reduce development time. It is a cyclic process involving process measurement, analysis, and change.
■ Agile methods are iterative development methods that focus on reducing process overheads and
documentation and on incremental software delivery. They involve customer representatives directly in
the development process. ■ The decision on whether to use an agile or a plan-driven approach to
development should depend on the type of software being developed, the capabilities of the
development team, and the culture of the company developing the system. In practice, a mix of agile
and plan-based techniques may be used. ■ Agile development practices include requirements expressed
as user stories, pair programming, refactoring, continuous integration, and test-first development. ■
Scrum is an agile method that provides a framework for organizing agile projects. It is centered around a
set of sprints, which are fixed time periods when a system increment is developed. Planning is based on
prioritizing a backlog of work and selecting the highest priority tasks for a sprint. ■ To scale agile
methods, some plan-based practices have to be integrated with agile practice. These include up-front
requirements, multiple customer representatives, more documentation, common tooling across project
teams, and the alignment of releases across teams.
CHAPTER 4:
■ Requirements for a software system set out what the system should do and define constraints on its
operation and implementation. ■ Functional requirements are statements of the services that the
system must provide or are descriptions of how some computations must be carried out. ■ Non-
functional requirements often constrain the system being developed and the development process
being used. These might be product requirements, organizational requirements, or external
requirements. They often relate to the emergent properties of the system and therefore apply to the
system as a whole. ■ The requirements engineering process includes requirements elicitation,
requirements specification, requirements validation, and requirements management. ■ Requirements
elicitation is an iterative process that can be represented as a spiral of activities— requirements
discovery, requirements classification and organization, requirements negotiation, and requirements
documentation. Requirements traceability You need to keep track of the relationships between
requirements, their sources, and the system design so that you can analyze the reasons for proposed
changes and the impact that these changes are likely to have on other parts of the system. You need to
be able to trace how a change ripples its way through the system. Why? http://software-engineering-
book.com/web/traceability/ Chapter 4 ■ Website 135 ■ Requirements specification is the process of
formally documenting the user and system requirements and creating a software requirements
document. ■ The software requirements document is an agreed statement of the system requirements.
It should be organized so that both system customers and software developers can use it. ■
Requirements validation is the process of checking the requirements for validity, consistency,
completeness, realism, and verifiability. ■ Business, organizational, and technical changes inevitably lead
to changes to the requirements for a software system. Requirements management is the process of
managing and controlling these changes
REQUIREMENT EPESVC:
Question 4.1: Identify and briefly describe four types of requirements that may be defined for a
computer based system?
Answer 4.1:
• user req
• Functional req
• System req
• Non functional req
User requirements: the requirements are statements in natural language plus diagrams of the service
the system should provide and it’s operational constraints.
Functional requirements: these are the statement of the services the system should provide and how it
would react to a certain input.
System requirements: A structured document setting out detailed descriptions of the systems functions,
services and constraints. It Defines implementation.
Non-functional requirements: Constraints on the services or functions offered by the system such as
timing, development process and standards. Often applied to the whole system
Answer 4.2:
1. How many snaps can the drone take, will it run out of space.
2. Can the ground director change the path mid flight.
3. Can the ground director call it back mid flight.
4. How will the robot prompt the ground director after finding the goal.
5. Can the machine take pictures at night
6. Can more than one objective be set
Question 4.3: rewrite the above description using the structured approach and fix ambiguities.
Answer 4.3:
Description: Drone used during search and recovery to find a certain target/goal.
Action: drone follows set path and takes pictures until set goal is found.
Question 4.4: write set of non-functional requirements for drone, setting safety and response time.
Answer 4.4:
Question 4.5: Using techniques suggested here, where natural language descriptions are presented in
a standard format, write plausible user requirements for the following function.
Answer 4.5:
Gas filling
Example below
Example below
Answer 4.6: It’s important to note sometimes functional and non functional overlap, so to take out
redundancies in order to do that it’s best to create a table
Answer 4.7:
Question 4.8: To minimise mistakes during a requirements review, an organisation decides to allocate
two scribes to document the review session. Explain how this can be done
Answer 4.8:
• Record each defect mentioned and any suggestions for process improvement.
• Often the author plays this role, ensuring log is readable and understandable.
Question 4.9: When emergency changes have to be made to systems, the system software may have
to be modified before changes to the requ irements have been approved. Suggest a model of a
process for making these modifications that will ensure that the requirements docu ment and the
system implementation do not become inconsistent
Answer 4.9:
Question 4.10: You have taken a job with a software user who has contacted your previous employer
to develop a system for them. You discover that your company's interpretation of the requirements is
different from the interpretation taken by your previous employer. Discuss wha t you should do in
such a situation. You know that the costs to your current employer will increase if the ambiguities are
not resolved. Ho wever, you also have a responsibility of confidentiality to your previous employer.
Answer 4.10: