Introduction of Software Product and Process
Software engineering is the establishment and sound engineering principles applied to obtain reliable and efficient software product in an economical manner. Software engineering includes process, management techniques, technical methods, and the use of tool. While building any software, the software process provides the interaction between user and developer. In this chapter we will understand the basic concept of process and process models. We will discuss how to use various life cycle models for building qualitative software in an economic manner. Finally, we will focus on system engineering.
- Software engineering is a layered technology. Any software can be developed using these approaches. Various layers on which the technology is based are quality focus layer, process layer, methods layer, tools layer.
- A disciplined quality management is a backbone of software engineering technology.
- Process layer is a foundation of software engineering. Basically, process defines the framework for timely delivery of software.
- In method layer the actual method of implementation is carried out with the help of requirement analysis, designing, coding using desired programming constructs and testing.
- Software tools are used to bring automation in software development process. Thus software engineering is a combination of process, methods and tools for development of quality software.
The software process is characterized by process framework activities, task sets and umbrella activities.
Process Framework Activities
Communication : By communicating customer requirement gathering is done.
Planning : Establishes engineering work plan, describes technical risks, lists resource requirements, work products produced and defines work schedule.
Modelling : The software model is prepared by:
- Analysis of requirements
Construction : The software design is mapped into a code by :
- Code generation
Deployment : The software delivered for customer evaluation and feedback is obtained.
Task Sets : The task set defines the actual work done in order to achieve the software objective. The task set is used to adopt the framework activities and project team requirements using
- I collection of software engineering work tasks
- Project milestones
- Software quality assurance points.
The umbrella activities occur throughout the process. They focus on project management, tracking and control. The umbrella activities are
- Software project tracking and control– This is an activity in which software team can assess progress and take corrective action to maintain schedule.
- Risk management The risks that may affect project outcomes or quality can be analyzed.
- Software quality assurance These are activities required to maintain software quality.
- Formal technical reviews– It is required to assess engineering work products to uncover and remove errors before they propagate to next activity.
- Software configuration management – Managing of configuration process when any change in the software occurs.
- Work product preparation and production – The activities to create models, documents, logs, forms and lists are carried out.
- Reusability management It defines criteria for work product reuse.
- Measurement In this activity, the process can be defined and collected. Also project and product measures are used to assist the software team in delivering the required software.
Capability Maturity Model (CMM)
- The Software Engineering Institute (SEI) has developed a comprehensive process meta-model emphasizing process maturity. It is predicated on a set of system and software capabilities that should be present when organizations reach different levels of process capability and maturity.
- The Capability Maturity Model (CMM) is used in assessing how well an organization’s processes allow to complete and manage new software projects.
- Various process maturity levels are
Level 1: Initial Few processes are defined and individual efforts are taken.
Level 2: Repeatable to track cost schedule and functionality basic project management processes are established. Depending on earlier successes of projects with similar applications necessary process discipline can be repeated.
Level 3: Defined – The process is standardized, documented and followed. All the projects use documented and approved version of software process which is useful in developing and supporting software.
Level 4: Managed Both the software process and product are quantitatively understood and controlled using detailed measures.
Level 5: Optimizing – Establish mechanisms to plan and implement change. Innovative ideas and technologies can be tested. Thus CMM is used for improving the software project.
Process Pattern – Software Product and process
As we know, process is defined as a series of activities in which one or more inputs are used to produce one or more outputs. Now in this section we will discuss one more important concept that is process pattern. The process pattern is a template which appears as a general solution to a common problem. Process pattern acts as a consistent method for describing an important characteristic of software product and process Using process pattern we can easily build the process that satisfies all the requirements.
- Complete process
- Important framework activity
- Task within the framework activity
Scott Ambler – An object oriented consultant has proposed a template for process pattern as follows
- Pattern name
- Initial context
- Resulting context
- Known uses
The description of process pattern is as follows –
Pattern name The pattern name should be a meaningful name given to-the pattern. From pattern name one can guess its functionality.
Intent – The objective or the purpose of the pattern should be described here.
Туре – The type of pattern should be specified here. Ambler has suggested three types of patterns
1) Task Pattern – It represents the software engineering action or work task which is a part of process. For example Formal Technical review is a task pattern.
2) Stage Pattern – It defines the process framework activity. A framework activity has multiple work tasks; hence stage pattern consists of multiple task patterns. For example Coding phase is a stage pattern.
3) Phase Pattern – It defines the sequence of framework activities. For example the phase pattern can be spiral model or rapid prototype model.
Initial context : in this section the conditions under which the pattern applies are described. Sometimes the entry conditions must be true before the process begins. In this section following issues need to described.
- The set of organizational or team related activities that have already occurred.
- The list of entry state processed.
- Already existing software engineering or project related information.
Under this section the problem is mentioned for which the pattern is to be described. For example insufficient requirements is a problem. That means customers are not sure about what they want exactly. They could not specify the requirements in proper manner.
Every problem for which pattern has to be described should be accompanied with some solution. For example: The problem of insufficient requirements has solution. That is Establish effective communication with the customer. Ask questions in order to obtain meaningful requirements. Conduct timely reviews to modify/redefine the requirements. This solution will help the software developer to get useful information before the actual work starts.
It describes the results after successful implementation of pattern. The resulting context should have following type of information on successful completion of pattern.
- The team related or organizational activities that must have occurred.
- Exit state for the process.
- The software engineering information or project information that has been developed.
The specific instances or applications in which the described pattern is useful should be mentioned under this section. In other words we describe applicability of the pattern. For example spiral model is useful for the large scale projects in which work products must be examined in several iterations.
Normally process is suffered by following problems –
- The software has to be delivered on time.
- The software should satisfy customer needs and requirements.
- The software should possess the long term quality characteristics. Process assessment is an activity in which it is ensured whether the software meets the basic criteria for successful software engineering project.
Following approaches are used for software assessment –
Standard CMMI assessment method for process improvement
It is a five step process assessment model. These five steps are initiating, diagnosing, establishing, acting and learning. This model makes use of SEI CMM as the base model.
CMM-based appraisal for internal process improvement
This method provides the diagnostic technique for internal process assessment.
Using this standard all the requirements are analyzed for software process assessment. This standard helps in doing an objective evaluation on efficiency of any process.
This is a popularly used standard for improving the overall quality of the organization. The International Organization for Standardization i.e. ISO has developed this standard.
Personal and Term Process Models
Watts Humphrey developed PSP and TSP at the SEI at Carnegie Mellon in the mid-1990’s. The Personal Software Process (PSP) is a SEI (Software Engineering Institute) technology that brings discipline to the software development habits of individual software engineer. It helps in dramatically improving product quality, increasing cost and schedule predictability, and reducing development cycle time for software.
The Team Software Process (TSP) is a complementary SEI technology that enables teams to develop software products more effectively. TSP helps a team of engineers now to produce quality products for planned costs and on aggressive schedules. PSP is like applying Six Sigma to Software Development. Let us understand them in detail.
Personal Software Process (PSP)
The computer software is built using various processes developed by every individual. There are different kinds of software processes; random, intended for specific purpose or may be changing each time. These processes are developed by individuals in an organization. Watts Humphrey suggested that to make each process effective every individual who is developing them has to change themselves first. Under PSP every practitioner is made responsible for controlling the quality of corresponding processes. Under PSP model five framework activities are suggested as follows –
Planning -> High level design-> Review -> Development -> Postmortem
In this activity, requirements are identified based on these requirements size, resource estimates and defect estimates are made. All metrics are arranged in template form. Development task are identified and project schedule is created.
High level design
The specification is created first and then component level design is created. To resolve the uncertainty prototypes are created.
Formal technical reviews are made for uncovering the errors. Metrics are formed for important tasks and recorded.
Under this activity code is generated. The generated code is then reviewed, modified and tested. Metrics are formed for important tasks and recorded.
Using the collected measures and metrics the effectiveness of the process is analyzed. These measures and metrics should direct certain changes in the process in order to improve its efficiency. Thus the emphasis of PSP is to identify errors in the early stage of software development Using the systematic approach of PSP every work product is assessed with great care.
Term Process Models (TSP)
The team process model (TSP) is designed to produce strategy and set of operational procedures for using disciplined software methods at team levies. The goal of TSP is to have self-directed project team for producing high quality software.
Following are the objectives of term process models.
- Build the self-directed team for planning the software project in systematic manner. The normal size of team should be 3 to 20 software engineers.
- indicate the project manager for the coaching needed by the team members for the performance improvement.
- Using CMM level 5 (optimizing level), improve the software process.
- Provide the improvement guidance for the software team.
- Provide the university teaching.
There are five framework activities in TSP :
- High level design
- Integration and test
In TSP there is great use of scripts, standards and forms. These documents help the team to seek guidance in their work and improve the overall quality of the work product. Thus in this chapter, we have discussed all the process related concepts.
Build and Fix Model
This is the simplest model in which a software is developed with the help of two approaches.
- Build the code : In this phase, developer directly starts writing the code without any formal design or specification.
- Fix : In this phase, the errors in the written code are identified and corrected Hence, additional functionality is accommodated.
This model of software development is cost effective for the small projects (worth of 100 to 200 lines)
- This approach of software development is not at all suitable for large projects.
- Product will not be delivered on time using this approach.
- Low quality software may get-produced.
There is no documentation for this model. Hence it is extremely difficult to enhance the product. Maintenance of software is extremely difficult without specification or design document.
Software Engineering Paradigm
Software process model is a Software Development Life Cycle model or software paradigm. Software Development Life Cycle (SDLC) model is a diagrammatic representation of various activities required to make software product. Along with this diagrammatic representation, description of each phase of the SDLC must be given. Each phase of software life cycle consists various activities to develop the software product gradually. The software life cycle also specifies the order in which
each phase must be executed. There are various life cycle models and those are –
1) Waterfall model
2) Prototype model
3) Spiral model
4) Evolutionary development model
5) Iterative enhancement model
The basic activities that can be carried out in life cycle model are:
- Feasibility study
- Requirement analysis and specification
These are typically called as phases of life cycle model. Various software development activities that can be carried out in different phases of SDLC may differ from model to model.
The process model can be defined as an abstract representation of process. The process model is chosen based on nature of software project.
Generic software process models are –
- The waterfall model Separate and distinct phases of specification and development.
- Prototyping model – A quick design approach ‘is adopted.
- Incremental models It emphasizes on short development cycle.
- Rapid Application and Development (RAD) model.
- Evolutionary process models – Specification, development and validation are interleaved.
- Incremental model
- Spiral model
- WINWIN spiral model
- Concurrent assembly model
Need for Software Development Life Cycle Model
The software development team must decide the life cycle model that is to be used for software product development and then the entire team must adhere to it. This is necessary because the software product development can then be done systematically.
Each team member will understand – what is the next activity and how to do it. Thus life cycle model will bring the definiteness and discipline in overall development process. Every life cycle model consists of definite entry and exit criteria for each phase.
Hence the transition of the product through various phases is definite. If the life cycle model is not followed for software development then any team member can perform any software development activity, this will ultimately cause a chaos and software project will definitely fail without using life cycle model, it is difficult to monitor the progress of software product. Let us discuss various life cycle models one by one.
- The waterfall model is also called as ‘linear-sequential model’ or ‘classic life cycle model’. It is the oldest software paradigm. This model suggests a systematic, sequential approach to software development.
- The software development starts with requirements gathering phase. Then progresses through analysis, design, coding, testing and maintenance.
Following figure illustrates waterfall model.
Requirement gathering and analysis
- In requirement gathering and analysis phase the basic requirements of the system must be understood by software engineer, who is also called Analyst. The information domain, function, behavioral requirements of the system are understood. All these requirements are then well documented and discussed further with the customer, for reviewing. Software Product
- The design is an intermediate step between requirements analysis and coding.
Design focuses on program attributes such as –
- Data structure
- Software architecture
- Interface representation
- Algorithmic details.
The requirements are translated in some easy to represent form using which coding can be done effectively and efficiently. The design needs to be documented for further use.
- Coding is a step in which design is translated into machine-readable form. If design is done in sufficient detail then coding can be done effectively. Programs are created in this phase.
- Testing begins when coding is done. While performing testing the major focus is on logical internals of the software. The testing ensures execution of all the paths, functional behaviors. The purpose of testing is to uncover errors, fix the bugs and meet the customer requirements.
- Maintenance is the longest life cycle phase. When the system is installed and put in practical use then error may get introduced, correcting such errors and putting it in use is the major purpose of maintenance activity. Similarly, enhancing system’s services as new requirements are discovered is again maintenance of the system.
This model is widely used model, although it has many drawbacks. Let us discuss benefits and drawbacks.
Benefits of waterfall model
- The waterfall model is simple to implement.
- For implementation of small systems waterfall model is useful.
Drawbacks of waterfall model:
There are some problems that are encountered if we apply the waterfall model and those are :
- It is difficult to follow the sequential flow in software development process. If some changes are made at some phases then it may cause some confusion.
- The requirement analysis is done initially and sometimes it is not possible to state all the requirements explicitly in the beginning. This causes difficulty in the project.
- The customer can see the working model of the project only at the end. After reviewing of the working model; if the customer gets dissatisfied then it causes serious problems.
- Linear nature of waterfall model induces blocking states, because certain tasks may be dependent on some previous tasks. Hence it is necessary to accomplish all the dependent tasks first. It may cause long waiting time.
Software Product and process – Incremental Model
The incremental model has same phases that are in waterfall model. But it is iterative in nature. The incremental model has following phases.
- Analysis 2. Design 3. Code 4. Test
- The incremental model delivers series of releases to the customer. These releases are called increments. More and more functionality is associated with each increment. The first increment is called core product. In this release the basic requirements are implemented and then in subsequent increments new requirements are added.
- The word processing software package can be considered as an example of incremental model. In the first increment only the document processing facilities are available. In the second increment, more sophisticated document producing and processing facilities, file management functionalities are given. In the next increment spelling and grammar checking facilities can be given. Thus in incremental model progressive functionalities are obtained with each release.
When to choose it?
- When requirements are reasonably well-defined.
- When overall scope of the development effort suggests a purely linear effort.
- When limited set of software functionality needed quickly.
Merits of incremental model
- The incremental model can be adopted when there are less number of people involved in the project.
- Technical risks can be managed with each increment.
- For a very small time span, at least core product can be delivered to the customer.
Rapid Application Development (RAD) Model
- The rapid application development model is type of incremental software process model in which there is extremely short development cycle.
- This model is similar to waterfall model which achieves the high speed development using component based construction.
- This model possess the iterative nature of prototyping model and controlled and systematic approaches of the linear sequential model.
- This model gives efficient development of incremental versions of software. In this model, the software is developed in series of increments.
- The spiral model is divided into a number of framework activities. These framework activities are denoted by task regions.
- Usually there are six tasks regions. The spiral model is as shown in before
- Spiral model is realistic approach to development of large-scale systems and software. Because customer and developer better understand the problem statement at each evolutionary level. Also risks can be identified or rectified at each such level.
- In the initial pass, product specification is built and in subsequent passes around the spiral the prototype gets developed and then more improved versions of software gets developed.
- During planning phase, the cost and schedule of software can be planned and adjusted based on feedback obtained from customer evaluation.
- In spiral model, project entry point axis is defined. This axis represents starting point for different types of projects.
Restraining Factors for System Model Construction
To construct a system model, following restraining factors need to be considered –
- Assumptions : The system engineer should make some assumptions in order to reduce the number of possible permutations and variations. This helps in keeping the range of inputs and processing within certain limits. And reasonable system model can be built.
- Simplifications : It enables the model to be created in a timely manner. For example while modeling the hospital management system; the system engineer first has to understand the order of processing in the hospital. The simplified system can be created if it is categorized into two categories: OPD patients and IPD patients.
- Limitations : This denotes the boundary of the system. While designing the ATM (automatic teller machine) system, if the capacity of money transaction is at the most of $10,000/- then system engineer must know about.
- Constraints : These will guide the manner in which the model is created and the approach taken when the model is implemented. If certain drawing package needs 1024 x 768 resolution of screen then while modeling the system this constraint need to be considered.
5 Preferences : It guides for the preferred architecture for all data, functions and technology. The customer’s satisfaction should be given the high priority while deciding the preferences.
Computer Based System
A system can be defined as a purposeful collection of inter-related components working together to achieve some common objective. The system components are dependent on other system components.
The computer based system can be defined as are organized to accomplish some predefined goal by processing information”.
set or an arrangement of elements that Various elements of computer based system are
- Software – Computer software is a collection of ‘computer programs, data structures and related documentation that builds the logical method, procedures or control that is required. Software Product
- Hardware– Hardware is a collection of electronic devices that provide computing capability, interconnectivity devices for communicating with external world connectivity. Examples of such interconnecting components are network switches, telecommunication devices.
- People – Users and operators of hardware and software.
- Database – Database is a large and organized collection data that can be accessed by software.
- Documentation – Supporting descriptive information that represents the use and operation of the system. The documentation can be in the form of hard copy manuals, online help files or web sites.
- Procedures – A series of steps that define the specific use of each system element.
The elements combine together to transform the information. Complex systems are actually a hierarchy of macro-elements that are themselves systems. The role of system engineer is to define the elements for a specific computer based system by considering the context of the system. Software Product
For example : A factory automation system is collection of various systems that themselves are the combination of various elements.