Engineering Discipline in Software
October 25, 2009 by admin
Filed under Software Development
Software is being developed to address the problems of business-related functionalities of the modern world. How these software products are being developed is only made known to the developer. However, only one thing is for sure, the utilization of the software solution will be beneficial to the target end-users.
Software development involves a series of activities, which are undergone by software developers who determine the specifications, purpose, and design of the solution. Software development may be also referred to as the process of writing and/or maintaining source codes.
A software development process is a structure which is imposed to develop a software product. Synonymous to software life cycle and software process, several models describing different approaches to a wide variety of tasks are undertaken.
Contemporary software firms adopt different or even fused software development methodologies to structure, plan, and control the development process of the overall system. Among these methodologies, five are popularized:
- Structured programming – deals with the correct usage of a block structure, procedure call statements, and loops construction. This simply means the flow of control.
- Object-oriented programming (OOP) – manages with the complexity of software by packaging code and the data to which the code refers. Sometimes, real-world objects and processes are modeled as software objects, unlike with how we deal with the physical objects.
- Design patterns – the use of design patterns has been based on observations that some software projects fail while those similar projects are successful. Design patterns for specific tasks are commonly used for successful projects repetitiously.
- Extreme programming (XP) – based on identifying and concentrating on the development and deployment of what the client needed most. This method is especially effective in a complex system yet not well-agreed upon requirements.
- Aspect-oriented programming (AOP) – separates concerns of different modules of a software system. It is accomplished through allowing software developers to tap method calls and let an auxiliary code be executed before and/or after the method calls. It is sometimes referred to as the modular approach.
The adoption of software development models is favored by most of the software firms. These models are as follows:
- System Development Life Cycle (SDLC)
This model is also known as Waterfall Method or Classic Life Cycle (CLC) Model or Linear Sequential Model. The following are the activities involved:
→ System Engineering and Modeling
All the required elements of the system are established. Further, the subsets of these requirements shall be allocated to software.
Output: Requirements
→ Software Requirements Analysis
This is referred to as the feasibility study. Development team studies the system and investigates the system for the possibility or the need of software automation.
Input: Established requirements
Output: Software Requirements Specifications (SRS)
→ System Analysis and Design (SAD)
Defines the overall software structure and nuances.
Input: SRS
Output: Design documents – Basic Design (BD), Detailed Design (DD)
→ Code Generation
This is the translation of the design into a machine-readable language.
Input: BD, DD
Output: Source code
→ Testing
Find bugs that were not detected in the previous phases.
Input: BD, DD
Output: Test results
→ Maintenance
Changes in specifications over time after software deployment happen; therefore, the software must be designed in such a way that posts implementation period changes can be accommodated.
- Prototyping
This is just like the linear model, only it is the cyclic version. Once the analysis of requirements is done and the prototype design is decided, the development process starts. Once the prototype is created, evaluation is done by the client and feedbacks are being sent back for the refinement of the software product by the developer in accordance with the customer’s exact specifications. The final software package will be deployed after a series of iterations. Thus, software evolves as a result of recurring information shuttling between the client and the developer.
- Rapid Application Development (RAD)
This model emphasizes on minimal planning in favor of rapid prototyping. Rapid development is achieved through a component-based construction approach. The phases include:
→ Business Modeling
→ Data Modeling
→ Process Modeling
→ Application Generation
→ Testing and turnover
- Component Assembly
The OOP paradigm, which emphasizes on the encapsulation of data and algorithm for data manipulation, provides a technical framework for a component-based process model. Component assembly model can result to software extensibility through reusability. The integration of the available software components accelerates the software development process.

