Chapter 3 Flashcards
How was software designed traditionally?
- designed to run as standalone applications that run on desktops or simple client- server applications.
- applications were developed by software engineering teams
- applications were packaged and deployed to be installed at the customer sites
- applications were managed by the system administrators who are also IT professionals, in the customer organization.
How is software used/designed now?
- most applications are being hosted in the cloud,
- are accessed by a client (mobile or browser-based) applications
- Software that is embedded in devices are also still common, but they also operate differently from traditional applications.
What are some types of modern software applications?
- Hosted applications
- Mobile Applications
- Embedded applications
How do hosted applications work?
- run on servers, that are managed by the developers themselves
- users access the application as software as a service (SAS) model.
- software may run on a dedicated set of servers owned by the service provider (e.g. Google, Facebook), or they may be hosted in third party cloud computing services such as Amazon.
What are the benefits of a hosted application?
The level of control the application developers have; application developers can change the server software as they wish because this does not require sending updates to customers
What are mobile applications?
These are programs that are installed on mobile devices.
How do mobile applications work?
- generally access a remote server for data and business logic, while the application running on the user device provides the basic user interface.
- Users download and install such applications through an application store,
- application developers upload new versions of the software to a application store.
- developers have to comply with a some type of process to upload new versions of the software to the application store.
What are embedded applications?
These are applications that run on electronics devices, such as wearables, automo- biles, and medical devices.
How do embedded applications work?
- Traditionally: software was installed once and did not change during the lifetime of the device.
- Now: embedded software available modern devices can be updated through over-the- air (OTA) update capabilities, and therefore, today this type of software is also deployed and managed different from the traditional embedded software.
Define formal software engineering
- The philosophy that we need to exercise control over all aspects of the project.
- are sometimes called the prescriptive processes because they prescribe what must be done in order to achieve project outcomes.
Define Agile software engineering
- The philosophy that we need to primarily exercise control over the outcomes of a project and guarantee that what is developed satisfies the outcomes.
- sometimes called the reactive pro cesses because they react to the project circumstances.
What activities or phases constitute a software project?
- Requirements engineering
- Systems/architectural design
- detailed design
- Implementation
- Integration
- Testing
- Delivery and release
- Maintenance
Define requirements engineering
eliciting the requirements for the system, analysing and defining these requirements
using models, and validating the requirements.
Define systems/architectural design
defining the sub-systems (or components) within the system, and the relationships between them.
Define detailed design
defining the behaviour of the components to fulfil the functional requirements.
Define Implementation
programming the detailed design in some language.
Define Integration
integrating the programmed parts with respect to the architecture.
Define Testing
running executable tests on the programs in an attempt to find faults. Testing can take several forms, includ- ing:
What are the 4 main types of testing?
- unit testing
- Integration testing
- system testing
- acceptance testing
Define unit testing
tests the behaviour of individual components against their design;
Define Integration testing
tests the behaviour of the sub-systems of components against the design;
Define system testing
tests the behaviour of the system as a whole against the requirements
Define acceptance testing
Tests that the system as a whole against the expectations of the customer or user.
Define Delivery and release
packaging the software in an accessible manner and with useful documentation.
Define Maintenance
modifying the software to fix faults or to provide new requirements — sometimes a new project life
cycle in its own right.
Is there a strict order in the phases that constitute a software project?
No. different SDLC models offer different orderings and rationales for these orderings.
(For example, while testing is performed on the implemented software, some lifecycle models specify that the test phase begins before implementation, as some test cases can be defined as soon as the software requirements specification is complete.)
How do we go about designing a process to meet a goal?
start with the lifecycle model and then add in any activities for special requirements.
(for example, if we require high reliability then we may begin with an iterative process, but add prototyping, random testing, and reliability measurement to the generic template, such as the modified iterative process model)
The next step is to think about each of the activities in turn and ask the following questions:
- What steps do we need to take to produce the outputs from the inputs?
- What techniques and tools can be applied?
What is an example of steps we can take to produce outputs from inputs?
we can break the requirements activity into elicitation, analysis, specification and validation activities.
What are the 2 main types of processes?
Generally, we can identify two types of processes: within phase and across phase processes. Much of the study of software engineering is in the processes, tools and techniques required to develop specific kinds of system.
What are examples of techniques and tools that can be applied when designing a process to meet a goal?
interviewing, brainstorming, and focus groups