SOFTWARE ENGINEERING 101

with No Comments

• Software Process and Measurement

Software measurement is a quantified attribute (see also: measurement) of a characteristic of a software product or the software process. It is a discipline within software engineering. The content of software measurement is defined and governed by ISO Standard ISO 15939 (software measurement process).
https://en.wikipedia.org/wiki/Software_measurement

1. Requirement Engineering
Requirements analysis, also called requirements engineering, is the process of determining user expectations for a new or modified product. These features, called requirements, must be quantifiable, relevant and detailed. In software engineering, such requirements are often called functional specifications.
https://searchsoftwarequality.techtarget.com/definition/requirements-analysis
cpre

2. Software Architecture
Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. These structures are needed to reason about the software system.
https://en.wikipedia.org/wiki/Software_architecture

3. Testing, Verification and Validation
Software verification and validation. In software project management, software testing, and software engineering, verification and validation (V&V) is the process of checking that a software system meets specifications and that it fulfills its intended purpose. It may also be referred to as software quality control.
https://en.wikipedia.org/wiki/Software_verification_and_validation
ctfl

4. Quality, Metrics and Measurement
A Metric is a quantitative measure of the degree to which a system, system component, or process possesses a given attribute. Metrics can be defined as “STANDARDS OF MEASUREMENT”. Software Metrics are used to measure the quality of the project
www.softwaretestinghelp.com/software-test-metrics-and-measurements/

5. Maintenance and Evolution
Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing software initially, then repeatedly updating it for various reasons
https://en.wikipedia.org/wiki/Software_evolution

6. Security, Safety and Reliability
software reliability, i.e., an extremely high confidence in the ability of the software to perform flawlessly. to prove and ensure the correctness of software’s functioning.

• Software Approach

1. Agile Software Development
Agile software development describes an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s).
https://en.wikipedia.org/wiki/Agile_software_development

2. Empirical Software Engineering
Research area concerned with the empirical observation of software engineering artifacts and the empirical validation of software engineering theories and assumptions. Subfields of software engineering that are accustomed to empirical research comprise software evolution, software maintenance and mining software repositories.
https://www.monperrus.net/martin/introduction-to-empirical-software-engineering.pdf

3. Object and Component-Based Software Engineering
Component-based software engineering (CBSE), also called as component-based development (CBD), is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a given software system.
https://en.wikipedia.org/wiki/Component-based_software_engineering
Object-oriented software engineering. Object-oriented software engineering (commonly known by acronym OOSE) is an object-modeling language and methodology. OOSE was developed by Ivar Jacobson in 1992 while at Objectory AB. It is the first object-oriented design methodology to employ use cases to drive software design.
https://en.wikipedia.org/wiki/Object-oriented_software_engineering

4. Cloud-Based Software Engineering
Cloud computing can enable or facilitate software engineering activities through the use of computational, storage and other resources over the network. Organizations and individuals interested in cloud computing must balance the potential benefits and risks which are associated with cloud computing. It might not always be worthwhile to transfer existing services and content to external or internal, public or private clouds for a number of reasons. Standardized information and metrics from the cloud service providers may help to make the decision which provider to choose. Care should be taken when making the decision as switching from one service provider to another can be burdensome due to the incompatibilities between the providers. Hardware in data centres is not infallible: the equipment that powers cloud computing services is as prone to failure as any computing equipment put to high stress which can influence the availability of services.
https://tuhat.helsinki.fi/portal/files/28513674/cbse13_proceedings.pdf

5. Web-Based Software Engineering
Web-based software engineering process management. It is well known that a sound software process is the basis for a successful software project. The paper discusses the development of a Web-based software process management and monitoring tool designed to assist in producing better software projects.
. eeexplore.ieee.org/document/667442/

6. Agent-Based Software Engineering
Agent-Oriented Software Engineering (AOSE) is a new software engineering paradigm that arose to apply best practice in the development of complex Multi-Agent Systems (MAS) by focusing on the use of agents, and organizations (communities) of agents as the main abstractions
https://en.wikipedia.org/wiki/Agent-oriented_software_engineering

7. Distributed and Parallel Software Engineering
Distributed computing is a field of computer science that studies distributed systems. A distributed system is a model in which components located on networked computers communicate and coordinate their actions by passing messages. The components interact with each other to achieve a common goal.\
https://en.wikipedia.org/wiki/Distributed_computing
Parallel computing makes use of concurrency to reduce the runtime, increase the throughput, or improve the fault tolerance of a computational process.

8. Knowledge-Based Software Engineering
Knowledge-based engineering (KBE) is the application of knowledge-based systems technology to the domain of manufacturing design and production. Knowledge-based software engineering emphasizes the fact that creating software is a knowledge-intensive activity, and proposes that making more knowledge available will facilitate the timely production of high-quality software
9. Intelligent Software Engineering
Synergy between Artificial Intelligence and Software Engineering.

10. Software Reuse
Code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software, following the reusability principles.
https://en.wikipedia.org/wiki/Code_reuse

11. Formal Methods
In computer science, specifically software engineering and hardware engineering, formal methods are a particular kind of mathematically based techniques for the specification, development and verification of software and hardware systems. https://en.wikipedia.org/wiki/Formal_methods

12. Context-Aware and Adaptive System
Context-aware software systems and adaptive software systems sense changes in their environments, and respond by changing their behavior and/or structure appropriately. Adaptive systems in contrast focus on how the system responds to an unanticipated environmental change.
https://link.springer.com/chapter/10.1007/978-1-4939-1887-4_5

13. Mobile and Ubiquitous Software System
Ubiquitous computing. Ubiquitous computing (or “ubicomp”) is a concept in software engineering and computer science where computing is made to appear anytime and everywhere. In contrast to desktop computing, ubiquitous computing can occur using any device, in any location, and in any format. Often considered the successor to mobile computing, ubiquitous computing and, subsequently, pervasive computing, generally involve wireless communication and networking technologies, mobile devices, embedded systems, wearable computers, RFID tags, middleware and software agents
https://en.wikipedia.org/wiki/Ubiquitous_computing

• Application for Priority Sectors

1. Society
2. Agriculture
3. Tourism
4. Smart City
5. Industry 4.0
6. Big Data Analytic
7. Virtual and Augmented Reality
8. Cybersecurity
9. Image Processing

• Software Tools and Environment

1. Project Management
Software project management is an art and science of planning and leading software projects. It is a sub-discipline of project management in which software projects are planned, implemented, monitored and controlled
https://en.wikipedia.org/wiki/Software_project_management

2. Data Warehouse
the data warehousing concept was intended to provide an architectural model for the flow of data from operational systems to decision support environments. The concept attempted to address the various problems associated with this flow, mainly the high costs associated with it
https://en.wikipedia.org/wiki/Data_warehouse

3. CASE tools
Computer-aided software engineering (CASE) is the domain of software tools used to design and implement applications. … CASE software is often associated with methods for the development of information systems together with automated tools that can be used in the software development process.
https://en.wikipedia.org/wiki/Computer-aided_software_engineering

4. Standard and Legal Issues
frameworks for ICT policy: government, social and legal issues
legal issues with mixed source software in a commercial environment
assurance
compliance

Leave a Reply