Design methods for software engineering




















Along with the increase in software utility, capability, cost, and size there has been a corresponding growth in methods, models, tools, metrics and standards, which support software engineering. Chapter 10 of the SWEBOK discusses modeling principles and types, and the methods and tools that are used to develop, analyze, implement, and verify the models. Table 1 identifies software engineering features for different life-cycle phases. The table is not meant to be complete; it simply provides examples.

For the purposes of Table 1 the definition of a model is extended to some aspect of the software system or its development. The idea is that the Project Plan provides a model of how the project is going to be carried out: the project team organization, the process to be used, the work to be done, the project schedule, and the resources needed. A software metric is a quantitative measure of the degree a software system, component, or process possesses a given attribute.

The application domain is ill-defined, as such, it is impossible to make comparison amongst the software design methodologies, comparing each against another. However, some scheme of classifica tion will help in discussing particular methodologies. A few criteria can be used to classify methodologies such as the characteristics of the systems to be designed, such as the type of software representation and how formal it is.

Other types of criteria are the characteristics of the software structure, whether it is hierarchical or level or it is functionally modular. Another criterion that can be used is the characteristic of the design process. However, the basis of the methodology is often the best guide to classification. For example, a current classification scheme for real-time systems developed at the Software Engineering Institute Ford, , p53 is based on the three distinct views of a system. It can be summarized as follows:.

With the functional view, the system is considered to be a collection of components, each performing a specific function, and each function directly answering a part of the requirement. The design describes each functional component and the manner of its interaction with the other components. With the structural view, the system is considered to be a collection of components, each of a specific type, each independently buildable and testable, and able to be integrated into a working whole.

Ideally, each structural component is also a functional component. With the behavioral view, the system is cons idered to be an active object exhibiting specific behaviors, containing internal state, changing state in response to inputs, and generating effects as a result of state changes.

Original detailed discussion was first published by Firth, Wood, Pethia, Roberts, Mosley, and Dolce and then Wood and Pethia , another subsequent report was published by Wood Dividing software design methodologies into classifications called approaches helps in the generalization, explanation and understanding of software design methodologies, and guide in the selection of the appropriate software design methodology to use. Details of software design approaches can vary greatly.

Some consist of a set of guidelines, while others include strict rules and a set of coordinated diagrammatic representation. The approaches that have been proposed for software design are divers e. Many of these approaches are really full-fledged software design methods, in that they are composed of a set of techniques directed at and supporting a common, unifying rationale. The main design approaches Pressman, ; Peters, are: the level oriented, data flow oriented, data structure oriented and the object oriented design approaches.

Different approaches have been taken to develop software solutions for different problems. However, in some problems, different approaches have been integrated or combined in a logical manner to derive a software solution. Thus, the different software design approaches are not necessarily mutually exclusive. For example, designers have used the leveling approach of top-down decomposition to break down a large complex system into smaller, more manageable modules and then use other approaches to design the software for each module.

Depending on the criteria used, there are a number of ways to define the classification of software design approaches. The classification of software design approaches in this section is based on the basis of the approach, characteristics of the design process and the type of software constructs created to develop the solution. In the level-oriented design approach, there are two general or broad strategies that can be used. The first strategy starts with a general definition of a solution to the problem then through a step-by-step process produce a detailed solution this is called Stepwise Refinement.

This is basically dependent on the system requirements and is a top-down process. The other strategy is to start with a basic solution to the problem and through a process of modeling the problem, build up or extend the solu tion by adding additional features this is called design by composition.

The top-down process starts at the top level and by functional decomposition, breaks down the system into smaller functional modules. Smaller modules are more readily analyzed, easier to design and code. But, inherent in the top-down process is the req uirement that there must be a complete understanding of the problem or system at hand.

Otherwise, it could lead to extensive redesign later on. The top-down process also is dependent on decisions made at the early stages to determine the design structu re.

Different decisions made at the early stage will result in different design structures. Functional decomposition is an iterative "break down" process called stepwise refinement, where each level is decomposed to a more detailed lower level. Thus, at each decomposition, there have to be a way to determine if further decomposition is needed or necessary, that is, if the atomic level has been achieved.

There are no inherent procedure or guidelines for this. There is also a possibility of duplicati on if stepwise refinement is not done carefully or "correctly"; this will occur toward the end of the process, that is, at the lower levels.

Design modeling provides a variety of different views of the system like architecture plan for home or building. Different methods like data-driven, pattern-driven, or object-oriented methods are used for constructing the design model. All these methods use set of design principles for designing a model. Designing a model is an important phase and is a multi-process that represent the data structure, program structure, interface characteristic, and procedural details.

It is mainly classified into four categories — Data design, architectural design, interface design, and component-level design. Analysis model represents the information, functions, and behavior of the system. Design model translates all these things into architecture — a set of subsystems that implement major functions and a set of component kevel design that are the realization of Analysis classes.

This implies that design model must be traceable to the analysis model. Software architecture is the skeleton of the system to be built.

DevOps is not just a development methodology but also a set of practices that supports an organizational culture. DevOps deployment centers on organizational change that enhances collaboration between the departments responsible for different segments of the development life cycle, such as development, quality assurance, and operations. Pros: DevOps is focused on improving time to market, lowering the failure rate of new releases, shortening the lead time between fixes, and minimizing disruption while maximizing reliability.

To achieve this, DevOps organizations aim to automate continuous deployment to ensure everything happens smoothly and reliably. Companies that use DevOps methods benefit by significantly reducing time to market and improving customer satisfaction, product quality, and employee productivity and efficiency.

Many consider the waterfall method to be the most traditional software development method. The waterfall method is a rigid linear model that consists of sequential phases requirements, design, implementation, verification, maintenance focusing on distinct goals.

Pros: The linear nature of the waterfall development method makes it easy to understand and manage. Projects with clear objectives and stable requirements can best use the waterfall method.



0コメント

  • 1000 / 1000