Software Design and Implementation and Communication Flashcards

1
Q

What is Software Design and Implementation

A

Software design is a creative activity, to identify software components and their relationships and is based on customer’s requirements.

Implementation is to realise the design as a program.

Software design the implementation and interleaved activities.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What does an Object-Oriented System consist of and what is OO Design’s purpose?

A

An OO system consists of interacting objects that maintain their own local state and provide operations on that state.

OO design intends to design object classes and their relationship.

During program execution, objects are created dynamically from the class definitions.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is the OO design process and what are some common design activities?

A

The OO design process is the idea to design software in a methodical way. Using UML as notation for a range of system models. There are many different software development processes.

Common design activities

Understand the context and the interactions and the system.

Design the system architecture

Identify the principal objects in the system.

Develop models

Specigy interfaces

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is OO Design and is system modelling cost effective?

A

It is a creative process so it is often not clear-cut or sequential it involves gathering ideas, proposing and refining solutions and also back tracking and retrying

System modelling requires a lot of effort for development and maintanence so for small systems it may not be cost-effective but for large systems, design modesl are an important communication mechanism.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Why is it important to understand the relationships between software and its environment?

A

It is needed to learn about the relationships between the software that is being designed and its external environment, to decice how to proivde the required system functionality and how to structre the system to communicate with its environment.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Why is it important to understand system context and what are the different models associated with system context and interactions?

A

Understanding the context also lets you establish the boundaries of the system so which features are implemented in the system and which features are in other associated systems.

System Context Model which is a structural model that demonstrates the other systems in the environment of the system being developed.

Interaction model is a behavioral model that shows how the system interacts with its environment as it is used.

Example: Use case diagram, scenario

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is architectural design and what does it consist of.

A

The architectural design is the next step after the definition of the interactions between the software system and its environment.

Identifying the major components that make up the system and their interactions.

Organise the components using an architectural patterns such as layered or client-server model .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What to model as an object/class and the approaches to gain a deeper understanding?

A

The Grammatical Approach sees the nouns in the description of they system would be the classes and objects.

Identifying tangible things in the application domain

Behavioral approach involves identifying objects based on what participates in what behaviour

Scenario-based analysis involves the objects, attributes and methods in each scenario are identified.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What would be the object/class identification of a weather station system.

A

The object/class identification in this example is based on the tangible hardware and data in the system.

Ground thermometer, anemometer, barometer are application domain objects that are ‘hardware’ objects which are the instruments of the system.

The weather station class is the basic interface of the weather station to its environment. It therefore reflects the interactions identified in the use-case model.

Weather data encapsulates the summarized data from the instruments.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Object Class identification

A

Identifying object classes is often a difficult part of object-oriented design.

There is no ‘magic formula’ for object identification. It relies on the skill, experience and domain knowledge of system designers.

Object identification is an iterative process. You are unlikely to get it right first time.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

How do system design models represent both the components of a system and the interactions between them over time?

A

Through Structural models which describe the components of the system in terms of object classes and relationships

Through Behavioural models they describe the interactions between objects or evolution of a system over time.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Discuss the significance of specifying object interfaces in system design and how UML class diagrams are utilized for this purpose, while noting the implications of interface abstraction on parallel development and method representation

A

Object interfaces need to be specified so that the objects and other
components can be designed in parallel

Interfaces do not show the attributes of an object. So, interface designers
are not concerned with modelling the data representations used in an
object.

Objects may have several interfaces which are viewpoints on the methods
provided

The UML uses class diagrams for interface specification

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the key implementation issues when developing software?

A

Reuse:
Most modern software is made by reusing existing software components, when developing software make as much use of existing code.

Configuration:
During development process, you have to keep track of the many different versions of each software component in a config management system.

Host-target development
Prod software does not usually execute on the same computer as the software dev environment. Rather, you develop it on one computer and execute it on a separate computer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What are the levels that software can be reused?

A

Abstraction level - This level you don’t reuse software directly but use knowledge of successful abstraction in the design of your software

Object level - This level, you directly reuse objects from a library rather than writing code yourself

Component level - Components are collections of objects and object classes that you reuse in application systems.

System level - At this level you reuse entire application systems.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What are the reuse costs

A

Costs of time spent looking for software to reuse.

Buying reusable off-the-shelf software is very expensive.

The costs of adapting and configuring the reusable software components or systems to reflect the requirements of the system that you are developing.

The costs of integrating reusable software elements with each other and with new code that you have developed.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What is configuration management and what does it aim to do.

A

Configuration management is the process of managing a changing software system and coordinating the changes made by different people.

The aim is to support the system integration process so that developers can access the project code and documents in a controlled way and can find out what changes have been made and can compile and link components to create a system.

17
Q

What are the three configuration management activities.

A

Version Management is where support is provided to keep track of the different versions of software components and systems include facilities to coordinate development by several programmers.

System Integration is where support is provided to help developers define what versions of components are used to create each version of a system.
This description is then used to build a system automatically by compiling and linking the required components.

Problem tracking is where support is provided to allow users to report bugs and other problems, and to allow all developers to see who is working on these problems and when they are fixed.

18
Q

What is Host-Target Development

A

Most software is developed on one computer but runs on a separate machine for execution.

It consists of the development platform and execution platform, the platform is more than just hardware, it includes the installed OS plus other supporting software such as a database management system or, for development platforms, an interactive development environment. You can simulate the execution platform on the development platform.

The development platform usually has different installed software than the execution platform. These platforms may have different architectures.

19
Q

What is Open Source Development?

A

Open Source Development is an approach to software dev in which the source code of a software system is published and volunteers are invited to participate in the dev process.

20
Q

What are some Open Source Systems?

A

Open Source Systems include Linux Operating Systems as well as Java, Apache Web Server and mySQL database management system.

21
Q

What is Open source business?

A

It is when the business model of the business is not reliant on selling a software product by on selling support for that product.

22
Q

What are the group dynamics and psychology faced in software engineering?

A

Dynamics of working in teams and groups

Individual cognition

Cognitive problem complexity

Interacting with stakeholders

Dealing with uncertainty and ambiguity

Dealing with multicultural environments

23
Q

What are the communication skills needed specific to software engineering?

A

Reading, understanding and summarized reading of source code and documentation

Writing reports, evaluations, and justifications

Team and group communication

Presentation Skills

24
Q

What are the benefits of good communication

A

Building personal networks with colleagues and recruiters

Informed decisions, use of collective expertise. Reduction of programming errors. Clearer project objectives, better understanding of requirements, faster product delivery, higher client trust and satisfaction and higher creativity.

25
Q

What does Good Communication consist of?

A

Purpose and clarity, the communication needs to have purpose, tickets need to be detailed, and asking for clarification and confirmation.

Actively listening to others

Emotions/attitude, approaching others in a humble way and keep cool when under pressure from deadlines

Suitable Communication Channels

Good tool usage so using PM tools, Version Management, forums and IDE’s)

Face-to-Face communication is very effective it is better than video calling as others cannot overhear that communication.

Documentation

So taking meeting minutes and writing code comments to explain purpose of class and functions.

26
Q

What kind of Team Conflicts are there?

A

Task-based conflicts, leadership conflicts, work-style conflicts and personality conflicts.

27
Q

What are the triggers of conflicts?

A

Communication Differences, Opaque performance standards
Unreasonable time constraints
Unclear Expectations

28
Q

Name the clear channels of communication based on the severity or context of the matter.

A

Use emails when response is not urgent

For real-time response use phone call or instant messenger

For sensitive or complex topics with high conflict potential choose a personal meeting.

29
Q

What can you do about transparency of performance expectations

A

Prioritise expectations considering the bigger picture

Using tools like trello to track and assign tasks.

Engage in a dialogue to agree on a few realistic goals

30
Q

What can you do about time management and role expectations.

A

Tracking the time spent on a task

Reflect on spent time so identify any potential to work more efficiently, also reflect upon why the time is being spent and were the tasks planned in advance.

Tasks and role expectations need to be clearly communicated and mutually accepted, don’t assume blindly that an important task will be done by somebody else, team writes guides about communication and task assignments throughout the team.

31
Q

What can you do about following procedures?

A

Identify the conflict, communicate, acknowledge the conflict, follow procedures and follow up.

32
Q

Conflict resolution strategies

A

Competing, so defending a position you think is right.

Accommodating, so follow somebody else’s idea

Avoiding, so postponing an issue to a better time, being diplomatic or withdrawing from a situation and not doing a job.

Collaborating, so exploring the root of the conflict, learn from differing viewpoints, attempt to a find a solution that benefits everybody.

Compromising, so finding a middle-ground, interpolate between solutions and trade-off various aspects of the conflict.

33
Q

Project Communication Management

A

State the communication goals

Identify the stakeholders

Understand their communication needs, expectations, and influence

Develop communication plan

Define communication channels

34
Q

Types of Communication

A

Interactive such as personal meetings

Push Communication such as faxes, letters and emails

Pull Communication, info is stored in a central repo, where stakeholders can access it when needed

Electronic Communication. use of online or intranet tools to share info

Easy project tracking and effective knowledge dissemination.

Face-to-Face is essential for gauging feelings and ensuring effective message reception.

Boosts morale, supports innovation, contribution to shared goals.

35
Q

What are the Key Points of Communication?

A

Communication is important in software engineering

It takes work to achieve good communication so having emotional intelligence and tool usage and documentation.

Conflicts are natural, so there are reasons for conflicts, there are ways to avoid unnecessary conflicts, some conflicts have the potential to let you gain.

Communication can be manage, as one can learn about how communication is structured, and there are systematic processes to improve communication.