blog

What is a Software Development Process?

A software development process or life cycle is a structure imposed on the development of a software product. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process.

Processes

More and more software development organizations implement process methodologies.

The Capability Maturity Model (CMM) is one of the leading models. Independent assessments can be used to grade organizations on how well they create software according to how they define and execute their processes.

There are dozens of others, with other popular ones being ISO 9000, ISO 15504, and Six Sigma.

Process Activities/Steps

Software Engineering processes are composed of many activities, notably the following:

  • Requirements Analysis
    • Extracting the requirements of a desired software product is the first task in creating it. While customers probably believe they know what the software is to do, it may require skill and experience in software engineering to recognize incomplete, ambiguous or contradictory requirements.
  • Specification
    • Specification is the task of precisely describing the software to be written, in a mathematically rigorous way. In practice, most successful specifications are written to understand and fine-tune applications that were already well-developed, although safety-critical software systems are often carefully specified prior to application development. Specifications are most important for external interfaces that must remain stable.
  • Software architecture
    • The architecture of a software system refers to an abstract representation of that system. Architecture is concerned with making sure the software system will meet the requirements of the product, as well as ensuring that future requirements can be addressed.
  • Implementation
    • Reducing a design to code may be the most obvious part of the software engineering job, but it is not necessarily the largest portion.
  • Testing
    • Testing of parts of software, especially where code by two different engineers must work together, falls to the software engineer.
  • Documentation
    • An important task is documenting the internal design of software for the purpose of future maintenance and enhancement.
  • Training and Support
    • A large percentage of software projects fail because the developers fail to realize that it doesn’t matter how much time and planning a development team puts into creating software if nobody in an organization ends up using it. People are occasionally resistant to change and avoid venturing into an unfamiliar area, so as a part of the deployment phase, its very important to have training classes for the most enthusiastic software users (build excitement and confidence), shifting the training towards the neutral users intermixed with the avid supporters, and finally incorporate the rest of the organization into adopting the new software. Users will have lots of questions and software problems which leads to the next phase of software.
  • Maintenance
    • Maintaining and enhancing software to cope with newly discovered problems or new requirements can take far more time than the initial development of the software. Not only may it be necessary to add code that does not fit the original design but just determining how software works at some point after it is completed may require significant effort by a software engineer. About 60% of all software engineering work is maintenance, but this statistic can be misleading. A small part of that is fixing bugs. Most maintenance is extending systems to do new things, which in many ways can be considered new work.

Process Models

A decades-long goal has been to find repeatable, predictable processes or methodologies that improve productivity and quality. Some try to systematize or formalize the seemingly unruly task of writing software. Others apply project management techniques to writing software. Without project management, software projects can easily be delivered late or over budget. With large numbers of software projects not meeting their expectations in terms of functionality, cost, or delivery schedule, effective project management is proving difficult.

Waterfall processes

The best-known and oldest process is the waterfall model, where developers follow these steps in order. They state requirements, analyze them, design a solution approach, architect a software framework for that solution, develop code, test, deploy, and maintain. After each step is finished, the process proceeds to the next step.

Iterative processes

Iterative development prescribes the construction of initially small but ever larger portions of a software project to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster. Iterative processes are preferred by commercial developers because it allows a potential of reaching the design goals of a customer who does not know how to define what he wants.

Agile software development processes are built on the foundation of iterative development. To that foundation they add a lighter, more people-centric viewpoint than traditional approaches. Agile processes use feedback, rather than planning, as their primary control mechanism. The feedback is driven by regular tests and releases of the evolving software.

Agile processes seem to be more efficient than older methodologies, using less programmer time to produce more functional, higher quality software, but have the drawback from a business perspective that they do not provide long-term planning capability. In essence, they say that they will provide the most bang for the buck, but won’t say exactly when that bang will be.

Extreme Programming, XP, is the best-known agile process. In XP, the phases are carried out in extremely small (or “continuous”) steps compared to the older, “batch” processes. The (intentionally incomplete) first pass through the steps might take a day or a week, rather than the months or years of each complete step in the Waterfall model. First, one writes automated tests, to provide concrete goals for development. Next is coding (by a pair of programmers), which is complete when all the tests pass, and the programmers can’t think of any more tests that are needed. Design and architecture emerge out of refactoring, and come after coding. Design is done by the same people who do the coding. The incomplete but functional system is deployed or demonstrated for the users (at least one of which is on the development team). At this point, the practitioners start again on writing tests for the next most important part of the system.

While Iterative development approaches have their advantages, software architects are still faced with the challenge of creating a reliable foundation upon which to develop. Such a foundation often requires a fair amount of upfront analysis and prototyping to build a development model. The development model often relies upon specific design patterns and entity relationship diagrams (ERD). Without this upfront foundation, Iterative development can create long term challenges that are significant in terms of cost and quality.

Critics of iterative development approaches point out that these processes place what may be an unreasonable expectation upon the recipient of the software: that they must possess the skills and experience of a seasoned software developer. The approach can also be very expensive, akin to… “If you don’t know what kind of house you want, let me build you one and see if you like it. If you don’t, we’ll tear it all down and start over.” A large pile of building-materials, which are now scrap, can be the final result of such a lack of up-front discipline. The problem with this criticism is that the whole point of iterative programming is that you don’t have to build the whole house before you get feedback from the recipient. Indeed, in a sense conventional programming places more of this burden on the recipient, as the requirements and planning phases take place entirely before the development begins, and testing only occurs after development is officially over.

The are many other methods to those listed above, and you can find out more by visiting the websites below.

Support for Software Development Processes

Select has been a major player in the development of iterative and incremental development processes over the last 20 years. Our tools therefore provide relevant facilities for those looking to use such processes.

Related posts

15 Replies to “What is a Software Development Process?
  1. 香港物業按揭. 無論您是首次置業或是換樓,工銀亞洲都能夠為您提供度身訂做的按揭貸款計劃,切合您的真正需要。 全面樓宇按揭服務. 一般按揭貸款計劃. 適合購買 …

    http://wealthlink.hk/?page_id=134

  2. 9合1升級保護,提升全面防護!!! 相比之前四合一的疫苗只能預防四種hpv病毒,70的相關癌症。 九合一可以預防9種hpv病毒,可預防高達90以上的子宮頸癌、外陰癌、陰道癌和肛門癌及癌前病變等。 HPV9合1子宮頸癌疫苗 Gardasil 功效 100 預防高危致癌的 HPV 16、18、31、33、45、52 及 58 型號 (可減低 90 患子宮頸癌、、90-95 肛門癌、85-90 外陰癌、80-85 陰道癌及相關癌前病變的風險) 100 減低引致生殖器官濕疣 (俗稱「椰菜花」) 的 HPV 6、11 型的感染 (可減低超過 90 患生殖器官濕疣的風險) 男性方面,能減低患上肛門癌、生殖器官濕疣 (俗稱「椰菜花」) 及傳播 HPV 病毒的風險 注射位置紅腫及痛、輕微發燒和頭痛,至今未有嚴重副作用記錄

    http://cosmedicbook.com/treatments/info/CLEVIEL-高濃度透明質酸

  3. Annie`s Way 【舒緩面膜系列】燕麥溫和隱形面膜 Oats Soothing Invisible Silk Mask的商品介紹 Annie`s Way,舒緩面膜系列,燕麥溫和隱形面膜 Oats Soothing Invisible Silk Mask

    https://cosmetic.wiki/tag/光纖

  4. I want to get across my respect for your kind-heartedness supporting men and women who should have assistance with this particular matter. Your very own commitment to passing the message all around came to be remarkably productive and has specifically made others much like me to attain their objectives. Your own useful hints and tips indicates a great deal a person like me and even further to my mates. Warm regards; from each one of us.

  5. I am only writing to make you be aware of what a perfect experience my princess enjoyed reading through yuor web blog. She came to find many things, with the inclusion of how it is like to have a wonderful teaching mood to make certain people with ease gain knowledge of several specialized topics. You actually did more than people’s desires. I appreciate you for presenting the productive, trusted, explanatory and also unique guidance on your topic to Tanya.

  6. My spouse and i were really ecstatic when Louis could finish up his reports by way of the ideas he made out of the web pages. It is now and again perplexing to just find yourself giving freely tips and tricks that many people could have been selling. And we also take into account we have got the writer to be grateful to for that. These explanations you’ve made, the simple blog navigation, the friendships you will help to promote – it is mostly awesome, and it’s aiding our son and us feel that this theme is enjoyable, and that is exceedingly essential. Many thanks for the whole thing!

  7. I not to mention my buddies happened to be examining the excellent information located on your web blog while at once I had a horrible feeling I had not thanked you for those tips. Most of the women ended up certainly excited to read them and have now seriously been having fun with those things. Thank you for actually being very accommodating as well as for utilizing this kind of perfect tips most people are really needing to understand about. My sincere apologies for not expressing appreciation to sooner.

  8. I’m commenting to let you be aware of what a superb discovery my friend’s child went through reading through your webblog. She discovered a lot of issues, with the inclusion of how it is like to have a very effective coaching mindset to get certain people clearly thoroughly grasp a variety of advanced issues. You really exceeded visitors’ desires. Thanks for presenting such practical, safe, educational as well as cool tips about the topic to Evelyn.

  9. I would like to show some thanks to you for bailing me out of this circumstance. Just after surfing throughout the search engines and seeing ideas that were not powerful, I believed my entire life was over. Living minus the solutions to the difficulties you have resolved all through your good guideline is a crucial case, and the ones which might have in a wrong way damaged my career if I hadn’t encountered your web site. Your primary capability and kindness in handling everything was precious. I am not sure what I would’ve done if I hadn’t discovered such a subject like this. I can now look ahead to my future. Thanks very much for this impressive and results-oriented help. I won’t hesitate to suggest your web sites to anyone who ought to have assistance on this problem.

  10. I am commenting to let you know of the wonderful encounter my wife’s daughter encountered visiting yuor web blog. She came to find many things, which included what it is like to possess a very effective coaching spirit to let the rest with no trouble learn about specified tortuous subject areas. You really surpassed people’s desires. I appreciate you for supplying such necessary, healthy, revealing and as well as fun thoughts on the topic to Mary.

  11. Thank you a lot for providing individuals with such a pleasant possiblity to discover important secrets from this website. It is often so beneficial and also full of a good time for me and my office peers to visit your site more than 3 times in a week to learn the latest issues you have got. And definitely, we’re always fascinated with all the awesome things you serve. Certain two facts in this posting are unquestionably the finest we’ve had.

  12. I wish to get across my respect for your kind-heartedness giving support to women who really want help with this area of interest. Your personal commitment to passing the solution throughout appeared to be pretty beneficial and have surely allowed girls much like me to get to their ambitions. Your new valuable key points entails a whole lot to me and much more to my peers. Warm regards; from all of us.

Leave a Reply