Modern Domain of Software Engineering

Modern Domain of Software Engineering

Software is basically a mathematical entity involving numerous logics and calculations. To provide a solution for repeated actions and making tasks easier, faster and accurate we need an intellectual artifact known as Software. Software Engineering establishes methodologies, processes, standards, organization and management methods, quality assurance to ensure low-cost, high productivity, improve communication and lower risks. Software Engineering is an abstract entity. It has complexity and diversity and difficulty to establish a standard solution for the problem domain. On the other hand physical world could be unpredictable, problem domains could be infinite. It is dependent on the software, hardware, human interaction as well as the environment of the sub system.

Conventional programming methodologies involve: Functional Decomposition, Structured Programming, and Abstract Data Types, Object oriented programming, Component Object Model, Extreme Programming, Agile Methodologies etc. As Software Models: Waterfall, Prototype, Spiral, Incremental are the popular ones to be mentioned. As a part of conventional techniques: Automated Software Engineering, Formal Methods, Component Based models has been adopted to glorify Software Engineering processes and techniques.

We have three major constraints in SE. They are Time (T), Cost (C) and Utility (U). Wang’s first law represents the relationship like this: f1(T-1) + f2(C-1) + f3(U-1) = kU/TC

Also, Workload (W), Labor (L) and duration (T) are being represented being represented by Wang’s 2nd Law: T=W/L

Shortest duration is obtained by:

L0 = SQRT (2/r) [P], where r is the rate of coordination. This means, higher coordination results to a small team. More coordination means less labor or Coordination improves the quality and saves time. In the other hand it can be said that productivity is improved.

This is why the modern domain of software engineering encompasses the whole organization, management and development processes. This technique brings more roles to the SE Process, and thus structure the SE Process System to successfully meet those three SE constraints. The modern domain of software engineering is based upon the following factors[i]:

1. Roles of SE

- Software Development Manager

- SE Process Designer

- SE Environment and Tools Maintainer

- Delivery Systems Manager

- Maintenance Engineer

- System Service Evaluator

- User Problem and Requirement Analyst

- User Development Coordinator

- User Testing Coordinator

- User technical supporter

- Technical Author

- Technical Trainer

- SE Environment and Tools Manager

- SE Methodology Designer

- System Analyst

- Domain Engineer

- Customer Solution Consultant

- Requirement Capture Engineer

- System Architect

- Algorithm Developer

- Programmer

- Software Testing Engineer

- System Integration and Configuration Engineer

- Project manager

- Project-Level Process Designer

- Project Planning and Estimation Engineer

- Project Contract and Requirements Manager

- System Requirement Specification Analyst

- Quality Engineer

- Project Configuration and Documents Manager

- Project team Coordinator

2. Structure of SE Process System

SE process system has 51 processes and 444 BPAs or Base Process Activities. SPRM BPAs is a superset of SPICE, CMM, ISO 9000 and BOOTSTRAP process activities[ii]. BPA terminology is different in different process models. SPICE has 201 base practices (BPs), CMM has key practices (KPs), ISO 9000 has 177 Management Issues (MIs) and BOOTSTRAP has 201 Quality Attributes (QAs).

Structure of SE Process System is divided into three major groups:

- Organization

- Software Development Technology

- Management

Organization:

Organization is divided into three process subsystems of which Organization Structure, Organization Process and Customer Service are the ones to mention. Organization Structure has 2 Processes and 13 BPAs, Organization Process has 2 Processes and 26 BPAs and Customer Service has 4 processes and 42 BPAs.

Software Development Technology:

Development is divided into three process subsystems: SE Methodologies, Software Development and Development Environment. SE Methodologies has 3 Processes and 23 BPAs, Software Development Process has 7 Processes and 60 BPAs and Development Environment has 4 processes and 32 BPAs.

Management:

Development is divided into six process subsystems: Software Quality Assurance [11 Processes and 78 BPAs], Project Planning [4 Processes and 45 BPAs], Project management [6 Processes and 55 BPAs], Contract/Requirement Management [4 Processes and 42 BPAs], Document Management [2 Processes and 17 BPAs] and Human Resource Management [2 Processes and 11 BPAs].



[i] Software Engineering Models, Yingxu Wang, Uuniversity of Calgary, AB

Comments

Popular posts from this blog

Cloud Computing Technology Assessment

Database Testing With DBUnit

Data Science, Big Data & Microsoft Machine Learning