software engineering

What is software? Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.

 What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, and usable. 

What is 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 phrase

What are the fundamental software engineering activities? Software specification, software development, software validation, and software evolution. 

What is the difference between software engineering and computer science? Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software. 

What is the difference between software engineering and system engineering? System engineering is concerned with all aspects of computer-based systems development including hardware, software, and process engineering. Software engineering is part of this more general process. 

What are the key challenges facing software engineering? Coping with increasing diversity, demands for reduced delivery times, and developing trustworthy software.

Two kinds of software products
generic – stand alone computers developed and sold to the open market
customized – developed to suite the requirements/specification of the company.

examples of non-functional requirements are how the system responds to user query and how understandable the program is.

The software product characteristics:
Maintainability – the software should be written in such a way that it can evolve to the changing needs of the end users.
Dependability and security- The software should be not cause any harmful effect during a downtime. there are different characteristics of a dependable system, reliability,safety and security.
Efficiency- software should not make wasteful use of system resources.
Acceptability-Should be accepted by the users that will be managing it. should be understandable,useable and compartible with other systems.

Four activities that are involved in the software system process.

specification
development
validation
evolution

System engineering process is usually a waterfall model that includes, requirment specification, design, development and integration.

what is a system – a purposeful collection of interrelated components working together to achieve a common goal.

Emergent properties – these are properties of the system as a whole rather than properties that can be derived from the individual components of the system.e.g overall weight of the system,reliability of the system,usability of the system.

Functional Properties – when all parts of a system work together to achieve some objective, e.g automated attendance for students.
non-functional Properties – these include reliability, performance,safety and security

system failures often occur because of the unforeseen interrelationship between the system components.

influences on reliability, the environment in which a system is installed can affect its reliability.
hardware reliability
software reliability
operator reliability

The “shall not” properties of a system include properties that the system should not exhibit such as safety(should not behave in an unsafe manner),security(should not grant access to unauthorized persons). These properties are hard to measure when compared with reliability and [performance.

Human and organizational factors that affect a system
job change,process change, organisational change.

System architecture modelling – represents an abstract view of the subsystems making up a system.

Functional system components.
sensor- collects information from a systems environment
actuator – triggers changes to the system environment.
computation – carry out some computation on input and output.
coordination- coordinates the interactions with other system components.
communication – allows system components to communicate with each other.
interface – facilitates the interactions of other system components.

*****look at the notes for the sys engineering process diagram*****
requirement definition – system design – sub-system development – system integration – system installation – system  evolution – system decommissioning.

System requirement definition
-abstract functional requirements
-system properties – non-functional requirements for the system in general.
-undesirable characteristics, these are usually specified by the user.
when defining the system requirements, we should also include the organisations objectives.

system design process
Partition requirements – identify the sub-systems-assign requirements to sub-systems-specify the subsystems functionality- define the subsystems interfaces.

system procurement process

off the shelf system available
survey market for existing systems- adapt requirements-choose system-issue request for bid- choose supplier.

bespoke
survey market for existing systems -issue request to tender – select tender- negotiate contract- let contract for development