3 answers
Updated
1142 views
What are the characteristics of someone in software?
What are the characteristics of software?
3 answers
Updated
Stephen’s Answer
Software is very simple at the most basic level: it is a set of instructions that tells some sort of device exactly what to do. It can range anywhere from an automotive control module unlocking door locks when a button is pushed, to a sophisticated computer program running on a cloud server which allows you to download and store a file to your local computer when you click on a link in a web browser… and anything in between.
Updated
Wojciech’s Answer
Some characteristics of software are:
intangibility: software is a non-physical product, universality: software can be used on any device compatible device, modifiability: software can be modified (change its functionality or to fix errors), durability: software does not wear out or deteriorate over time, but it can become outdated, transferability: software can be easily copied, dependability: Software must be reliable, secure, and meet specified requirements to ensure it performs its intended functions, complexity: software can be complex and difficult to understand, especially for non-technical users.
intangibility: software is a non-physical product, universality: software can be used on any device compatible device, modifiability: software can be modified (change its functionality or to fix errors), durability: software does not wear out or deteriorate over time, but it can become outdated, transferability: software can be easily copied, dependability: Software must be reliable, secure, and meet specified requirements to ensure it performs its intended functions, complexity: software can be complex and difficult to understand, especially for non-technical users.
Updated
William’s Answer
The characteristics of good software in general are best summarized by object orientated principles, and the "S.O.L.I.D." principles as described by Robert Martin.
The object orientated principles are Encapsulation, Abstraction, Inheritance, and Polymorphism.
Encapsulation means the data inside a class is private and can only be accessed through the methods of the class.
Abstraction means classes should serve a generic purpose. For example, you might have a "Car" class with data properties "Maker" and "Model." Then there could be an instance of the class where Maker = Toyota and Model = Prius. You would not want to have a ToyotaPrius class.
Inheritance means one class can inherate the methods and data properties of another class. For example, you might have a "Vehicle" class the "Car" class would inherite the "Vehicle" class.
Polymorphism means different behaviors can be achieved with the use of Interfaces and/or abstract classes. For example, you could have a list with type "Vehicle" and add "Car" and "Motorcycle" and "Truck" objects to the same list.
Single Responsibility: You should never have a method called "doXandY" - have separate "doX" and "doY" methods. Also, all of the methods in a class should be related so that the class only serves one purpose.
Open–closed: Classes should be open for extension, but closed for modification. This preserves the software architecture, including Single Responsibility principle.
Liskov substitution: This principle is named for computer scientist Barbara Liskov. It says child classes can be substituted for their parent class, aka polymorphic inheritance.
Interface segregation: clients should not be forced to implement interfaces or methods they do not use. In practice this means software developers should break down large interfaces into smaller, more specific ones, so that clients only need to depend on the interfaces that are relevant to them. This makes code more modular and easier to maintain.
Dependency Injection: We change the data the application depends on by injecting a different class that implements the same interface.
The object orientated principles are Encapsulation, Abstraction, Inheritance, and Polymorphism.
Encapsulation means the data inside a class is private and can only be accessed through the methods of the class.
Abstraction means classes should serve a generic purpose. For example, you might have a "Car" class with data properties "Maker" and "Model." Then there could be an instance of the class where Maker = Toyota and Model = Prius. You would not want to have a ToyotaPrius class.
Inheritance means one class can inherate the methods and data properties of another class. For example, you might have a "Vehicle" class the "Car" class would inherite the "Vehicle" class.
Polymorphism means different behaviors can be achieved with the use of Interfaces and/or abstract classes. For example, you could have a list with type "Vehicle" and add "Car" and "Motorcycle" and "Truck" objects to the same list.
Single Responsibility: You should never have a method called "doXandY" - have separate "doX" and "doY" methods. Also, all of the methods in a class should be related so that the class only serves one purpose.
Open–closed: Classes should be open for extension, but closed for modification. This preserves the software architecture, including Single Responsibility principle.
Liskov substitution: This principle is named for computer scientist Barbara Liskov. It says child classes can be substituted for their parent class, aka polymorphic inheritance.
Interface segregation: clients should not be forced to implement interfaces or methods they do not use. In practice this means software developers should break down large interfaces into smaller, more specific ones, so that clients only need to depend on the interfaces that are relevant to them. This makes code more modular and easier to maintain.
Dependency Injection: We change the data the application depends on by injecting a different class that implements the same interface.
Delete Comment
Flag Comment
Delete Comment
Flag Comment