Software Design and Implementation and Communication Flashcards
What is Software Design and Implementation
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.
What does an Object-Oriented System consist of and what is OO Design’s purpose?
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.
What is the OO design process and what are some common design activities?
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
What is OO Design and is system modelling cost effective?
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.
Why is it important to understand the relationships between software and its environment?
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.
Why is it important to understand system context and what are the different models associated with system context and interactions?
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
What is architectural design and what does it consist of.
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 .
What to model as an object/class and the approaches to gain a deeper understanding?
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.
What would be the object/class identification of a weather station system.
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.
Object Class identification
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 do system design models represent both the components of a system and the interactions between them over time?
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.
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
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
What are the key implementation issues when developing software?
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.
What are the levels that software can be reused?
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.
What are the reuse costs
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.
What is configuration management and what does it aim to do.
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.
What are the three configuration management activities.
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.
What is Host-Target Development
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.
What is Open Source Development?
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.
What are some Open Source Systems?
Open Source Systems include Linux Operating Systems as well as Java, Apache Web Server and mySQL database management system.
What is Open source business?
It is when the business model of the business is not reliant on selling a software product by on selling support for that product.
What are the group dynamics and psychology faced in software engineering?
Dynamics of working in teams and groups
Individual cognition
Cognitive problem complexity
Interacting with stakeholders
Dealing with uncertainty and ambiguity
Dealing with multicultural environments
What are the communication skills needed specific to software engineering?
Reading, understanding and summarized reading of source code and documentation
Writing reports, evaluations, and justifications
Team and group communication
Presentation Skills
What are the benefits of good communication
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.