Looks like no one added any tags here yet for you.
Engineering
is the application of well-understood scientific methods to the construction, operation, modification and maintenance of useful devices and systems.
Software
is comprises the aspects of a system not reduced to tangible devices, e.g. computer programs and documentation
Functionality, Reliability, Usability, Efficiency, Maintainability, Portability
Software quality model identifies six main quality characteristics, namely:
Software Engineering
is the sub discipline of computer science that attempts to apply engineering principles to creation, operation, modification and maintenance of the software components of various systems.
Functionality
Is the essential purpose of any product or service. The more functions a product has, then the more complicated it becomes to define its functionality.
Reliability
Defines the capability of the system to maintain its service provision under defined conditions for defined periods. One aspect of this characteristic is fault tolerance that is the ability of a system to withstand component failure.
Usability
Exists with regard to functionality and refers to the ease of use for a given function. The ability to learn how to use a system (learnability) is also a major sub characteristic of usability.
Efficiency
This characteristic is concerned with the system resources used when providing the required functionality. The amount of disk space, memory, network etc. provides a good indication of this characteristic.
Maintainability
The ability to identify and fix a fault within a software component is what the maintainability characteristic addresses. In other software quality models, this characteristic is referenced as supportability.
Maintainability
Maintainability is impacted by code readability or complexity as well as modularization. Anything that helps with identifying the cause of a fault and then fixing the fault is the concern of maintainability. Also the ability to verify (or test) a system, i.e. testability, is one of the sub characteristics of maintainability.
Portability
This characteristic refers to how well the software can adopt to changes in its environment or with its requirements. The sub characteristics of this characteristic include adaptability. Object oriented design and implementation practices can contribute to the extent to which this characteristic is present in a given system.
Computer Applications Software Engineers
Analyze user needs and design, construct, and maintain general computer applications software or specialized utility programs. These engineers use different programming languages, depending on the purpose of the program. The programming languages most often used are C, C++, and Java, with FORTRAN and COBOL used less commonly. Some software engineers develop both packaged system and system software, or create customized applications.
Computer Systems Software Engineers
Coordinate the construction and maintenance of a company’s computer systems and plan their future growth. Working with the company, they coordinate each department’s computer needs, such as ordering, inventory, billing, and payroll recordkeeping.
Systems Software Engineers
Work for companies that configure, implement, and install complete computer systems. These engineers may be members of the marketing or sales staff, serving as the primary technical resource for sales workers and customers. The may also be involved with technical support to the company’s customers.
Sponsor or Client
The individual paying for the project such as IT executives, managers, or entrepreneurs. The Sponsor is the final decision-maker but tends to be hands-off, relying on the Program Manager to flag issues.
Product Advocate
Primary contact person of the client and is the one responsible for ensuring that requirements and functional specifications are generated and that the Sponsor is happy with the progress and results.
System Architect
Is responsible for the software architecture and design, and for how the software fits into a larger infrastructure. They are involved in technology stack choices, approaches to system interfaces, data flow, and database design.
Program Manager
The program manager takes the role of the project manager on small-scale projects. On a large-scale project, or program, their role is to map out and define the list of dependent projects that need to be completed to reach the overall goal. When it comes to the program, they focus on the strategy and implementation, and how to delegate the projects appropriately.
Project Manager
Manages the operations of an individual project within the program. They coordinate time, budget, and resources and delegates tasks across the team.
UX, Development, QA, and Technical Writing Managers or Skill Set Managers
Manage the personnel in their skill set and are involved in issue resolution on the project as needed. Skill Set Managers also help to resolve any personnel issues within their site’s project team.
UX, Development, QA, and Technical Writing Leads
Manage the workload and direction of their skill set on a daily basis. On smaller projects, the Development Lead is also the System Architect.
UX Designer, Developer, Quality Engineer, and Technical Writer
Are line-level roles that actually design and create the product.
UX Designer
Writes specifications, draw wireframes, and define visual elements.
Developer
Write code and resolve bugs.
Quality Engineer
Test code and flag bugs.
Technical Writer
Create written documentation for the product.
Identifying the Current Problem/s
Answers the question: “what do we not want?” This phase where learning the strengths and weaknesses of the current system with improvement is the goal.
This is done by getting input from the stakeholders, including customers, salespeople, industry experts, and programmers.
Planning/Analyzing
Answers the question: “what do we want?”
In this stage, the team defines the requirements of the new software, and determines the cost and resources required after analyzing the results of the problem identification.
Designing
This defines how you can achieve the plans. In this phase, the system and software designs are prepared aligned with the requirement specifications generated from the planning stage.
Implementation
The stage where the software is develop by generating the actual code. This is the longest phase of the SDLC or software development life cycle.
Testing
This is where the software is tested for defects and deficiencies. Issues found are fixed until the product meets the original specifications.
Deployment
The product is deployed to the customers for their use.
Upon reception, the customers are expected to do the beta testing to determine if any changes are required and if any bugs are caught. Adjustments will be made by the engineering team to resolve the issues found before the final deployment.
Maintenance
After deployment, regular software updates are required to match with the changes and advancement of the real world.
Individual Ability
Production and maintenance of software is a labor-intensive activity so these factors are direct functions of individual ability and effort. Aspects include competence and familiarity with the particular application area.
Team Communication
The new approach towards software developments requires many individuals to be involved. Many recent innovations in software engineering, like design reviews, structured walkthroughs and code-reading exercises improve communication between the programmers.
Product Complexity
There are three generally acknowledged levels of product complexity:
a) Application Programs
b) Utility programs and
c) System level programs
Appropriate Notations
The representation schemes are of fundamental importance. Good and standardized notations can clarify the relationships and interactions, of any specific interest
Systematic Approaches
Following certain standard systematic approach in procedures and techniques makes the developments software process very professional and contribute in improving the quality of the software product.
Controlling Changes
The factors that contribute the factor of change in software are
a) Design deficiencies in software
b) Change in requirements due to poor understanding of problem
c) External economic and political factors.
To minimize the change the following suggestions cam be utilized
(a) Use of appropriate notation and standard techniques
(b) Scope of the mechanism to change flexibility provided to the software
During planning
Level of Technology
As the level of technology is changing rapidly, hence modern programming languages should be used during the development. Modern programming language provide:
a) Improved facilities for data definition & data usage
b) User defined exception handling
c) Concurrent programming etc.
In addition, varied tools are provided such as assemblers and primitive debugging facilities integrated under a single fully integrated development environmentX
Level of Reliability
Are required to increase reliability causes decreased productivity when measured in LOC produced per programming month.
Problem Understanding
Failure to understand the problem can result in an unsuccessful project; there are some suggestions for avoiding these problems
a) Careful planning
b) Costumer interviews
c) Task observation
d) Prototyping
e) Precise product specifications etc.
Available Time
Programmer productivity is sensitive to the calendar time available for project completion. It is observed that the development time cannot compressed below 75 percent of the nominal development time. Extending a project beyond some nominal domination increases the total effort required.
Required Skills
The practice of SE required variety of skills. The requirement definition and design activity are conceptual in nature hence require good creating problem solving skills. Preparations of external documents require good writing and expressive skills. Software Engineers should have good socializing skills to interact properly with the managers, costumers and other engineers.
Facilities and Resources
Through various studies, it had been found that work related factors such as
a.) God machine
b.) Quite place of work
c.) Plenty of access to the machine
d.) Creative challenges
e.) Variety of tasks
f.) Opportunities for professional advancement etc., creates more satisfaction among the programmers rather than the status factors
Adequacy of Training
It is seen that the fresher’s from college do not have the following skills, which are very necessary for becoming a successful software engineer
a.) Express oneself clearly in English
b.) Develop and validate software requirements and design specifications
c.) Work with in application area
d.) Perform software maintenance
e.) Perform economic analysis
f.) Work with project management techniques
g.) Work In groups
Hence adequate of training is required for entry-level programmers.
Management Skills
As the concept of SE is new, hence the managers who work in traditional styles are unable to manage the SE activities. In addition, it is seen that during giving promotions if the competency of the candidate is only measured in technical point of view then there may arise the same kind of problem. Therefore, the management skills inn candidate should also include technical and managerial competency
Appropriate Goals
Setting of appropriate goals is a major contributing factor in successful execution of a project; generally, the most common goals include Generality, Efficiency, and Reliability
Rising Expectations
Progress is constantly being made in the development of tools and techniques to improve software quality and programmer productivity, equally diversity, size and complexity of software applications are growing at a fast rate but also the expectations and increasing demands. Hence, it is necessary to adhere to the latest that is happening.
Stability of Requirements
The requirements of software project includes
a) Manpower
b) Software
c) Hardware
The requirements definition is done during problem analysis where the amount of type of resources are predicted , in this point if the analysis and predictions is not based on facts, expert guidance and experience from various projects then the requirements would change throughout the development process and may extend to maintenance phase . Un-stability or requirements increases the cost degrades overall quality and reduces the productivity. Hence great care should be taken during the initial phase of problem identification & problem analysis.